pajarita

For many years Dr.Rosenblueth and I had shared the conviction that the most fruitful areas for the growth of the sciences were those which had been neglected as a no-man's land between the various established fields. Since Leibniz, there has perhaps been no man who has had a full command of all the intellectual activity of his day. Since that time, science has been increasingly the task of specialists, in fields which show a tendency to grow progressively narrower.

- Norbert Wiener, Cybernetics: or Control and Communication in the Animal and the Machine, 1948

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /var/www/html/www.flickr.com/include/init_config.gne on line 359

flickr.com, circa 21:49pm

Hear that? It's the sound of someone writing code directly on a production box, and yet someone else forgetting to edit the php.ini to suppress errors ;)

The mantra of the well-informed UK geek seems to be, "The world isn't like me -- technology is central to my life, but that's not so for the rest of the world, and it won't be any time soon."

By contrast, the mantra of the San Francisco geek is more like, "Technology kicks so much fucking ass I am about to explode. Soon everyone will realize this."

- Cory Doctorow, commenting on Tom Coates' insightful discussion of Paul Graham's xTech 2006 talk, How American Are Startups?.

users_users_users.gif

'peopleready' is Microsoft's latest marketing campaign. Balmer wanted to call it 'users users users' but the younger heads wouldn't let him. They blushed and left the room. Once at their desks they booted up their Ubuntu/OS X dual boot Powerbooks, the ones with the DELL stickers to block the glow, and got on with some real work.

Isn't it funny how Apple's HCI guidelines have over the years become a landmark piece of technical literature whilst Microsoft's guidelines (pictured above) don't seem to get referenced at all?

Microsoft have some good products, but people-ready (or user-centric) is not a term you can use to describe their software design practices. Feature-centric is a more apt adjective.

To paraphrase Spolsky (once a program manager on the Excel project, one of MS' most notable success stories) - empathy is the hardest thing to teach a programmer. The MSFT/AAPL divide, in terms of software engineering attitudes, is an instantiation of this fact on a massive scale.

Try this for over-engineering - Windows Vista ships in 5 editions, including 'Business', 'Enterprise' and 'Ultimate'. They should add a 'Leviathan' edition to round it off.

Japanese for continuous and incremental improvement, a business philosophy about eliminating waste in working practices.

Kaizen is a daily activity whose purpose goes beyond improvement. It is also a process that when done correctly humanizes the workplace, eliminates hard work (both mental and physical), teaches people how to do rapid experiments using the scientific method, and how to learn to see and eliminate waste in business processes.

- Wikipedia

The word 'tensegrity' is an invention: a contraction of 'tensional integrity.' Tensegrity describes a structural-relationship principle in which structural shape is guarenteed by the finitely closed, comprehensively continuous, tensional behaviors of the system and not by the discontinuous and exclusively local compressional member behaviors. Tensegrity provides the ability to yield increasingly without ultimately breaking or coming asunder

- Buckminster Fuller, Tensegrity

If i'm going to buy a technology related product, then i'd prefer to buy it from a domain geek - someone with an almost obsessive knowledge of the technical details of said product. This works for me because i'm a particular kind of customer - one with an interest in tech. Generally, people like me want a domain geek because:

  • A domain geek does not want to sell you whatever 'specials' distributors are pushing on their franchised store in any particular month. He's in this for life.
  • A domain geek will call BS on anything that's technically mediocre.
  • A domain geek will teach you something about said domain.
  • A domain geek will give you an enthusiasts approach (cable? Here's a reel, cut it yourself!)
  • A domain geek will be keen for you to test out the technology in question before buying. After all, he would never buy anything without pulling it apart first.

Case in point: In search of a speaker system for my place I walked into a sevenoaks nearby and was met by an audiophile named Rob, with thick glasses and unhealthy looking skin.

The first thing Rob said was, "no we don't do computer audio, we do sound fields. You need to go somewhere else". You need to go somewhere else. There isn't a single better line in retail for boosting consumer confidence in you. He then proceeded to draw me two schematics on a piece of paper with an HB pencil. The first explained crossover (a simple concept, but i'm a bit of a novice when it comes to sound engineering). The second was a conceptual architecture sketch for a proposed system, based on 10 minutes requirements capture. During that time he had extracted a lot from me without my conscious knowledge; my usage patterns, the dimensions of the room, the issues i have with my current system, my budget and a number of other bits.

This weekend Rob set up the proposed system in their basement and i dropped by with a CD of anything i could think of that would call BS on a mediocre system:

Picture 106.jpg

We blasted these through it and it sounded ace. I walked out of there with some B&W components and an amp. Victory to the domain geek.

Public opinions - private indolence

- Friedrisch Nietzsche

The cognitive syle characteristics of the standard default PP presentation: foreshortening of the evidence and thought, low spatial resolution, a deeply hierarchical single-path structure as the model for organising every type of content, breaking up of the narrative and data into slides and minimal fragments, rapid temporal sequencing of thin information rather than focused spatial analysis, conspicuous decoration and Phluff, a preoccupation with format not content, and an attitude of commercialism that turns everything into a sales pitch.

- Edward Tufte

A Wired article entitled Man VS Machines examines the nature of newsreaders right now (Digg, Newsvine et al get a mention) and loosely categorises them into those that favour (AI) algorithms and those that leverage their user base to create semantic links between data. This is a false dichotomy, since both approaches should complement each other - how? Leave content classification & creation (data architectures) to the user, and the rest to the machines. The challenge lies in hybrid approaches.

From a technical perspective, the challenge equates to 'how to use the user base'.

The conflict the article alludes to is the same one evinced in Last FM Vs Pandora and can also be articulated as the AI VS AAI (Artificial Artificial Intelligence - a phrase coined by Rael from O'Reilly) debate. The supposed battle-ground is social software. I'd like to reinforce that the approaches are not mutually exclusive and that the future of social software rests in hybrid approaches, where human agents can consult non-human agents for search, data analysis (mining, visualization) and forecasting; all of which will require the breed of algorithms that are being thrown down the 'machine' end of the debate. Heavyweight AI (like highly refined NLP) is a waste of time at this stage though. It's an academic black hole.

A side note: In my years of analytics and data mining, a recurring theme is that better algorithms are nice but better data is nicer.

- Steve Krause, in Last.fm Vs Pandora.

First off - if i was looking to hire, the answer would be

No. A brain and an attitude are the only pre-requisites.

About 18 months ago i decided to apply for an MSc in Computing at Imperial College, London. It's the best thing i've done in my short career programming.

I'd fought against the urge for post-graduate education for a couple of years because, well, i wasn't the academic sort. Not at this level at least. I didn't care for formal logic and proofs and such. I wanted to make things. I wanted real-world projects and constraints, because they were what made me tick. And anyway, if you're a good coder, you're a good coder, right? You teach yourself.

I'd taught myself upon leaving my bachelors degree (Chem Eng). I'd been freelancing on and off for about two years, but my formal programming concepts were messy, confused. I knew i could code, but i knew i was missing guidance - what technologies to pick up, which books even. So i thought - enough hacking, time for some proper stiff upper lip formal programming kicks.

I walked into Imperial 20 days before the term was supposed to start. They'd stopped taking applications 4 months ago. They were like, "you want to what?", and i was like "YES. LET ME IN.". I think i spooked the guy because after some mumbling he was all like "ok, see you in a couple of weeks" just to get me out of the office.

When I showed up I was afraid. Very afraid: I had a bunch of previous clients and a bunch of juicy contracts lined up. Now i had this full-time course on my plate and i'd only previously done web programming and matlab. We walk in and on the first day my tutor says,

don't work. if you work and study here you will fail. we are that hardcore. people think they are hardcore, but we are imperial. we are complete xxx.

Or words to that effect.

Gulp.

Imperial stuck true to their word. Some courses were taught at a frenetic pace (all fundamental SQL syntax taught in 2 hours - i mean pretty much everything) and pushed me to the limit, even with a couple of years of web development experience to lean on. But in the end i managed to pick up easily the best commercial work i'd ever done, whilst doing the whole academia thing. It was tiring. Nights were short (add to the commitments a 1+ hour commute to college). But in the end it was worth it.

There's some stuff you just won't force yourself to do. You won't force yourself to learn Prolog from strict first order logic fundamentals. You won't teach yourself finite state process models or assembler programming (probably. unless you're wozniak. or plain bored.). You sure as hell won't teach yourself to formally prove the logic of your code is correct, because you don't need to prove it to anyone. But doing all this informs you as a coder. I'm not saying i implement all the techniques i learnt - what i'm saying is i've got perspective on my code. For example, stack structures are fundamental at all levels of coding - but what better way of ramming home memory allocation concepts than the assembler stack pointer?

Our best tutor was Will Knottenbelt. He would belt out C code infront of us and debug live to reinforce concepts. I found out the practical approach is always the best to learn programming concepts. Darlington was also great - he's a long-standing contributor to the design of the Haskell language, which is what he taught us. He also has a 80 node fujitsu AP3000 super computer poking out of his office. Not many academics can say that.

OK so today i got my results through and it appears i did the near impossible - work commercially on a bunch of software projects whilst doing the full-time MSc thing. The nice folk at IC even let me do my dissertation in Ruby on Rails, which was great experience for me:




These results tell you that i make a pretty lousy sysadmin, but a pretty good high-level coder. And that i can code OK in real-time (labs). And that i can juggle. Juggling is pitching for projects 10 days before your finals and working off your tuition fees as they come in. Juggling is on all the job adverts so i guess juggling is in.

So that's it - MSc done and dusted and after all my apprehension to go strict on my code it was worth it.

Did it help me get my current job? The answer is no. Not one of the questions on the entry test would have been answered through knowledge picked up solely through the MSc. In other words, if i'd graduated fresh with a distinction but with no added personal experience, i would have flunked my interview completely and utterly.

Cron is great for servers, but for your dev box (be it (Power|i)Book), which may be switched off or sleeping for long periods of the day, you really need anacron. More info here. Install once, then just put symlinks to tasks in,


/etc/periodic/daily
/etc/periodic/weekly
/etc/periodic/monthly

If you want more (cron-like) power over execution intervals and conditions, you'll need to create a launchd plist file. Lingon provides an interface.

Twelve weeks with geeks is on google video - trailer here, feature-length for purchase here.

I particularly like the google vid query syntax,

geeks is:forsale

Will give you the feaure-length version. It's more intuitive (natural language) than some of the queries you have to come up with on google search proper,

"parent directory " MP3 -xxx -html -htm -php -shtml -opendivx -md5 -md5sums [artist] [title]

On the other hand, google video frames its credit card form, forcing you to think twice about the SSL nature of the transaction.

Boo google.

In case you'd missed it - Google Earth is now on OS X. I managed to locate my grandparent's place in New Delhi. That's something.

Note: Google video purchases are still US only. Complete bummer.

It's sounding more and more like the role ascribed to the Philippines in Neal Stephenson's Cryptonomicon - a pivotal technology hub of the new world with the required legal and tax framework to let real innovation take off.

A World bank report, news of the Island's coast-to-coast wireless, bright prognostics from the UN, plus talk of a cyber-island, technology hub and the "singapore of Africa" from sources like Time magazine and Harvard are all convincing me right now.

The statement from the Mauritian government itself spells it out for you,

Mauritius is now poised to become a cyber island and to serve as an info-communications hub in the region. The vision of an information society dates back to the early 1990s. However, recent top level commitment coupled with the creation of an enabling environment has given Mauritius a new impetus. It is Government's declared policy to make ICT the fifth pillar of the economy alongside sugar, textiles, financial services and tourism.

Now that's what i call a New World Agenda.

I"m convinced the next big step for web browsers is implementing offline mode.

So what's required? A local caching framework that server-side applications can hook into, allowing you to, for example, read and compose gmails whilst in transit, browse your rss archive in your browser, etc. This will lead to the inevitable. What's the inevitable? The inevitable is the day when home users will swap most of the applications on their desktop for their web browser.

So i'm having lunch with a friend - a technology consultant - who tells me he's working predominantly with Quangos right now. This prompts me to search the definition of the word immediately:

n. pl. quan·gos

An organization or agency that is financed by a government but that acts independently of it.

One of the projects this friend of mine is involved with is the regeneration of the Battersea Power Station site. Mammoth in scale, the new plans include a hi-tech Media Center he says might turn out like a Media Lab for London. Watch this space.

This is well put,

1 - Microchunk it - Reduce the content to its simplest form. 2 - Free it - Put it out there without walls around it or strings on it. 3 - Syndicate it - Let anyone take it and run with it. 4 - Monetize it - Put the monetization and tracking systems into the microchunk.

[ originally from Some VC in NYC ]

Seth Goldstein explains the nature of a new venture, the AttentionTrust, one of whose goals it to impede applications attempting lock-in through personalization. The AttentionTrust provides a framework for personalized services based on recording information about your web browsing. It's an ambitious project that attempts to tackle two big issues of the web 2.0 - Attention and Trust. Seth has some insightful observations on the nature of attention and the value associated to it in the new economy.

Mandays are pointless. Mandays are bad. Mandays don't exist.

Here is the dictionary definition of a manday:

An industrial unit of production equal to the work one person can produce in a day.

It's a poor way to quantify a programmer's output because it's a variable with a huge range. Time-based performance measures in software development are flawed and kind of old school. Same with Lines of Code (LOC). As Negroponte recently pointed out in his AIGA conference speech,

If programmers were paid by the amount of lines of code they removed as opposed to added to a piece of software, the world would be a better place.


Folksonomy is organism where most Semantic Web research is formalism.

The classic academic/real world divide.

To paraphrase Nietszche - the only thoughts worth thinking are those had whilst walking.

So if you're stuck munching on someone else's code my advice is: go for a walk.

If you happen to have a boss and he isn't too keen on employee walks, just say something about grabbing a coffee. If he doesn't buy that then your boss sucks. Replace him.

Kernighan & Ritchie's original C manual was under 300 pages long.

PHP declares over 3,000 built-in functions.

Take a guess at which is more powerful.

Ergo:

array_uintersect_assoc -- Computes the intersection of arrays with additional index check, compares data by a callback function
array_uintersect_uassoc -- Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions
array_uintersect -- Computes the intersection of arrays, compares data by a callback function

Design by commitee is tough.

Being a large open source project is tough.

A programmer's main activity is design. His tools should reflect that.

The distinction between native 'types' and objects makes for an amorphous pool of native functions:

There is inconsistency in the naming, arguments and return types. Most of these criticisms are documented by wikipedia.

Most don't think twice about these issues until they start with C and Ruby; both masterclasses in good language design.

Matz designed Ruby. He says,

One way is by looking at what can be done with that language. The other is by looking at how we feel using that language—how we feel while programming.

Dennis designed C. He says,

C is not a big language, and it is not served well by a big book.

Rasmus invented PHP.

He is coming to our local pub for a drink this week.

Publishing perms.

Printed Press: -rw-r--r--
HTTP: -rw-rw-rw-
Bit-Torrent: -rwxrwxrwx

Continuous Partial Attention is both a drainer & enhancer of productivity for web developers. Linda Stone brought it back onto the agenda at Supernova 2005. It's an important behavioural skill - particularly applicable to those working directly with the Web - which needs to be honed and controlled in order to get on with the job(s) at hand. Microsoft's approach,

Bill Gates has three types of meetings: free-for-all, mixed (sitting at back indicates paying half-attention), and full (if you're sitting at the table, you focus on what's going on).

I haven't yet gone down the email-free Fridays route myself...