The best way to wake up
July 16th, 2008Nothing tastes better than a cold Diet Mountain Dew as you sit down to read the news in the morning. It cuts through the fog of sleep and brings your brain to the proper state for getting the day started.
Written by a software engineer in the Bay Area
Nothing tastes better than a cold Diet Mountain Dew as you sit down to read the news in the morning. It cuts through the fog of sleep and brings your brain to the proper state for getting the day started.
When a movie starts out with the torturing of a small kitten you should pretty much just shut it off then. Untraceable sure seemed to want to portray an Internet age horror story with the accuracy to satisfy the techie crowd. I give it some credit for at least trying to be plausible, however using internet addresses in the intro shots with quads outside 0-255 range sure didn’t help much.
I was wondering how they were going to convince people that something was untraceable on a point to point network. Of course it turns out that Untraceable isn’t really an accurate description. What they used was more akin to a Hydra situation where you can keep knocking the server down and it’s just replaced by others from a botnet. While this explanation works on the surface it gets you into all sorts of other issues.
Botnet servers aren’t really going to be server grade. They’re useful in aggregate for doing something nasty, but more often than not they’re a grandmother’s Win98 computer in Ohio and just not all that powerful by themselves.
Next, it doesn’t really matter how annonymous you are on the internet, if you start live streaming to 15 million people simultaneously, someone in an ISP monitoring center is going to notice. Comcast would have cut the user’s account after a few seconds of that type of bandwidth.
It would have been interesting choice if the killer had been dropping bittorrent seeds all over the internet using his botnet army. This would have the benefit of having the public take an active role in the distribution of the videos. Of course, while this would be more plausible and actually harder to trace, it would take away from the drama of seeing everything live.
Another option would have been for them to include the use of an Onion Router to anonymize the traffic, which is where I thought they were going to go initially. This would have probably gone over too many viewer’s heads though.
All in all, the movie was just sadistic and I didn’t really feel that it had any real message, definitely not worth the time. They could have gone into some of the issues in much better ways without the hoops that they had to jump through and come up with a much better story.
A scarier topic, along the same lines, that is much more real would have been to focus on the anonymous harassment of school age children that can drive them into depression. A very scary and very real issue with the internet.
You can now roll up all of your JS files from YUI into a single files. I found a pointer to this little tidbit here. This really helps to reduce the number of javascript includes that are required on pages.
Seems like they should be able to do the same thing for CSS shortly. Always working to get the number of http requests for a complete page load down.
Just pushed the latest update to ReadPath and noticed that I started getting weird errors in IE. The problem actually happened in both IE6 and IE7 which made me worry a bit more than usual. I had made a couple of changes prior to this happening, so it was time to start tracking down which change caused the problem.
First off, I had been playing with YSlow and working on getting the pages optimized for speed and cacheability. I had been appending random param strings to the JS includes so that IE wouldn’t cache it. At the time it was just too much of a hassle to try and determine if the problems I was seeing were due to bad code or just old code. So now that things were settling down a bit I pulled those params out. This meant that IE would start caching JS files.
Second, I started using the YUI libraries for a lot of the UI widgets. These really make it easier to develop a web application and it’s truly amazing how well they work across all of the major browsers. Web application development has come light years from where it was just a short time ago.
With these changes, I booted up my Win2k VM with IE6 and found that I was now getting “Operation Aborted” errors in IE. The page wouldn’t load at all and there was no way to determine what was causing the problem. So off to Google I went and quickly came across this solution.
If you are using a Javascript framework like YUI, you may encounter problems with Internet Explorer 6 spews the “Operation Aborted” errors.
This error occurs because
1. IE loads the entire HTML including Javascript the first time it loads data
2. When you try to refresh the page, IE would have cached some of the Javascript files which try to execute on a HTML page which isn’t loaded fully yet
3. IE thinks its illegal to do the above operation and throws up the error.
So the solution, which YUI already recommends is to wrap your initilization code in:
YAHOO.util.Event.onDOMReady(initialLoad);
This causes its own problem of course. The pages on ReadPath have a fair number of dialog boxes that are rendered by the YUI library and then hidden until they’re needed. With the new way of handling the initialization code, Firefox renders the unformatted dialogs for a brief amount of time before the page has finished loading. This causes a really ugly loading effect.
So the final solution, give all of the dialogs a class=”hiddenInitial” with that class set to display:none;. Then when the javascript gets to around rendering these dialogs, have it also pull the css class off of the divs. This way they don’t show up in IE or Firefox before they’re needed and everything works as expected.
As I’ve mentioned in previous posts, I’m a big fan of
tv as an alternative to broadcast television. However, today I noticed an interesting video on YouTube on scalability. I started to watch it on my laptop, but watching a long video on laptop just isn’t all that great. So I went over to the tv to pull up the video there. The problem was that the
tv wasn’t pulling anything more recent than 4/18/08. A bit strange that it seems to be exactly a two month lapse.
I compared searches for “Seattle Conference” which pulls up a large number of the GoogleTechTalks, but all of the recent posts were missing from the
tv results. The rest of the results were all there. Finally I tried adding the video as a favorite. It still won’t show up though.
tv still says there’s nothing there.
I’ve tried looking around to see if there is anything about a two month blackout on
tv but haven’t come up with anything yet.
Update:
Hmm, looks like this might be part of the problem. Trying to determine if there is a way to determine how the video is encoded.
Was just cruising through my news updates over on ReadPath where I’ve got a subscription to the Google EngEdu videos. These are always great ways to get some in depth coverage of a geeky topic.
One of the latest ones gave me a quick laugh though. A video on Natural Language Processing had it’s title clipped by an algorithm down to “Practical Applications of Natural Language Processing in Ass… “, which if there were any natural language processing going on with the syndication feed, it might have realized there was a problem.
Wish I could have gotten some picks, but it was moving pretty quick. I was in San Carlos today to pick up some items and it went tearing down a sidestreet. Can’t wait till there are more of them out on the road.
Looks like things will be changing a bit for CNET. They wanted to be a media company. Now they’ve got a really big media company to let them know how it’s done. I’m interested to see what kind of changes come out of this.
Can’t say that I’m really all that impressed. It wasn’t the shockingly better experience that I remember Google was when I first came across it. Some of the searches that I tested out seemed to be slightly better than Google, but I had to use contrived examples that I wouldn’t really use in everyday activities. These searches were simply designed to test Powerset’s strengths.
Couple this lack of noticeable improvement in search results along with the poor user experience due to site speed and I can’t say that I’ll be making the switch any time soon.
Found another one of those gotchas when debugging caching with multiple servers. Don’t make the assumption that ntpd is working properly and that the time is synchronized on all of the servers. I just spent a whole lot of time to finally discover that somehow a server had its times off by an hour. This caused some very weird effects to trickle out.
I ran into a small issue yesterday with a tomcat server running hibernate with a distributed ehcache setup for the second tier cache. My server setup currently uses two tomcat servers that are load balanced for serving front end pages along with several other backend servers that do offline processing. Because a lot of the work is done asynchronously, the frontend servers need to be updated when the processing has finished and the data has changed.
To start off with all of the tomcat servers where on machines with only a single private interface on a 10.0.0.0 network. There were seperate apache servers that bridged the public and private networks. However, to consolidate some of the servers I moved one of the tomcats onto an apache server with two nics.
What I noticed then was that this server was not recieving any of the cache flush commands from the backend servers. Turning on debug logging for ehcache verified that this server was not communicating with the other servers. I did a lot of poking around and trying out different configs, but everything looked good and since the configuration had been working fine just a few minutes before on the other server I figured it had to be something specific to the new dual nic server.
Eventually I tracked it down to a routing issue with the multicast udp packets. Since for the new server the default route went out over the internet the multicast messages were being sent the wrong way. This was quickly solved by putting in a new route to point the multicast packets to the private network.
route add -net 224.0.0.0 netmask 240.0.0.0 dev private_nic
Once the new route was in place everything worked as expected again.
Hmm, just finished the update to the latest version of Safari. Afterwards, I was doing some work and then everything suddenly froze. A few seconds later a screen came up saying that I would have to hold down the power button to restart my laptop. Upon rebooting it asked to file a crash report to Apple, which I let it do.
This is the first time ever that I’ve had a Mac actually crash hard on me. Hopefully this isn’t a sign of things to come.
I’d hate to use this as a reason to have to upgrade my laptop. It still works great, but it is starting to show its age. One of the clients that I’m working with at JBM Labs has a rather dirty office due to the type of work that they do and doing troubleshooting there with my white Macbook has caused quite a few stains on the keys and surface of the laptop. I’d really like to get one of the new Macbook Pros, but just can’t justify the price right now.
One of the main reasons I was interested in upgrading my Macs to 10.5 was the inclusion of Spaces. I’ve been working with virtual desktops on Linux for years. I’ve gotten so used to being able to partition applications by logical group, what I was doing, that I’ve found working with windows and older versions of OSX rather painful. There was just never enough room and I was always spending time moving windows around instead of getting things done.
I would have a desktop for web browsing, one for email, one for tailling logs, … And then on top of it all I would use xosview placed in a corner and visible on every desktop to get a quick view of what my computer was doing at any moment.
I discovered awhile back that OSX had the Activity Monitor, which is found in the Utilities folder in Applications. It’s not quite as good as xosview, but it gets the major things. I usually put in the dock and set it up to show memory and then have a floating cpu window.
The main drawback though was that the cpu indicator would only be on one desktop with Spaces. So if you moved to another desktop you wouldn’t have that quick view. Today I discovered that if you go to the Spaces Preferences there is an option to specify that certain applications reside in all desktops. I simple added the Activity Monitor to this list and now the floating cpu window is always in the bottom left corner, no matter which desktop I was on.
Since I’m on the waiting list for Google’s AppEngine, all of the buzz got me thinking about how the cloud computing realization could augment the projects that I’m currently working on. After doing some homework on what was available out there it actually appears that Amazon’s EC2 is better suited to my needs.
EC2 can provide quickly requisitioned servers for an incredibly low price. This makes several aspects of scaling out a web service much simpler. Now I’m trying to wrap my head around a new way of thinking. I’ve got a small cluster of computers that I would like to expand through EC2, the question is where to draw the line. What stays in my datacenter and what goes to Amazon’s?
You have to pay for moving data in and out of EC2, so you want to be careful about how different parts of the system interact. I currently have several aspects of ReadPath that are implemented as web services to make it easier to change the configuration of the underlying systems. These systems would be excellent candidates for moving to EC2, but what I’m also considering is actually moving all of the background computation and crawling into EC2. Then only having the public web interface in my datacenter. For the web portion the crawl data is read only while the user data is read/write. So we could separate the content data from the user data and create a nice separation. The main risk is if the EC2 systems aren’t stable and cause data loss, we’ll just have to see.
So I’ve finally taken the plunge and signed up for one of the cloud computing services. The main reason why I chose Google’s was because it offered a free trial to see how my applications would integrate. I know Amazon’s is really cheap, but you don’t have any money coming in yet there is still a difference between really cheap and free.
Only problem is that I’m waitlisted, well that gives me some time to look it over and model things out before I dive in completely.