Archive for the 'Software' Category

Gripe of the day: Firefox 3.0 — Too much hype, not enough delivery

Monday, July 28th, 2008

Random gripe of the day: there’s been way too much hype about Mozilla Firefox 3.0 web browser. I recently installed Mozilla Firefox 3.0, and my experience has been summed up in one word: dismal. As much I have been a fan of the browser, there’s been way too much hype around this release. I regularly use both Firefox 2.0 and Internet Explorer, and Firefox 3.0 crashes roughly two or three times a day for me, freezes up my system doing who-knows-what on Javascript enabled pages, takes forever to load extensions, and still is a memory hog. So if you are looking to install it, I’d wait until the next version (or go scrouging through archives to find an old version of Firefox, like I did this morning…).

Scalability: where engineering counts

Thursday, May 22nd, 2008

There’s been more than enough random speculation (and complaining) on the various blogs on why the popular Twitter instant messaging service has been crashing (it seems like it’s been down more than it’s been up, and the site’s technical team has even said that they’re not sure what’s happening.)

I don’t have any insights into twitter, but, having been on the engineering side of things (as a software architect) I do know that their choice of Ruby On Rails — the interpreted language they use at their back end for the service — must have been the worse possible choice if you really expected your service to take off.

For the non-technical (which seems to be most bloggers) — an interpreted language is one which isn’t compiled directly into the native code of the machine you’re running on, but instead is parsed line-by-line (in the English-like language) every time it is run. Conversely, a compiled language is translated directly into machine code — in the native instructions/bits/bytes of the processor. The speed difference is gigantic.

There’s been some speculation (by the clearly nontechnical) that the firm should have used something like C or Java. C might be a choice, but (having built large scale projects) with Java, Java is just as slow (or slower — just ask any Java programmer about problems with garbage collection) as Ruby On Rails as an environment. Interpreted languages — whether that’s Ruby, Java (yes, that’s interpreted too), Python, Perl, and PHP, inherently are far removed from the systems they are running on than compiled languages (C++ and C). That’s usually fine — the ease of use, libraries, and tools they offer make for much more rapid development– but when you’re talking about really scaling an application they face a lot of challenges.

Regardless of the right choice of application development for Twitter, the key point to take in all the back and forth about scalability — is your engineering team counts. I’ve talked with many non-technical founders who have considered completely outsourcing all of their development (to a third party, to an outsourcer in India/China/Prague/etc.); who do not have a technical co-founder, and I can only shake my head — if you are in a software driven environment, including a web-driven service, you absolutely need to have a team which knows how to deal with issues of scalability, performance, and stability. This is an area where years of experience — and not just hacking around with Java in school — is important. Even though you might be able to create a startup nowadays with six people and six months–using something like Ruby On Rails– going from a small test application and a few hundred users to thousands and thousands of people is no picnic.

Omid Rahmat on the next Internet Wave

Thursday, April 10th, 2008

Omid Rahmat — former publisher of Tom’s Hardware Guide — talks talks about the next Internet wave in our Insights & Opinions section today. Omid has had a long and successful career in the publishing industry, and we’re honored to have his contributions…

If there is another Internet wave coming - a Web 3.0, a Bubble 3.0, or even a recessionary surge – it will surely involve a focus on stronger business models than ones dependent on social networks or pure ad plays. You have to believe that if everyone is chasing advertising technology, ad networks, and ad supported business models then, it is time to go the other way.

The Software Engineering Employment Dilemma

Thursday, March 13th, 2008

With as much talk (and evidence) of a slowdown in the economy, it’s surprising how many recruiters and companies I have run into recently who still have a lot of trouble finding technical staff to fill open positions at their companies. In particular, I find there are lots of companies who are desperate to fill software engineering positions for their companies. In fact, I’ve spoken to several companies who tell me that they’ve been forced–not by costs or pressure from investors–to look to offshore outsourcing because of the challenges of finding qualified software engineers. It appears the demand for technical talent is very strong.

The problem is an interesting dilemma–both for local companies, as well as for the nation’s overall competitiveness in technology–because when I talk to software engineers, it’s quite an opposite picture. Many software folks I talk to feel like the writing is on the wall, that even if there is demand for software engineers there’s a huge salary and wage pressure, and that the outlook–at least for some–is bleak. College students appear to be thinking the same thing: there’s been a huge enrollment drop in the number of undergraduate computer science majors which has been hitting engineering and computer science schools since 2000.

Why the disconnect? In part, I think it’s the realization there is intense competition, from very hard working, smart, and willing people in China, India, Czechoslovakia, Russia, Pakistan, and elsewhere who are willing to work hard and for less; and that the Friedman’s “flat” world is becoming a reality particularly in the software area. Even if there’s intense pressure here to fill positions, the truth is that there’s enormous downward wage pressure and job insecurity looming over software. This is particularly true of entry level computer science graduates, who do not have the advantage of experience which often counters those wage and job security issues.

I also think it’s a bit of the challenge inherent in technical degrees. Engineering and computer science are all very math-centric, difficult degrees to attain, and — whether due to the well documented lag of U.S. students in math, or just an unwillingness of the current generation of students to buckle down to a difficult major–students just aren’t as interested in the hard word it takes.

It’s a challenge, because without the local talent base, I think “high tech” companies will struggle to be competitive. There are no easy solutions; however, I think a focus on companies cultivating new graduates (we’ve got great raw material coming out of our local colleges and universities); a true committment to developing employees (not just window dressing); and providing a vested interest in a company’s success to engineers can do a lot. Companies absolutely have got to be willing to pay more, for their own, local talent, even if it may seem cheaper and easier to send off your core IP elsewhere. For software and other engineers, I think they need to realize there’s a lot of hungry folks just an Internet connection away who are willing to work their best to fill their jobs; the world today has no room for a mediocre, expensive software developer living in a high rent district when there’s someone with better training and skills who happens to live in the second world.