Thursday, December 10, 2009

No Shaving in December

This year I am participating in  Here is my progress.

Update: For those who are reading this and don't know what I'm talking about, read this.

Monday, November 16, 2009

Computing as we will soon know it.

If you want to know what computing will look like in the near future all you need to do is watch this video from TED.  It showcases Sixth-Sense technology.
Once this technology matures I believe we will interact with it through a pair of contact lense and an extremely small hearing aid.  This device will allow us to get all sorts of meta data about our surroundings and probably completely replace all of our traditional ways of interacting with computers.
As we drive the road in front of us will literally light up in front of us, showing us how to get where we are going.  We will also always be aware of the speed limit and have access any other information about the roads.  For example, we may know that a deaf child lives up ahead, or there is a better way to our destination based on the traffic situation in the present city.
While walking a nature trail we can get information about any relevant historical information, such as perhaps a famous explorer walked it hundreds of years ago, or find out about the plants and animals we see.  We could see which plants are edible and which are poisonous.  If we catch a fish we could immediately know if it is of legal size to keep.
When meeting people we could look up their profile on the currently popular social networks through facial recognition.  We could then know that they are interested in certain topics you are also interested in and strike up a conversation.  Or you could meet someone at a bar and find out that they are a known sleaze bag, and then take them home.
The possibilities are endless, and the benefits can be enormous. 

Sunday, November 15, 2009

Scanning Problems in Ubuntu Karmic 9.10

I went to scan in some pictures today with my new Karmic install and ran into problems.  When I went to scan I would get "Failed to start scanner: Invalid argument"  Some Googling revealed that many people are experiencing broken scanning after upgrading to Karmic with various printers.  A little more searching revealed the solution.  I think that there is probably an even better solution, but this is how I got scanning to work.
First I installed libsane-extras:
sudo aptitude install libsane-extras
Next I edited saned.conf to enable the epson driver.
gksudo gedit /etc/init.d/sane.d/dll.conf
In this file I removed the # at the line that read #epson
To get the parameters for me scanner I ran:

$ sane-find-scanner

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04b8, product=0x0839) at libusb:001:003
found USB scanner (vendor=0x0bc7 [X10 Wireless Technology Inc], product=0x0004 [USB Receiver]) at libusb:007:002
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

  # You may want to run this program as root to find all devices. Once you
  # found the scanner devices, be sure to adjust access permissions as
  # necessary.

Here the line that read "found USB scanner (vendor=0x04b8, product=0x0839) at libusb:001:003" was the key.  These parameters needed to go in the epson drivers file.
gksudo gedit /etc/init.d/sane.d/epson.conf
I replaced the line that read "usb" to read "usb 0x4b8 0x0839"  Finally I just needed to restart the sane daemon.
sudo /etc/init.d/saned restart
After this scanning finally worked.

Thursday, November 12, 2009

Being A Parent Is Hard

Being a parent is hard.  The life of a parent is filled with meeting other people's needs, and neglecting many of his or her own.
Today's examples:
It seems I cannot go a morning where at least one of the girls doesn't have a major meltdown.  On the surface getting ready in the morning would appear to be a routinely trivial task.  The reality is that every morning is drama.  The hard thing for me to accept is that I have no control over this.
I try to make it as easy as I can.  I put Aurora and Athena in my bed, put on an episode of Pink Panther and completely dress the girls myself, and do their hair.  Pink Panther gives them a reason to open their eyes and stay awake as I dress them.  By the time I am done each girl is completely awake and dressed.  They have only two tasks to prepare for the day, brush their teeth and put on their shoes.
Without fail at least one girl will throw a major fit over at least one of  these tasks.  Usually more than one task involves a fit.  This morning it was Aurora and her shoes, and Athena had a slight problem with brushing her teeth.  Every morning Arianna has a big fit about us brushing her teeth.  Since I do everything else for all the girls, I make Arianna's teeth Kim's task.

On the way to drop Arianna off at daycare a lady did not break in time and had to pull to the right of me to prevent from rear-ending me.  By the time she came to a complete stop half of her SUV was beside my van, effectively putting her nose in Arianna's back had she not stopped.  Then when the traffic started back up she pulled forward real fast and cut in front of me.  This lady just about put my baby in serious physical danger, and then used it as an opportunity to cut me off.  It's times like this I have to use mental will-power to not let road rage get the best of me.

Aurora has tennis practice on Tuesdays and Thursdays from 5 - 6.  I don't get off work until 4:30, and practice is on the other side of town, so Kim takes her almost all the time.  Today Kim called me and asked if I would do it.  I agreed, and she said she'd meet me at day care to give me the tennis racket from her car.
Not paying attention to the fact that Aurora needs to be there at 5:00 I get a call from Kim at 4:50 as I'm shutting down my computer reminding me that I completely messed up tennis practice for the day.  Aurora really looks forward to tennis practice and has been pretty upset in the past when we've had to miss it.
I felt really bad and wanted to make it up.  I was going to take her to the park but when I looked outside I realized it's that time of year when it begins getting dark really early.  Instead I headed up to Publix and bought some ice cream.
It turned out Aurora was not as upset as usual, but she was happy to see that ice cream would be following dinner.

As soon as I placed the ice cream in the freezer I made dinner, with only a little bit of room in between serving everyone I had a quick chance to actually eat myself.
While I was eating Aurora had a major melt down because she's hates having to actually put work into doing homework (she is spoiled because pretty much everything tailored to someone her age is completely below her abiliites and is finished without effort.)  In stead of working hard she completely broke down yelling at people, being nasty to Kim, and slouching down kicking everything around her.
Next Judith called.  When Aurora spoke to her Judith told her that she should visit the Smithsonian Kids website, so we did that after dinner to help her calm down from homework.
Afterwards it was back to homework, which she finally finished and I knocked out the kitchen while Kim tended to the other two girls.  After the kitchen was done, and Arianna's lunch was packed, I read Arianna two books and put her to bed.  Kim, worn out and half asleep by this time read the other two girls their books while I took a shower.
Once out of the shower Kim was asleep with the two girls crawling all over her.  I then put them to bed, a process which takes about ten minutes as I talk to them and tuck them in.  Then Arianna declares she needs to go potty.
When it was all said and done I woke up at 6:45am, it is now 9:00pm and I finally have a moment to myself.

And such is my daily life.  Very little of my day was spent for me, and none of my day had any time for my wife.  It is no wonder so many parents do such a poor job.  It is so tempting to take shortcuts, like giving my children empty-calorie TV dinners, packing lunchables for lunch, yelling at them in stead of effectively working things out (actually there is more yelling going on at times than I'd like to admit), sitting them in front of a TV all afternoon, etc.

Monday, November 2, 2009

Battlestar Galactica

I just finished watching the entire season of the original Battlestar Galactica TV Show that aired in 1978.  The series started off rough with some sub-par acting and some frequent plot gaps.  The last five episodes where fairly solid and I was saddened when the final episode ended, knowing the show was canceled right as it was starting to peak in almost every aspect.
I would like to at some point watch the 1983 continuation.  It is not available online for free, though I may buy the entire season from Amazon as a download for $7 if I feel up to it.
I am now on to watching Start SG-1.

Friday, October 30, 2009

Why Chrome isn't a flop

There seems to be a good deal of belief that Google's Chrome browser is a flop and is likely to stay being a flop.  This afternoon I read Google Chrome: The Fast Browser With Slow Adoption on PCWorld.  The author goes through many reasons why Chrome is not in wide spread adoption, but ultimately misses the point of why Google developed Chrome.
Chrome is merely a means to an end.  Google's platform is the web.  The better the web platform is, the easier Google can make money.  Google doesn't care about web browsers or operating systems except for how they affect users getting online and using Google services.
Getting users online is their business model.  Any hindrance to this end is a hindrance to Google making money.
Web browsers have a lot of unrealized potential.  In fact, web browsers really don't do many of the things they should be doing.  This is why Google built Chrome.  They want to set the standard for which web browsers are judged, so they set out to build the best web browser there is.
There are key design features of Chrome that hint to Google's real intentions with Chrome.
First, Chrome is a child of a parent project named Chromium.  Chromium is an open source browser developed by Google.  Chromium can be modified by anyone and spun into their own browser.  Google spins Chromium into it's own Google branded browser named Chrome.  Anyone else could do the same, brand it with their logos and features and call it what they want.
Another key element of Chrome is its rendering engine.  In stead of writing a new rendering engine they plugged WebKit into their browser.  WebKit is an open source rendering engine, which is most notable for being used by Safari.  Chrome actively contributed to WebKit pushing forward new features of the latest web standards and optimizing it to be fast and flexible.  They then take these news improvements and push them into Chrome.  This way they are not only making Chrome a better browser that will push the web into the new age of online computing, but they are also pushing Safari, and every other browser or product that uses WebKit to display web pages, with them.  Despite a stable version of Chrome being available for the Mac, every Mac user benefits from Google's development of Chrome, which in turn helps push forward Google's business agenda.
Another key element to Google's release of Chromium is how it snaps into two other major projects of Google, namely Android and Chrome OS.  These are two Linux-based operating systems that Google is producing.
Android is currently available to T-Mobile customers and will soon be available to Verizon customers as well.  In the future more mobile carriers are set to join in carrying Android power mobile phones.  The Android mobile-phone operating system is designed with Internet connectivity in mind.  It presently uses Opera for its browser.  When the Linux version of Chrome goes live it is a sure bet that it will start shipping with Android, instantly making it a mainstream browser.
Chrome OS is a desktop operating system targeted for Netbooks.  Its key feature will be that all applications for it will be Internet applications.  Without a doubt Chrome OS will ship with the Chrome web browser.  The success of Chrome OS rides almost entirely on the ability to attract developers to build great applications for it that will entice consumers, the same way the wide availability of cool applications for the iPhone has made it an instant game changer in the mobile industry.
Last of all the open source nature of Chrome means that anyone else can freely and easily borrow any of the code and put it in their browser.  Google really doesn't care of anybody actually uses Chrome for their browser.  What they care about is pushing browsers forward.  If browsers move forward then better applications are built for the web.  If this happens people will be inclined to be on the web more, and people are more likely to use Google services or use the service of companies that utilize Google AdWords.  Essentially Google will do whatever it takes to get people online so they can make money.  And that is what Chrome is all about.
You simply cannot measure the success of Chrome by how many people are using it.  As long as Chrome keeps raising the bar for what a browser can do  and that entices other browser makers to keep up, Google is making good on their investment in Chrome.
That being said, I have been using the nightly Ubuntu builds of Chrome and it is in very very good shape.  It is fast, stable, secure and overall a pleasure to use.

Friday, October 23, 2009

Children Acting Their Age

Sometimes I say something silly to my children like, "You are eight,  you need to act like it."  Replace eight with the age of the child.  The silly thing about this is that when I say it they usually are acting their age, which happens to entail them doing something immature.  However my real message is, "You are not acting as mature as I want you to act and I would like you to start acting it."  I think my children receive the message with that understanding at\s well.
If I am right then I am using the "act your age" words as a red herring to successfully convey a similar, but different message.
Do I go for accurately conveying my message or effectively conveying my message?  Being a parent is difficult for someone like myself who likes to overcomplicate what should be easy matters.

Sunday, October 11, 2009

Linux gets native Hulu desktop support.

I just caught wind today of the native desktop client for Hulu in Linux.  My desktop runs Ubuntu Jaunty 9.04 64-bit.  I downloaded the 64-bit deb from

The first time I tried to run it a window told me it could not find flash on my system.  I found flash at the following three locations on my computer:
When I modified ~/.huludesktop to point to the first and third location I got this same error.  When I pointed it to the second location the application would begin to run and then segfault.
A little Googling showed me two possible the solutions.  The first was to copy the plugin from /usr/lib/firefox/plugins/ to ~/.mozilla/plugins and then point the hulu configuration file to there.  That worked, but the best solution is to point the hulu configuration file to /var/lib/flashplugin-installer/
Once the configuration file knew where to get flash everything runs great.  The videos look good.
I also installed it on my 32-bit laptop and everything worked without any hastle trying to configure the hulu configuration file.
I filed a bug on the hulu site about the issue with the 64-bit installation and I hope they fix it soon so users have a good installation experience. has a good tutorial on being able to launch Hulu straight from MythTV.  I gave that a spin on my laptop and it works good as well.  There is also some conversations about getting Hulu working well, including the resolution to my 64-bit problems.

Tuesday, September 29, 2009

Quake Live in Linux

The popular 3rd person shooter game Quake Live has come to Linux.  It can be played for free by browsing to using Firefox.  I played it last night and had a blast.
I really like the idea of the game going through the browser.  I hope that HTML5 and on making building browser-based games without plugins a reality, but until then this is a great solution.
I have tried it on my Ubuntu 9.04 Jaunty 64-bit machine, and aside from some very small sound glitches, the game plays great.  Tonight I'm going to give it a go on my laptop.

Wednesday, September 23, 2009

Mark Shuttleworth commissions Epoch by Cory Doctorow.
If you don't know who Cory Doctorow is then you need to

  1. Start reading xkcd.
  2. Start reading

Anyhow, Cory starts off rambling about work and then gets in to start reading Epoch.  Mark asked that it be about the shutting down of the first AI, and something about a Unix roll over.  Check it out at the link above.

Tuesday, September 8, 2009

Rationed care, long wait lines and bureaucrats

The bureaucrats at my HMO have decided that my daughter doesn't actually need the medication that our doctor has prescribed her.  They have only agreed to help pay for half of the medicine.  We cannot afford the other half.
Furthermore, we have had to wait for over a month for her to be able to have the necessary follow-up appointments with a specialists who should be able to better identify my daughter's problem and pinpoint what we need to do to get her fixed up.  We didn't even get to specify a date preference for the appointment.  The called us and told us what day and time it would be it, and that was the end of the story.
Rationed care! Long waits for treatment! Bureaucrats standing in between my children's health and our doctor! This privatized health care system can be really frustrating!

Wednesday, September 2, 2009

Want to protect against H1N1, put down the sanitizer

With the H1N1 making its rounds everyone is talking about how they've setup hand sanitizer everywhere. Not just everyone, but educated people at grade schools and universities. There's a problem here: hand sanitizers don't kill viruses.
That's not the end of the story. It's not that hand sanitizers don't offer some protection against viruses.
In essence, it makes your hands very inhospitable to viruses. You put it on your hands and viruses simply don’t want to cling to it. So it does reduce the amount of a virus that can cling to your hand but it does not kill it. - Dr. Gupta
So if it does offer some protection, then how much? The American Society for Microbiology did a study a few years back on the efficacy of removing viruses with three different methods; water, liquid antibacterial soap, and hand sanitizer. The following sums up the results

WaterAntibacterial SoapSanitizer
So if you want to effectively protect yourself against H1N1 simply rubbing your hands together under water is what you want. Only rely on sanitizer when neither soap nor water are available.
Unfortunately when I hear about fighting off H1N1 in the news, at work, or from my children's schools it seems that hand sanitizers are talked about a lot and frequent hand washing is not emphasized as much.

Monday, August 24, 2009

Crawfish Pie

The other day Kim and I where listening to NPR when they did their daily summer songs on All Songs Considered and one of their picks was Hank William's Jambalaya (On the Bayou). I used to have a tape of Hank Williams songs and this one always stuck out as the best one on the tape. I was quite glad to hear the old tune again. When I got home I found where I could listen to the song online on With Hank's heavy souther accent it was hard to pick out some of the lyrics so I looked them up on Google. In the chorus he mentions "Crawfish Pie" I thought that sounded like a pretty funny idea for a dish so I found a recipe online at's-crawfish-pie.html. So yesterday I made a trip to Publix and picked up the ingredients I needed. Tonight after dinner I began the process of making my very own crawfish pie.

The process began with the crust. I mixed flour and vegetable shortening with a little water, wrapped it in plastic and then sat it in the fridge.

Next I cut up the bell peppers. I had purchased two, but the first one was a cup, and the recipe only called for half a cup. I sliced the celery and put it in the pan of butter and cooked that. Then I through in some diced tomatoes and began the process of removing the meat from the crawdads. This process was very labor intensive. I had purchased 2.5 lbs of whole crawdads. First I removed the tail, trying to preserve as much meat as possible. Then I removed the meat from the tails. It probably took me in excess of thirty minutes to complete. By this time I had turned off the stove so the vegetables didn't burn. Once the crawdads where added I added a little water/flour mix and let it thicken. Athena came in and helped me with stirring the mix as it cooked.

Finally it was time to roll out the dough and bake it all together. The dough turned out to be very frustrating. My past attempts at making dough in the past have not been very successful. As I rolled it out on the cutting board it kept flaking and breaking on me. I added a small amount of water to give it some more elasticity but it was still pretty flaky. I managed to roll it out and get most of it in the baking pan. The rest I had to attach it in the baking pan by kneading it back together in the pan.

Finally I poured the crawfish and vegetable mix in and baked it for forty-five minutes. For some reason I was worried it was going to burn, and I kept checking on it, but forty-five minutes later it was just right. By this time it was about ten o'clock, so I wrapped it up and put it in the fridge. Tomorrow night we will all have a nice crawfish pie for snack.

Thursday, August 20, 2009

Making Lunches

School is starting up next week and my kids have been spending their last two weeks of summer in daycare/summer camp. That means much of our school routine has started back up, including making lunches each night.

I take feeding my kids right to be pretty important, so I don't leave it up to the whim of school to feed my kids well. Just look at the public school lunch menu and you'll see why.

Packing healthy lunches that my kids will eat is no small task but one I'm working down to some sort of soft science. It is soft because what my kids claim to like and not like changes semi-regularly.

When packing I have three criteria I try to meet.

  • Little Waste
  • Healthy
  • My kids will actually eat it.

With lunches it is easy to have a lot of waste. Juice boxes/pouches and individually wrapped food items can make each of the three kids lunch have quite a bit of waste. I've purchased some small glad juice boxes which are just like kid-sized water bottles for keeping juice. With these I can purchase a large container of juice and just put a little in these containers and send them off to school. One large jug of juice that is recyclable is less waste than multiple juice pouches that have to go in the trash.

I've also purchased a bunch of small 4oz containers for putting food. These store great because the lids lock when stacked. With these I can buy a large container of some sort of food, like apple sauce, and divy them out into these smaller containers.

Sending your kid to school with junk food is easy. There is no lack of junk food at the grocery store. Often it tries to label itself in ways to appeal to kids, appear healthy, or both. The Kraft Lunchables tries to sell itself as "wholesome" when most of those are just low-quality meat packed with fillers and sodium, some crackers (with more sodium), very low-end cheese (which resembles cheese as much as Nehi resembles juice) and a small candy bar. Parents fall for these shortcuts in droves.

I've been using a system of trial-and-error to find things I know my kids will eat. For Aurora I've got shelled sunflower seeds, and Yo Kids yogurt, and Craisins. Athena likes her Apple Sauce and Arianna likes Nature Valley bars. These aren't necessarily packed with nutrition, but they are not bad and represent a good starting point to building a good lunch. They all get a 4oz cup of fresh fruit as well. Sometimes I'll pack them a few slices of lunch meat or a sandwich with any combination of peanut butter, jelly, and/or honey. Unsalted whole-wheat crackers are a favorite as well.

As much as I find eating healthy to be important, it is also just as important to live a little. Sometimes we'll get them snacks that go from not healthy to unhealthy. For not healthy we may get them Goldfish. For unhealthy it could be a sugar snack like Little Debbies. I think giving your children things that are considered unhealthy (candy, TV, etc.) in moderation is rather important. Your teaching your children these things are alright, you just have to enjoy them responsibly. You don't want to find your child like a Catholic freshman in college.

As the year continues I will keep experimenting with different foods and finding out who like what. I've already started building a list on paper. I will buy the different items I know I can rely on in large containers and divy them out in the smaller tupperware and hopefully be able to feed my kids healthy food that they will eat with as little waste as possible.

Tuesday, August 18, 2009

My personal parallel universe.

So not many people knew this about me before this opst, but every so often I get zapped into a parallel universe. It is very similar to the twilight zone, except it is more comedy based than sci-fi/horror based. In this universe people act strange and pretend that they are being normal. It is really this big practical joke on me enacted on a massive scale.

I can never be certain when I will find myself in my universe, but once there it is obvious that that is where I am at.

I found myself there last week on the way to a party. My friend Tammy recently got a job in California and will be moving there. It is her first job after college. My wife put on a going away party for her and while driving there she lamented that some of Tammy's friends where not able to make it. Apparently they had spent weeks planning an out-of-town trip to go shopping at IKEA and couldn't back out. I thought about this for a while an asked, "Who plans weeks in advance to go out of town to shop?" Kim assured me that this was quite normal. "But, surely if your friend is permanently moving thousands of miles away most people would push back their shopping for them." Perhaps, but this was a trip to IKEA. In fact, Kim assured me, it was perfectly reasonable to not attend such an event for your friend so that you could go out of town and shop at IKEA.

That's when it occurred to me I was in my parallel universe. Here's the difference between the real universe and parallel universe:

Real UniverseParallel Universe
People go out of town to visit points of interest (camping, monuments, historical sites, etc.) or to catch up with old friend.People go out of town to shop.
People postpone unimportant events for their friendsShopping is a more important event than friends.

How to use SVGs in webpages.

In my previous post I lamented me woes of attempting to use SVGs within a web page. A commentor named Brad Neuberg offered some advice that got me going in the right direction and now I have everything working. I wanted to come back and address how I go I finally got this working.

The problem I was experiencing has to do with how Inkscape saves images as SVGs. The files can be easily modified so that they can be used in web pages to scale as desired.

For starters add the following code to your HTML where you want to place the image:

<object data="foo.svg" type="image/svg+xml" style="height: 32px; width: 32px">
  <img src="foo.png" alt="logo" style="height: 32px; width: 32px" />

This will give you the clipping I had talked about before. This is actually the correct behavior based on the properties in the SVG. So we need to modify the SVG and tell it to behave. To do this open the SVG in your favorite text editor and find the width and height properties in the SVG tag.



We need to add viewbox and modify the width and height as follows:

   viewbox="0 0 48 48"


Our first two entries in the viewbox will always be zeros followed by the width and height that is already defined. Next we replace the width and height with 100%. Once we save this file then it should show up in the webpage with the width and height defined in the HTML without any clipping.

In the HTML in between the open and closing tags for object we define an img tag that points to a backup PNG image. You can replace this with whatever you want IE to show. If you happen to have the image in a VML format then you could include it there, or you could simply have a message telling your users to stop using the always behind Internet Explorer (not recommended) or whatever you want IE to show in place of your SVG.

You can find a paper on converting SVG to VML here. There is also a javascript library at that will show the SVG in a Flash window for IE users. I plan on looking into the svgweb javascript library and giving that a spin in the near future.

I hope this post finds its way into the hands of anyone else having the same frustrations I was having.

Monday, August 10, 2009

SVG with webpages

At work we are developing a web-based framework that uses an API that support PHP, .NET and Java for developing application within it. As a general rule almost all of application within the framework are written in PHP and uses Zend for an MVC model.

While working on developing my first application I decided to extend our images API to supports SVGs. SVG is a type of image that is built on vector graphics. Vector graphics use mathematical equations to drop simple shapes that on a macro-scale define a larger image. This is very much how 3D-graphics works. Polygons are mixed together to build players, houses, vehicles, and everything else within the 3D world. SVGs usually build 2D images. The advantage to them is that you can scale them to any size you want without losing resolution.

Traditionally if you need an image at different sizes you will make a different image for each size that you need from the source. The primary problem with this is that if you try to scale an image larger than the source you get pixelation. You also might not always have access to the source, and so you are stuck with the largest version you can find.

Take for example this 32X32 image.

You could easily scale this image down to a 16X16 image, but if you wanted to make it larger it would look really ugly.

This is what happens if I try to scale the image up to 150X150:

If you always have access to the source image this shouldn't be a problem, but I see regularly enough images that have been scaled up on web page and they look horrible.

With an SVG you only need the one file and you can then dynamically scale it as you please to as small or large as you want.

Another great advantage of SVGs is that the file is plain text file that holds the formulas that draw the image, so they tend to be relatively small.

The image I am using in this example is 18.2 KB. If I convert it to a 200X200 image it is 18.3KB. If I where to convert it to a larger image then the image would take up more space as a PNG than it does as an SVG. For small files, which are small enough to download almost instantaneously, this doesn't provide any benefit, but it allows developers to provide high-quality large images and use only a very small amount of bandwidth.

IE is the only major browser that does not provide support for SVGs. Firefox, Safari, Opera, Chrome and most other even lesser-known browsers all provide support for SVGs. My plan was to have a folder named SVG in our icon directory, and then have fall back PNGs files for IE.

All of my research on the web indicated that the following code would allow me to provide SVGs with PNG fallback for IE:
<object data="foo.svg" type="image/svg+xml" height="32px" width="32px">
<img src="foo.png" style="height: 32px; width: 32px">

No matter what I tried this didn't work. Instead of resizing the SVG to 32X32, it clipped the image instead.

Clipped image:

I Googled and searched around and came up dry until I happened upon a response on someone's blog a little over a year ago that said that Firefox was planning on supporting SVGs inside the img tag. I tried <img src="foo.svg" style="height: 32px; width: 32px"> and it worked, dynamically resizing and all, in all non-IE browsers except Firefox.

I then found another trick. SVGs are plain text files that use a standard known as XML. These XML files could be modified to be PHP files that output the XML that defines the SVG iamge, and that too could be placed inside the object tag. This unfortunately gave me the same clipping results.

My final conclusion is that the web is just not ready yet for SVGs until Firefox begins providing some sort of sane support for SVG that allows developers to define the width and height to render the SVG image. We really need Microsoft and Mozilla to get on board so that we can stop using JPGs, GIFs, and PNGs wherever possible.

Thursday, July 30, 2009

Chromium on Linux gets plugin support

I just noticed today that the Linux version of Chromium now supports plugins. This has been the biggest problem for using Chromium on Linux. Chromium reports that the support is currently buggy. I played some Youtube and Hulu videos without issue, so while it's probably not perfect, it doesn't seem bad either.

Monday, July 27, 2009

hulu-desktop on Linux

Hulu is releasing a desktop application to watch their TV shows and movies through. They are presently only developing it for the Windows and Mac platforms. I decided to give it a spin on Ubuntu using Wine. The application is basically an Adobe Flash player that runs their flash application.

I downloaded the application from and ran the installer. Everything about the installation went well. It informed me that Adobe Flash was not installed and asked me if I wanted to install it. I selected Yes and it took care of grabbing and installing the Windows version of Flash in Wine, and that too gave me no problems.

The application runs just fine until you go to watch a TV show. I chose arrested development. The playback is not bad. It is only slightly choppy, but I found that little bit of chop to be enough to not want to use it over the browser interface at

Since the program is written in flash and runs inside a flash player, and Adobe provides flash support for Linux it should be rather easy for Hulu to bring their application to Linux. Maybe someone out there will pick apart the pieces of the downloaded application and be able to point a Linux-native flash player to their flash application.

The screenshot below was taken on my dual-monitor PC. The left image is my left monitor, and the right image is my right monitor, which is playing and episode of Arrested Development in the Windows version of hulu-desktop inside of Wine.

Monday, July 20, 2009

The future of computing as I would like to see it.

This diagram represents how I see the future of computing.

First we have an online service where we store our data. This would hold our e-mail, pictures, documents, videos, music, etc.

We access our data through web applications. Take Google Docs for example. Currently Google hosts both the application and the data. I would like to see that come to an end. In my model I would log into my Google Docs and set up an account. I would give Google Docs the URL of my web storage server and then Google Docs would give me a unique private key. I would simply highlight this key and copy it into my computer's memory. I would then log into my web storage site and select that I want to share my document data. I would paste the private key provided by Google Docs into my storage interface and receive a unique private key from the storage server. I would provide this unique private key back to Google as authorization.

Behind the scenes Google would contact the web storage server, tell them who's account it wants to access, give it both its own private key that is unique to my Google Docs account, and provide the private key that is unique to the storage server. With both of these keys the web storage server can be confident that it is talking to the correct server that I have authorized to access my documents.

With the trust between the two servers setup I could use Google Docs to modify my documents.

I could repeat this process for different online applications. Files would be saved with open standards so that I can be guaranteed that any application on the web can reliably read and write to them.

I could even use two providers for the same service. I could switch back and forth between using Google's picasaweb and Flickr, for example. There is no reason why only one application would need to be tied to a file type.

If down the road Microsoft comes out with a better online application for modifying documents I could go in to my storage service and deny Google access and go through the process of allowing Microsoft. At any point I could ditch Microsoft and go with another service provider.

Likewise, if I want to change my storage provider I should be able to import all my data to a local file and then upload it to a new provider.

Both the web applications and the data should always be synched up to our primary computers. This way if we don't have an internet connection we can still use the application to modify our data, and the next time the computer comes online it will all synch back up. Google's Gears application already allows for application and data synchronization for offline use, and that's exactly how I envision this working.

The benefits to this are:
  1. No vendor lock-in.
    We are free to change providers at any time. It is not like currently where one must choose Microsoft Office because it is the only application suite that can reliably open and close the .doc format which is the document format.
  2. Access to data from anywhere with an Internet connection.
    You no longer have to carry around a thumb drive or go through any such hassle. Your data is available from almost anywhere.
  3. Enhanced data persistence
    Computer crashes will no longer cause you to lose any of your work.
  4. Enhanced data security.
    A lot is made of the security problems of data existing on the cloud. I believe that you are better served with your data in the hands of a team of professionals than in yours. The average PC user is simply the largest security hole that exists today. As long as the average user is in charge of their data, the average user's data is vulnerable. Google is more likely to keep your data secure than you are.
  5. OS independence.
    Whether you are using Windows, Mac, Linux, your cell phone, game console or any other device, all you need is an Internet connection and a browser to get to your content.
  6. Cheaper computers.
    Because most of the hard work is being done by the application server, your computer no longer needs a lot of ram and processing to run your applications. You just need enough resources to run your web browser.
This is cloud computing at its best and I believe that we will be seeing technology continue to move in this direction over the coming years. The development of Google's Chrome OS will be the first of many major steps towards this model.

Sunday, July 19, 2009

How to boot from the grub console in Linux.

The following works in Ubuntu 9.04 Jaunty, but probably works in most versions of Linux. If you find yourself at the grub console line at boot time you can easily boot up your system with just a few commands.

To boot into Ubuntu we need to first specify the kernel. By default the latest kernel installed is linked to at /boot/vmlinuz. In the /boot folder lies all of the other kernels you have installed as well. At the console type:
kernel /boot/vmlinuz
You can stop there, but if you want a list of all kernels hit the tab key twice and it will list out each kernel. You can start typing any kernel you wish to boot from, but leaving vmlinuz will boot to the newest kernel.

Now all we have to do is tell grub to boot the os.
If you have Windows installed, we can still boot in it as well, however the instructions are different.

First we have to tell grub which hard drive and partition Windows is installed. The first hard drive, as the bios sees it is 0, and the second is 1 and so on. If you only have one hard drive then we know that it is on hard drive 0. Partitions are zero-based as well. If Windows is on the first partition, then it is partition 0, and so on. For our example Windows is installed on the first hard drive, but the second partition. Here is how we enter that.
root (hd0,1)
Remember that there is no space after the comma, but there is one after root. If you aren't sure what your options are, simply type everything up to the hd and hit tab. If you only have one hard drive it will auto-complete the "0," If you have more than one it will list the available hard drives. After you have selected a hard drive you can hit the tab key after the comma and it will again either give you 0 if you only have one partition on that hard drive, or it will give you a list of possible partitions to choose from.

The next three commands will bot up Windows:
chainloader +1
If you just find yourself back at the grub console, then you probably entered in the wrong hard drive and/or partitions. Keep trying until you find the right location of Windows.

I haven't tested this out, but if have multiple installs of Linux you can use the root and makeactive command to select the hard drive and partition of the Linux you want to boot into, and then use the kernel command to select the kernel on that hard drive and partition. If anyone knows for sure please drop me a line.

How to setup auto-login in Ubuntu at the console.

If you want to setup auto-login in Ubuntu, but for whatever reason you don't have access to the full gnome desktop, such as if you are trying to configure the machine remotely, then these instructions will work for you.
First we'll backup the configuration file and then in your editor of choice, probably vi open up /etc/gdm/gdm.conf.
sudo cp /etc/gdm/gdm.conf /etc/gdm/gdm.conf.bak
sudo vi /etc/gdm/gdm.conf
Next find the line that reads:
In the first line change "false" to "true" and in the second line append the username you want to auto-login after the equals sign. Here is how mine looked:
After a reboot you will find that Ubuntu goes straight to the desktop of the user you defined.
There are other settings you can set in here, such as a time login. Most of these are available from the GUI, but feel free to look around and find any other settings you might want to change.

Update:  Ubuntu 11.10 Oneric and onwards use LightDM in place of GDM.  Instructions for version of Ubuntu running LightDM can be found here.

Saturday, July 18, 2009

I Like Windows 7

I have been playing around with the Release Client 1 of Windows 7 for a while and I think Microsoft has done a pretty good job. Almost everything about it seems very well polished and usable. I believe that 7:Vista::XP:ME. While everything thought ME was the biggest piece of crap ever, when XP came out people quickly jumped on the bandwagon. I believe the same will happen with 7.
Some of the things I will highlight are also in Vista, but I'm going to show some of the things I think Microsoft has done right.

  1. The "Start" menu.
    This is very much like KDE's menu. I don't need to spend time finding where stuff is. I simply type in the name of the application I want to use and it pulls it up in the menu for me. If I want to play my new game, "Call of Duty: World at War", I simply type in any of those words and it shows up in the menu. I no longer have to click Start->Programs->Call of Duty->Game, or whatever. I just type War and I have it. The layout of the item on the right is very helpful as well.
    I was never a fan of XP's default menu with the Control Panel, My Computer and all the other items in there because it just made for a lot of clutter. Visually, the default Start Menu in XP was very confusing. The new menu is well organized and easy on the eyes for locating what I want.
    As I hover over the items on the right, the picture of me changes to a relevant picture of the item I am hovering over. It has a nice fade effect that works out very well.
    If you notice to the right of Sticky Notes there is an arrow. If I click on that arrow I get a list of recently opened documents with that application. So if I had Word installed, it would show Word, and I could click on that arrow to get a list of recently opened Word documents. If I click on the word document then it opens it up.
    Unfortunately, if you delete a file, it still shows it as a recently opened file, which I think will be a spot of user confusion.
  2. The Control Panel.

  3. I have always like how OSX is so easy to configure. Everything is laid out in a very logical fashion that makes finding the setting you want to modify easy to find. Windows and Ubuntu have always made simple tasks very confusing to find. I think that this new Control Panel simplifies everything. I have found that anything I want to change was easy to do by drilling down through each logical item in the control panel. Again, Microsoft has hit the nail on the head with this one.
  4. Boot time and time to go from login to desktop.
  5. I haven't timed it yet, but to go from BIOS to login takes about thirty seconds. To go from login to usable desktop is about five seconds. I know once computer manufacturers start loading up all their crap on people's machines before they buy them, this time will go up considerably, but Windows has done their job at making a very clean bootup.
  6. Explorer.

  7. There are two improvement here. In the location bar at the top, you can simply go back down the folder tree by clicking on any of the previous folders listed. Ubuntu has this, but I always turn it off. But Windows is doing domething different here. If I click in the location bar I can still type a location manually. This probably doesn't help the majority of people out there. However, I am constantly typing full locations in the location bar, because for me I can do that faster than I can click on a bunch of folders. In Ubuntu your option is the click view or the type view. I like the trade-off between the two views that are present in 7.
    The next improvement is the search functionality. In the top-right I can start typing a search, and it will give me the results for the folder, and subfolders that I am currently in. This makes finding the exact file I am looking for very easy.
  8. Taskbar pins.

  9. By default IE, Explorer and Media Player are pinned down in the bottom-left, though they can be removed and other programs added. If I have multiple folders opened, I can click on the pin and it gives me a preview of each open folder. If I hover over one of those previews, the desktop goes black and the full image of the folder is shown to me. If I hover over another folder then that folder is shown to me. If I click on one, then it becomes the active window. This makes finding the right folder very easy. The same is true with IE and having multiple web-pages open.
  10. Default user.
  11. For a default install of Windows XP, the user setup at install time is the administrator. When the computer boots up the default behavior is that anyone can log in as that administrator without a password. This is horrible security, and I think it is what causes so many people to get infected so very easily. That was Microsoft trying to be user-friendly at the cost of security, which caused more user experience issues than it solved. Now the default account has a password setup at install time, and nobody can log in as that user without the password. I hope this results in more people setting up multiple users on the machine.
    When creating a new user it defaults to setting those users as "user" and not "administrator" which should help things.
  12. Updates.

  13. I know this was added in Vista, but I'm still thrilled about it. Updating Windows is no longer tied to Internet Explorer. Updates are done through the control panel. I still have problems with how updates are handled beyond that, which I list below.
The following are my gripes.
  1. UAC.
  2. UAC is still dumb. It is bad security practice. All it will do is teach people to click Yes or Accept more because they will be so tired of trying to read every dialog box. This is Microsoft again refusing to adept sane security because they don't want to compromise usability, even though it is going to get users infected and cause more problems than it solves. One example of how stupid this is, I was trying to install a program and it kept giving me errors all over the place during the install. Once I cancelled I got a box that reading something to the effect of, "It appears you tried to install a program that needs Administrative right. Would you like to rerun this program with Administrative right?" Getting errors all over the place, and then given the option to do it right is not good. Windows should have recognized the need for administrative rights the first time it tried to access a restricted area and prompted me then. And it should have asked for an admin password to ensure that the user had legitimate rights to do that.
  3. FTP.
  4. FTP access from within Explorer is still broken. I have been using 7 while working on some class projects and I couldn't get to me FTP site in Explorer. I could from the command line version of FTP, which is what I ended up doing.
  5. SSH.
    The inability to SSH across computers is another security issue. SSH is kind of like FTP (but certainly not exactly) but it is encrypted, so security is maintained. In the Unix world (which includes OSX) SSH is very powerful, and makes many tasks over the network very easy and secure.
  6. Updates.
  7. Updates still make you reboot constantly. It has taken me as many as four reboots to get all of the updates I needed installed. Why can't it install all the updates the first time, and only make me reboot for very low-level system updates like kernel updates? When I update Ubuntu I do it one time, and I very rarely need to reboot. In fact, I almost never need to reboot.
    If you don't reboot in Windows after an update then it will keep nagging you. I griped about there here. I don't understand why Microsoft has such a hard time getting it right. People have been complaining about this since Windows 95, and back then Apple had already made this a non-issue for their OS.
    Microsoft should also find a way that users can point to 3rd party update sites, so that users can keep their other software up-to-date using the built-in updating system. So if I have product A, I can point the OS to their updating site and I can get updates to product A with my regular Windows updates.

So there you have it. I still find Ubuntu to be a vastly superior operating system in so many aspects. There are still many questions about Windows 7, such as how well it will run on MIDs, Netbooks, and other lower-end hardware, which we will see pan out after it releases this October.

Wednesday, July 15, 2009

We've Always Done it That Way Vs. Everyone Else is Doing it That Way

At work we have scratched SCCS and are moving to subversion. For those not in the know, this is basically a way to keep our source code somewhere safe. They basically revision control software that allow you to go back in time and view previous versions of your software.

SCCS was the very first source code revision control system ever built, back in 1972 and is considered obsolete within the industry. Subversion and GIT are the two leading source code revision control systems today, and for a variety of reasons we decided to go with subversion.

As just about everything else in technology, thing have changed rather significantly over the last 37 years. Today's systems allow you to keep track of different version of your software as well as create all sorts of different branches of your software.

With subversion I can come in to work, grab the latest copy out of "trunk" and start working on it. When I am done I put my code back into trunk and go home. If someone comes in after me and starts working on the project then they'll have the work I did, and after they leave and I come back in I get all the work they did. If someone broke something along the way it is easy to go back and pull out an earlier version. It will even tell you the different between the two files so you can see what changes caused the problems.

It is also common, during a project, to try a new direction for accomplishing a task, only to realize that it won't work. Without a good revision control system you have to make a copy somewhere on your computer and then play with that. With subversion you can stay in trunk, and if you decide against where you where headed, simply roll back. If the changes are really big you can create a new branch and have the entire history of your new direction and then decided if later you want to merge those changes back into your trunk or not. The other great part is that it will look at the difference between trunk and your branched version and automatically put only your changes in trunk.

At some point in your development you will be ready for your users to start testing and your product will go in beta. At this point you branch your code off into a beta branch. Once testing is complete you create another branch. This will usually be given a version number, such as 1.0.

As your released product goes out, it is inevitable that your users will find problems. So at that point you fix them in trunk, push them out to beta and ask your users to test those changes, and finally make a new release, probably called 1.1.

In SCCS, at least how my coworkers have been using it, you have one version, and that is your release version. When you want to make changes you get the code out of SCCS and put it on your desktop. When you are ready for testing you give the program to your customers, and once they have accepted that your changes fix their problem, you then put your modified version back into SCCS. So SCCS keeps your production version and nothing else.

So in SCCS you take the release version and work from there. In subversion you take the trunk (i.e. dev) version and work from there.

SCCS was a big advancement when it came out. Today subversion gives us a lot more power and a sane path between development, testing, and release, and a way to track it all.

We have already had problems where we where developing applications outside of our source control and unforeseen problems wiped hours, or even days and weeks of work, which we couldn't recover because the development code only existed on a hard drive somewhere.

We have also ran into issues where we had a need to dip back into old code we weren't using anymore to see how we did things in days of yonder.

So you would think that with our move to subversion our team would be excited about the ability to merge and branch and keep track of our whole development cycle, given the issues we've seen in the past.

Our complete codebase is in the process of being rewritten, and heading off this new direction is someone who, until recently, had been working outside our group. His name is Nelson. He came in to our group once he had the base of the system mostly built and ready for our input. He is just a little older than myself and is more technologically in line with my way of thinking than that my other coworkers.

When it came down to have a meeting about how we are going to use subversion Nelson started to lay out how to use it and everyone else just about flipped. They had never seen anything like it before and it was way outside of what they know and love. They immediately rejected it and started drawing up plans for how we can use subversion like SCCS. Their solution is basically to put the released code into trunk and we work out of there.

Nelson and I argued until we where both blue in the face. Mike kept calling out, "This is the way we've always done it." Eventually I called him out on it, pointing out that that is usually a key indicator that it is time to change.

Despite my explanation above, I don't fully understand how to use subversion. Because I am a junkie for open source development, I read blogs from lots of developers that use subversion for their products, and I occasionally pull code from their trunk and compile it. So I've used it a little and am only vaguely familiar with the details on using. This is one of the reasons I was so excited about using it, until I found out that just wasn't what everyone else had in mind.

As I listened to Nelson explain it in our first meeting I started understanding what people where talking about in their software development blogs. So I was doing a very poor job articulating its power while trying to get everyone else to see the light. I started pointing out that everyone else uses subversion this way. Nobody called me out on it, but I realised that "everyone else does it that way" is just about as poor an excuse as "we've always done it that way."

Eventually Nelson decided that he would no longer discuss the issue as it "makes my blood boil." However, occasionally he can't help but to get going and pour his heart out.

Talking to my brother, and a few other people who work in the software industry, my fight is not new. It appears that the older generation of programmers just don't get it. Here I am, with hardly a year under my belt telling a group of people with 10+ years of experience that they are all wrong and need to listen to me. Not just telling them, but having very heated debates about why I think they are wrong.

So as of yesterday our code is loaded up into a subversion repository with our "release" code sitting in "trunk." I don't know how to articulate in a non-condescending way how absolutely asinine this is. I even made a plea to, if nothing else, don't call it trunk. Just call it release or production. I know it is just an issue of semantics, but I don't report to type with my toes, so we shouldn't report our production code to be trunk.

Another part that bothers about this is my career growth. If I go to interview for a job, and I am asked about revision control I want to sound competent. I'd like to be able to explain in great detail how it all works. I don't want to sound like I either came from cave man days of programming, or that I think I should be wearing my cap on my captains quarters.

Fortunately there is a light off in the distance. As I mentioned earlier Nelson has been building the basis for our new system. It will be a fazed complete rewrite. He has already started putting his code in a completely different subversion repository using the proper method of trunk, beta, releases and branches. As our old system is slowly merged into the new system, it will all have to go in the proper way using the proper methods, and eventually this nonsense my coworkers have concocted will go away, and I will ultimately be the victor.

I am also positioning myself so that my primary work will be doing the interface designs in the new system, so hopefully the majority of my work will not reside in the old system anyhow.

Tuesday, July 14, 2009

How Not To Do Software Updates

Tell your users to exit the program and then browse to your website. At your website provide a list of links to others company's websites that won't allow you to download the update until you register with their site. When the customer goes to install the update inform them that they actually can't install this update and they must go back through the same process to download all the earlier updates, starting with the first one, before they can install the latest update. This is what Call of Duty, World at War wants you to do.

Thursday, July 9, 2009

The Google OS

So for a couple weeks I've been brewing in my head a blog post about how what Linux really needs is for Google to come in and work it's magic, but that will never happen because it doesn't fit into Google's business model. So I've been thinking about this for a while and was hoping to post something real soon when just yesterday Google announced they are gearing up to do what I've been working on posting they will never do, which is build their own Linux-based operating system.


So today, we're announcing a new project that's a natural extension of Google Chrome — the Google Chrome Operating System. It's our attempt to re-think what operating systems should be.

That's right, Google is going to have it's own OS. For now it is just aimed at netbooks, and maybe that is as far as it will go. However, the increased influx of Linux development Google will be putting behind Linux should increase as it works to ensure that the new OS works as great as every other Google product.

I am curious to see how this all plays out. I have read some say that this is just another Linux distribution, but that comes from a short-sighted view of what Linux is. It is not an operating system, it is a kernel which an operating system can be built on top of. Nobody pays any attention when they use their TIVO, gPhone, router, or other Linux powered device that they are using Linux. They are simply paying attention to the fact that they are using their device, which is exactly how a device should be.

Google is probably the only company that has the money, power, clout, commitment, and proper understanding of how to utilize open source effectively to make this work. Canonical has made a really good stab at it, but they simply are no Google.

Thursday, July 2, 2009

The Bus/Free Riding Culture

As a child I spent a lot of time at my grandparents house in Pensacola. They liked to travel, and when they traveled camping was more-or-less their only means of resting. My grandfather owned a 70s model Volkswagen Bus with all the camping accessories and we all loved it.

I had always wanted one, but they have that dirty hippie history behind them, and people already seem to project that idea on me as it is.

So while looking around on the Internet at a vehicle to replace my Oldsmobile Silhouette I came across a 1980 VW Vanagon and I ended up purchasing it.

While I get plenty of weird stares and occasional hoops from other motorists and pedestrian, I have found that by owning a bus I am also now part of a larger community. This community includes previous bus owners, bus admirers, and what I have termed member of the "free riding culture" which includes bikers and others who ride the open road as sport.

I find people approaching me while I pump gas, as I enter and leave stores, and at red lights. They usually want to ask my what year and then give me a brief synopsis of their days as a bus owner. Bikers and other bus owners either wave or point in my direction at the sky as I pass them on the road.

I had been looking for a good riding hat for the bus and found one last week at Sports Authority while looking for a bike helmet. It was in the golf clothes section and it is perfect. It is similar to a panama. At the Saint Marks river Athena found a white feather so I stuck it in and now I ride around with a feathered cap with maximum style.

Monday, June 29, 2009

Gnome 3 Mockup

The above video demonstrates some new ideas for the Gnome 3 desktop. I am quite excited to see such goodness hit Linux

Tuesday, June 23, 2009

chromium extensions

Once I'm done with this semester, aside from some work-related learning, my personal learning will revolve around making Chromium extensions. There is a preliminary guide at

For those who don't know Chromium is a new open-source browser developed heavily by Google. Chrome is Google's rebranded version of Chromium that Google actively promotes and distributes.

I now use Chrome about 50/50 with Firefox. It is much faster and stable than Firefox. One of my favorite features is that one tab can crash, and it doesn't bring down the whole browser. That one tab closes, and the rest of the browser keeps going. Also, if I close a tab all of the resources it was using are gone, unlike in Firefox where you can close all of your tabs and still have a large memory footprint from the tabs that you closed.

At work we have an application that crashes quite frequently. It is especially bad about crashing when you have it open twice in the same browser. Now that I run it in Chrome it crashes less, and when it does crash it doesn't disrupt every tab I have open.

The largest setback to Chromium/Chrome is the lack of extensions. Extension support is in development, but has not made it to the release version of Chromium yet. I am very spoiled with Firefox's AdBlock+ and Customize Google extensions. I used to not see any ads. Now that I'm using Chrome a lot I see them again.

Another setback is that their Linux version is still in heavy development. In Linux it is just Chromium.

It actually runs very well in Linux for browsing, but it doesn't yet support addons (no Flash, Java, etc.) It also doesn't have any preferences yet. Aside from that viewing pages is fast and reliable. With my hopes to learn extension development comes another problem. Even though extension support is in the development builds for Windows, it is not in the development builds for Linux. This means I will need to use my Windows virtual machine to learn development. Hopefully in four weeks when school is over this will have changed.

One of my favorite things about extensions in Chromium is that they are written in HTML, Javascript and CSS. The work learning that I mentioned above is the need to become much more familiar with using these three technologies as I plan on using them full time for my job. I am hoping to become an interface developer for our web applications. So this ties in real nice with Chromium extension development.

One great thing about Chromium on Linux is that the nightly trunk builds have been setup in a repository on Launchpad. So I simply put added the following to my software sources: jaunty main
And then run the following from a console:
sudo apt-key adv --recv-keys --keyserver 0xfbef0d696de1c72ba5a835fe5a9bf3bb4e5e17b5
sudo aptitude update
sudo aptitude install chromium-browser chromium-browser-dbg

Now every day I get the latest version of Chromium for Linux. I have slowly watched it grow over time. It is exciting to slowly watch the features get implemented.

Tuesday, June 9, 2009

Biking to work

As I had mentioned previously, for our anniversary Kim and I purchased brand new road bikes. The timing was awesome because summer had just started. This meant that I no longer had to take Aurora to school or pick anyone up after work. I had been wanting to ride my bike to work for a very long time. The first six miles to work there is a bike trail that separates me from traffic. The next three miles is a road with a very narrow bike line that shares a road with vehicle going around 55mph, and at the time I leave for work there is a good amount of traffic.

The city had been extending that stretch of road with a completely new lane that, when done, will allow for three lanes of traffic going each direction. This new lane has been completed enough that for those three miles I can now ride on that currently unused road. Another bonus is that this new constructions includes a bike lane that is separated from traffic.

So I now have a new bike, no obligations to pick anyone up or drop them off, and two lanes of road just for me.

The Sunday after our anniversary I took my new bike and road it all the way to my job and back. That is a full twenty mile ride. The ride was good and the next day I rode my bike to work and bike.

Riding to work has proven to be a great way to start my day. I feel great when I get there. I wear shorts and a shirt and have a small bag with clothes and a hair brush for when I get there.

The first week was really great. The morning where nice and cool and the afternoons weren't so bad. It also helps that the first six miles on the bike trail is a North-South ride with trees so I am always in the shade for that stretch. The next week the heat cranked up. I lucked out with some overcast, but the ride home is still pretty hot. It is not unbearable, and I still quite enjoy it, but when temperatures are pushing towards a hundred, it is just plain hot no matter how you slice it.

I have already put in almost 200 miles on my bike, and I plan on keeping this up all summer. I don't get to ride every day because Kim goes to the YMCA in the morning and I cut into her available time, so we switch days I ride in a way that gives us both roughly the same amount of workout each week.

Between these rides, and our new commitment to not consuming empty-calorie beverages, I should be in pretty good shape by the time the sumer is over.

Above is a static image of my ride, and below is a Google Map of my ride. Google maps calculates my trip to be 9.9 miles.

View Larger Map

Our sixth anniversary

After missing our last two anniversaries, Kim and I dedicated ourselves to doing something this year. We where married on June 6, 2003.

I had originally planned a camping trip on that date, and we where all set to do it when Kim realized that this was our anniversary weekend. I'm not the kind of person to forget our wedding date, so I was a little embarrassed at this, but it took her about a week to notice it too, so not all is lost.

So I pushed the camping trip back a week, and planned for Kim and I to take the VW camper down to the state park St. George Island and camp there. By the time I had a sitter for the kids all of the beach parking in NW Florida was reserved for many weeks to come.

Our backup plan was to visit Saint Augustine. We have been talking about just the two of us making a trip that way for years, and this would be a great opportunity to do it. That wasn't possible because my mom wasn't going to make it to our house to watch the girls until noon on Saturday and she needed us back a little after noon on Sunday. Driving out there and back would have been hectic and left very little time for us to do anything. So then we where stuck.

Friday night I took the three girls down to the Saint Marks River to play and on the way back noticed a bed and breakfast I had never noticed before. Kim has always wanted to stay at a bed and breakfast, and even though it was only ten miles from our house, it still had the promise of being a good time.

I pitched the idea to Kim and she was all for it. The next morning Kim wanted to get a lot of cleaning done. I was supposed to get the kids out of the house so Kim could focus on cleaning, but after replacing the V-belt on the VW there really wasn't much time left. My plan was to take them up to the Great Bicycle Shop and get Kim and I new bikes. I have a mountain bike that needs a major tune up, and Kim has no bicycle. This was going to be a surprise gift.

So instead we all pitched in to help, and to our surprise the two big girls where great helps. Usually they are pretty good compared to many kids, but this time there was absolutely no fussing or complaining, only lots of good hard work.

After my mom showed up we laid Arianna down for a nap and headed south. At the bed and breakfast we ran the bell at the front, which calls the manager's phone, but nobody picked up. We left a message with our cell phone number and then Kim came up with this great idea. She wanted to go buy bicycles. Perfect! We headed up to the Great Bicycle Shop and picked out two road bikes and gave up all of our spending money for about two months.

As soon as we pulled out Sweet Magnolia's called us up. They had plenty of room and the manager said she would meet us up there.

There was only one other guest, two girls, who seemed to be a couple. They where on the second floor, so we picked a room on the bottom floor.

We talked to the manager for a long time. She was about our age, and Kim and her both knew a girl named Mandy. She is also in the Roller Girl crowd, of which we know by proxy a few of the people.

Armed with our new bikes we rode up to a nice seafood restaurant up the road and had a nice dinner. We where the only people there until another couple showed up towards the end.

The restaurant was in this awkward sub division. It had been built on a swamp, and each developed plot of land had been raised up from the swamp with brought in sand. Probably less than 10% of it had been developed and almost everything was for sale. I think it had been started during the housing boom, and now it was just a hole for real estate investors who where now probably having a hard time paying two mortgages. Each plot of land with a for sale sign was from a different real estate group, or read "For Sale By Owner." We rode up and down each of the roads and then down to the river side next to the San Marcos de Apalache State Park and finally back to then Inn.

From the Inn we could hear the live band playing at the Riverside Cafe. That got me jonesin' for some oysters so we headed up there and got two dozen oysters.

The next morning we ate our breakfast, had a nice chat with the couple from upstairs, and then took our bikes back to San Marcos de Apalache state park and walked around. We talked to the ranger on duty and watched the short video showcasing the history of the park. It dates back to the first settlers in Florida and was torn down and built back up for different purposes through history.

Back home we took our kids back over. I rode my new bike up to my job and back, which I will write about in my next post. Afterwards I tried to get some homework done but fell asleep in the middle of it.

Aurora and Kim's blog

Last summer I had Aurora start a blog so that she would keep writing through the summer. Just last week Kim started hers and Aurora started blogging again now that school is out.

Aurora's blog is at and Kim's is at Aurora's latest entry includes a really nice poem.

I hope that this time next year Athena is writing good enough to start one as well.