Tuesday, December 13, 2011

Monday, December 05, 2011

Defending Lean Startups

Got into a long comment on Nick Pelling's blog. He's sceptical about Eric Ries. I'm fairly neutral, but here's my response to Nick.

Surely all practical knowledge is anecdotal and, therefore, an unwarranted step from the particular to the universal. All advice in this “genre” (Tom Peters, Charles Handy, Seth Godin etc. etc. etc. ) comes with an implicit health warning. And anyone with any experience of the world will apply salt as a matter of course. 
Should we hold that against Ries in particular? 
So his models come from the software industry. OK. But someone else’s advice will come from banking, or food retail or oil or the military. Each with some parallels to your business but each with its own idiosyncrasies as well. 
One thing you can say in favour of Ries’s bias is that more and more things are getting automated and so more and more of our world “is made of software”. Software processes are replacing other kinds of process that were embodied in administrative or managerial practices or hardwired into physical machines. In this world, improvements in software are often more effective than improvements in other areas. 
You’re a coder yourself. You probably know your Mythical Man Month etc. You know perfectly well that software doesn’t benefit from heavy bureaucratic management. But that exciting and effective software usually does come from small, enthusiastic, “agile” teams. 
So, if software is becoming an increasingly important factor in business. And software thrives under agile conditions, it would follow that business in general will probably benefit from agile. 
Disclosure : I’m a software guy myself, so I’m totally down with the land-grab programme.

Monday, November 28, 2011

HackerType

Possibly one of the more hilariously idiotic things I ever saw online. Impress your friends with fake coding skills. WTF?????

Sunday, November 13, 2011

Mind Traffic Control Bug

A recent change in Mind Traffic Control introduced a bug preventing those who weren't already logged in from logging in. This is now fixed.


Wednesday, November 02, 2011

CoffeeScript and Raphael.js

I've been working on a project based on some of my recent artistic works. I thought I'd do it using a Processing sketch embedded in a web-page. It's not that I was particularly happy with Java applets (in 2011!) but I figured I'd make use of the Processing code I already had.

After a whole lot of faffing around trying to get the applet talking to my server, I'm realising that this is really NOT going to fly for a whole bunch of reasons. I wasn't really seeing Java as my long-term future anyway, but I've realised that it isn't even going to be the quick, dirty but workable prototype that I'd hoped. So, if I have to make a break, I might as well do it now and quickly. And look to the future rather than the past. So I've made a decision to rewrite with CoffeeScript and Raphael.js. (I'm generating SVG designs anyway, so Raphael is ideal.)

After a spending a couple of hours today, that's feeling like good decision. There's still the hassle of having to convert a lot of code, and it's a bit of a fiddle going backwards and forwards between the editor, the command-line compiler and the browser. But CoffeeScript feels like a good language. Obviously meaningful whitespace indentation is comfortable for a Pythonista like me, and I'm getting used to the Rubyisms without too much pain.

Not much in the way of debugging information, which hasn't bitten me yet, but might. Still, I'm positive.

Friday, October 21, 2011

Linux Commands For The Web

Can't remember if I saw this before, or if I posted it, but it's beautiful.
One of my favorite business model suggestions for entrepreneurs is, find an old UNIX command that hasn't yet been implemented on the web, and fix that. talk and finger became ICQ, LISTSERV became Yahoo! Groups, ls became (the original) Yahoo!, find and grep became Google, rn became Bloglines, pine became Gmail, mount is becoming S3, and bash is becoming Yahoo! Pipes. I didn't get until tonight that Twitter is wall for the web. I love that.
Marc Hedlund via Coding Horror

Friday, October 14, 2011

The Future of Arduino and Android

Very interesting talk by the creator of Arduino about their plans for integrating with Android.

Verpa's Gmail lib

Playing with this library to access my Gmail account via IMAP. Seems pretty simple and convenient, though fairly basic.

Monday, October 10, 2011

BEACHhtml on GitHub

It's kind of trivial, but I put the html generating code that I mentioned in this post into GitHub. Mainly because I wanted to be able to share it between a couple of different projects and it made sense to use a Git submodule.

So here it is.

Google's Dart

So Google's Javascript replacement language, Dart goes public.

Looks awfully like Java with a smattering of CoffeeScript. I like the empty compact constructor and the one-liner functions. But I'm not sure what those colon ones are doing.

Presumably some jQuery-like action with the document.query().

Looks a little bit messy, but then Javascript has got kind of messy. Shame they didn't try to go for the CoffeeScript cleanness.

In a sense, it may be rather similar to writing Processing if they produced a decent IDE.

On the whole, I think I can live with it.

Some interesting evaluation at Lambda the Ultimate.

Monday, September 26, 2011

Shhhh ...

I have a confession ...

I re-installed the Google App. Engine dev, environment on my machine. I popped open the Mind Traffic Control codebase and looked into it. I was a bit overwhelmed at the clunkiness of some of the code (I've become a more concise Python programmer since then) but I realised I could still make sense of it.

I tweaked a couple of minor appearance bugs and refreshed the server.

It worked!

It's been a long time since I actually had a working MTC development environment.

I wonder what this means ...

Sunday, September 25, 2011

Google's "Future of Javascript"

So Google blame Javascript's weaknesses for Apple's success with iOS and its app ecosystem, and want to replace JS with their own alternative.

Obviously I think this is the most wrong-headed thing I've heard in a while, and a worrying sign of idiocy within Google.

I'm not particularly concerned about the future of Javascript which I'm sure will be around  long after Google's alternative is abandoned.

Wednesday, July 13, 2011

Tuesday, July 12, 2011

Been browsing some interesting discussion over at Quora on how they built their site.

It's basically Python and Pylons. But this is cool. They don't use a templating language.

Here's developer Charlie Cheever :

What "templating" means to most people is a way of having the developer write out HTML basically the way that you would send it to the browser and then having a way to include a few things -- typically variable substitution by using special tags lik <% ... %> or similar.

In our case, no one writes any code that looks like HTML/XML literals, so there's nothing in our codebase that really matches what most people think of as templates. We do have view code but that interleaves calls into the model and application logic along with a Python code description of what the HTML for that component should be, which is different from templates which are usually based around the ideas of separating logic and data fetching from this.


This sounds like an approach I've been favouring for a while. I did it in Mind Traffic Control, some other unreleased SdiDesk in Python experiments, and I do it in some Javascript I've written. People think that you should separate HTML from code because HTML is the domain of designers and code is for programmers. But I think HTML is the realm of data-structure (designers should stick to CSS) and part of the programmers' remit.

The way a programmer (or at least, this programmer) wants to express complex data structures is with function composition. So here's an example of my html.py file.


# HTML library
# basic level

def tag(name,x,*argv) :
if x is None :
return u"<"+name+u"/>"
if argv != (None,) :
inside = u''.join(argv)
else :
inside = u''
if isinstance(x,dict) :
# we're passing a dictionary of attributes for the tag
s = u"<%s " % name
s = s + ' '.join(['%s="%s"'%(k,v) for (k,v) in x.iteritems()])
s = s + u">"+inside+u"</"+name+u">"
return s

# or there are no attributes, just inner
return u"<"+name+u">"+x+inside+u"</"+name+u">"


# Now we'll actually make some tags
tags = ['html','head','body','script','p','div','table',
'tr','th','td','ul','ol','li','dt','dd','h1','h2',
'h3','h4','h5','h6', 'style','pre']

loc = locals()
def setit(loc,t) :
loc[t] = lambda x=None,*argv : tag(t,x,*argv)

for t in tags :
setit(loc,t)


# Use like this
html(
head(),
body(
h2("Header"),
p('para1'),
p('para2')
)
)




But I did start to wonder, given the prevalence of templating languages and some of my recent experiences as a Django developer, whether this wasn't just me being wilfully perverse / crazy. I admit I'm kind of relieved to read that Quora are doing something similar. Maybe I wasn't so mad after all.

Bonus link : Decomposition by language is probably a modularity mistake. (Written back when I was more confident.)

Thursday, June 02, 2011

Monday, April 18, 2011

Nice Quora question about code at early Google.

What I take away from these stories is that pushing out ugly prototypes of your products will not prevent you from building a world-class engineering organization in the future.

Monday, April 11, 2011

Bloody hell, Prolog can be frustrating sometimes!!!!

Sunday, April 10, 2011

Doh! I may have been a bit previous in saying that I'd got the hang of Prolog syntax.

Friday, April 08, 2011

Awesome response from SWI-Prolog when you just query an unbound variable. :-)


?- X.
% ... 1,000,000 ............ 10,000,000 years later
%
% >> 42 << (last release gives the question)

Thursday, April 07, 2011

Wow! Playing with Prolog at the moment. It's awesome.

I seem to have finally achieved some kind of fluency instead of fumbling around without knowing how to drive the thing. It probably helps that Erlang has accustomed me to the syntax and other conventions.

Monday, March 07, 2011

At Aharon's prompting I had a play with node.js over the weekend. It is very good. I can see why it's "the next BIG thing". (See the nice starter tutorial with a very impressive minimal twitter reader.)

Trying to think of something fun to do with node.js now.

Also, what with getting into Urbi, "events" are clearly the trend of 2011 for me.

Sunday, March 06, 2011

Resolver Systems have a new "cloud-based" pythonic spreadsheet called "Project Dirigible"

Wednesday, March 02, 2011

Urbi is a great, parallel, event driven language for programming robots.

Watch the tutorial video.


Absolutely packed with interesting control structures to handle the implicit parallelism and event-driven nature of the language. Several important ideas : free subsumption architecture (you actually run many different programs in parallel, each dealing with certain motors and sensors, but interacting with each other only through the body of the robot; "blending" modes which let different programs send multiple instructions to the same motor at the same time; "tags" which let you interact with (start, pause, stop) running processes by name.

Monday, February 14, 2011

An idea for an Android GUI designer.

Interesting to see the state of the art here. It's an improvement on XML ... but still, not as far forward as you'd hope.

Sunday, January 30, 2011