A List Apart: Articles: Apps vs. the Web

Another viable option for mobile development is to use a framework like Titanium or Phonegap to quickly build out an app using Javascript.  I’ve been looking at Titanium a lot lately and digging into its API.  Seems like you can build anything short of a game using its API and there’s a real buzz when you compile the same (or nearly the same) codebase to run on both Android and iPhone devices.

With this article, I’d like to share my experiences with both mobile web and software development to guide your future developments on the iPhone platform.

A List Apart: Articles: Apps vs. the Web

Linux Package management overview

I have to confess that delegating software installation to Debian and Ubuntu’s apt command is what finally converted me to Linux.  I stillhave a bias against .rpms and building from source based on disastrous experiences hunting down obscure .rpms or figuring out why make would not work.  If you’re trying out Ubuntu or another Linux distribution, you should stop and read download squad’s Package management 101

Package management refers to the way your distribution installs and configures (as well as manages and removes) software applications and libraries on your system. When Windows installs an .exe (which is the closest thing in Windows to a package) it usually places it in a single specific place within a directory. Linux installs across a few directories, leaving many new Linux users scratching their heads as to where their .rpm actually went. Most distributions install the executables in /usr/bin, and the libraries in /usr/lib. You may notice related files in /usr/share or /etc.

In short, you’ll want to let your package manager install and upgrade new software for you.  You don’t have to take my word for it, Thank You, Aptitude!

I’ve long believed that the easiest way to install software on a modern operating system is through a well-designed package manager connected to one or more carefully-maintained package repositories.

$5 Million for a CMS?

Jamesr on Column Two sets the bar pretty high when he observes that it costs $5 million to write a CMS. On the face of it, I can’t argue with it.  The temptation with writing one from scratch is that it so easy, and tempting, to have something functional with a pretty minimal investment (say less than $100k, heck, one marathon coding weekend of a halfway talented/dangerous programmer.  If the $5 million is to write an a CMS that "just works right" CMS, I wonder what the price tage for a CMS that handles the majority of the features actually needed by most  web sites.  I expect the Pareto principle to be in full effect, in that 20% of the features will account for 80% of the cost.  Given that rough estimate, you can write a usable CMS for $1 million invested, or can you?  I haven’t convinced myself but now since its written on the Interwebs, it must be true.

This is real money (cash) that needs to be found and spent by vendors, to produce an acceptably good mid-market solution. This isn’t a all-singing-all-dancing product we’re talking about here, but rather a CMS that just "works right", and meets the expectations of most purchasers.

What are the difficult 20% features?  Workflow, Full Internationalization/Localization of content.  ContentHere has a full list of the hard stuff.

Open source helps Nokia cut development costs

Nokia’s N770 and N800 tablet PCs were developed with a conscious decision to use as much open source software as feasible.  This decision had tremendous benefits in cost savings, code quality, flexibilty, and zero licensing costs.  You can read the white paper    HT: Stephesblog.

If we compare the code from open source to the code developed by us, our conclusion is that open source is of better quality. We have more bugs and problems in the Nokia developed code. This is only natural because the majority of the Nokia code is build from scratch and is thus very young. Open source code, on the other hand, has mostly been used by others already. They have fixed the most severe errors already before we started to use the code.

Microsoft bullies the Danes

Once again, there’s something rotten in Denmark. From Gates vs Denmark on Groklaw, via BoingBoing it seems Bill Gates is close down 800 IT Jobs in Denmark if the country doesn’t support the software patents directive (what a star trek-y title by the way). Let’s hope Denmark’s politicians don’t cave in to this threat.

The founder of the world’s largest software company, Bill Gates, is now ready to shut down Navision in Denmark and move around 800 developers behind Denmarks biggest software success to the US.

Assessing software project risk.

ACM today released a survey of IT/software development projects to identify the most common causes of failure and developed a tool to assess what the risk of failure for a given project is.

As part of a multiyear research program on software project risk, we asked MIS directors in 60 organizations to make 720 separate project evaluations (see “How the Study was Conducted”). The purpose of the study was to understand the relative importance they ascribed to the software project risk drivers described earlier. The results revealed that the most critical risk driver was the choice of methodology—a result that we were not expecting—followed by customer involvement, use of formal project management practices, similarity to previous projects, project complexity, and requirements volatility (see Figure 1).

It’s interesting to note that of the six key drivers of failure, complexity ranks #5. While the most important driver was “choice of methodology”, which means that one approach is not always going to work across different engagements. For a small projects, a more iterative methodology might be a better fit but you should keep in mind the budgeting and staffing implications that would result.

For example, a methodology such as rapid prototyping relies on iteration to uncover novel or poorly understood user needs. In contrast, a structured methodology emphasizes structure over iteration and might be more useful for managing larger projects where requirements are better understood.”

Finally, #6 emphasizes that getting requirements right is both difficult and important. All software projects struggle with this to one extent or another.

“Building a system on volatile requirements is like attempting to build a structure on a foundation of sand. Tweaking an unfinished system to match shifting requirements requires additional programming effort and expensive reworking. Even if requirements are correctly elicited, there is no guarantee that they will remain unchanged over the project trajectory. Both changing business environments and fickle customers can contribute to requirements volatility. A certain level of requirements volatility has come to be expected in software projects, which may explain why this factor emerged with the lowest weighting among the six drivers of project risk in our study.”

I’m not sure of the value of their 1 minute risk assessment tool to produce a number that “predicts” project risk score. (). Different folks could score the factors differently but it could be a valuable way to evaluate project performance along the way (identify areas of concern for managers and developers to focus on) and at the end of a project.

Essential software for your home linux lan

I’ve just finished upgrading my sister’s pc, which we use to share a dial-up connection, to Mandrake 9.1. ( Yes-dialup, I’m 2 miles from AOL’s headquarters and the closest to broadband that I can get is wireless or satellite.) I can’t say that the install was a piece of cake – the installer crashed on me a couple times until I ran it in advanced mode, and although I did an upgrade first I had to go back and do a complete install for the distribution. Upgrade pains aside, the KDE 3.1 desktop looks very nice and polished, and the system feels more resposive.

I wanted to highlight two software packages that anyone using NAT over linux should be running:

  • First, if you are running Mandrake stay away from DrakConnect’s Internet Connection Sharing Wizard and uninstall the Shorewall firewall package. Instead go over and grab Firestarter. After spending hours trying to get drakconnect to share our connection I gave up. Firestarter had our connection shared and secured in under 5 minutes thanks to its setup wizard.
  • Second, you should be running the Squid Web Proxy Cache with this ad-zapping perl script. Thanks to it, our connection is used much more efficiently, keeping cached copies pages and images locally while avoiding most banner ads altogether

While I can’t claim our connection feels like a DSL connection, it definitely has more responsiveness to it and as I watch ms-rpc scans being blocked I can feel a bit more secure.