tag:blogger.com,1999:blog-262604932024-03-12T02:25:34.394-07:00Here's the Deal: The Next Stack FrameSemicolons. Semiconductors. Semi-plausible theories.Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.comBlogger300125tag:blogger.com,1999:blog-26260493.post-40289247819009009922009-09-17T21:55:00.001-07:002009-09-17T21:55:08.554-07:00Yahoo Mail Supports Free IMAP … But Only via Mobile<p>It’s hard to know what to say about Yahoo at this point. They have a lot of page views, but their internal organs seem to have been liquified from the inside by some flesh-eating plague.</p> <p>Barely alive, they are of course responsible for their own continuing undoing. A great example is the failure to do something useful with the email user base. The purple crew has missed every opportunity to exploit the email product, from Google-style ads to Facebook-style social networking (back when they had a chance). And there’s the infamous CEO with her Napoleonic airs.</p> <p>But I digress.</p> <p>See, here’s the thing. On the Internet, unless you’re lucky enough to be a telco, you actually have to compete. Which means when Google gives away IMAP-enabled mail, and Windows Live gives away POP access and 25+ GB of online storage, you need to rethink your strategy of <a href="http://skipmeamadeus.blogspot.com/2007/03/yahoo-mail-api-misses-point.html">making your mail product harder to use</a> while praying that the nine people on earth who haven’t heard of Google will sign up for your deluxe mail service (now with undercoating!)</p> <p>But Yahoo has never been able to think one thing at a time. It’s not so much that they excel at multitasking than that they are schizophrenic. So while one group is committing ritual suicide with the email product, another realizes that to reach the mobile market, exposing mail via open protocols might help.</p> <p>And hence they offer endpoints called something like imap.mail.yahoo.com and smtp.mobile.yahoo.com. Before you get all excited and ask me to check the hostnames and port numbers, though, I’ll drop the punchline: it appears Yahoo filters access to these services based on IP, and opens the service to mobile carrier address blocks (and carrier proxy addresses).</p> <p>After seeing my phone successfully configure itself for these services, I couldn’t resist trying them from a desktop client. No joy. I guess if I were really hardy I could grab the public-net-facing IP address for my phone (by having it connect to my own server) and pretend to be that IP. But … really … is it worth it? No… with Yahoo still living in 2002, I’m afraid it’s just not.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com215tag:blogger.com,1999:blog-26260493.post-90066891412595051432009-08-31T23:51:00.001-07:002009-08-31T23:51:57.599-07:00Work 2 Different Logons (or Sessions) with Private Browsing Modes<p>Here’s a trick that’s fairly obvious to web developers but probably not so for everyone else.</p> <p>Private browsing modes – such as Incognito (in Google Chrome) or InPrivate (IE 8) clear out locally stored browser cookies (snippets of tracking data) each time they are run, and do not share cookies with the main (non-private) browser tabs.</p> <p>Since these cookies are the core mechanism by which web sites associate independent browser tabs/windows with a single user session, the private browsing modes can be used to interact with multiple different logons or accounts at the same time.</p> <p>How does this work in practice?</p> <p>Let’s say you want to interact with two totally different accounts (logons) at, say, Gmail, Yahoo, eBay, Orbitz, or some other site. You’ve probably noticed that if you are logged in to, e.g., Yahoo with one browser tab, and you open another window or tab in the same browser, and go to Yahoo, it will “know” who you are and allow you to interact with the same account.</p> <p>In many cases, this is a desired behavior. But if you want to work with two different Yahoo accounts at the same time, it is quite tricky.</p> <p>Here’s where the private browsing mode comes in.</p> <p>Open a private browsing window/tab, and log on to Yahoo with the second account. Since the private tab doesn’t share cookies with the main tab, you now have two interactive sessions with the two different accounts, and they “stay separate.”</p> <p>There are three catches though:</p> <p>First, since the private browsing tabs are designed to discard cookies on shutdown, they will “forget” your logon when you close the browser even if you select “stay logged in” on a specific web site.</p> <p>Second, it is possible (though unlikely) that this mechanism could fail if the site uses “<a href="http://www.scmagazineus.com/top-websites-using-flash-cookies-to-track-user-behavior/article/141486/">Flash cookies</a>” apart from regular cookies.</p> <p>Third, while this trick works perfectly well, do <em>not</em> assume that the service you are connected to has no idea what you are doing. They probably don’t care. But if they <em>do</em> care, assume that they could guess that the same user was on both sessions (through IP addresses, NAT port assignment patterns, etc.) at the same time.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com199tag:blogger.com,1999:blog-26260493.post-36431825950491941152009-08-24T17:10:00.001-07:002009-08-24T17:10:54.234-07:00Two More Small Tales from the IP Front<p>There are a small number of areas in which I am an expert, and intellectual property is not one of them. For expertise, I like to refer folks to <a href="http://en.wikipedia.org/wiki/Mike_Masnick">Mike Masnick</a> and <a href="http://techdirt.com/">Techdirt</a>.</p> <p>Nonetheless, it’s hard to move through the technology world and not get bonked on the head by IP absurdities and incongruities calling out for some solution aside from lawsuits and <a href="http://en.wikipedia.org/wiki/Just_Say_No">Nancy-Reagan-style</a> denials.</p> <p>First up is the tale of two Comcasts, and two identical HD streams of Battlestar Galactica. One of these streams comes in via the HD DVR, and the other comes in via Bittorrent.</p> <p>Actually, I’m leaving a bit of information out in the setup. See, the two HD streams from SciFi channel <em>should</em> be more or less identical modulo commercials. But they’re not. </p> <p>Due to bandwidth allocation and network management issues, the “legitimate,” paid-for SciFi channel stream is full of bitrate-spike artifacts reminiscent of late ‘90s web video. So the HD channel, the HD DVR, the HDTV gets you … a pretty awful picture the second characters start fighting, running, or blowing things up.</p> <p>Then you have the Bittorrent stream, ripped from SciFi, and carried in via the same Comcast coax line. This stream looks great, and makes a customer glad to have Comcast and a HDTV. In some strange respect, this latter stream may represent a problem in the “industry’s” opinion, even though it’s clearly what the customer wants and is paying to view, and even though the bandwidth (both instant and aggregate) is a small fraction of that required for the “broadcast” stream.</p> <p>Next strangeness is <a href="http://listen.grooveshark.com/">Grooveshark</a>, a free, crowdsourced, on-demand streaming service that appears to live on the razor-thin edge of legality if it has a claim on legality at all.</p> <p>That said, the ability to send (or post/tweet/blog/…) a link that goes <a href="http://listen.grooveshark.com/#/song/That_Spells_DNA/600121">directly to a particular song</a> is an extremely potent way to virally spread the music you like. And more music loved by more fans is the core asset base for any music industry, whether it resembles the 20th-century “legacy” record industry or not.</p> <p>Without Grooveshark, there is always YouTube for sharing instant, no-membership, no-login-required tracks. But unlike YouTube, Grooveshark is structured in a way that encourages more exploration of an artist, album, etc.</p> <p>So anyone wanna throw into a pool for how long ‘til this service gets shuttered? Wait, that’s not quite legal either. We’ll “just say no” and it’ll all just go away.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com79tag:blogger.com,1999:blog-26260493.post-76690901695976530172009-08-18T21:23:00.000-07:002009-08-18T21:46:50.241-07:00Suck Us All Into the Machine: Build FluidDB on Twitter and #HashtagsI was reading today about a fairly amorphous, tag-based, public "database" concept called <a href="http://doc.fluidinfo.com/fluidDB/index.html">FluidDB</a>.<div><br /></div><div>To avoid the usual distractions, I will assume my audience knows all about relational and non-relational datastores, implications of tag-oriented metadata, etc. In fact, since my friends know about this stuff and they are most of my audience, I think I'm not too far afield making this assumption.</div><div><br /></div><div>One reason I found the FluidDB concept interesting is vanity: about four weeks ago, I spent some time considering building just this kind of database ... on top of Twitter.</div><div><br /></div><div>Why would one want to do that?<br /><br /></div><div>Precisely because Twitter already has a lot of meaningful data curated by humans and tagged with a well-known metadata scheme (hashtags).</div><div><br /></div><div>In exchange for having very small or hypernormalized data records (since each atomic entry is limited to 140 characters minus the tags and any indexed keys), we get a strange merging of human- and machine-readable data. </div><div><br /></div><div>Humans could read (and follow, search, etc.) data entities of interest.</div><div><br /></div><div>And clearly the "goal" of automated (machine) participants (clients) would be to understand as much of the human content as possible, treating it as objects, tuples, logical inferences, or knowledge base "facts."</div><div><br /></div><div>Moreover, the originator of a tweet, as well as any @-referenced recipients, are critical metadata. They are, actually, tags themselves in way which is linearly independent of the hashtags. That is, a from-@adbreind tweet (entity) marked #database is different from a to/ref-@adbreind tweet marked #database, while #database must be considered to (possibly) have a different sense than it does in, say, a from-@headius tweet. However, the same tools and semantic analyzers can be applied, essentially treating the writer and target of a tweet as special tags.</div><div><br /></div><div>In this way, our twitter discourse, short enough to make machine understanding tempting even when the packed cultural references make such understanding impractical, merges us into the database and makes us "just another part of the machine."</div>Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com26tag:blogger.com,1999:blog-26260493.post-86505026769596160472009-08-06T20:48:00.001-07:002009-08-06T20:48:35.306-07:00AT&T “Fixes” My Phone by Downgrading It<p>I don’t want to be another corpse in the AT&T pile-on. AT&T has many problems, and they impact me, but let’s look at another technical clue about the network trouble:</p> <p>I stopped in Tuesday at an AT&T store to see if they had any advice or fixes for the network issues plaguing my phone. The only thing the service rep said he knew of was to replace the SIM card. Sure, why not? Can’t hurt anything, can it?</p> <p>Well the answer to that question apparently depends on whether ditching 3G access counts as “hurting.”</p> <p>Since I got the new SIM, the phone spends most of its time on the EDGE and GPRS service, and only rarely gets a fix on the 3G service even when I’m in known-good 3G areas.</p> <p>For a fleeting moment, I thought about taking the phone back and asking AT&T to do something to restore my 3G goodness.</p> <p>But I quickly realized that the network’s inability to keep the phone on 3G was a big part of the problem. In other words, as so many iPhone users have discovered, staying on EDGE is better than flitting between EDGE and 3G and getting nowhere. Likewise in the case of EDGE and GPRS.</p> <p>So for now, I’ll take my retro GPRS and its 50kbps or so of throughput. Since the setup and teardown of the data connection, as well as the latency in repeating a request, are the slowest part of the process, I’d rather use dependable 50kbps connection over an unstable, unusable 500kbps one.</p> <p>Until I get a network that actually works, that is.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com37tag:blogger.com,1999:blog-26260493.post-27778868550343904192009-08-06T20:37:00.001-07:002009-08-06T20:37:49.093-07:00Link: An Illustrated Brief History of Augmented Reality<p><a href="https://www.icg.tugraz.at/~daniel/HistoryOfMobileAR/">Check it out</a>.</p> <p>Plus who knew that Philippe Kahn invented the camera phone?</p> <p>Apparently, a lot of people, just not me. The guy is so awesome.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com43tag:blogger.com,1999:blog-26260493.post-35798396883510424092009-07-13T16:58:00.001-07:002009-07-13T16:58:45.180-07:00Microsoft’s Real Punishment is Having to Fight with the Gloves On<p>By the time the Microsoft anti-trust cases wound down, it could be argued that the alleged damage was long since done to the industry.</p> <p>In a curious reversal, it appears that Microsoft’s direct penalties from the case were only a tiny beginning.</p> <p>The real penalties Microsoft pays are not in money, nor in shipping <a href="http://windowsitpro.com/article/articleid/93280/microsoft-to-begin-selling-windows-xp-k-and-kn-editions-in-south-korea-this-week.html">“K” and “N” SKUs</a>. They are in product strategies unpursued because they would be too provocative. In other hands, such strategies  might be reasonable if aggressive, but for Microsoft they might look like “<a href="http://books.google.com/books?id=jK38znRyAJcC&lpg=PA55&ots=saz7hVfKev&dq='relevant%20conduct'%20antitrust&pg=PA56">relevant conduct</a>.”</p> <p>Today’s announcements about Office 2010 (“14”) were … well … let’s just say if you didn’t read about it, the most interesting thing you missed was seeing critics point out that Microsoft, inventor of AJAX (literally, for the Outlook web client), is only bringing other apps online 10+ years later.</p> <p>The reasoning here is not about selling client OS licenses. Microsoft could have moved to the cloud richer and faster and more profitable if it could take the gloves off.</p> <p>Need to get Silverlight penetration up from its abysmally low numbers to where it can really compete with Flash and become a meaningful platform? Just ship it with Windows and make it a priority update to every Windows box in the world. Problem solved. Now we can get down to the real work writing apps. Or at least Adobe could actually face some competition. But Microsoft doesn’t dare do this.</p> <p>Why not stitch cloud storage directly into the OS? I hate leaving files “on the other machine.” Right out of the box, <strong><em>anytime</em></strong> I see an “Open…” or a “Save As…” dialog box on Windows 7, I would like the default destination to be a secure folder on Windows Live <a href="http://skydrive.live.com/">SkyDrive</a>. Using the provider pattern, other vendors could offer a similar service, and the end user could choose. But Microsoft doesn’t dare with this either.</p> <p>It is quite possible that the long-term benefit to the industry of having Microsoft thus restrained far outweighs the “lost” value we could have had from Redmond. But let no one fool himself into believing that what we see from Microsoft these days is everything they have to offer.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com17tag:blogger.com,1999:blog-26260493.post-32199798241056946932009-07-09T15:59:00.001-07:002009-07-09T15:59:35.291-07:00VncSharp Rocks for Programmatic and Interactive Remote Access from .NET<p><a href="http://cdot.senecac.on.ca/projects/vncsharp/index.html">VncSharp</a> is a C# implementation of the VNC protocol together with a handy visual Remote Desktop .Net widget.</p> <p>At first, the open-source VNC remote-access solution might seem like a surprising item to need in a Microsoft-based solution. </p> <p>But once he gets you in the little room, VNC starts telling you that, in exchange for lower performance (than Microsoft’s own RDP), he can get you more flexibility, more features, no licensing issues, and access to remote Macs or *nix hosts. After these arguments (or is it the heat?) VNC looks a lot more persuasive.</p> <p>Throw in the fact that you can run your VncSharp-enabled apps on Mono, and … well, it would be cool if that bought you a lot. But actually if you aren’t already focused on a Linux solution then the Mono angle is just another bullet.</p> <p>VncSharp itself, though, works extremely well straight out of the gate.</p> <p>When you see the documentation page – where the author essentially invites you to read the source to figure out how to drive it – you may be concerned. Or even start to form silent curse words with your lips.</p> <p>Do not let that stop you. There are demo/sample apps that will show you what you need for basic use cases (e.g., popping open a “remote help” window will only require a line or two). And the source, if you need it, is elegant and straightforward to navigate.</p> <p>A programmable VNC client is, perhaps, a niche product. VNC on Windows maybe more so. So it’s gratifying to see such a mature and streamlined OSS effort.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com99tag:blogger.com,1999:blog-26260493.post-91520056489182206392009-07-07T20:47:00.001-07:002009-07-07T20:50:10.277-07:00Can iPhone et al Drag Augmented Reality Into Non-Augmented Reality?<p>I’ve been pitching <a href="http://www.howstuffworks.com/augmented-reality.htm">augmented reality</a> apps in startup circles for a few years now, so it was exciting to see the AR startup crop grab some press coverage this week (<a href="http://digital.venturebeat.com/2009/07/03/startups-push-augmented-reality-apps-to-market/">VentureBeat</a> and <a href="http://venturebeat.com/2009/07/06/augmented-reality-finds-you-organic-food-london-tube-stops/">more VentureBeat</a> and …even SF <a href="http://abclocal.go.com/kgo/story?section=news/drive_to_discover&id=6900269">ABC 7</a>).</p> <p>With the iPhone hardware suite (and comparable devices like the Android and Pre), there’s no shortage of hardware for the core AR tasks: </p> <ul> <li>capture decent-resolution images </li> <li>recognize “target” areas in images </li> <li>contextualize the targets if necessary, by adding GPS data, solid-state compass data, and/or accelerometer (angle) data </li> <li>lookup augmentation data suitable to the target and the end-user via suitable web services</li> <li>employ “billboarding” or 3D rendering to composite a representation of the augmentation data on top of the target</li> <li>repeat as fast as possible without draining the battery (yeah, right) </li> </ul> <p>Now for part two of the plan: this facility needs to run through a cool looking visor (a.k.a. "head-mounted display” or HMD). And neither the $6,000+ price tag nor the Silence-of-the-Lambs-night-vision look is appealing on <a href="http://www.inition.co.uk/inition/product.php?URL_=product_hmd_trivisio_hmd_seethrough&SubCatID_=16&cur=USD">these traditional high-tech units</a>. </p> <p>Happily, there are <a href="http://www.i-glassesstore.com/hmds.html">mass-market headsets</a> designed for the gaming or personal entertainment market which are <em>almost </em>ready to go. A <a href="http://www.vuzix.com/iwear/products_wrap920av.html">couple are even within striking distance of cool factor</a>. Maybe an Apple logo would be enough to do it, at least for the Bay Area.</p> <p>Even better, leaders such as Vuzix recognize the need to provide video and accelerometer data from the POV of the headset (vastly reducing the amount of computation needed contextualize the image). They appear to be planning these capabilities as optional clip-on modules to their newest “Fall ‘09” model visor.</p> <p>Note the word “planning.”</p> <p>Like smartphones themselves, we’ve been here before … a lot of times. The iPhone was easily the industry’s 10th attempt at a commodity handheld computer, so it’s not like the writing is on the wall. Unless it’s AR writing:</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://docs.google.com/File?id=drqkxqg_61gb4bv74p_b"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width:379px; height:214px;" src="http://docs.google.com/File?id=drqkxqg_61gb4bv74p_b" border="0" alt="" /></a>Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com9tag:blogger.com,1999:blog-26260493.post-76677971164541393652009-06-13T20:34:00.001-07:002009-06-13T20:34:59.872-07:00Workaround for Some Instances of Win 7 WiFi Problem<p>One of the very few real broken bits in the Win 7 RC is a <a href="http://skipmeamadeus.blogspot.com/2009/06/windows-7-rc-one-month-in.html">WiFi problem</a>. The current thread on Microsoft TechNet is <a href="http://social.technet.microsoft.com/Forums/en/w7itpronetworking/thread/5098a34c-1f38-4dbc-a723-eda56578eea8">here</a>.</p> <p>On at least a few laptops, the following is a dependable if annoying workaround.</p> <ol> <li>Turn off the WiFi with the laptop hardware switch (“airplane mode”)</li> <li>Open Start –> Computer –> Manage –> Device Manager –> Network Adapters</li> <li>Right-click and disable the wireless adapter</li> <li>Wait a bit and verify the OS has completely lost the wireless adapter (by watching the icon in the tray)</li> <li>Turn on the WiFi with that hardware switch</li> <li>Right-click and re-enable the wireless adapter</li> <li>Wait … potentially a couple of minutes for Windows to find the appropriate network, connect, and recognize the route (if applicable) to the Internet</li> </ol> <p>This maneuver is a hassle, to be sure. But it seems to work 100% of the time on some laptops (including mine) and it is much more convenient than rebooting, which is the only other dependable solution.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com9tag:blogger.com,1999:blog-26260493.post-11442643904861947902009-06-10T20:40:00.001-07:002009-06-10T20:40:04.941-07:00iPhone and Palm Pre – the Obligatory Post<p>I’ve had my paws on the Pre, and while I have not, of course, gotten hold of a 3GS, it doesn’t really matter.</p> <p>See, getting my hands on a 3GS might convince me it has a better hardware/software experience. And since the 3G already has a better hardware/software experience than the Pre, I’m going to call it a “gimme” for the new 3GS.</p> <p>The Pre, for all of its clever conceits compared to most phones, is still clunky, hiccup-y, and jittery next to even the current iPhone model. The graphics aren’t as smooth, the UI is harder to use, the physical keyboard is marginal, and on and on.</p> <p>On top of that, it is hard to overstate how important the app ecosystem is to this “competition,” and Palm doesn’t even seem to be trying (they’re still saying “real soon now” on the SDK).</p> <p>No matter how many apps in the App Store are just fart apps, and no matter how beautiful the bundled apps on the Pre are, there is no contest because these guys are playing different games.</p> <p>Apple has succeeded in making the phone a general computing platform in the mind of the public – something I <a href="http://skipmeamadeus.blogspot.com/2006/05/time-for-platform-mvno.html">argued for</a> 3 years ago – and <em>you judge a platform not by its internal specs but by what you can run on it</em>. Palm doesn’t seem to get that. They’ve got a decent bundle of specs but there’s nothing to run on it and there may never be much.</p> <p>So with Apple still killing in the UX department, and Palm leaving their A-game at home (if they ever had one) as far as the app/platform/dev community goes … is there anything positive to be said for Pre in this contest?</p> <p>Only this: AT&T’s network is so egregiously ill-behaved in so many prime metro areas that Sprint could actually pull a few people across the line.</p> <p>I am one these last folks: I would much rather replace my current phone with an iPhone, but the thought of another two years of dropped calls, missed calls, bars-but-no-coverage, data connection unusable half the time … and I’m seriously considering the Pre. </p> <p>Say what you will about Sprint (I’ve used every major carrier and none is perfect), where they have coverage, the devices just work. You can make or take a phone call. Which, ironically given that smartphones are bordering on augmented reality nowadays, is still the <em>sine qua non</em> for a phone.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com3tag:blogger.com,1999:blog-26260493.post-82286542634642713282009-06-09T17:35:00.001-07:002009-06-09T17:35:33.637-07:00Windows 7 RC, One Month In<p>A month ago, not long after the RC was released, I wiped my ol’ Server 2003R2 notebook (yes), and installed Win7 x64. Time to try a consumer OS on the machine again, finally go 64-bit, and jump without a net (I had a big client demo coming up and decided it would be sink-or-swim with 7).</p> <p>First, a word about this laptop. Bought in the holiday sale period of ‘07 just for client demos and occasional web surfing, it would take a whole new, um, “lower end” category of Microsoft “Shopper” commercials to capture the spirit of this baby: for $299 I got a mobile Celeron (1.6 GHz, one core, no HT) and 512MB of RAM. Billed as “Vista Basic Ready,” it was being discontinued due to … not really being Vista Basic Ready. Well, duh. I had given up on Vista after my 3.6GHz desktop choked on it, so I put another GB in the laptop and loaded Server 2003R2 (using unofficial XP drivers I grabbed off the net).</p> <p>So … Windows 7.</p> <p>Upon install, all of the hardware was supported perfectly, which isn’t a huge surprise since 7 uses Vista-era drivers and this hardware ensemble was originally targeted for Vista.</p> <p>Except for a compatibility issue with AVG Anti-Virus (which I’ve written about before), it has worked almost perfectly with everything I’ve thrown at it – ranging from Office and Visual Studio 2008 to Alfresco Enterprise (yes, a Java server app), Google Earth, and Ruby. Overall performance has been excellent and better than I would have expected. No, I wouldn’t play games on this machine, and the 5400-rpm hard drive can be a drag just as it is on most laptops.</p> <p>The two big negatives I’ve seen are as follows and will hopefully be fixed by RTM time.</p> <p>First, there is a well-documented issue with WiFi. On a cold boot, Windows does just what you want it to do with the WiFi. But, after waking from sleep or hibernate, or trying to switch networks a few times, it just cannot seem to sort itself out. Most of the time you are forced to reboot to get a working connection. This bug is all over Microsoft’s Win 7 feedback forums, I’m just too lazy to look up a link right now. So hopefully it will get a fix.</p> <p>Second, the integration with other default browsers (I use Chrome) is broken in a bunch of places. Many of the cases where the shell is called to supply a browser to a specific URL do not work (e.g., menu options in twhirl, connections to the web from Office Live). In addition, Windows doesn’t want to associate local .html (or .htm) files with Chrome. Sometimes I can get these things fixed, but then they revert (perhaps partly a result of Chrome’s auto-updates). </p> <p>These cases all work fine on XP and don’t require in-process loading (suggesting it’s not a x86/x64 issue). It’s inconvenient, and the anti-trust folks will be back after Microsoft if they don’t make other browsers first-class citizens soon. So this bug should get squashed.</p> <p>Aside from those two admittedly very annoying issues, this is a really solid, fast, and elegant operating system. How serious is the “Microsoft tax” issue on OEM PCs? I don’t know, but if I do pay such an implicit tax on a new machine, I’ll be a heck of a lot happier if I can get a Win 7 license out of the deal and not a Vista license for my trouble.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com5tag:blogger.com,1999:blog-26260493.post-75748277084667609292009-05-29T10:35:00.000-07:002009-05-29T10:42:24.100-07:00Mark Process for x86 to Use Skype API or Topaz SigPlus APIIf you happen to be integrating your Windows app with Skype's COM bridge, or with Topaz' SigPlus API for their biometric digitizing signature pads, those libraries won't play nice if loaded from an x64 process.<div><br /></div><div>The easy fix -- assuming you don't have dependencies that mean you need x64 -- is to create a build configuration for your main app that specifies a target platform of x86 (instead of "Any CPU"). The resulting app will run in WoW (the 32-bit shim for 64-bit Windows) and works fine with these libraries.</div><div><br /></div><div>The hard fix would appear to be using IPC to coordinate two different processes: your main app in x64, and a proxy/helper 32-bit process running in WoW that works these DLLs for you.</div>Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com11tag:blogger.com,1999:blog-26260493.post-1618289436787848682009-05-29T10:02:00.001-07:002009-05-29T10:31:44.335-07:00Those Little Shape Widgets in VS2008 Require DeploymentThe Visual Studio 2008 SP1 control palette has a few "shape" widgets -- Rectangle, Oval, Line ... which come from a "Visual Basic PowerPack" library: Microsoft.VisualBasic.PowerPacks.Vs.dll<br /><div><br /></div><div>If you use these, you need to deploy the library manually with your application. That is, an up-to-date .Net 3.5+ machine will <i>not</i> have the library available globally, and Visual Studio will not mark this DLL to be copied into your output folder. </div><div><br /></div><div>I haven't checked to see whether the VS Installer project will determine the dependency and include it -- I'm guessing it will. But if you are doing xcopy deploy, or just testing, you will need to bring this library along.</div><div><br /></div><div>There is also an earlier version of this same library, that shipped on VS2008 but will not work (it is missing some components that were added to the namespace later). So if you need to build against the current version (e.g. if you are working on code that uses the shape components), make sure you update to VS2008 SP1, which updates this library.</div>Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com11tag:blogger.com,1999:blog-26260493.post-41087387772021892772009-05-14T16:12:00.000-07:002009-05-14T16:23:52.033-07:00Windows 7 and AVG == Unhappy CPU UsageThe title pretty much says it all.<div><br /><div>Backstory is that I ran Windows 7 in a VM without any anti-virus while doing some evaluation, and I was impressed by how sparing it was of resources.</div><div><br /></div><div>Then I installed the RC on my (underpowered old) laptop, figuring it would be a good replacement for Server 2003 (which is resource efficient but not exactly designed for laptops).</div><div>The RC used somewhat more memory -- it appears to be able to adjust its memory footprint depending on the host hardware, which is cool -- and a <span class="Apple-style-span" style="font-style: italic;">ton </span>more CPU.</div><div><br /></div><div>The CPU usage was suspicious because it's rare to find software that consistently pins a CPU with actual work, and because the usage was high priority -- coming from kernel space or a library tied tightly to kernel hooks. It was also suspicious because Microsoft plans to sell a version of 7 on netbooks, which are even more underpowered than my two-year-old bargain-o-matic laptop.</div><div><br />Turns out AVG, generally a fine anti-virus product, struggles with Windows 7 and often insists on every available CPU cycle, while the end user sits there wondering why context menus won't even open anymore.</div><div><br /></div><div>After a bit of Googling, I removed AVG and installed Avast, and 7 is screaming along on the laptop now.</div><div><br /></div><div>Note the retroactive Windows 7 hardware subsidy: this laptop was discontinued by the manufacturer in '07 because it shipped with Vista Basic but proved so slow as to be completely unusable in that configuration. The new OS basically injects value into the old machine.</div></div>Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com10tag:blogger.com,1999:blog-26260493.post-66111212037787954512009-04-25T11:10:00.001-07:002009-04-25T11:10:44.186-07:00Bonus Security Credit for Google Chrome’s Strange Install<p>Last fall, many folks including myself <a href="http://skipmeamadeus.blogspot.com/2008/09/chrome-unusual-installation-location.html">commented</a> about Google Chrome’s unusual install behavior. Our best guess at the time was that it represented an attempt to accelerate adoption, by allowing non-administrative users to install Chrome.</p> <p>It also allowed lower-privileged domain users in corporate environments to install and use Chrome unless their IT specifically blocked it.</p> <p>With this <a href="http://news.zdnet.co.uk/security/0,1000000189,39644412,00.htm">recent Chrome vulnerability and rapid patch cycle</a>, though, I’ve come to see the install in a new light.</p> <p>Firefox requires an admin to initialize an update. This can be done through programmatic remote admin or right on the console, but still requires intervention. IE can be updated via Windows auto-update, but if auto-update isn’t set to run or if a specific patch needs to be applied, it requires intervention. Chrome, on the other hand, will update itself on the fly for each user’s install (it does require a restart, but only of the Chrome app) unless the installer is cracked to remove the GoogleUpdater component.</p> <p>Given the cost of having an out-of-date browser version versus the risk of having Chrome updated without admin knowledge … I have to say I like this approach.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com9tag:blogger.com,1999:blog-26260493.post-28865581408385567562009-04-25T10:46:00.001-07:002009-04-25T10:46:11.148-07:00Notebarn Update<p>Notebarn, my Windows Mobile / Exchange sync notes app, definitely looks like an archaeological relic these days. Dating from early ‘07, before the iPhone era, and being a simple text utility, it is almost comic how it doesn’t resemble modern mobile apps.</p> <p>That said, I still use it, and it turns out a lot of other people have been using it too. So when a user helped me reproduce a tricky timing bug that could cause data loss under certain circumstances on app initialization, I hopped back into the old (and quite small) codebase to fix it.</p> <p>There is a little more info on the <a href="http://www.selfmummy.com/notebarn">notebarn project page</a>. Or if you just want to install the app you can install it over-the-air <a href="http://tinyurl.com/37bd79">from here</a>. If you already have the app it will automatically install in-place over your existing version. And since the “notes” are actually stored in an Outlook/Exchange Task, the install won’t affect existing data.</p> <p>A word about backups: notebarn doesn’t have its own data backup mechanism. There are two main approaches to backing up and recovering data if you should lose it for any reason (e.g. problem with notebarn, problem with ActiveSync, accidentally deleting a note you needed, etc.) </p> <p>One is to lean on whatever backup solution protects all of your Outlook/Exchange data, since notebarn data is really Outlook data. If you can go back to a backup snapshot of this data, even temporarily, you can simply grab the notes data from there. If that’s not practical, you can either manually or via a script back up the “My Notes” item from Outlook tasks, into another place in Outlook, the filesystem, etc.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com12tag:blogger.com,1999:blog-26260493.post-66793054005007546002009-04-20T15:57:00.001-07:002009-04-20T15:57:27.295-07:00Google “Similar Images” Roadmap<p>Ok, it’s not their roadmap, it’s my roadmap.</p> <p>I was psyched to see the <a href="http://googleblog.blogspot.com/2009/04/hard-at-play-in-google-labs-with.html">Similar Images</a> announcement today, but I was underwhelmed by the results. That’s ok, it’s helpful, it’s free, and <a href="http://skipmeamadeus.blogspot.com/2009/04/visual-and-context-cued-semiotic-search.html">here is the post</a> where I explained how to build the rest of it.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com6tag:blogger.com,1999:blog-26260493.post-65336116920480746992009-04-20T15:53:00.001-07:002009-04-20T15:53:41.725-07:00Oracle and Sun: Cui Bono?<p>Well, here’s a hint: it’s not <a href="http://news.cnet.com/8301-13505_3-10223090-16.html">Oracle, “Sun</a>,” Java, or MySQL in the long run.</p> <p>I’m thinking the Ruby, Python, and PostgreSQL worlds just got a shot in the arm, as this is minor calamity (at least) for Java, and a major one for MySQL. Ironic, since Java maturing like a fine wine and recovering from early-decade blunders; MySQL was already in trouble thanks to Sun.</p> <p>As for benefits, it’s also not Google, who relies heavily on Java but could eventually find itself in an adversarial relationship with Oracle as enterprise computing moves to the cloud. Google does have enough sheer wo/manpower to exploit the OSS licensing on Java to take it in its own direction if necessary … but is that really a desirable way to go? or one the investors can live with?</p> <p>I don’t think Microsoft minds this one bit either … since there was nothing that that Java, Oracle, and their communities (and users) couldn’t do before that they can now, while a number of scenarios (Java and open source databases/appservers in the enterprise) suddenly become just a bit murkier.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com5tag:blogger.com,1999:blog-26260493.post-16175549527307822612009-04-15T20:43:00.001-07:002009-04-15T20:43:41.237-07:00Atalasoft: Another Example of Gnarly DRM == Lost Sale<p>I’m working on a project that involves semi-automated document imaging. Scan, deskew, crop, re-arrange …</p> <p>It’s on Windows, where every modern scanner hooks into both <a href="http://www.twain.org/">TWAIN</a> and <a href="http://msdn.microsoft.com/en-us/library/ms630368(VS.85).aspx">WIA</a> out of the box, often without even needing a vendor driver, so I just needed a library/toolkit to do the lifting on the app logic side.</p> <p>Enter <a href="http://www.atalasoft.com/products/dotimage/documentimaging/default.aspx">Atalasoft DotImage</a> imaging libraries. Does everything you need, works fairly well. Established presence in the market. We start heading in that direction. The Atalasoft bits we needed turn out to be pricey as components go, and we would need a runtime license as well as the development license – but this is a commercial project the success of which would not be diminished by the software costs. So we didn’t blink at the price.</p> <p>We downloaded the dev SDK, implemented a few features … and we needed to show them to customers. In other cities on other machines. Well, the dev SDK is crippled and doesn’t allow that.</p> <p>Atalasoft’s sales department generated a 30-day license for me, and sent me the instructions to install and deploy it. And … it half worked. Some machines could run the deployed app. Other machines, the app would crash when the relevant DLLs tried to load, despite deployment of the magic binaries, license files, and other DRM voodoo.</p> <p>For a brief moment, I thought maybe my app is just broken … but, upon attaching a debugger, I saw that all of these crashes threw the same error. And, since it was .Net, the error was in plain English: Atalasoft’s licensing module was barfing and taking the whole app down.</p> <p>At that point I could have spend more critical hours trying to navigate around these problems (I’m guessing their pre-sales tech support would have tried) … but … wouldn’t you know it, here is another company offering a similar library, much more agreeable terms, 30-day trial and a seemingly foolproof license key mechanism.</p> <p>Download, type type build deploy. Success. Haven’t looked back.</p> <p>Now it’s also convenient that this other product seems to work a little better, has more agreeable legal terms and costs less. But those were not dealbreaker criteria at this stage.</p> <p>I would never have even gone down the list to this other vendor if Atalasoft’s DRM hadn’t broken my tight-deadline customer demos.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com16tag:blogger.com,1999:blog-26260493.post-21349600181973905712009-04-14T22:32:00.001-07:002009-04-14T22:32:45.627-07:00Facebook “Private” RSS Feeds Probably Don’t Leach Data…<p>Last year I experimented with private group microblogging systems via authenticated feeds. Didn’t go anywhere, because many of the biggest newsreaders don’t properly support authenticated feeds. And “obscure but public” feeds get indexed by aggregators like Bloglines, by design, making sensitive content much less obscure.</p> <p>Enter <em>feed access control</em>, a several- (3-?) year-old RSS/ATOM extension that tells Bloglines, and anyone else who is listening, that this feed should be treated as private, even though it’s public.</p> <p>Facebook’s feeds are intended to support this protocol:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzIlC8y_a0thMJugMpc7N5bnXvq8FIqsmw5caQDhW_z285ftPhcP_FwTteT6nO8I9qD80NnDbBsVhp6pJJwjkhqxIuEWNPqDvbwoQyEBOIU2mlGedIQJBXUQGAJklyCbMSTfDqFg/s1600-h/fb%5B7%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="fb" border="0" alt="fb" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh38bWID2tsj4ltMl-QasomWlpol9Usba6wv7CS_ap8qWD9tWFlFpV7lVuHfzfJz8Xgx8a5YDsuz_kLxdmiXT23vJFi-tVndpOKdx8W9BOkjZKv61uV4XiuuSAZ2tjBhky2ocGD-w/?imgmax=800" width="433" height="288" /></a> </p> <p>Which seems reasonable enough. </p> <p>There are a couple of issues though. First, this approach is based on a third-party’s positive action to prevent or “opt-out” of publishing and indexing, in a system that normally defaults to syndication, indexing, etc. <a href="http://mashable.com/2007/09/24/facebook-feeds-security/">So it’s easier for a glitch to expose data</a>.</p> <p>Second, the whole “fac” extension is a gentlemen’s agreement among parties that couldn’t even agree on making authenticated feeds work well. Perhaps they all make a best effort to isolate the marked content. But tomorrow, a startup with a rocking aggregator could simply ignore “fac” and expose all of the feeds it has.</p> <p>In some sense, the same vulnerability exists with other systems – if you signed up with some random webmail provider, who’s to say they don’t expose your mail. But because RSS is public by nature, almost all feeds live utterly unprotected, and this extension is one vendor’s hack, it’s not quite the same.</p> <p>All in all, probably not a big reason for concern. But when people tell me how private things can be on facebook (where you can sneeze and end up revealing your data because the IxD is tilted so heavily toward sharing everything) it always seems worth noting how your data (via your friends’ feed subscriptions) can slowly leach out into the open ocean of the indexed net.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com8tag:blogger.com,1999:blog-26260493.post-23883271873669505482009-04-13T10:26:00.001-07:002009-04-13T10:26:02.936-07:00Random Bit: Sysprep Re-Writes Boot.ini … Not Always Correctly<p>I discovered the hard way that Microsoft’s sysprep tool (for configuring machine images) re-writes (at least some of the time) the boot.ini file, the file which tells the Windows initial bootloader which OSes are installed on which devices and partitions.</p> <p>The new boot.ini contains the same OSes as the old one, but it specifies a different default, and a zero timeout for the user to choose what to boot.</p> <p>I can imagine some reasons why sysprep might want to do this, based on speculating how I might deploy enterprise images.</p> <p>Only the thing is, if I were going to re-write boot.ini, I would at least check to see which OS was currently running and maybe make that the default. As it is, sysprep made a different OS the default – it picked the “first” OS in the device tree even though that is not the OS I was trying to sysprep. This behavior seems more like a bug than a feature.</p> <p>In any case, if this happens to you, there was no long-term damage done -- you can just reconfigure the boot.ini file by hand and restart.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com11tag:blogger.com,1999:blog-26260493.post-12898845391251847412009-04-06T16:19:00.001-07:002009-04-06T16:19:35.975-07:00Enable “Modern” (Themed) Common Controls in Hybrid WPF/WinForms Apps<p>Here is a quick hint to save someone from a bunch of Googling:</p> <p>If you are building a WPF app, you may find that you need or want to also use some Windows Forms windows. In my case, I was adding a form just to host a WinForms control, so there was no point in creating a WPF form just to host the WinForms Host container in order to add the control. A more common scenario is you want to invoke a built-in Windows dialog box, which is not natively a WPF object.</p> <p>If you do this, it will work, but you will notice that some controls are rendering their old-fashioned look and behavior – you’ll be zapped back to the era of Win 2000 or the earliest .Net apps that lacked the benefit of <a href="http://msdn.microsoft.com/en-us/library/ms997646.aspx">comctl32.dll version 6</a>. Square edges, no mouse-hover behaviors, etc.</p> <p>The short answer for how to fix this is that you need to add a call to System.Windows.Forms.Application.EnableVisualStyles(). </p> <p>Add it once, somewhere early on. It’s ideal (though not always necessary) to do this before you start instantiating the WinForms objects.</p> <p>Apparently the template code for WinForms projects contains this line, and depending on your POV, that’s either “low level boilerplate that an app developer shouldn’t have to care about” or “the kind of thing that kids nowadays just take fer granted with their magical IDEs and WYSI-whatnot, virtual memory and lazy programming habits.”</p> <p>I was also particularly motivated to write this post because the most accurate (and earliest) Google hit I found on this topic was to one of those scam programmer support boards, where they wanted me to sign up for a trial <strong>with a credit card</strong> just to see the discussion thread on this issue. </p> <p>Which is half insane if they could persuade me that had the right answer inside, but 100% insane since there was no way for me to know that their “answers” weren’t way off topic from clueless n00b who thinks a HWND is what you pull to keep the rain out of your office.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com6tag:blogger.com,1999:blog-26260493.post-2166308463918236032009-04-03T13:26:00.001-07:002009-04-03T13:26:03.084-07:00Visual and Context-Cued Semiotic Search Opportunity<p>Want a hardcore problem to work on? to fund? to stay-up-nights-only-to-see-Google-do-it? or maybe get-bought-by-Google?</p> <p>We need a search engine that searches based on visual and contextual clues about the appearance of objects -- especially of signs and symbols -- rather than just based on words that (perhaps) describe them.</p> <p>For example, if I see a bumper sticker around town, with a green star on a blue field, I might want to see if this represents some well known organization or cause. I could search for “green star" and “bumper sticker” or something similar. But I probably won’t find anything. </p> <p>Moreover, when the elements of the design don’t have names (“star”, “stripe,” “field”), properly describing a complex design in a single search gets difficult. Imagine you saw the new Pepsi logo:</p> <p> <img src="http://farm4.static.flickr.com/3003/2969469986_58df961085.jpg?v=0" width="87" height="72" /> </p> <p>You don’t know what it is; for the sake of the argument, imagine you don’t have any cultural Pepsi associations to work from either. What do you type in to the search box? Circle? red? stripe?</p> <p>Good luck.</p> <p>How do we solve this problem?</p> <p>I envision a search that consists of several stages. At the first stage, you can add descriptive words, or you can import a similar image, or even draw/sketch some cues right on the page. That may sound unlikely for less design-oriented folks, but many unknown visual designs consist of largely straight lines, simple geometry, etc. So it’s not unreasonable that I could sketch in a simple design, or even take a swing at the Pepsi logo above, with just a circle and 3 straight lines using an AJAX or Flash inline drawing tool.</p> <p>From these inputs, the search engine draws a set of possible results – but it also generates a set of context-narrowing options that I can use.</p> <p>It presents options to choose where I saw this design: web, billboard, tv, clothing, museum, public building (e.g., a capitol or courthouse), manhole cover, etc.</p> <p>Perhaps knowing material is useful: was this printed? embroidered? leather? denim? engraved metal?</p> <p>This is a challenging but eminently creatable piece of software.</p> <p>I’ve actually had a lot of instances where I would have liked to use something like this – but, if it’s never happened to you, consider: when computer vision progresses beyond working with the local environment, objects and known patterns (people), the machine will need to take the next step. It will want to dereference symbols to find data and meanings in order to solve problems. And, in order to do this, it will need benefit from this kind of visual-semiotic search heuristic, which starts with a visual-context search like the one we are discussing.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com7tag:blogger.com,1999:blog-26260493.post-69535788042555326272009-03-31T16:59:00.001-07:002009-03-31T16:59:37.445-07:00Good Results So Far For Google RAM<p>A week ago I had 4GB of RAM die (well, part of matched pair anyway) in my main desktop PC.</p> <p>I’m currently awaiting replacement under warranty from Corsair, but meantime it’s hard to run dev tools and big virtual machines with the measly amount of memory I have left. So I thought it was time to give the new Google network-attached RAM a try.</p> <p>I had to flash the motherboard BIOS of course and upgrade the chipset driver and the on-board network controller firmware. Google RAM, just like <a href="http://lifehacker.com/348197/access-your-computer-anytime-and-save-energy-with-wake+on+lan">wake-on-LAN</a>, has to interact with the network card at a hardware/BIOS level. In this case, the purpose is to ensure that any OS I boot sees the new space just like local memory.</p> <p>Then I rebooted and … nothing. </p> <p>Where is my free 4GB of storage?</p> <p>Then I remembered that Google’s revenue model for this product requires you to run a Windows service that in turn interacts with a Google-provided kernel patch for PAE. </p> <p>In addition to providing checks in real time – as my machine accesses RAM – for any security threats, this service displays Google ads as 5 new icons on my desktop.</p> <p>Apparently they are context-based, and determined by Google’s analysis of what I have in RAM at the time.</p> <p>And they are surprisingly accurate. I had a picture of a Corvette open in Photoshop, and the G-RAM icons turned into links to car dealerships, new-car financing, and a discount oil change.</p> <p>Google’s FAQ insists that it does not look at my clicks or the image file metadata – instead, its server analyzed the image in real time (since the network RAM is in their datacenter) and determined I was looking at a new Corvette.</p> <p>The only downside was that my cable modem signal dropped out for a couple of minutes, and the local service warned me not to touch any processes using G-RAM until it could sync back up, or those apps would immediately crash.</p> <p>No matter, overall it’s great technology, and I think my RAM replacement will arrive from Corsair tomorrow.</p> Adamhttp://www.blogger.com/profile/01882993823597457057noreply@blogger.com8