Dennis Forbes on Software and Technology   Subscribe to RSS


About the Author
Dennis Forbes is a Toronto-based software architect. While focused primarily on the .NET and SQL Server worlds, Dennis frequently ventures outside of this comfort zone into game development and image processing. He has been published in several industry magazines, has been quoted in the Wall Street Journal and has been interviewed by NPR.

He is a vice president and lead software architect at an innovative New York City hedge fund back-office services firm.

Dennis has been working on solutions for the financial, telecommunications, and power generation markets for over 13 years.


Recent Entries


The Feed Bag
Jan 11 - Answer: No
Jan 11 - The Git DVCS

 
Friday, March 20 2009

We have a number of network devices at play in my household.

I have my work machines. My wife has her laptop. My kids have their PCs.

Family and friends that comes to visit connect their iPhones and laptops to our 802.11g/n.

We have shared media that we play on devices like the Xbox 360 and PCs over protocols like uPnP, DAAP and SMB. We have shared files, such as financial info, that we need to access from any machine, all while confident that they remain as secure as we want them to be.

We do VPNing from remote locations like coffee shops to access files and media. We have a shared printer.

To optimize this situation without leaving my power guzzling pig of a PC on around the clock (I’ve setup and torn down a number of home servers over the years, all the ways back to a FreeBSD-based device in the mid-90s that also doubled as a firewall), a while back I bought a Synology DS-106j NAS unit and dropped it on the network, deciding on it after looking at some Windows Home Server products, finding them overpriced and uncompelling (not least because of concern about licensing and DRM BS.)

One of the selling points of this ~$200 unit (to which you add whatever 3.5” hard drive fits your fancy) was the gigabit network port. To me that implied that it must be capable of at least keeping a 100Mbps pipe saturated with goodness.

I also liked that it gently sipped power (13W or so with the hard drive), allaying any guilty about leaving it on around the clock.

The Synology unit is fantastic in many ways.

It has a fantastic interface. It is rock solid (zero downtime with it) and is very feature rich, with several free “firmware” updates since I purchased it adding a number of new features and interface improvements. It is easy to setup and use, and to a superficial degree secure. It comes with great desktop software for common tasks like backing up (and versioning) files on your Windows machines. You can offload torrent downloading to it if you’re into that sort of thing.

But the hardware seems to be underpowered. The 200Mhz MPC8241 CPU that powers it can’t deliver on the extensive feature list, in my opinion.

The 1Gbps network port turned out to be brave talk that it couldn’t back up with action. Normal SMB/CIFS (the protocol that Windows utilizes to access network file shares) averaged about 2.5MB/second throughput with the device, which factoring in overhead is around 22Mbps, leaving plenty of headroom before it hit the limits of even a lowly 100Mbps network.

I got it up to 8MB/second or so by turning off all of the features like media sharing, and then disabling all security on the share and enabling guest access – it seems that access control security significantly adds to the computational burden – but that isn’t a viable day-to-day option so I had to revert and it was back to 2.5MB/second. FTP was a little better, but was still way below expectations given that the same hard drive got a rough 40MB/second from a direct-attached USB 2 enclosure.

Given that I am now downloading from the web at large at 1.1MB/second, this seemed silly. As we’ve started to amass monstrous AVCHD video files of a GB or more from the home video camera (the latest GB or so features my youngest son herding some chickens that had escaped from their pen at a local farmhouse), it was getting unsustainable.

Synology is now selling a purportedly faster unit, but given that I saw much lower real-world speeds than what they graph for the old unit, and their new unit really doesn’t do that much better anyways, it didn’t compel me to upgrade. Many competitive low end home NAS devices have reportedly similar performance in the wild.

And it isn’t just waiting while moving large files or having SyncBack jobs run. Navigating the music directory from a uPnP client made it obvious that the slowness impacted all activities, with basic operations having intolerable delays. Attaching to its network shares from client PCs inexplicably had multi-second waits before responding.

Then again, I’m the guy who thinks that the biggest crisis in the electronics world is the excessive lag before DVD players will eject a disc, so maybe I’m an outlier, but it seemed like a pretty big weakness of what would otherwise be a great product.

It really bothers me when units doing tens or hundreds or thousands of millions of operations per second take perversely long times to do simple things.

On the bright side, the small dimensions of the enclosure made it easy to find it a home, but it also had the S.M.A.R.T. monitoring of the hard drive complaining about borderline heat incessantly. And the printer sharing never worked properly, but given the endless variety of printers I won’t blame that on the NAS unit.

So I decided that it’s time to replace the device, with the following criteria for its successor.

  • Relatively cheap, because I’ll probably just be replacing it soon enough anyways
  • CIFS and FTP at a minimum
  • uPnP would be nice. DLNA wouldn’t be bad. DAAP would be gravy
  • Some method to backup its own files to a remote location, or at worst to an attached USB drive, with security options like encryption
  • Good performance. On a switched 1Gbps network I would hope to see read throughput times of 20MB/second or better, and writes not much worse, with a very low latency on activities: Network shares should enumerate close to instantly
  • Small enough that it can be physically secured such that the alarm responders would have arrived before a thief could have gotten to and removed it
  • Low enough power usage that I don’t have squirrels giving me a beatdown
  • A bit of fun. I look for these things to be educational and challenging to a degree. The easiest solution doesn’t provide me the entertainment value, so turnkey is a negative. At the same time, I have a very finite amount of time to deal with things like this, so it can’t require too much coddling

Local RAID isn’t important to me, as availability isn’t a primary consideration (and multiple drives go contrary to power conservation / heat reduction goals, and generally increase maintenance.) Every file that is on the unit always exists on at least one other drive on a separate system, so if the drive died I could quickly rebuild and repopulate and life would be grand again. And it is vastly more likely that two drives in one unit would catastrophically fail than it is that two drives in physically separated devices would fail, especially when the separation between can be thousands of kilometres.

Nor do I want this to function as a media station, which I consider an entirely different function, with an entirely different requirements list. I don’t need or want HDMI output, blu-ray decoding computational power, 3D offloading, a MAME box, or anything of that sort. That’s a different project, with a different set of goals.

After looking at the available market options of targeted NAS devices, and hardware solutions like Shuttle computers, I decided to have a little fun and build my own (in the minimalist stick-some-lego-like pieces together way that is "building" a PC), so I grabbed a couple of components.

  • $102.30 - An Intel D945GCLF2 mini-ITX motherboard, featuring an on-board passive cooled Atom 330 dual-core processor. The Atom is not a powerhouse processor by any measure of the imagination, but for this purpose it should be fine.

    My only real hesitation with this board is that it uses a relatively power hungry chipset, leading to the mixed-up situation where the chipset has an active fan, yet the CPU has just a heatsink. I’d prefer a lower power board with zero moving parts, but didn’t want to risk going too low on processing power  
  • $24.75 - A 2GB DDR2-667 RAM module. Even 2GB is excessive for the targeted purpose
  • $55.22 - An Apex MI-008 MINI-ITX Case. The case is small enough that it’s stashable, but big enough that it won’t be a hard drive cooker. Like the motherboard, the case isn't a paragon of efficiency, instead coming with a less efficient power supply that is capable of a grossly excessive 250W, so that isn’t optimal, but I’ll worry about that at a later point
  • $126.90 Western Digital WD10EADS Caviar Green 1TB drive. It is intentionally a bit slower of a drive, putting energy efficiency (and with that reduced heat) ahead of raw speed, but it’s still very fast. This would be a great place to use an SSD drive, so maybe I'll swap to one of those as they mature and become more cost effective for this amount of storage

<$200 for the “NAS enclosure” part, then $127 for a good hard drive with room to grow. Pretty inexpensive, and would probably even make a decent internet appliance, which presumably is the intended use of the motherboard/CPU combo.

Putting it together was a snap, with dutiful oversight from my children, followed by a quick flash to the latest BIOS release.

I installed Ubuntu 8.10 Server from a USB stick (I considered installing FreeNAS, but decided that I wanted something a bit more custom), after which I discovered that the hard drive wasn’t set to bootable and the system wouldn’t boot without the USB key, so I had to boot with the key and use parted to manually set the sda device to the boot device, after which the USB key was no longer necessary.

Installation complete, I stashed it away, sans keyboard or mouse or monitor connection (which it makes no complaints about, happily existing without head, keys or mouse), and access since has been via putty. A magical source and destination of media and files, out of sight and hopefully usually out of mind.

I installed Samba (during the OS install by choosing the file server option), created the users and groups and perms, added some shares, and started accessing it from my workstation. It was all very easy and straightforward, including even setting up AppArmor to enforce mode against the Samba services, adding a small additional guarantee of security.

I started the first file move, ready to witness some low-cost awesomeness.

11MB / second to write to it, averaged out over the copy of a GB sized video file. I got about the same speed reading back from it.

Pretty good compared to 2.5MB/second (and now I had much better security granularity than I had before, on a much more versatile platform), but not quite what I was expecting. Awesomeness not witnessed.

The hard drive isn’t the fastest of the bunch, but it’s still very decent.

I’m far from an expert when it comes to Linux (or more generally Unix) systems, seemingly achieving some small level of localized expertise at intervals in my career, but then the solutions simply work and I don’t have to touch them again, so the knowledge rusts and each time I return I feel like I'm a Linux virgin (who would have ever thought that Linux and virgin would used in the same sentence?) It is similar to my proficiencies with Perl or the equally obtuse Powershell, where I put together very decent solutions, but then several months later look in disbelief that I actually wrote the code that now looks foreign.

Nonetheless, I quickly determined that the network adapter was auto-negotiating itself incorrectly to 100Mbps, and 11MB/second is about the max you could achieve over such a link.

After a quick bit of searching, I added ethtool -s eth0 speed 1000 duplex full autoneg off to my interfaces file (after validating that it worked at the command line). It was now at full 1Gbps glory.

So I performed the file test again.

47MB / second to write to it. 55MB / second to read back from it.

Sweet! That isn’t that far off of local storage, and is entirely with the acceptable zone. It was achieved on a $200 host device. File sharing is hardly the most demanding application nowadays, but I was happy to get something much more usable.

Just to take a side trail here for a moment, I just wanted to mention that Linux, and the evolution and progress of it and related projects, really is amazing. It is astounding that such a solution evolved the way it did. Even people who don’t think they benefit from it regularly use devices run on the OS. The amount of functionality and technology available, including the source so you can roll your own, truly is remarkable. Linux didn’t start this movement, and projects like FreeBSD, sendmail and prior initiatives blazed a successful trail before Linux really took off, but it is the most evident element of that development model.

Back to setting up the homebrew NAS, virtually every step of the way I had to consult the wizard, Mr. Google, but at least the answer was usually only a page 1 or 2 hit away (though Google Groups has taken a perilous dive into close-to-uselessness, and proved of little use.)

To this point I still haven’t had luck finding a good uPnP server for the device. uShare simply didn’t work. Mediatomb inexplicably doesn’t work with the xbox360, and even if it did the fact that its anonymous web user interface has the default behaviour of exposing your entire file system makes me question the wisdom of the developers.

Various other projects didn’t fit the bill or didn’t work for me, and most seemed to have been abandoned.

I thought I’d try the MythTV backend, as it is purported to double as an uPnP AV mediaserver, to find that it bizarrely needs an X server running and an X client on the other end just to perform the setup. I decided to purge it from the system to find it wouldn’t uninstall due to /dev/.static/dev being mounted read only. I found a workaround involving stopping and starting udev, which remounted it as read/write, but at that point the damage was apparently done, and it refused to gracefully leave the system.

So I went MythTV huntin’, committing a moronic error in the process (it tried hard to warn me, but I persisted in my foolishness.) I’ll let the putty log speak to it.

dennis@mediaserver:/var/lib/dpkg$ sudo killall mythbackend
dennis@mediaserver:/var/lib/dpkg$ whereis mythbackend
mythbackend: /usr/bin/mythbackend
dennis@mediaserver:/var/lib/dpkg$ cd /usr/bin
dennis@mediaserver:/usr/bin$ cd mythbackend
-bash: cd: mythbackend: Not a directory
dennis@mediaserver:/usr/bin$ rm -R *
rm: remove write-protected regular file `['? ^C
dennis@mediaserver:/usr/bin$ sudo rm -R *
dennis@mediaserver:/usr/bin$ ls

Installing everything once was so much fun that I decided to do it again!

So I reinstalled again. The second time around it was a very quick process (even with a nuked /usr/bin I still had a chance to backup customized config files to a client box before reinstalling, so I really didn’t lose much.)

Power wise, I’ve gone from ~13W for the DS-106j, to 35W to 40W for the new device (measured with a Kill-A-Watt. Handy device.) This represents a pretty big move in the wrong direction, but it wasn’t unexpected. 4-8W or so could likely be saved going to a more efficient, fanless power supply. That’ll be a future experiment. The Caviar Green, at 3-4W, isn’t much more power hungry than an SSD, so that wouldn’t make a huge difference. The motherboard and its chipset is the real piggy of this farmyard.

Alas, in return for the extra power consumption I now have a vastly more interesting network device, serving files at a much more usable pace.

So my first adventure is beginning the work on a .NET-based uPnP server, ensuring that it works on Mono along the way. Thus far it has been nothing but remarkable success, and it still astounds me seeing fairly complex .NET applications running well on a Linux box. The thing really, really works!

Tuesday, January 13 2009

The story of Markus Frind is not a new one around development circles: Some guy creates a remarkably unpolished, seemingly unsophisticated dating website and in short order is bragging about the million dollar checks he's getting from Google Adsense payments.

Still, you owe it to yourself to read the article about his exploits in January's Inc. It is a fascinating story of internet success against the odds, and the site that is serving up 1.6 billion pages per month on an inexpensive modicum of hardware. That article references Markus' blog entry from 2006 where he explains how his extraordinary success story began.

[Imagine that I insert some drawn-out blowhard "lesson" to be learned from Mr. Frind's success here, allowing me to justify making an entry that is basically nothing more than a link, all while pretending that if you follow these simple steps you too can achieve the same results]

Tuesday, January 13 2009

Coding Horror is an entertaining, sometimes even educational blog. Be careful diving in headfirst, though, as the technical depth is generally so shallow you'll be hitting the bottom before you've even broken through the surface tension.

It's always a danger — in the nerdly get-some-unkind-emails way — to question it. It has quite an army of loyal fans who, I presume, have had their ego carefully stroked over the years into loyal defensiveness ("Yes you are a top notch programmer! Yes you are!"): Any prior time I've disagreed with Jeff on here has resulted in a flurry of emails that are the text equivalent of the infamous Chris Crocker video.

Yet Jeff's latest entry has me unable to contain myself.

In that post, Jeff opines that Windows 7 might just be worth a look because, he says, in the latest outing Microsoft has taken to changing the visible parts of the OS, instead of, I guess, just improving the underlying awesomeness. The example Jeff draws from is that the calculator has visually changed, whereas before it was just the underlying mechanics of calculation that saw awe-inspiring improvements, all while gaggles of ungrateful goons continued to hurl insults at Microsoft, unaware of the great gift they had been handed. That Microsoft has decided to enlighten us to the great improvements they've made by visually making change apparent, instead of just doing their magic in secret.

As a newsgroup troll might say, errrrr...wut?!?!?!

What planet has Jeff been living on? What spaceship did he just hop off of, interstellar cruise of the Outer Gamagia quadrant completed, that leads him to be so completely out of touch with reality?

Here on planet Earth, Vista was seen as largely being about changing the UI — much like XP before it — and many of the complaints were that the actual utility of the OS suffered (even basic operations like moving files seemed to have missed being QA'd, slowing to a paralyzing crawl under completely ordinary uses). Functionality got lost under layers of paint, and interfaces seemed to be changed for the sake of change.

To many, Vista was 99% visual changes and 1% detrimental functional changes. But at least it brought the unwashed masses a calc.exe that had shaded buttons and a translucent title bar!

Conversely, a lot of the excitement about Windows 7, relative to Vista, is that it fixes stuff "under the hood" (better, strong, faster.)

But I'm no Vista basher, and actually believe that much of the anti-Vista vitriol is undeserved and unfounded. While I was on the record saying that it would be a product failure because it was wrongly focused and had little that compelled people to desire it, I'm actually somewhat of a fan of the OS, insofar as the comparison is with XP. Vista even has some very cool features under the hood, such as TxF, though that's the sort of structural change that isn't really useful until applications start using it, but they won't use it until it is available in a good percentage of deployed PCs.

Back to Jeff's entry, the ridiculous example of the accessory calculator being an example of...anything...really strikes me as absurd, and it seems to be the sort of "try to draw some big observation from some small example" space filler you end up resorting to when you're trying to hit a schedule.

To add to the march of absurdity, Jeff links to a ridiculous post by the occasionally interesting Raymond Chen.

In Raymond's post we hear about how tough it is for poor Microsoft (sidenote: what's with the bizarre victim complex that many Microsoft employees develop?) You see, prior to Windows 2000 someone at Microsoft made the choice that when you use a calculator in Windows, you really want to enjoy IEEE floating point rounding errors in all of your results, because the people that developed calc.exe — which would literally be a 8 hour project for an intern..you don't even need to make an installer — decided to take the laziest route possible, implementing it in the most naive way available. Raymond goes on the defensive, telling us that those critics just don't understanding floating-point. Not really, Raymond. They just don't understand how Microsoft could have ever thought that it was a reasonable decision for a calculator app to use and suffer from, versus the decimal math of virtually every other calculator app.

So Microsoft swapped out the embarrassing calculation "engine" of calc.exe (Jeff got the timing of the change seriously wrong. It wasn't between XP and Vista. It was before Windows 2000), put in the bignum-style implementation that should have been there from day one, and people were supposed to send them flowers or something? You ungrateful sons of...

Anyways, Windows 7 will invariably make a big impact, so I do plan on taking a look at it soon. But I'm certainly not motivated because calc.exe got some minor changes.

Saturday, January 10 2009

When doing activities that impact the web site presentation of projects I'm involved with, I occasionally hop down to the menu item "Validate Local HTML" in Firefox, a function that is available when you have the web development tools (you can also access it via Ctrl-Shift-A, and of course can always run it directly, but that seemingly tiny improvement in ease and efficiency of utilization can dramatically increase the usage of it). In a weak sort of TDD, it is a constant sanity test of at least the fundamental HTML validity of the generated presentation, and I always strive to get it to the rewarding green no-errors-no-warnings state.

Valid XHTML 1.0 Transitional

Does it really matter though? Ultimately what really matters is if the site renders as close to as expected as possible in the major browsers, and most of them happily overlook even egregious errors (Internet Explorer was criticized early on for being so forgiving, but given its dominance the other browsers really had no choice but to allow the same sloppiness. Most web publishers weren't about to re-engineer their site just to ensure that it displayed correctly in Opera, for instance.)

Out of curiousity I decided to check some other sites to see how many ensure that their (X)HTML is clean. The following are the results as they stand at this moment, though of course as content is added or removed the state will change (though a clean site is often a clean site with intention, and new content is automatically filtered to ensure that it is pure).

(I searched around for more good examples to sit in the PASS category, but sadly they are very few and far between)

Should this be normal?

No, it shouldn't.

Some of the errors in some of the mechanically generated HTML are simply unexcusable, and testify to the general level of sloppiness in the web industry in particular.

Check your HTML. Ensure it conforms to the specs it purports to obey, or accept defeat and step back to a less-demanding level. With tools like one keystroke validation and auto-cleanup HTML Tidy (which is available in module form, allowing you to auto-cleanup content mechanically inline in your site code - see this entry for an example of using Tidy from .NET code), there's simply no excuse.

Many will wave off such criticism, declaring that if it renders fine that's what really matters. Yet the worry about purity has more to do with the code maintenance process, and ensuring that an appropriate amount of care and concern is put into the product, in much the same way that you should strive to have 0 warnings in your projects, even if the compiled output works fine regardless. In the same way that I try (albeit with failures at time) to ensure that I avoid misspellings and typos, even if the message could be successfully conveyed with them.

Thursday, January 08 2009

It's been just over a year since I publicly laid my considerable powers of persuasion behind HD-DVD, only to see the format die a horrifying death just over two months later.

Quite an embarrassment. It was so bad I had to exile myself from blogging.

Even worse than the online embarrassment was the awkward discomfort and shame that owning an HD-DVD unit brought. When the HD-A3 eagerly popped up its now foolish looking HD-DVD logo as a guest happened in the room, the outcome was generally one of two shades of humiliating: Half the time they'd feel a little sorry for it, and by extension me. The other half was even worse, as they'd eagerly ask "Gosh, what's that? Is that the new high definition format?", forcing me to divert the conversation to whatever conflict was going on in the Middle East at the time (always one to fall back on). I quickly deported the player to the basement, if only to be free of the logo.

Toronto From 43KM AwaySeriously, though, having three young children is quite a lot of work. A former boss once remarked, on learning that I had my first child (my beautiful daughter Elizabeth), that I was a "hobbyist". I laughed at the time, thinking that he was just being elitist, what with his 8 kids or whatever it was. Turns out he was somewhat right, and I now look back at the relaxed life of free time I had with just one child. Even two seems relatively tame in comparison. Three, with them now edging towards the ages of two, four and six, introduces a lot of difficulties, as providing them all with age appropriate activities and challenges is a non-trivial task. The time available to post insightful blog entries has suffered.

But there is hope, faithful fans! I've devised a new technique that I'm going to try over the coming weeks. It's a sort of hybrid of "microblogging", but privately accumulating until it's a worthwhile post. I consider such writings cathartic and often self-elucidating, so I want to do it if only for personal satisfaction.

There's also the matter that with the recent addition of a "recent posts" panel on the right, that ungainly HD-DVD entry still falls in the list...so I've got to push out some content to scroll it off the list....just one more entry and it's outta there.

Oh and I also added the feed bag — again it was to try out a new technology and it proved a useful prototype — of links that I think are worthwhile, for anyone who might be interested.

Thanks for reading and have a great week!

Dennis

Wednesday, December 31 2008

The Good of 2008

Financial Opportunities for Independent Application and Game Makers

While so-called “ISVs” (small software shops, often staffed by just the founding programmer) have largely disappeared from the Windows platform, pushed out by Microsoft’s total dominance of most IT spend alongside a widespread consumer mentality that software should always be free — whether in the libre sense ala open source, or the more prevalent gratis sense of free in the form of piracy (often justified with bizarre logic that goes something like “I paid $499 for this PC! I’m not paying more for software!”) — other lucrative opportunities have opened up for entrepreneurial developers.

Alternative platforms like cell phones (the iPhone, Google’s Android, or the more scattered but numerous Java ME targets) and game machines (such as the Xbox 360) have provided tremendous new opportunities with limited barriers to entry. Vendor online stores and fair revenue sharing splits have made selling your product easier and more rewarding than ever before.

On the Mac the independent software market remains very robust, with a consumer base that is willing to spend for software that enhances their quality of life in some way.

Display Technology

They’ve gotten larger (but lighter and more energy efficient), have faster response rates and better quality, with color range and contrast ratios seeing great improvements, all while remarkably coming down in price. Large-screen displays with 1920x1080 pixels are becoming commonplace in media rooms, even during the downturn.

Day Trip To The City The displays in our living rooms are capable of displaying the best of converging digital media. The division between the “home computer” and the home entertainment systems (a split that began when computers started demanding better displays, a need which saw the Commodore 64 and later generations leave the family room to take up accommodations in the home office) has dissolved.

JavaScript

Over a short span JavaScript has gone from being unloved and despised, begrudgingly used only out of necessity, to being widely exploited as a language that, while deceptively simple on the surface, is incredibly rich and succulent when you look just a little deeper.

Even long time practitioners of JavaScript regularly discover new functionality they never realized was there.

The increased focus on JavaScript, and the growing richness of the web, kicked off a skirmish between a variety of projects and vendors, with a horse race between the Mozilla project, Webkit (primarily in its Safari instantiation), Opera, and the upstart Google Chrome browser. JavaScript performance in some of these latest generation offerings can even rival native code in isolated scenarios, which is extraordinary for such a high-level, dynamic language long identified as a performance pig.

It’s now worthy of serious consideration whether to use one of the JavaScript runtimes (such as V8, Tamarin, or Tracemonkey) as an engine for projects having nothing to do with the client-side web.

coffees Not all is roses with JavaScript, though. The drive towards ECMAScript 4.0 AKA JavaScript 2.0; representing a pretty dramatic shift in the language; hit some serious road blocks this year, eventually smashing off the road and exploding into mangled bits.

It’s a little fuzzy where JavaScript is heading in the coming years, but at least it’ll do it in an impressive number of iterations per second.

The Microsoft Xbox 360

Microsoft reduced the price and improved the interface and functionality. They diversified the marketing and game catalog to cater to more than just teenaged first-person shooter fanatics. For a unit that is now over 3 years old (with hardware that was probably spec’d out even a year earlier) it shows few age wrinkles, with very decent graphics at ultra-high resolutions, only occasional suffering frame rate slowdowns.

While it’s worth the price for gaming-fu alone, the 360 also doubles as a viable media extender (especially when coupled with a UPnP host like TVersity running on a PC somewhere else on the network). After bouts using full PC media boxes in the home theater setup, with the many time-thieving downsides they bring, I’m very happy to replace all of that with a simple Xbox 360 (playing streamed internet radio, Divx/Xvid, home movies on the networked NAS, YouTube clips, and so on.) With the 1080p connection and the horsepower to decode most anything without glitches, it’s a strong link in the media chain.

The marketplace functionality offers up easy access to a wide range of gaming and entertainment options, including the ability to queue up movies, shows and games on the unit or even on their online site from other devices, making them available on your 360 surprisingly quickly (I’ve queued up movies for the kids on my PC to find them available on the unit mere minutes later, seemingly exceeding the capacity of my cable connection.)

US owners with a Netflix subscription also get instant streaming of a wide range of movies.

With a decent motion sensing controller — which apparently is coming soon via a new controller codenamed “Newton”, though that could simply be more internet lies gaining truth through repeated assertion — the 360 would be uncontested.

Complaints are few, but the unit isn’t perfect.

It has a taste for polycarbonate, for instance, viciously destroying discs if you happen to move the unit at all while it’s on and endlessly spinning the disc.

[SUPER PRO TIP: After my GTA IV got eaten during a foolhardy move of a powered-on unit, the game would no longer launch but instead would freeze up the device. I never got around to replacing it, though I did discover that Rockstar Games does offer replacement media if you ship your old media to them along with $7.50. After the new NXE interface was released a few months back, with its newly offered install-to-disc functionality, out of curiosity I rented GTA IV from a local video and game store, installed it to the hard drive, and then returned it. From then on the game plays perfectly with my now defective disc in the drive. Presumably the sectors it checks to validate ownership are all still fine, and as another benefit I no longer have to listen to the optical disc noise whenever the unit is on, which is a huge improvement regardless.]

The “HD” movies available for rent online are decidedly not HD, at least not comparable to blu-ray or the defunct HD-DVD format. This isn’t surprising given that they clock in at about 4 to 6GB, versus the 30GB or so for many really high definition movies, both options using the latest codecs. They also offer a mediocre 24 hour view window from first play for rented/downloaded videos, and prices that seem a bit excessive (HD rentals come in at around $8 here in Canada, versus the $5.49 to rent from a video store, and the latter option gives me much more liberal usage times). Media embargos mean that a lot of movies simply aren’t available to Canadian users.

Computing Power

Computing power has gotten incredible. Quad-core CPUs, giant caches, ultra fast memory, arrays of massive storage devices. The storage front in particular holds incredible promise now that we’re adding SSDs to the mix. Here’s a pretty neat little product for a DIY SSD, in this case multiplexing 6 SDHC cards for much faster access. Get 6 of those (each with 6 SDHC cards), put them in a RAID10 array…you’d have absurd speed levels for about $800 for an array with 288GB of usable space. Sure that isn’t a lot of space, but it’s enough space for most reporting or OLTP databases, and you’d be enjoying 360MB/second or so read speeds and 60MB/second write speeds or better, coupled with almost instant access times.

Some inefficient-for-processing-but-good-for-development practices and technologies are becoming more tenable with the surfeit of computing power we have available to us.

The Bad of 2008

Computing Power

While it also made a showing in the Best of 2008, available computing power is still underpowered for video tasks. Once you start editing and rendering 1080p videos from the growingly common HD video cameras, and the speed of storage, the speed of memory, the speed of processors (even though video processing is one of the most capable and willing of using quad-core CPUs…it still isn’t enough)…all of it leaves a lot to be desired and makes it a less than pleasant, time consuming experience. An add-in MPEG4 compression coprocessor might be a good choice (my HD video camera has it, this tiny device doing real-time AVCHD compression, AVCHD being a variant of MPEG4, squashing to 17Mbps of video and audio info).

Video Codecs

The video codec world is a mess. If I want to convert from AVCHD to a Divx AVI, why is any transcoding necessary at all (which always reduces quality)? Both are MPEG4 codecs. In fact, virtually every top-tier codec now is just a pretty face and quasi-unique wrapper around MPEG4, albeit usually with just enough secret sauce to screw it all up. So why not just standardize on one wrapper? It seems to be incompatibility for the sake of incompatibility. [EDIT: Ben noted in the comments that I was quite wrong here. Turns out that MPEG4 is a bit of a hodge podge of codecs, and Divx shares little in common with AVC. From now on I’ll be encoding home video clips to x.264]

Blu-ray

The movies are too expensive. The benefits are too few. While the under-featured players (which seldom offer now common DVD functionality like Divx/MP4 playback, USB media playback, etc) are finally dropping in price, it’s still only a good option if you have a reliable source of rentable blu-ray discs (services like Netflix or Zip.ca, for instance, or a well-stocked local video store.)  If you buy discs you have the irritant of likely not being able to play them in the family minivan, the kids’ computer, your laptop, and so on, which is one of the major downsides of blu-ray.

The opportunity window for a new optical disc format is closing quickly given the growing interest and utilization in internet and proprietary cable system delivery (VOD from your cable company, watching downloaded or streamed movies on your Xbox 360, iTunes movie downloads, etc).

Locally, this year’s boxing day consumptionfest featured a bevy of blu-ray player sales, and it is a sign of the times that many of them still have large numbers of units left. Strangely the lack of competition with HD-DVD has left a lot of people uninterested in the genre as a whole, which is quite contrary to many predictions that predicted a blu-ray euphoria once the competition was settled.

It’s a bit surprising that blu-ray discs carry a price premium: They’re harder to rip (though the idea that they are uncrackable has proven untrue), and the outcome is a massive file that is difficult to duplicate on media — unless you want to put it on a burnable blu-ray disc that costs more than buying the movie new, or seriously degrade the quality which would sort of miss the point of ripping from a high definition source (no codec Divx magic here. The codecs used on most blu-ray discs are the cutting edge) — or online. I would expect the media groups to heavily push blu-ray, at no price penalty, purely to try to head off piracy with a more unwieldy format.

Google’s Chrome Browser

Chrome could be the world’s greatest browser and I still wouldn’t like it. Thankfully it isn’t the best browser by a long shot, so I don’t have to rationalize that conflict too far. Aside from a mostly theoretical process isolation model (which seems to have little real-world benefit, as many users find Chrome to be one of the most catastrophically crashy browsers of the bunch), Chrome offers little to justify choosing it. The V8 JavaScript engine would have been a winner if it came out 6 months earlier, but it turns out that Google was far from alone in working to speed up JavaScript.

The reason I grief about Chrome is because it has no reason to exist. The only viable reasons why Google felt the need to make their own browser are decidedly not good for the internet at large. Google owning and controlling a browser brings the same worries and concerns that Microsoft controlling a browser does.

Google makes their money selling ads. It concerns me having an advertising company running a browser project, even if they do provide a related-but-not-quite-the-same source tree as if that makes everything okay.

It bothers me even more that Google’s advertising initiatives have completely focused on subverting the Firefox userbase, cannibalizing a credible alternative to Internet Explorer that was finally becoming mainstream. I’m not entirely sure what Google’s motives are with this plan, but there is no way they can color this as Google the Good And Benevolent. It’s either an insidious end game playing out, or it’s some insular, egotistical developers at Google who just had to control things themselves, not content to work with the existing browser projects when they can stand tall and scream “We’re Google damnit! We’re super smart!”

Macromedia cum Adobe Flash

Many of the problems people encounter with “Firefox “(purported memory bloat and CPU saturation) are Flash related.

On my three-year-old son’s low-end PC — a Pentium IV 1.7Ghz with 1GB (anemic but not that bad) — many of the great online children games sites (such as CBC, NickJr, PBS, TVOntario), which are largely built around Flash, slog to an unusable crawl in Firefox, yet they run with gusto in IE on the same PC. This is odd given that the overwhelming bulk of computation in both cases occur entirely within the Flash environment (the browser essentially acting as a thin wrapper, and I can't imagine the basic communication between environments is so onerous that it could account for the difference), so hypothetically there should be complete equivalency between the browsers.

The #1 problem many users have using Linux-based boxes to browse the tubes are Flash related. This is becoming more critical as more and more Linux-based NetBooks hit the market.

Memory leaks. Sluggishness. Crashes. Flash is quite often the source.

Commerce Court - Toronto Flash brings a tremendous amount of richness to the web. Without it those game sites really couldn’t exist (I exclude Java and ActiveX given their serious problems, not to mention that Flash is purpose suited for exactly these sorts of projects), and of course it is now the foundation for most every video site. Adobe even donated the Tamarin project to the Mozilla project, though it didn’t turn out being the win it should have been given that Tamarin is largely focused on the DoA JavaScript 2.

Adobe really needs to fix this player. It has become foundational to the web.

Internet Explorer 8

This browser is so incredibly terrible that I have think that all of the MS developers that launched IE to greatness between versions 4 to 6 must have gone on twenty-year sabbaticals with their then-lucrative stock options. This browser is terrible in every way, and unless there is some tremendous forward momentum in the final sprint, it is completely unjustifiable as a browser choice, not even ranking among the top tier browsers (which include Firefox, Safari, Opera, and to a lesser extent Chrome). Using IE 8 would be like using Netware to run your network today, simply because it once was a good choice.

Nintendo Wii

The Wii has a lot going for it.

It has a great range of family friendly games, built in wireless connectivity, and unarguably innovative controls. It has a large catalog of games, and is easy to use with a low complexity barrier to entry.

It has been the definite winner of the next generation console wars, even though Nintendo brought the last generation to the fight.

I want to love the Wii.

But I don’t.

Many Wii games seem to utilize the motion sensing controls in the most gimmicky way possible, featuring shallow gameplay that seems more like a quickly hacked together technology demo than a serious offering.

Even where you aren’t forced to flail around with the control to do rudimentary actions, you quickly find that philosophically many Wii games insist upon “balance”, kicking you in the nads when you’re ahead, giving you a firm push when you’re behind.

Maybe there’s something cultural about that. But when I’m trying to crush my children’s contest hopes with my Mario Kart awesomeness, teaching them a life lesson about competitiveness, it’s a bit flummoxing to continually get knocked down while they get an endless series of speedups.

My five year daughter easily dominates my long-time-bowler father-in-law in Wii bowling, with seemingly random movements yielding amazingly strings of strikes.

Then there are the often unavoidable text bubbles that assault the player in the hundreds, making an unwanted appearance in many Wii games (particularly those sourced from Japan. This seems to be something that Japanese games have relied upon heavily going back to the Phantasy Star / Zelda days). Going past these asinine play obstacles is incredibly irritating, at least for me. Half the game play, it seems, is the challenge of maintaining sanity and an interest in the game after clicking through a hundred sparse text bubbles full of unnecessary and uninteresting filler text.

While the motion sensing element of the controllers are arguably best of this generation (using standard Bluetooth making them theoretically usable on other devices like the PC), the other hardware of the Wii is seriously outdated: Basically last generation’s Gamecube with a paintjob. The SDTV output is underwhelming, offering so little definition that it’s painful to play split-screen multiplayer, which is a waste given that many of these units are hooked up to sets capable of at least 1280x720, often even 1920x1080.

As one of the early buyers of the Wii, and the target demographic given that my family features three young children, I can’t help but express some disappointment in the unit. I really don’t understand how it still manages to get the attention it does, still existing in a honeymoon while people stock up on hardware and games they’ll never actually play.

[Sidenote: Got the kids Wii Music for Christmas to discover it’s more of the same formula. It’s a mile wide and one inch deep. Yet again it seems like a technology demo dressed up as a pretend game]

Online Comments

While it’s expected that the sophistication of comments on a site like YouTube will lie somewhere around the intellectual level of head-injured drunk, there remained the hope that other sites might feature a more intelligent contributor. When some major Canadian newspapers added comments, I looked forward to a presumed onslaught of interesting and thought provoking contributions. Instead I was disheartened by the complete lack of political sophistication, the partisan political team cheerleading, the sophistry, the endless logical fallacies, the idiocy…all of it has reduced my opinion of mankind. I can only hope that it is a grossly unrepresentative demographic that feels the need to post their thoughts on newspaper sites.

The Decline of Honesty

When did lying become so acceptable and commonplace? When did people feel so justified in descending to lies so long as it gets hits?

The Internet has always been home to a large number of hoaxes and exaggerations, but this year saw truth and reality suffering a serious beat down, and it only looks to be getting worse.

Some lies made their presence known via the blogger’s tale of extraordinary interaction with some larger than life caricature (which a gullible readership ate up because it confirmed their own simplified worldview, biases or bigotry.) Honestly, goatse with a chaser of tubgirl was less offensive than some of the obviously manufactured fiction being paraded as truth nowadays.

Lies also appeared with frequency on “citizen journalism” sites, where there’s a strong incentive to egregiously misrepresent or misreport, zooming to top the social sites with the most extravagant and inflammatory story possible. A recent example — only one of an endless stream of alike cases — would be the FDA’s decision that the many benefits of eating fish are so compelling that they outweighed the small potential risks of mercury, so they considered revising their existing recommendations that encouraged avoidance, switching to one that was more moderate, in the same way that exercise is generally recommended even though you might get hit by a car or a stray asteroid. Along came the “citizen journalism” sites simply discarding the kernel of truth, instead declaring that the FDA decided that mercury is “safe” (presumably at the behest of their Mega Mercury Corporation masters).

No nuances or fuzzy grays that require a moment of thought are desired when there’s a crowd to enrage into voting you up and forwarding the story on to others. For all of Fox News’ many, many, many faults, they have a brother in citizen journalism on the net.

Lies also grew via the viral videos that have been saturating the net, with that seemingly no-cost amateur video more likely being an expensive production of a Lying for a Living viral video manufacturer. Lie it up, and afterwards everyone can have a big laugh about it and cheer on your product.

So much content is undeclared fiction now that it’s a bit of a cry wolf story playing out. Many readers have become so jaded they simply believe nothing that they can’t witness directly themselves. You don’t even need to “look at the pixels” anymore: If it’s getting a lot of attention, it’s probably made up from a blogger’s imagination, a gross misrepresentation that has little correlation with reality, or a viral video that somehow is going to get some company attention.

Yeah, there’s a sex toy on the side table of your real estate picture — ha ha ha. Enjoy the PageRank your little hoax earned as every social media site plays right into your devious plans with links, a gullible public all thinking they caught you in a hilarious blunder instead of the planned out web strategy you’re pursuing. Another variation is the "super duper terrible site...let’s all point and laugh", when the only ones that should be laughing are the people fooling you.

True stories have little impact in an environment of gross exaggerations or manufactured tales and caricatures.

The Economy

It didn’t take a psychic to see the dangers of the bubble economy (though many who pronounced some caution now hilarious see themselves as economic seers). Madoff is getting a lot of press for his apparent ponzi scheme, yet in many ways the whole market is one giant ponzi scheme. While people often like to talk about the “true value” of things (homes, oil, resources, etc), the true value is often whatever the market is willing to bear at the moment — whatever the prevailing mindset is — which is a situation naturally prone to booms and busts. Hopefully the downside of the bust is flushed out quickly and we can begin the next round of financial chicken.

Hopes for 2009

I hope the public at large becomes a lot less gullible. Extraordinary claims demand extraordinary proof.

I hope Google abandons the Chrome project, as they have abandoned many other misadventures before. Already the adoption has been mediocre, despite widespread launch press and a strong push by Google.

I hope upstream bandwidth starts opening up. It’s great that I have 10Mbps downstream virtually around the clock, but when I want to send a 10GB home video to a relative (yup, people actually do make their own content sometimes. It isn’t all about P2P sharing of pirated material), suddenly that 0.5Mbps upstream looks rather anemic. A lot of potential uses for the internet are being choked off by the widespread limiting of upstream bandwidth.

I hope SSDs continue to increase in speed and drop in price, and the operating system makers such as Microsoft properly adapt to this storage mechanism (for instance a paging file is not a good idea on flash devices. Personally I think they aren’t a good idea at all on any modern PC). Unlike a hard drive that generally has but one head mechanism, the potential multiplexing within SSDs is virtually unlimited, so the speed potential is virtually boundless.

I hope social link sites move towards more enlightened, individually focused algorithms, moving away from groupthink and herd behavior.

I hope disparate devices and appliances continue to gain capabilities and marketshare, and a robust third-party development community is encouraged and supported for each (and not just in the "create free stuff for our product so we can sell more and make more money, suckers" way, but in a mature model that allows for monetization by partners — even the tiny uISV — bringing value to the product and rewards to the creators).

Monday, April 21 2008

Paul Graham continues his popular series of "How To Get Rich Quick on the Internet. And Fast!" essays with his latest entry, "Be Good", in which he describes some startup attributes common among a sampling of successful internet businesses.

One such pattern, observes Paul, is that his selected success stories started with no real revenue plans beyond "get big and flip it".

No subscriptions. No advertisements. No pop-ups. No interstitials.

They started more like a charity than a real business, just bringing good to their userbase with nothing asked or expected in return. At least at first.

This isn't a new position for Mr. Graham. He has long advocated the idea that you just need to worry about getting the eyeballs and you can figure out how to make money from them later. Or better still — reading between the lines — you can let the sucker you flip the thing to worry about the gritty details of how to monetize it, suffering the consequences if the userbase burns it to the ground in defiance of any revenue generating scheme.

This isn't a surprising position for Paul to support. It is entirely aligned with his micro-VC organizations' business model, which is to take young, time- and energy-rich grads, fresh out of the college mill, and bankroll them with a small investment (which they need because they won't be earning anything from their Internet baby anytime soon), and then cash in when/if they manage to flip it to a sucker that still buys into the many eyeballs model (a strict "No Returns" policy in effect.)

Given the small investment, only a percentage of YC Combinator's `fundees' need to hit the jackpot for the strategy to succeed, at least for Paul. He's playing house odds in this startup casino.

Paul provides some examples to demonstrate his position that the charity-that'll-make-you-rich approach is the winning strategy: Google and Craigslist. Incontestably successful companies, and most would be over the moon to experience a fraction of their success.

Let's take a closer look at these examples, and see how relevant they are to Paul's central theme.

Craigslist

Craig Newmark, the founder of Craigslist, started compiling a list of upcoming local events in 1995, publishing it to subscribers via a listserver. Later, after the list was well established and had a healthy subscriber base, he started publishing entries to a website, adding functionality to allow users to email directly to categorized lists.

Today Craigslist is an internet superstar, constantly ranking among the top 50 websites worldwide. It pulls in impressive revenue numbers through a model that Craig himself describes in this entry on Yahoo! Answers.

Craigslist is a rare survivor among thousands, tens of thousands, or perhaps hundreds of thousands of exceedingly similar lists/classified upstarts, most of them run ad-free and for free (sites were often ad free as a simple side-effect of the barriers to entry to hosting ads pre-2000. At that time it wasn't as simple as signing up for an AdSense account).

A Long Day CompleteCraigslist had the perfect, rare combination of the real-world personal connections of the founder, an ideal starting locality, userbase, and a progressive evolution that allowed it to build enough momentum that eventually the network effect took over, and you'd use craigslist because everyone uses craigslist, at least in some markets.

What You Can Learn From Craigslist: Craigslist is an extreme anomaly. Holding it up as an example of a path to follow is fundamentally akin to analyzing the number picking "strategy" of the latest lottery winner. It's also an excellent example of how corrupting, and falsely compelling, a survivorship bias can be. Countless sites have followed a close to identical path, failing miserably.

Google

Google hit the scene during the portal craze. This was a period when every other search engine, failing to sufficiently profit off of search alone, started merging with a gangly bunch of dance partners. Excite hooking up with @Home, for example. To "leverage the synergy", each quickly morphed into a "destination for all things" portal, fattening up their content until they featured a landing page absolutely packed from margin to margin with text, news, stock quotes, images, comics, horoscopes, etc.

Ads were almost invisible in this era of visual pollution, and were seldom the problem. Many users were using dial-up, so the content inflation wasn't just aesthetically deplorable, but it also made the search process a slow, unpleasant experience.

Sergey and Larry had been working on some algorithms for internet search during this period, and with the dot com boom peaking they managed to pull together an impressive million dollars in financing before even launching their beta website.

When they did finally get something online, they did the absolute minimal amount possible. Later they described the utter simplicity of the first version as a function of their lack of HTML knowledge: It was the best they could do, or cared to do, at the time.

They had differentiated themselves, however inadvertently, and it worked brilliantly. They had copious long-term financing (not "flip it to someone else" financing) before even launching, so they had no need to worry about making money immediately, using the website as a technology demo that would conceivably allow them to sell search technology and services to third parties and businesses.

While the quality of the search results got the Google buzz started, the dial-up bandwidth-friendly simplicity of their offering really won people over. Yet it was a simplicity that came primarily because the company only really had one product — search — and couldn't link to hundreds of other provided services.

When everyone else went heavyweight, the minimalism of Google got it a lot of attention among technology trend makers. That exposure on sites like Slashdot — amplified when the community learned that Google ran Linux — got them their next $25 million in financing, and the rest is history.

WishesWith their advertising initiatives Google took exactly the same approach, and when everyone else was using pop-up, high-bandwidth, obnoxious ads, Google zagged and had text ads. As others have adopted Google's text ad approach, Google has started adding in animated and full graphics ads to their docket.

What You Can Learn From Google: If you have an algorithm or technology that is sufficiently impressive enough to get a million dollars in financing before you've even left the drawing board, maybe you can take lessons from Google beyond "differentiating from the competition is good" (which is fairly obvious advice.)

The Cold, Hard Truth

The vast majority of "go big of go home" web ventures will fail. It isn't a meritocracy. Luck has a lot to do with it. There is little you can learn from the success stories unless you also learn from the failures, yet aside from the huge flameouts (which had to have enough success to even be notable), most failures fizzle out and disappear without a trace.

From the opposite angle, many "grow revenue from day one" websites have succeeded admirably (I just gave a local babysitter directory $39 for 3 months of lookups), albeit not without the "lottery ticket" quick payoff that a miniscule percentage of the winner-take-all players yield.

Ethics and Morals

It's a risky and disingenuous proposition to build a website, baiting a community, on one model — the "Good" and charitable model — and then switch the userbase once the founder's numbers get drawn. It's a scummy behavior to engage in, much less evangelize. It also might have the opposite effect than intended: I might not care whether a site like a social link voting site has a revenue model, but when I was considering photo sites I immediately discarded those that followed the Paul Graham business model, considering the risks too high: Either it would eventually be forced to flail about, obnoxiously trying different approaches at making it pay, or it would fold with a "Sorry We Got Bored Our Numbers Didn't Come Up" notice one fateful day. Instead I went for one with a sustainable business model, and haven't been unhappy with my decision (even if it did cost me a bit per year for all of the features).

Bits And Bytes

  • This entry was authored in emacs.
  • A quad-core is definitely your best choice, especially given the huge price drops just announced.
  • I called the whole Riya thing perfectly.
  • The standard for comments in code shouldn't be driven by the need to provide endless guideposts for incompetent programmers. If it describes something that should be obvious by the code, you're fixing the wrong problem (which can be either unclear code, or incompetent programmers, or both).
  • Most developers don't rely upon books anymore because the overwhelming majority of technical books are garbage.
  • Bits and Bytes was a brilliant educational program on TVO in the early 80s, and it is entirely responsible for beginning my love of computer hardware and software.
  • Nassim Nicholas Taleb explores survivorship and confirmation biases excellently in his books the Black Swan and Fooled by Randomness. While I was put off by his ego, and the expansion of a paragraph-worth idea into chapters, they're still great reads.
Earlier EntriesLater Entries

Dennis Forbes