Memeorandum

Memeorandum is another one of those websites that I first put in the Web2.0 Hot Air Bucket. That was until I tried it out and got hooked on it. It gives you a nice overview of what’s going on in the world and a whole lot of sources if you want to go a bit deeper.

It’s really neat to see how the topics shift from day to day. Studying the data flowing around the web is a really interesting problem. There really is so much out there these days and being able to make sense of the patterns moving about is valuable.

Give it a shot if you haven’t already.

Bloglines acting up again

Seems to be some issue with their service. Feeds are reporting new stories, but then only showing feeds titles when you click. They also won’t show as read after clicking. Not exactly working properly.

I love the service, it really is great, and it’s free so I can’t complain too much. But, I really do notice when it’s acting up.

It’s almost to the point that I’m ready to implement it for myself. Could be fun to play with some the concepts. Spidering, AJAX, document management, search,… There’s all sorts of fun stuff in there. Well, we’ll see. So much to do, so little time.

Update 2/2
After sending in a feedback to bloglines describing the problems I was having they seem to have fixed it. Took about 3 days, but everything is back to normal again. Good job Bloglines.

Loving Emacs

I’ve been getting several emails lately from the ACM about nominations for the best classical computer books. They’re holding a vote to find the best of out of print computer books. There was an initial nomination process and now they’re into the voting. There is even a wiki setup to peruse and comment on the nominees. This got me going on a search for expanding my programming knowledge. I’ve exhausted the commonly available sources and have to look far and wide for new things to study. In so doing I’ve come across several books by Paul Graham and Peter Norvig on Lisp.

I’d heard a lot about the language over the last several years, but never had the time to sit down and try it out. There have been several articles that have popped up lately about the positive experiences in learning the language so I thought I’d take a look.

My studies have started with three books, “Structure and Interpretation of Computer Programs”, “Ansi Common Lisp”, and “Paradigms of Artificial Intelligence Programming, case studies in common lisp”. I’m moving through all three books at the same time and so far I would highly recommend these to anyone trying to get to a deeper understanding of computer programming. There was also a history of Lisp on Paul Graham’s website that is a very interesting read. It’s rather awe inspiring that Lisp is second only to fortran in age, but has concepts that most other languages are only now catching up with.

As a side effect of studying lisp, I’ve had to pick up using Emacs as an editor. I had used vi primarily for command line editing, but I’m really starting to take to emacs. The commands seem more intiuitve to me and a bit easier to get more power out of the editor.

Well, I’m excited about the mind stretching to come. Not sure how useful lisp will be in terms of paying the bills, but it should be good for an intellectual excercise. Besides, keeping the brain sharp is job #1 for a programmer.

When to worry about scale?

I’ve been working with a startup since September and it’s been a great learning experience in how to start a company from nothing. I was actually the first full time employee of YouService, and was brought in to beef up their server side experience. I came in with a fair amount of experience working with high volume J2EE, having spent several years as the lead engineer on webshots.com and was tasked with designing a system that would scale to millions of users.

Working with a startup is very different than working with an established company. The skies the limit on what you can do and often you need to focus on what’s important if you’re going to get anything done. I’ve tried to balance out some ideas on where we should be spending time.

While I believe it’s always a good idea to keep the future in mind and be prepared for success when you’re building systems, you can also take this way too far. You can paralyze yourself worrying about being able to handle millions of users when first you have to handle hundreds. In order to handle hundreds of users you have to work properly and as expected. For a startup keeping this balance is key. Get the first customers in the door, paying, and happy before you put too much time worrying about the millionth customer.

Inorder to get the first happy customers, you have to be able to deliver a product that people will pay for. For this to happen the product has to work as expected and be reliable and stable. So for a startup these are the key points. The system needs to be bullet proof more than anything else. If your first few customers find issues, they’ll leave and there won’t be any more following.

So this is where the balance comes in. How to design bullet proof systems without painting yourself into a corner when it comes time to expand. It’s also much easier to calculater ROI of expanding if you have actual paying customers to set up that equation instead of estimates pulled out of nowhere.

AJAX, Thick or Thin client

There’s an interesting blog post discussing the pros and cons of rendering a page on the server or client side. The main point was that by using a technology such as JSON to only transfer the data necessary for the page to the client and keeping all display logic in javascript(Thick Client) you reduce data transfer requirements. The greater the amount of data that needs to be transferred the more sluggish the app will feel.

An area that I’ve been working with and have seen mentioned over at Ajaxian is to use a Thin Client approach (logic on the server side), but then use hidden divs and use local javascript to manipulate the divs. You take a slightly higher hit up front for page load as extra non-visible data is passed to the client, but later interaction time is reduced as further communication isn’t necessary. This also simplifies app development by leaving the logic on the server. Not only is the development of a full MVC environment difficult in javascript, but you open yourself up much more to browser incompatabilities.

No Javascript in innerHTML

Took a little debugging to figure this out. I was working with an AJAX application and was pulling some content down from the server using xmlhttpRequest, but couldn’t figure out why the little bit of javascript in the returned html wasn’t working.

Turns out that HTML is processed properly when inserted using the innerHTML calls, but javascript itself is ignored. Found a couple of references that hinted that if I were to use the DOM methods the javascript would be interpreted, but I’m not sure I want to go that way. Going to rethink how I’m handling this part of the application.

I get hungup on little problems with jsp tags

I spent a good portion of the weekend with my head wrapped around a silly programming problem. I was trying to find the most elegant way to work with nested tags in a jsp. I wanted a tag that could either be standalone with an object passed in as a param or nested inside of other tags and retrieve the object from the parent tag.

While this is possible, if you agree on conventions and the tags are designed to work together, one can call getParentTag() and then call methods on that tag. But, what happens when instead of being immediately nested, it’s two layers deep. You need to include logic to look at the parent’s parent. It wound up that more than half of the code for the tag was just to load the required object and this code would need to be duplicated in other tags. This also created a tight coupling between tags when the main purpose is that they are bits of reusable code and not tightly coupled.

Another option was to use the request object and pass objects in and out as attributes. This requires a convention for naming and can cause unpredictable behavior if there is a naming collision.

It would seem that there’s a need for better communication between tags. The ability for a parent tag to expose objects for child tags and vice versa. The current options just don’t feel like elegantly designed solutions. The feel really hacky and prone to falling apart further down the road.

In the end I chose to just use a scriptlet instead of the parent tag, which probably should have been the obvious choice from the beginning. Just one of those so close, yet so far feelings, but it works and that’s what matters right now.

Cingular having trouble with voicemail

Both my wife and I picked up Cingular Razr phones several months ago and for the most part have been very happy with them. The phone itself is wonderfully designed, it’s rugged, fits in your pocket, and is just easy to use. However, the little details can often matter so much.

Both of us have been having increasing trouble with the voicemail on our phone. The voicemail itself works fine, while the commands are somewhat counterintuitive. The problem lies with the phones ability to sync with the voicemail service. For about a week my phone would keep telling me that I had voicemail. I would check, but there would be no new messages. No matter what I did I couldn’t get the phone to recognize that I had deleted all of the messages. I rebooted it, took the battery out, did everything I could think of to get it to resync with the system. Then one day it finally did clear out.

This last week it’s gone the other way. Everything was working fine except my wife asked why I didn’t respond to a message she had left. A day after she had left the message the phone still hadn’t noticed that I had a voicemail. When I did call the voicemail system I was surprised to find that I had 4 messages waiting with no notifications on the phone.

My wife has been having the same issues with her phone and lack of notifications and it’s not that we’re out of service area, we’re both driving all over the SF Bay Area during the day with the phones on. There just seems to be an issue with the phones ability to sync with the voicemail service. This is a problem though in that you can no longer trust your phone.

Update: 1/25
So, it appears that the problem was on the phone side. There’s an option to turn off notifications for voicemail in the menu of the Message Center. After working for some time on tracking the problem down with a coworker, we found this option had been switched off. Not sure how that happened, but things are working now.

Web Applications

I’m starting to see a change in the feelings of the people around me in acceptance of using online applications. I’m hearing the same things over and over again.

  • Why do I have to install this again
  • I just need that file that’s on the other computer
  • I really don’t want to have to worry about this
  • As these problems become more pronounced and people realize that with web applications you don’t have these worries I think we’ll see increased adoption.

    Of course this is all dependent on there not being a big privacy blowout. I’m glad to see that Google is holding it’s ground and fighting against the government’s fishing expeditions. It really is just too tempting for the government to have all of that data in one place, so we need to get the rules in place to force it to keep it’s hands off.

    The telcos want change the way the internet works

    There have been several posts lately talking about how telcos want to change the way the internet works. Having providers pay for tiered access systems. If you pay the extortion fee, you’re traffic gets a higher priority than the rest. This breaks the way that the internet is designed to work. The network is designed to be a very dumb beast. There are packets and these packets are routed from start to destination. That’s about all of the logic that is supposed to be there.

    There was a lot of worry when networking companies created the ability to provide QOS (Quality of Service) and allow some packets to be delivered ahead of other packets. Turns out that that worry was not unfounded. It appears it’s going to be the telcos causing the problems.

    The telcos argue that they have to be able to make more money on the infrastructure that they supply and that this tiered system is how they will go about doing it. The telco companies realize that the individual user isn’t going to pay higher prices so they feel they can go after the internet companies which do have money and require network access to survive. It would seem that providing interenet access is the epitomy of a commoditized product, which is really bad for companies trying to make a product. As a customer, you need a certain amount of bandwith to run your business. There really isn’t a whole lot of difference in quality between different providers. There are some differences in guarantees of availablity and service contracts, but beyond that it’s not like one provider is noticeably faster than other providers. So it really comes down to a very simple equation, ( Bits / Second ) * ( $ ). And usually whoever is able to provide the cheapest price wins. If you’re a decent sized web company you’re hosted in a large colo that is peered with multiple bandwith providers and it’s fairly painless to switch when a competitor provides a cheaper price.

    When I was with Webshots, bandwith was the highest monthly expense, ahead of the usual expense for small companies, payroll. But, over the two years that I was there, bandwith costs dropped dramatically as competition brought the prices crashing down.

    So, what I don’t understand, is how a telco can feel that with this very simple equation it can create value by trying to enforce penalties on customers that aren’t necessary. They’re trying to remove the commodity status of bandwith by applying artificial layers to the network. As long as company will go with the simple model it will always win. No sane business would pay the extortion fee as long as it has a choice. And if a telco were to intentionally slow down a packet from another provider it’s opening itself up for a lawsuit.

    The only way this would work is if the telcos built a seperate network on top of the internet that they controlled and charged for access to. Think of it like the private toll roads in LA that are inbetween the public highways. You pay for access to a special road that has less traffic, but the only way this is beneficial is if the public road is so crowded that it has become unusable. It would be business suicide for a telco to allow this to happen to its networks, it can’t supply both networks at the same time without intentionally killing the lower cost one. The only reason it can happen in LA is because the main highways are supported by the government and not a private company. If the government were to try and launch a tiered system there would be a huge uproar against it with the logical argument that the money should be put into improving the main highway and not building a second highway.

    In the end I think this model will go down in flames. I personally pay 2-3 times the going rate for my personal internet connection because I don’t want to deal with any restrictions. I use Speakeasy.net because they have the most liberal policies and take the approach that you’ve paid for the bandwith, as long as you’re not breaking any laws, it’s all yours to use as you wish. As long as there are companies like speakeasy out there, this push by the telcos won’t work.

    There is no war on terror

    Just as there really isn’t a war on drugs, there isn’t really a war on terror. Until communities can form militias and open fire on the enemy combatants on our street corners selling heroin we’re not really at war. Of course everyone understands that waging war in the streets against drug dealers isn’t how things are done in this country. You let the police charge them and the DA convict them in a trial. It’s also understood that you can’t open fire on Muslim Americans in the street. Yet somehow the President feels he can use war powers because we’re at “war”.

    There are some individuals out there that are breaking the law that need to be brought before a court, charged, and found guilty with complete due process. There is a bit of a hitch with suicide bombers in that they tend to kill themselves and leave no one behind to charge, but we shouldn’t throw the civil liberties of the rest of the country out the window because these very few individuals are making law enforcement more difficult. We live in a country that believes in laws.

    Until the average american citizen realizes that this is all just a PR move to allow the Executive branch to grab more power we’ll continue to suffer the loss of basic civil rights. There are hundreds of people around the world stuck in legal limbo because the US can’t charge them but doesn’t want to let them go either. This is not how the country that I believe in acts. The country that I believe in follows the rules of law. It doesn’t throw them aside when it feels like it. If you can’t charge someone with a crime under the law, then you have to let them go. This happens with murderers all the time, not what we want to see happen, but there is a process to how you’re found guilty. This process protects us from being picked up in the middle of the night by the gestapo and disappearing, which is exactly what a german citizen is currently suing the US Government for doing. Also, you don’t torture innocent people because you think they’re someone else. Better yet, you just plain don’t torture anyone.

    Terrorism has become the boogeyman that normal people can’t think about rationally. The executive branch is using this to their advantage and taking our country down in the process. It’s about time americans wake up and really start to think about what’s happening to their country.

    Patent Trolls should be removed

    There was an article awhile back by Paul Graham that talked about there not being a viable market for business ideas, that the real power in a business was the execution and not the idea itself. This was also mirrored in a podcast on Podtech.net where Furrier was talking with a VC that mentioned that they’ve heard all the ideas, that what was really important was the people running the business. If the people were good, then it was a business worth investing in. These ideas really line up with the american dream, if the small guy can come up with a better product they can take on the world and win. Historically patents were created to protect this small business from a large business stomping on them. The problem however was that patents were so powerful that they turned in a doomsday weapon that large companies would cross-license inorder to avoid a shooting lawyer war.

    The recent change that is causing problems is that small firms are being created that own nothing more than patents. These firms live to sue other companies that could possibly be infringing. All of the problems with patents allow these firms to hold other companies ransom. It’s so expensive to fight a patent that it’s often just cheaper to licencse and since the company has no other assets you can’t cross-licensce. The firms are just leaches on the business field.

    The big case in the news right now is the fight between RIM, maker of the blackberry, and NTP a firm created to collect revenue from licencsing patents. Historically the story is not so black and white. NTP was originally started from a small inventor that was working with email, but was never able to get a succesful product launched. Instead after the original inventor died the firm went on to sue mobile mail providers because it had recieved a very broad patent from the US patent office.

    This flies in the face of how business is supposed to work. As I mentioned above the hard part in creating a succesful business was the execution of the day to day running, hiring employees, and managing sales. Patents were created to protect small businesses from being illegally squashed by established large businesses. However, there is no evidence that RIM did this. NTP is asking for hundreds of millions in licenscing fees for no work other than filing the patent. RIM put in all of the hard work and created a product, dubbed the crackberry because people have become so dependent on it, but NTP is trying to cash in on that popularity.

    So, is there really a market for business ideas? It would appear that NTP is proving that there is. It has not executed a successful business, but is just charging for the use of the idea. I think we need to reexamine the way that patents are being used. There should be some clauses that damages can be awarded only if a real business has been damaged, threats against an idea of a business is not a real damage. Since NTP was never able to launch a product, there was never any damage inflicted and it should not recieve any award.

    There should also be some risk in bringing a patent suit. It shouldn’t be cheaper to just settle because this hurts the next business to be held up and makes it harder to prove that the suit is frivolous. If a suit is deemed to be frivolous, the offender should have to cover the costs of the defense. This would make a firm like NTP think twice about suing businesses with a questionable patent.

    There is also undue weight given to the granting of a patent by the USPTO. A patent grant should be tentative until it’s tested in court. It should be just as easy to overturn a patent once a lawsuit has been filed as it is to protect the patent. The patent office is addmittedly swamped and unable to do the real work in determining if a patent is valid. The undue hurdles that need to be overcome to overthrow a patent gives firms like NTP too much power.

    Unless we can fix this system businesses and development will slow in the US because of the legal minefield that you need to work through just to launch a product.