Blog posts tagged "software"

Novels, Yes And Improv Comedy

May 25th, 2013

So, here’s the insight I’m currently tossing around in my head: The problem is that software isn’t built; it’s written. The final product is not like the Bay Bridge. It’s like a novel. – Don’t build. Compose. – Kurt Leafstrand

No, that’s not right.

As appealing as it is. You see novels, modern novels, are a particularly peculiar form of creativity primarily characterized by being the point of view and output of a single individual. Most software, and most bridges, aren’t like that.

Maybe you’re writing novels, but most of us are doing improv theater.

“They can even stop when they have a map that is just good enough.”

January 28th, 2012

There’s a hilarious answer to the question Why are software development task estimations regularly off by a factor of 2-3? floating around now. Hilarious, deeply knowing, but not terrible accurate or actionable.

But buried in the comments was this gem from Neil K, which I’m going to quote, in it’s entirety, for truth (Neil has, after all, seen more sausage getting made at more of the places whose tools you use then nearly anyone):

This is really good, but if I can offer a suggestion — the analogy could be even more apt with a slight shift. Currently it only shows how people go wrong when they develop software in a naive way — by starting at the beginning, and coding each step to final quality, in order. The story, as written now, makes it look like writing software is just an impossible slog and nobody can do it.

The truth is, software is research. It’s a matter of discovering the solution, not plodding through it. This is implicit in your story, because they keep encountering unexpected problems. But let’s make it explicit.

Imagine, instead, that our intrepid pair is charged with mapping the coastline of California from SF to LA. Mapping is more like software development because it involves discovery, and getting things right at multiple “points”.

The naive mappers start off from SF and it all fails exactly as you outline. A more clever pair of mappers instead decide to hire a boat, and map just a few points on the coastline precisely, just to get a rough estimate, and to survey the coastline for the tricky places. Then they know where to apply their efforts — an intern can be hired to pace out some of the easy bits, and a team of well-equipped hikers can be brought in to handle the hard parts.

They can even stop when they have a map that is just good enough.

Counting Things, and RPEs

January 22nd, 2010

306 Million And Counting

On an unrelated email thread this morning I got to thinking about how I quantify the Flickr engineering team, and counting things in general.

Depending on how I’m counting I tend to place the Flickr engineering team at ~20 people. In that group I include everyone on our team who writes code (including HTML, CSS, Javascript, PHP, Java, Perl, Python, C, C++, XUL, or Objective-C). Additionally I include our operations team (aka sysadmins aka “service engineering”), our “tech support” team (technical customer care/qa/researchers), and various folks with “manager” in their title.

(a more traditional count would probably put the Flickr engineering team at 5 application/backend engineers, 4 front-end engineers, and 4 technical manager types.)

Which got me thinking about a new metric, the RPE or “roughly per engineer”. Mostly it’s a useful thought tool (for me) to think about what sorts of things scale up with economies of scale, and what doesn’t. Here are a couple of quick RPE metrics I pulled tonight.

Photo from siliconmonkey

Features for OSCALv2

July 27th, 2006
  • browse by location, location centric info
  • author clouds (done!), with pictures!
  • ajaxy add (done!), expand
  • popular events, by slot
  • my schedule grid layout for visual conflict resolution
  • mobile (done!)
  • comments
  • better social discovery, recently updated schedules, friends, etc
  • add new talk, add new location
  • better ics
  • get it in a pulic svn repository

Used OSCAL, got feedback? Lert us know

I’d also hope that getting it out a few days before the conference started would allow people to markup, and comment talks to allow better fits between talks and attendees, “I saw this talk at Etech, it rocks!”, “beginnner-oriented”, “microsoft shill”. You know.

Tagged: Uncategorized , , , ,

Fighting with Gallery

May 13th, 2002

Install PHP CGI, or Turning Mole Hills into Mountains

I’ve always used PHP compiled into Apache, so PHP CGI was new to me. And for the life of me, I couldn’t figure out how the hell to begin. I searched the documentation, typed ./configure --help dozens of time, finally opening up the configure script and going through it line by line. I simply could not find a parameter, argument, option, environement variable, or config file, that said, “Build PHP as a CGI”. Which brings us to the problem of, “How does one document a negative?”

PHP apparently expects to be compiled as a CGI. The fact that no one does this, hasn’t changed that basic assumption. So just compile the damn thing sans --with-apache, and you’ve got a PHP CGI executable ready to go. Hmmm, we’re already 30 minutes over budget for installing Gallery, and we haven’t touched it.

Compiling, or Mop the Augean Stables

Well we’ve got configure in the bag, and the freshly downloaded 4.2.0 is happily compiling, but wait! Now make is having problems. Something about EX_OK being used before its defined. Screw it! We’ll switch back to 4.1.1 which is kicking around the src directory, and try to build that instead. Ok that worked.

Putter around trying to figure out how to enable PHP-CGI.

  • #!/usr/local/bin/php? No that doesn’t work.
  • AddHandler cgi-script .php? Hmmm, nothing.
  • AddHandler application/cgi-php, Action applicaton/cgi-php /usr/local/bin/php? 404, /usr/local/bin/php/~kellan/test.php not found.
Eventually settled on
AddHandler application/cgi-php Action applicaton/cgi-php /cgi-bin/php.cgi

If that was somewhere in the PHP docs (or in the Programming PHP book which I grabbed from Safari, I couldn’t find it.

Finally, we’re getting somewhere! Way, way, way past our 20 minutes of alloted time, but at this point, its Gallery or me.

And Gallery is still winning. A 505, and a quick check to errorlog, and for some reason PHP is segfaulting. I don’t why, something about the alignment of the moons. I futz with it, and decided that maybe I need to go back and check out 4.2.0.

Morefutzing, some cursing, a thrown pillow or two, and we’ve got the lastest version of libc6-dev, and the sysexits.h contained therein, and one brand spanking new php.cgi, version 4.2.0.

Debugging Gallery’s config wizard, or The Evil that is PHP.

All of Gallery’s wonderful configuration wizards are great…until they break. Kind of like Windows, but at least I had the source. So lets look behind the curtain….

The first time I saw it, I was blown away by Gallery’s wizard. This time I realized that PHP never stops being PHP, maybe it seems elegant, simple and intuitive, but under the covers its still an ugly hack.

  • Gallery was checking my .htaccess file by trying to fiddle a php.ini value, to prepend a file containing a global variable. Ingenous! I didn’t think you could test the .htaccess stuff without deep hooks into Apache’s core. I went looking for some mechanism for querying Apache, or parsing config files, or something. It took me forever until I realized that that peculiar little autoprependfile phpvalueok.php was performing the magic.

    But what if you’re running in CGI mode, and phpvalue isn’t supported? (if you’re me, you comment out that check, and move on)

  • Gallery was checking to see if modrewrite was working, very logically, by rewriting a url, and seeing if it worked. In and of itself, not a bad idea. (now that we had determined it didn’t have a magic way to ask Apache about this stuff)

    But when Gallery started turning up false negatives, claiming my modrewrite didn’t work I was stumped. Much, much, too much later, and after much pain, and gnashing of teeth, I realised that Gallery was testing for the existence of a variable “initmodrewrite” that was never set, and therefore must be expecting PHP to magic it into existence. (and here we note the difference between C which refused to compile without knowing what EXOK was, and PHP who sailed along blindly without a care in the world)

    Well it is a reasonable assumption in PHP for variables to magically appear, and a trip to php.ini, to turn on registerglobals; an option that magicks into existence variables containing anything passed in the query string.(say if you’re script uses modrewrite to tack initmodrewrite=1 on to the end of your url)

    • Gallery’s FAQ does actually have the question, “The setup page tells me that modrewrite is not installed. Since modrewrite is optional, how do I configure this option?” But the answer is less then helpful.
    • A Google search show that the term registerglobals is only used once on the Gallery website, in the notes for the pre-release version of Gallery 1.3

Tagged: Uncategorized , ,