And Time Marches On

If you asked me in the past what drove progress in PC hardware I would have said ‘Games’ and I would have been right. Some time back with the Pentium 2 we crossed the line for the amount of power that a simple PC needs. Everything else is for games. The AGP bus (1x, 2x, 4x & 8x), 200+ million transistor graphics cards, 3D surround audio cards, and 3+ GHz processors with 1MB L2 caches all for the Internet? No silly for Games.

In rescent times users have started to do things with their computers and make demands of their equipment that have actually started to drive hardware design in new directions.

  • Rip, Mix, Burn, Encode, Compress, Backup, Share(legally of course)
    Suddenly people started to collect huge amounts of large data files. Audio and Video files. They started editing movies at home, encoding their albums, compressing their DVD’s. Compression uses raw CPU power and now you have another reason to want a fast CPU. This has also caused a quiet revolution in storage. Most PC’s now have more than one hard drive. Moving all this sats around between partitions and disks takes bandwidth and fast spinning drives. So now we have SATA, 8MB caches on the drives, 10,000rpm Raptor drives from Western Digital, 300+GB drives from several vendors. No one has yet told us how we are supposed to backup or protect a 300GB hard drive full of family video and music. I think a quick buck could be made on solving that problem next.
  • When the Internet Attacks
    Someone at AMD took notice of all these systems being compromised by buffer overflow attackes. The NX or No eXecute bit was created and now Intel, Via and Microsoft are getting in on the action. No more can a buffer overflow cause arbitrary code execution. NX capability is a must for your next computer, perhaps more than x86 64.
  • Cool and Quiet Computing
    Cool computers are easier to keep quiet, they require less cooling aparatus and slower spinning fans. Suddenly everyone has become a quiet PC nut. The computer is moving into the living room as the HTPC and it cant make any more noise than the AV hardware the masses are used to. 100 watt heat output isnt going to let this happen, even with water cooling. Both Via and Intel are maving to build ultra low heat/low power chips that can be used in an HTPC or a laptop. For high end chips the tak is now about dual core CPU’s that feature twice the transistors at 1/2 the speed for almost equal performance. Of course all this messing with the CPU’s innards has caused everything you ever understood about Megahertz to become myth and ledgend from a time long past. Intel and AMD will both be using model numbers on their chips from now on. Via is getting away with quoting their CPU power in watts of heat disapated.

These are interesting times indeed.

Cool Stuff on a Monday Night

I’v been listening to “The Cinematic Orchestra – All That You Give”. Ill subscribe to iTunes when they start hosting music I like. I still have yet to find anything from SomaFM on iTunes. Perhaps I should go and research ‘alternative’ online music stores and report back.

Test Faster

Sometimes its good to take a step back and look at what’s going on. I think this week that’s what I needed to do. I know that I need to get working on the file transfer feature but in finding it hard to get fired up about it. Part of the problem is that debugging and testing are becoming a nightmare. The code has stayed fairly well organized and I can still fix bugs quickly once I can reproduce them. The problem lies more with the amount of time it takes to build the client, setup a test environment, get the clients connected etc. You can do ruthless testing without some automation.

My first move was to add a configuration option to have the client act as an rdv-server. This stops the client from running any services. It loads the groups and becomes an RDV in each. Then I had some more ideas about automation:

  • It would be nice to launch one or more peers (say up to 4) from within Eclipse. I could do this either with Eclipse or with Ant. It would also be nice if the files for these clients didn’t clutter up the main development directory.
  • It would be nice if each client would remember its position on screen. (sometimes its the simple things)
  • I still don’t have a good idea of how to write JUnit tests that use the client when its online. JUnit seems naturally useful for simple things but for network interaction testing I’m not sure how it should be used. I think at least the client would have to be headless (no GUI).
  • Restart JXTA from within the application, optionally erasing the config data. There may be issues with this, i see developers having trouble doing this on the dev list.
  • Have the client display what version it is, and write that to the log file at startup. I’m not sure where that should be stored. The version numbers are generated by Ant at build time. It would be nice if I could retrieve it as a property of the mindshare.jar file.
  • Peer initialization times aren’t consistent, mainly in joining the NetPG. If only there was something I could do in code to ‘encourage’ each peer to find an RDV. Starting my own NetPG is an option, perhaps just on my LAN using multicast. I don’t like testing things on the LAN though, multicast hides problems that don’t crop up till you use the program across the internet.

Other stuff unrelated to testing:

  • RDV timeouts are 2 minutes! That’s way too long for a real world application. The JXTA guys need to remember that people will hardly sit still for 7 seconds while a web page loads. It would be nice if I could get more fined grained control of the RDV service and perhaps speed things up. Empirical evidence seems to indicate that 15 seconds might be as fast as the current implementation can manage.
  • It would be nice to have a bug tracking database to testers could report bugs. Either as a forum of a dedicated bug tool. (Bugzilla perhaps?)
  • It would be nice to have source control. I have the history in Eclipse at the moment which is all I have needed so far but source control would be better. Subversion has been suggested as an alternative to CVS, but Eclipse has nice CVS integration.
  • I need to update this website. Its not nice to look at and it needs a better description of the project.

Post More Often!

I been taking it easy this week reflecting on how things are going with mindshare. One thing that I regret is not blogging more often. the main reason I don’t is that the process is too complicated. Using the web UI for Moveable Type is painful, but that’s what I’ve been doing so far. Write in Word, post from the browser. Edits need to go back into word to be spell checked. To do pictures id need to open an FTP tool as well.

So I went looking for a tool to help me do all of this. A posting, spell checking, image uploading, XHTML writing, honest to goodness program. Turns out there isn’t anything that entirely fits the bill. You can have your pick of the following:

  • BlogJet – This is a cool tool. Setup was easy to follow. Nice clean interface, uploads pictures. Its still in beta and doesn’t have a spell checker yet. I love it for its simplicity, here its about the post, not about the tool. You write straight into a preview pane, no HTML if you dont want to. I think with a spell checker it could easily become my favorite.
  • MTClient – Much more powerful that BlogJet with a proper in line spell checker. The bad part is there is no preview, so its back to writing HTML tags by hand.

I think ill use a mix of the two. BlogJet for posting and MTClient for proofing and editing. And ill try to post more often, both to waves and to mindshare.