Category Archives: software

Revisiting things 6 years later

A friend of mine is in Barcelona. I remembered a great restaurant I went to and the review I wrote. While searching for the review I found something else I wrote 6 years ago;

Hype is like cancer that spreads until it obliterates all facts in their wake.

Currently the Google word processor is being hyped as the alternative to using MS Word.

About two years ago I tried to use Open Office. MS Word was going to cost me an arm and a leg and I had every incentive. A month of painful struggle and irritation at what was an inferior and ultimately unusable product as compared to MS Word, I shelled out the big bucks.

Google Docs is an impressive piece of web software, and certainly superior to wordpress’ text editor widget. However, I am pretty sure, that I prefer using MS Word if I ever have to write any document.

Nonetheless, this document was written using google doc.

My next task is to see if I can get MS Word to publish directly to my blog….

And for the record, Open Office was far more usable.

It’s 6 years later, and it’s painfully obvious that Google Docs is the alternative to MS Office products.

One of the interesting side effects of being disrupted is that you can stare at the disruption and it.

Google Doc’s was clearly a primitive version of MS Office, but it was good enough for some tasks and it was cheaper and simpler to manage than MS Office. Use Google Docs and you don’t need shared storage, license keys, a Microsoft deal etc.

What I didn’t understand 6 years ago was how computers and infrastructure were becoming free. As the cost per user declines, it becomes possible to offer a service for free for most people and charge a small number of people a small amount of money and still come out very much ahead.

Google Doc and SaaS is the destroyer of traditional IT and the vendors that support it. The process may take time, but it is a tidal wave of destruction that will leave new players in its wake.

The arrow of time moves forward and now I find myself practically never using MS Office because Google docs are free and easy to use. Sure I can’t write everything I want in them, but I don’t care.

tl;dr The latest laptop I bought does not have Office installed because I prefer to use Google Docs.

Dynamic Programming Languages are a net negative on engineering productivity

For the purposes of this discussion I will use the term application and system interchangeably to describe a piece of software with more than 300k lines of code and with more than 5 developers.

Dynamic programming languages allow you to make the Faustian bargain of ease of prototyping at the expense of maintainability. They let you prototype your system quickly without having to think too deeply about the core abstractions. In an application space where the core abstractions are hard to determine because the business is so new, this is a good thing. No point in thinking through the abstractions when you are building something radically new.

However, at some point, software becomes more permanent as the business it supports becomes more permanent. At that point in time abstractions become necessary to get engineering leverage. And then the Devil turns on you. Because the lack of abstractions early on make it hard to define them later. Worse, because of the dynamic nature of the language, it becomes hard to impose rules on the abstractions on the programmers. And as the team scales it becomes increasingly harder.

Over time you get a large piece of software for which reasoning about becomes increasingly more difficult.

And then you try and make the dynamic language more structured with more well defined abstractions and rules that the compiler and language and tools do nothing to help you with.

So the choice is always yours, pick a dynamic language and have no support when your business scales, or pick a structured language and struggled with the type-safety.

At the end of the day, you either believe types and abstractions make for productivity or you don’t. If you do, then you agree with me. If you don’t then you don’t. But 30+ years of programming language design has taught us that types do matter.

Apple has learned nothing and neither have their fan boys

Over the last 30+ years, what has become apparent is that it’s all about the applications and not about the hardware.

In the 1980’s Apple pissed away it’s lead because it never knew how to court developers the way MSFT did.

And in the cell phone market, Apple has shown how to make a market for applications, and MSFT intends to demonstrate that they know how to make money for application developers and how to treat application developers.

http://www.businessinsider.com/reality-check-most-people-dont-care-about-how-apple-treats-developers-2009-7

The good news for Apple is that the reasons this backlash exists are completely meaningless to most normal people. That doesn’t make it right. But it should not affect peoples’ purchasing habits or their enjoyment of the iPhone’s standard features.


So it goes.

20 years ago the importance of applications was lost on Apple. More importantly the importance of a rich development community, and apparently 20 years later, the lesson is still lost.

Privacy and Cell Phones

Nude pics in phone lost at McDonald’s get online

FAYETTEVILLE, Ark. – Here’s some food for thought: If you have nude photos of your wife on your cell phone, hang onto it.

Phillip Sherman of Arkansas learned that lesson after he left his phone behind at a McDonald’s restaurant and the photos ended up online. Now he and his wife, Tina, are suing the McDonald’s Corp., the franchise owner and the store manager.

The suit was filed Friday and seeks a jury trial and $3 million in damages for suffering, embarrassment and the cost of having to move to a new home.

The suit says that Phillip Sherman left the phone the Fayetteville store in July and that employees promised to secure it until he returned.

Manager Aaron Brummley declined to comment, and other company officials didn’t return messages.

 

D’oh.

With 8 GB of storage, a reasonably good camera, and a desire to photograph everything for posterity, this is going to be happening a lot more frequently than we would like.

I believe being able to remotely wipe a phone of all contents is going to be a key feature of cell phone’s going forward.

And sooner rather than later, folks are going to learn the value of encryption and strong passwords.

I wonder if we’ll see biometrics make it into phones?

Fun with Symantec

I am currently running Vista on my new shiny tablet.

And for the most part this has been a wonderful experience. I find the user-interface to be significantly more elegant. The system as a whole seems to hang better together than XP.

However, I did run into a problem with my VPN. Now it turns out, for reasons that are a complete mystery to me, that Norton 360 and my Cisco VPN will not work together. After a lot of pain and frustration I decided to call Symantec today and ask for help.

First the helpful person on the phone told me to wait a sec while she logged on to my computer. To which I responded:

How do I disable that feature?

After a lot of time on the phone, the helpful person told me to:

  1. Add a rule that allows any piece of software to use any port and any protocol to go in and out of my computer
  2. Trust every interface.

I was in a rush, and just relieved I could use my VPN and have some kind of antivirus software, so I didn’t pay too much attention to what she told me to do.

But later on this evening I thought…

Hmmm…

Now I may not be a network expert but step 1 and step 2 are the moral equivalent of:

Turn off the firewall.

Symantec rather than tell me honestly:

Dude the product you spent 79$ doesn’t actually work with this other piece of software, so go to advanced options and turn off the firewall.

The helpful helpdesk person walked me through a convoluted process to disable the software without explicitly disabling it.

Blech.

iPhone: The greatest cell phone browser ever?

Just the other day I was futzing with the Nokia N95 web browser and discovered that it had several features that were similar to the iPhone. For example the N95 has a mini-map:

s60_mini_map.gif
and the time-travel feature:
s60_time_travel.gif

I was intrigued. I checked out the relative Apple and Nokia corporate web sites and discovered that the touted features were in fact identical. So I set out to discover the source of the similarity.

Now it turns out that both Nokia and Apple in 2005 had agreed to partner on building a web browser based on Safari:

Nokia has announced that it using open source software in developing a new mobile Web browser for its Series 60 SmartPhone — and that this has been developed in cooperation with Apple.

The Series 60 browser will use the same open source components, WebCore and JavaScriptCore, that Apple uses in Safari that is based on KHTML and KJS from KDE’s “Konqueror” open source project.

Nokia said that it intends to continue its collaboration with Apple — and will actively participate in the open source community to further develop and enhance these components, contributing Nokia’s “expertise in mobility,” the company said.

And in fact Nokia’s open source project page describes exactly how the Safari web browser is the basis for their browser.

Mystery at last revealed, the reason the browsers are so similar is because they are the same browser.

I will observe that this further confirms my near universal irritation with the quality of technology journalism. The fact that the Apple hype machine implied the iPhone was unique in it’s use of Safari did not mean a few moments of fact checking would not have revealed that Apple was using someone’s else technology.

The difference between Computer Scientists and Humans

Recently a bunch of computer scientists were arguing over the correct name for an entity that non techies would use. They proposed something foograph. This was quickly discarded, but it once again demonstrated the chasm between the computer scientist and the rest of the world.
Rest of humanity:

A graph is a plot of data

Computer Scientists:

A graph G(V(G), E(G)) consists of a set vertices, denoted by V(G) and a set of Edges denoted by E(G) such that each edge contains two distinct vertices in V(G).

For proof look at this screen shot:

Computer Scients vs Humans

Software visionairies vs pragmatists

In the software industry there are two fundamentalist camps on how to deliver new technologies.

On the one side live the visionairies. They believe in the revolutionary power of their technology. They believe in their ability to impose the technology on the market place because of the trancedence of the solution. Software visionairies believe in radical technological breaks. They believe they are chosen to change the world.

On the other side is the software prgamatist. The pragmatistfocusses on the plausibility of the solution. How can the broadest set of customers be satisfied by combining the best attributes of multiple solutions. Sometimes the final outcome is less elegant, less pristine, but typically is adopted by more people. The pragmatist may be visionary in how he views the end goal, but is pragmatic in how he gets there.

The tension between the pragmatist and the visionary is that the pragmatist’s willingness to compromise may ultimately affect his ability to actually ever deliver on the vision whereas the visionairy’s unwillingness to compromise may affect his ability to get revenue.

Companies, at their core, are either visionary or pragmatic. A visionary company will have multiple disconnected architectures that have no relationship to each other but represent huge bets of money time and revenue. A company of software pragmatists has a single architecture that continues to evolve over time.

Intel is a pragmatic company. For years they viewed compatibility and evolution as core to their business. Itanium, which was visionary, had to be made compatible with the X86 architecture because of Intel’s pragmatic DNA. Itanium failed to deliver the 64 bit world Intel imagined. Instead 64 bit architectures came to the masses when another very pragmatic company, AMD, did something Intel should have done: extend the x86 architecture.

Apple is a visionary company. For years under the between-Steve-Jobs-CEO’s, Apple declined because pragmatism was rammed down a company that was at it’s heart visionary. Only when Jobs showed up and pushed visionary ideas throughout the company, did the company start to recover.

A company can succeed by being visionary and by being pragmatic. A company fails when the path it chooses is at odds with the fundamental DNA of it’s core leadeship.

Having said that both can lead to success, most big successful companies that have had long shelf lives were run by pragmatists. Companies that spent prolifigately, embarked on many different initiatives, changed architectures, operations, and systems regularly tend to have not succeed over the long haul. But that might be perception, not reality.

On a personal level, being a visionary is more fun. You get to ignore the real world because you believe the world will bend to your view of reality.  Being a pragmatist on the other hand is messier, more painful and over the long haul more lucrative. When I started out at SGI I was seduced by the visionaries. I think by this time, I’ve evolved to being a pragmatist.

Free Blogging Software.

In 1994, a friend of mine introduced me to Linux. He said that Linux was the only real way to surf the internet. That real hackers used Linux. So I tried and almost succeeded at installing the Linux 0.92 Kernel and XFree86.

The experience taught me two things.

  1. Free software has very poor documentation
  2. Free software is only as free as your time.

When I went to SGI in 1996 I avoided Linux like the plague until 1999 when I quite SGI to Network Appliance, where I once again started using Linux. In the intervening 5 years, I was actually impressed with the amount of progress that had been made in simplifying the installation and set up of Linux. So much so that I actually used the product for about 2 years, until I discovered the power of cut-and-paste in Windows.

But what does that have to do with blogging software? I wanted to do a full disclosure. I am not a free software advocate. I am an advocate of using tools that work and that are supported and that are well documented.

When Yahoo! announced that they supported a real-blogging tool, I was hooked. I could have a real blogging tool that was really supported by a real company.

Argh.

Yahoo! did an extraordinary job of making it easy to install and uninstall MoveableType and WordPress. And for that I commend them. And it was a good thing too. Because in a desperate attempt to configure my blog, I ended up destroying the configuration about half a dozen times.

Unfortunatley the ease of use of Yahoo!’s installater/uninstaller was not matched by the ease of use of WordPress and MoveableType.

WordPress and MoveableType are two separate blogging software packages that are supported in two distinct ways. WordPress is clearly a community supported system, involving hundred of volunteers who incrementally improve the product. MoveableType is backed by a real company that has real dollars that is trying to turn a profit.

And it shows.

The commercial company that supports MoveableType has a significantly more robust and easy to use management interface for managing your entire blogging infrastructure. Their target market is not a single blogger but a collection of blogs at a site. MoveableType’s documentation is superior and complete. Furthermore, MoveableType has a lot of features that make integration with plugins and extensions a lot simpler. Again an indication of a company that is trying to create an ecosystem around it’s product.

The community supported product WordPress, on the other hand, clearly feels like the kind of a tool a lone blogger at a web-site would use/maintain. It’s infrastructure is not designed to natively handle multiple blogs. However, because it’s targetted at the individual, the customization interfaces are a lot simpler to get at. Individuals want to make their blogs look unique. That’s why the install WordPress. If they wanted a generic blog they could just use any one of a thousand blog hosting sites.

WordPress unlike MoveableType has incomplete documentation, a difficult to use plugin/style system. Again designed around the assumption that the management of these things is done by one person and optimization of installation is not necessary since this is an infrequent event.

What’s interesting is that MoveableType has more plugins, but WordPress has more user-defined templates. In fact WordPress’ template scheme is substantially better designed/architected than the MoveableType. In WordPress each blog has a set of templates/stylesheets that can be individually modified. MoveableType replies on generated templates/stylesheets and providing true per-blog customization is significant chore.

Why did I choose WordPress? Because, in the end, I was not setting up 10 blogs but one blog, mine. As a result the robust set of interfaces of MoveableType were a lot less interesting as compared to the hundreds of blog templates I could study and steal to build my blog.

As for the documentation? WordPress is a community sponsored project. So that’s improving very quickly. In fact between the time I started this exercise and today, WordPress has added enough new doc’s to call it a draw.

And why the frustration? Because I tried to use MoveableType to customize my one blog, and only after fighting for 5 days, did I realize I was using the wrong tool. Once I moved to WordPress and learned the mechanics of php, cascading style sheets and html, it was a breeze to configure.