Posts

Showing posts with the label Development

Stealing ideas

Image
As I continue to go through my old blog drafts, this is another one from 2010 where I took down some rough notes and never quite put something together. At the time, there was significant press (and a movie ) about how Mark Zuckerberg has "stolen" the idea for Facebook from the  Winklevoss twins . I would argue that there was very little original or truly innovative ideas that went into the core functionality of Facebook. On the other hand, it was pretty innovative to build up a huge database of his classmates' information without their permission...  ☺ --- I've read  Atlas Shrugged cover to cover, and I totally get the theme and the very real problems it discusses. What I don't understand is how anyone thinks that modern intellectual property laws provide any type of solution. If anything, they tend to make matters worse, since people that come up with the most profitable ideas today are usually bound by agreements that automatically assign ...

When did software go off the rails?

Image
As CTO of  The Rumie Initiative , I spend a decent amount of time trying to find tech solutions that offer "the most for the least" in terms of computing power vs. cost. There is one thing that has baffled me in my long career in technology. Hardware capability increases exponentially , but software somehow just bloats up , using the power and space, without providing much more functionality or value. Computer specs from the past 30 years Year Example Cost Speed (MHz) RAM (MB) Storage (MB) 1977 TRS-80 $599.95 2 0.004 0.6 1981 IBM PC $3,000.00 5 0.063 0.2 1982 Commodore 64 $595.00 1 0.063 0.2 1985 Amiga 1000 $1,295.00 7 0.250 0.9 1990 Amiga 3000 $3,000.00 16 2.000 40.0 1992 Amiga 4000 $3,500.00 25 4.000 120.0 1995 PC Clone $3,000.00 33 8.000 1000.0 2000 PC Clone $2,500.00 600 256.000 40960.0 2005 PC Clone $2,500.00 2560 512.000 256000.0 2010 PC Clone $1,500.00 3072 8192.000 512000.0 2015 PC Clone $1,500.00 3584 8192.000 1048576.0 2017 PC Clone $1,500....

What is Kanban and why is it important?

Image
Kanban, or かんばん in Japanese literally means "signboard". The term comes from the manufacturing world. Implemented first in 1953, it was the precursor to the JIT (just-in-time) manufacturing process used throughout the world today. In software development, Kanban has slowly been replacing Scrum as the Agile methodology of choice since about 2010. The core of Kanban for software development is the Kanban board. This is simply a tool that makes the project status visible to all project members and stakeholders. The simplest Kanban board has three columns: The To Do column is a queue. Doing is a WIP (work in progress) column. And Done is a final state. Here is a much more complicated example with 8 columns and many sub-columns: On both charts, the principles are the same: Work moves from left to right Columns can represent queues of work to do , or work that is in progress There can be limits on the number of cards in each column Work is treated lik...

Saving a bureaucratic software project

Image
A recently published article, " The Secret Startup That Saved the Worst Website in America " details some of the problems with the  Healthcare.gov launch fiasco that "so bad it nearly broke the Affordable Care Act." It also outlines how a small team rewrote much of the software "working as a startup within the government and replacing contractor-made apps with ones costing one-fiftieth of the price ." A key point is something I've written about before, namely that one good programmer equals an infinite number of mediocre ones . A handful of bright , motivated programmers can easily beat a massive army of corporate drones , middle managers and bureaucrats. This is related to Brooks' law , which states that " adding manpower to a late software project makes it later. " Or in other words, " nine women can't make a baby in one month. " "The government’s method of running software turned on a sequential des...

Feature suggestion for Facebook

Image
A million dollars isn't cool , but do you know what would be cool? If you could target posts to your friends the same way you with Facebook ads. When you " boost your post " from a Facebook Page, you can target your audience by Location, Age, Gender, and Interests. The interface looks like this: I think it would be really interesting if you do something similar when you created a personal post.

Software bugs: Focus on what you can control

Image
Developing software is all about writing code and making changes. Unfortunately, sometimes: 1) the changes affect/break other things in unforeseeable ways 2) the changes are misunderstood and implemented incorrectly 3) the programmer just plain makes a mistake Nearly all software bugs are a result of one of these 3 causes. Class 1) bugs are nearly unpreventable and are a function of the software's complexity. This increases with every new feature and custom branch. Class 2) bugs are 100% preventable. I spend a lot of my time on both ends (clients and developers) trying to clarify and organize communication. Class 3) bugs are sometimes preventable. This is where we do analysis and prevention, aiming not make the same (or similar) mistake twice. I work on preventing Class 2) bugs by improving communication and tracking via PMRobot .  When a Class 3) mistake is made, we analyze why and determine whether there is a cost effective way to preven...

Copycat, copycat!

Image
As a technologist, the recent Apple vs. Samsung lawsuit  is extremely concerning . I was hoping all of this software patent nonsense would go away, but Apple just proved that the new business model is more about litigation than innovation . As a company that essentially  "stole" the entire desktop GUI and mouse concept from Xerox, you have to wonder how they arrived here. Ironically, this concept was subsequently "re-stolen" by Microsoft to create Windows -- one of the most ubiquitous, profitable pieces of software ever. Naturally, Apple  sued Microsoft in 1988 , a long and bitter lawsuit that wasn't resolved until 1994, when Microsoft won . In the midst of this, Apple was actually sued by Xerox , a suit that was dismissed. In the Apple vs. Microsoft ruling, the court stated: "Apple cannot get patent-like protection for the idea of a graphical user interface, or the idea of a desktop metaphor." They obviously took this to heart, ...

h5note: HTML5 Notepad

Image
For the longest time, I've been searching for a quick, easy way to take quick meeting notes. I used to use a text editor called SciTE, the same editor I use for quick code editing, but I find managing files in a file system to be a real pain. When I had an iPad for a while, I liked the default Notes application, but hated that there was no cloud storage or synchronization. (No, the crappy Gmail sync doesn't count) Then I heard about EverNote . I thought that was the answer to my prayers, but unfortunately those guys decided  to add every conceivable feature in the universe and have ended up with a bloated mess that takes an hour and a half to load. There's a bunch of others I've tried too, like UberNote , Springpad , and the Diigo mishmash of apps. But nothing was small enough, or simple enough for my taste. So I did what any good developer does. I created a "learning" project to scratch my own itch. I used technology I've discussed at the...

BuyMyStuff.com 1-year milestone and competition

Image
Lots of milestones lately. Almost missed this one! It's been about a year since I unveiled my georeferenced online classified site, BuyMyStuff.com . It's funny. The first thing people always say to me when I explain the site is, "Looks nice, but doesn't Craigslist already own that space?" Despite what some may think, I did perform a bit of research on my competition prior to launch -- although not a whole lot :) What I found was actually quite interesting. Although Craigslist dominates online classifieds in the United States, a site called Kijiji has most of the Canadian market. Since then, I've learned that the international classifieds site market is extremely fragmented . It's difficult to get exact numbers, but using Google and Compete, you can get a rough idea of market leaders. For example, here's the top classifieds sites in Australia:  http://siteanalytics.compete.com/tradingpost.com.au+gumtree.com.au+ozfreeonline.com/ After lo...

Most Popular Web Languages for 2010

Image
Back in 2007, I wrote about the most popular web languages and frameworks . It seemed about time to do a quick update. Here are the current standings in my super non-scientific Google popularity contest: PHP: 7.5 billion results (154% increase ) ASP.NET: 158 million results (84% increase ) Ruby: 81.6 million results (19% decrease ) Python: 47.6 million results (not measured last time) As for frameworks: Symfony: 12.9 million results (180% increase ) CakePHP: 8.8 million results (83% increase ) Ruby on Rails: 7.8 million results (44% increase ) I'd like to add a few more numbers, however. The trend is moving towards browser-based programming using Javascript, so have a look at these interesting searches: Javascript: 561 million results YUI: 18.4 million results jQuery: 16.8 million results HTML5: 9.1 million results So based on these numbers, one might conclude: PHP and ASP.NET are going strong Ruby may have lost its luster, and Python is still a bi...

Spring Cleaning and Garage Sales -- Online

Image
Ahh, the fresh smell of spring.  Time to get rid of the old and bring in the new. Inevitably when you start spring cleaning , you end up with a bunch of things you've acquired over the years that you don't really need anymore. When I found myself with a large number of things to sell last year, I did my best advertising everything on Kijiji . I sold most things in the end, but it was a real pain updating and managing the individual ads, marking things off after they were sold. It was also a bit annoying that the site was plastered in multiple flashing banner ads and sponsored links trickily designed to look like regular listings. So I did what any self-respecting computer geek would do, and built my own solution to the problem -- BuyMyStuff.com . To be clear, it is not the best place to sell a car.  It is also not the place to look for a home or apartment.  Don't go there expecting to find personal ads or job listings, either. It is not at all ...

How many mediocre programmers does it take to...

Image
How many mediocre programmers does it take to replace a good programmer ? The answer is: Trick question. No amount of mediocre programmers will ever replace a good one. Let's say your good programmer has a "productivity factor" of 1.0 . We'll take this to mean that he or she gets 1 "unit" of productive, production-ready software shipped per day. The reality is that even an average programmer might not have a positive productivity factor. If you look at their productivity over the long term, it might actually be something like -0.1 or lower, meaning that overall they cause more work for others than they actually complete themselves. They basically just slow the good ones down . Furthermore, every programmer you add to a project adds overhead -- both in communication and complexity of the code. So adding two mediocre programmers is even worse than adding just one. Software development is an extremely complex discipline that requires above-average p...

New site: buymystuff.com

Image
Last night I gave the first public demo of my new site -- http://buymystuff.com What does it do? It's basically like having an online garage sale that people can browse 24x7. "But Jason...", you ask, "How is this any different than than Craigslist , Kijiji , or newpaper classifieds ?" I'm glad you asked! Those services are generally set up to let you post one item in one category for a short duration. For instance, if you're selling a car or a house -- buymystuff.com is not the best place. Instead, this site is designed to let you go through all that miscellaneous stuff in your closet, garage or basement that you want to sell but haven't bothered because it's too much hassle. Or, if you happen to be moving, and have a whole ton of stuff you want to get rid of at once, this is the perfect way. List everything once on buymystuff.com, then let it do all the work for you. Perhaps a few months from now, someone on the other side of town will be l...

New Zealand and running a virtual company

Image
It's official! All of the paperwork for a one-year working holiday trip to New Zealand is now complete. Melissa and I will be leaving September 1st, and returning August 2010. I'll be continuing to operate my web development company -- Syllogistic Software Inc. -- while I'm there. We have invested a huge amount of time and effort into "virtualizing" the company. With clients in Toronto, London (Ontario), Vancouver, and Waterloo, plus employees in Kitchener, Montreal, and elsewhere, communication is paramount . Our infrastructure spans the Internet, including a full virtual PBX phone system with multiple extensions and IVR via Trixbox . All company email, shared calendars, and documents are hosted on Google Apps . Source code is managed by Subversion . The heart and soul of the operation is handled by an internal application we wrote, called simply the "Project Management System" ( Update 2011-07-13: This is now called PMRobot ). This allow...

Great to see that people are doing!

I have been in touch with lots of people regarding my previous blog posting, and I'm very impressed to see that a lot of people are indeed aware of the problem, and actively working toward solutions.  In fact, Michael Geist , who has been speaking and writing about this for much longer than I have, recently spoke in front of a Senate committee and explained things in very simple, precise manner.  Here is a great excerpt (emphasis added by me): "The truth is that there are ways, if we had unlocked devices and had a more open space, we would encourage this innovation without the gatekeepers that we see. Fundamentally, that is what we see taking place here. Certain gatekeepers exist in the chain; sometimes it is the device manufacturers; often — particularly in Canada — it is the carrier themselves who set limitations on what can come into the marketplace, precisely because it is to their competitive advantage to do so. We do not have enough competition to counteract that at the...

Stop talking and start doing!

Image
People love to talk.  It's in our nature.  We're social creatures. At some point, however, if you want to get anything done, you have to stop talking and start doing. There is a big conference in Stratford this week called " Canada 3.0 ."  One of the major sponsors apparently has something to do with the recent government spend of $10 million plus to "stimulate" things through creation of some sort of " Centre of Excellence for Commercialization and Research (CECR) ." The stated purpose is to "create jobs, improve the quality of life of all Canadians and strengthen the economy for future generations." This is all fine and good.  Every project needs a high-level/brainstorming phase.  The problem is that there doesn't seem to be many (any?) specific goals about how this is all going to work. You see, there are some severe, systematic problems in Canada that tend to destroy innovation in the early stages.  Let's have a look at some...

Software Development: When Change is Bad

As software moves into maturity, it becomes a delicate art to add features and fix bugs without screwing up stuff that already works. I've worked on three 10+ year-old, massively-sized projects (CorelDRAW, Microsoft Access, and ERDAS Imagine) and let me tell you -- the older the code base, the tougher it gets. In very mature projects, maintainability starts to become more important than optimization, and the prevention of introducing new bugs can trump fixing old ones.  You’ll even see libraries where they decide to keep old bugs in place , since consumers up the chain rely on the buggy behavior. If you’re a programmer, it's important that before you change any function that is used elsewhere in the system (a "core" function), you check each and every place it is called and understand the implications of your change.  If there's any doubt, you need to either step through, or ask someone else who is more familiar with that code. A safer alternative is to write a n...

Management vs. Leadership

Robert X. Cringely wrote a nice little post about Leadership recently. Everybody has lots to say on this topic -- most of which is meaningless blubber -- but I was particularly impressed with these little gems (emphasis added): "Management is telling people what to do, which is a vital part of any industrial economy. Leadership is figuring out what ought to be done then getting people to do it , which is very different. It is a vital part of any successful post-industrial economy, too, but most managers don't know that. ... In contrast to the military, most businesses do a lot less explaining and pondering and a lot more laying down edicts. That's management, which works fine on an assembly line, but not at all well building a big software application or winning a war. " You can read the full article here: http://www.pbs.org/cringely/pulpit/2008/pulpit_20080917_005420.html

Reducing the Risk of Fixed-Price Projects

Scott Ambler has posted a follow-up on his previous article about fixed price software projects at http://www.ddj.com/architect/209602001. As a quick summary, he gives five recommendations: Give a ranged estimate (+/- a certain percentage or amount) Do some upfront agile modeling (using people who will actually do the work) If the customer still insists on a "precise" estimate, pad the number as much as possible to account for the risks Fix the price, flex the scope (anything added requires removing something of equal effort) Stage the funding, based on real deliverables (working software) More to come on this topic...

Fixed-Price Software Development

I had been putting together some notes to write a short article about the difficulties with fixed-price software development, but Scott Ambler beat me to it. I just read his excellent piece, entitled " Is Fixed-Price Software Development Unethical? " It's sure to spark some controversy. As he mentions, both academia and industry have been trying to figure out how to do this for decades now, and haven't had much success. The important thing to note is that he is talking about projects where the scope, schedule and cost are all determined upfront. To the inexperienced, this seems completely reasonable, but anyone who's done software development for long enough (10+ years) understands the problems with this approach: It is impossible to define a 100% precise scope upfront. The scope always changes. Frequently. Even with a 100% precise, fixed scope, your estimate will likely only have order of magnitude accuracy. Starting with a good estimate, the resou...