Sunday, February 3, 2008

And they this us Americans are stupid...

I found this article today, the first paragraph says it all:
Britons are losing their grip on reality, according to a poll out Monday which showed that nearly a quarter think Winston Churchill was a myth while the majority reckon Sherlock Holmes was real.

Just goes to prove, American's don't hold sole bragging rights on having a country full of uneducated morons.

The waiting game...

I hate the waiting game. Why can't HR/Recruiting people work weekends? I know, they should have lives too, but I hate waiting. Did I mention I hate waiting? Hopefully I'll be out in warm sunny California on Friday of this week, or sometime the week after for a day or two and get out of this cold weather and away from the 3-5" of snow we're supposed to start getting tomorrow. With any luck, I'll have two trips out there in the next 2 weeks...

I'm ready for winter to be over and the snow to go away.

Sunday, January 27, 2008

Talk about dry...


No, not the weather... TCP/IP Illustrated Volume 1. Now, don't get me wrong, this is an amazing book. Probably the best book (and series) ever on TCP/IP, but it's no The Great Gatsby. Nothing like spending a kid free Sunday afternoon (she's at my mother-in-laws) brushing up on IP packet headers and connection handshakes. 

I do highly recommend this book to anyone who wants to learn all there is about IP networking. My copy is about 12 years old now, the binding has broken spots in it, and there are beer stains along a bunch of edges from sitting on my desk and someone at a party long time ago knocking a beer over. I'm not sure what I was more upset about, a spilt beer or beer on my book. But, it adds character to it.

Now back to reading about all 15 different ICMP packet types...

Saturday, January 26, 2008

My books are dusty....

Pulled down my old CS books. I always knew there would be a reason to use them again...

It is amusing reading CS theory 15 years later and looking at how you write code now. I always hated O() crap, and I now remember why....

 2 * N * (N - 1) == 2 * N^2 - 2 * N == O(N^2)

My brain hurts...

Friday, January 25, 2008

Stupid Google Tricks

Along the lines of the classic Google "I'm Feeling Lucky" search for "French military victories" comes the latest, the "Find Chuck Norris" Feeling Lucky search.

Just do it...

Wednesday, January 23, 2008

Why developers and infrastructure people don't get along

I think today I stumbled upon a big reason why developers and infrastructure people never seem to get along, terminology.

I was reading my friend Dion's blog post today about a new feature in the Google Maps API. He talks about things being dynamic and asynchronous. I take a quick look at the code, and think "wtf? this isn't really dynamic or asynchronous!", and of course I have to comment on it. I'm sure anyone who is an AJAX programmer who read my comment immediately said "what a tool, he doesn't know what he's talking about!". 

So, lets look at the words "dynamic" and "asynchronous" and see how a developer and an infrastructure person think of them.

First, synchronous vs asynchronous. 

As a person who has been engulfed in infrastructure for the past 10 years, the first example I think of is synchronous vs asynchronous disk writes. A series of synchronous disk writes happen in order they were called, while a series of asynchronous writes could be completed to the disk in any order and each write will return as soon as the OS has it buffered, and your application keeps running. From the application side, you don't care about when the asynchronous write is actually completed, you leave that up to the OS to figure out and trust that it will do it properly. From designing a system to handle a large number of asynchronous writes, I care about doing all those writes as fast as possible, and it doesn't matter the order or if one is delayed. As long as the application the infrastructure was designed for knows the write is done, it doesn't matter.

Now, lets look what an AJAX programmer thinks about the A in AJAX. The AJAX programmer does things asynchronously in their applications so that things can happen behind the scenes. They tell javascript to do "X" and once they tell it to do "X" they move on. This is the same as the sync vs async in disk writes. But, the difference comes in that the AJAX person actually cares and needs to do something when "X" is complete. But since Javascript is more or less top to bottom code, at some point their code is going to wait for "X" to complete if it hasn't by the time it needs the return of "X".  AJAX then, in my mind uses asynchronous bits even tho sooner or later the application will treat it as a synchronous item.

Now, lets look it from a C programmer standpoint. You write a multithreaded application. You spawn off 3 threads to do X, Y, and Z. You do require X, Y, and Z to complete before you can exit your application. You first wait on the mutex for X, then Y, then Z. Now you finish your application. Your waits probably don't care about how X, Y, or Z finished, just that they did so you can exit cleanly and not muck with running threads.

In either of these programming options, parts of the application are asynchronous, but they still as a whole are top to bottom and will rely on things being done in order at some point (either processing the data the asynchronous parts did, or waiting for them to be done in some sort of order). From the infrastructure side, you look at the programmer and say "stop calling your application asynchronous, its just partially asynchronous!!!!"

Now lets look at the term "dynamic"...

From an infrastructure standpoint, I think of something that is dynamic is something that will change based upon outside influences. Perfect example, DHCP (Dynamic Host Configuration Protocol). A completely separate service is responsible for handing out the dynamic data for a DHCP client. No where in the DHCP client code is the dynamic data stored as a constant in the code.

Now, lets look at dynamic from an AJAX perspective. AJAX/Javascript folks consider and refer to text that is generated inside Javascript on a webpage to be dynamic. Even tho that text may be sitting inside a bunch of constants and pushed out into elements on the page, the act of pushing the text out is the dynamic portion, not the content itself.

We both have different meanings of dynamic referring to different things. It took me awhile to grasp on the AJAX side that a bunch of constant strings in javascript can be called dynamic. While I'm sure a lot of programmer say "What is dynamic about DHCP, I get the same address every time!"

So, the developers say the infrastructure people are idiots and the infrastructure people think the developers are smoking something strange, and no one gets along, and projects fail.

But, the thing is, neither of us are wrong in our thought process. We just don't all have all the needed thought processes framed correctly to properly communicate, so we end up fighting and ruining projects.

So, what is the solution to this problem? Well, the only solution I can think of right now is beer.


MySQL and Sun, already misleading the public...

So, someone sent me this article on MySQL and ZFS today. Not sure when it was published, but has no comments on it, so I'm assuming its recent. All I can do is laugh.

Why does Sun continue to try to compare ZFS to UFS? UFS is absolutely horrid for I/O because of its caching design. Comparing ZFS to UFS is like comparing your new brand new 2008 Mustang GT to your old 1992 Geo Metro. Yeah, both have 4 wheels and get you someplace, but not much else to compare. And to make matters worse, ZFS in many cases doesn't even beat UFS in their tests. In order to beat UFS they need to use the latest ZFS in OpenSolaris (not the ZFS that is shipping in Solaris 10).

Let me put it simply. ZFS is horrid for databases. Just horrid. Maybe if Sun would get their head out of their ass and allow you to actually do direct I/O on a per file basis (as does VxFS) or even on a filesystem basis. As it stands, try running a heavy Oracle database on ZFS, ZFS starts to push Oracle out of physical memory (even with ARC caching limited, I believe it has something to do with the wacky memory usage that Oracle does). What, do they think they are Linux now? To be honest, my biggest gripe with Linux FS's has been the overly aggressive file system caches. ZFS takes that to the Solaris world (along with rumors of NetApp patent infringement, but thats a different story).

I really want to see the MySQL folks redo that article comparing ZFS to a properly configured and installed VxFS filesystem.

I'd also get into how the author makes stupid comments regarding prefetching "wasting" time on the disk, but he obviously hasn't dealt with proper performance tuning of RAID disks that use stripe technologies with block size. Or even with the block size and record size. He has made it overly simplified in order to make ZFS sound so wonderful. Just because your database writes in a 16k block doesn't mean the average number of blocks it reads and writes at once is 1.

Oh well, what do I know...

So, it appears I only caused the startup to need a new provider

So, I guess my resume didn't make NotchUp pack up and go out of business, it only caused such a tremendous surge in traffic that they need a new hosting provider, as proven by this:

NotchUp Will Be Back Soon
We are currently moving NotchUp to a new hosting provider due to the unexpected tremendous response to our Beta program. We hope to be back online on more powerful servers late this afternoon at 4pm (PST) in California, 7pm (EST) for folks on the east coast. Thank you for your patience.

Guess maybe they should be looking at my resume :) Also, the spelt my name wrong, it's Brian not Beta :)

Did I kill a startup?

So, I got an invite last night to some new private beta job site called NotchUp that gets company to pay you money to interview with them. Sounds kinda odd, but I figure, money is money, what's the worst that can happen I spend 10 minutes filling out a few profiles boxes and thats it.

Well, thats not the worst that can happen. At least not for them... I signup and start the process. About 45 seconds into filling out stuff I get an error that Drupal isn't installed along with login and host information for their MySQL server. I refresh and it goes away. I go to import my LinkedIn info and it keeps telling me my password is invalid and it can't import my information. After a few tries I give up, deciding its faster to type in my profile info and I really don't want to try to pimp out my friends on this site until I see if I can even make money (plus, it's more competition for that $$$$ for doing interviews!). So I go to type in my profile info, and low and behold, all my LinkedIn info is there. So, I go to start editing it. Next thing I know, the site is suspended by their provider jumpline.com.

So, what happened to them?

Guess #1 is that my stellar profile and shear hire-ability (is that even a word?) caused their entire company to go running for the hills and close up shop because they knew they couldn't compete with the likes of me.
Guess #2 is that they are now the latest in a long and never ending line of startups who can't pay their bills.

Personally, I vote for #1.

Tuesday, January 22, 2008

How to pick an image for your news article

I found this image today with an associated news story. You would think they could come up with a better image to be associated with the actual story. But, as it was about Google, I guess they figured a hot chick in a Google tank-top was perfect. The article is from Canada, so I guess we can't expect too much in terms of taste, after all, have you ever actually tried a Canadian beer? 

I do wonder what image they would pick if it was a story about Google searches for pr0n... Do they have thongs at the Google Store?