Strong typing, the new crusade for the functional programming zealots

I remember a time when a cleancut C++ programmer would browse the backwaters of the internet and inevitably stumble across the heretical suggestion that functions rather than objects should be the basis of all code. I was reminded of this time recently when somebody suggested that Raskell was good...

Read more...

Announcing Raskell

Raskell is my answer to the lack of a proper Haskell development environment on my iPad. I wrote Raskell to replicate the Vim + Haskell interpreter combination I work with on my laptop. Raskell contains a port of the popular hugs Haskell interpreter as well as a custom written vi-like keyboard.

<a...

Read more...

How git works

There is always during that manly ritual of viewing a friend's new car that he will pop open the bonnet to show me the engine powering his new steed. I politely comment on its elegance and power, perhaps throwing in an admiring whistle if I feel his new fan belt and spark plugs really deserve that...

Read more...

The Great Programming Language Continuum; or why C++ is dying

The long term trends of TIOBE's programming language index tell a sad story for C++; it is on the decline. Once comparable to C in popularity, it has lost market share to a new breed of higher level languages. During the same period C's market share remained has retained...

Read more...

Five days in Egypt in September

Saturday

My most indelible memory of Cairo airport is the tennis court sized poster of Obama that greeted us in arrivals. Alongside Obama's face was a quotation from him testifying that the Egyptians are America's friends in the middle east. This was the start of our five days in Egypt, but Cairo airport...

Read more...

Marble mazes, edge detection and an iPhone 3g

It started with a simple question. It was summer 2009 during the wild west days of the App Store when fart apps were cool and an android was still just that pale guy from star trek. My housemate pointed to my iPhone 3g and asked - "why don't we make...

Read more...

Best before 2015. Should software come with expiry date?

Buy a car and you would be lucky to have any original components other than the steering wheel and the stereo left after 200,000km, but software's digital nature lends it an air of immortality that leads many to believe it will last forever. Indeed there are BSD tools on my...

Read more...

How Clojure is to the JVM as Bash scripts are to Unix

I'm undoubtedly one of the brainwashed hordes that believe Clojure is the best thing ever to happen to the Java ecosystem. Possibly this is because I am a longtime Lisper glad to see my favourite language as the centre of attention once more, but I do believe...

Read more...

My DNA needs some refactoring

Recently, I had a personal epiphany when I realised that clean code and good code are very different. This fact struck me when thinking about DNA. To a programmer's mind the proteins in a cell make up a virtual machine, and DNA is the code they execute. Furthermore natural selection guarantees that...

Read more...

A proposal for improving HN - it should cost Karma to comment

I'm not alone in watching HN's downwards slide to the level of most other internet forums where posts and announcements are met by default with thoughtless criticism, complaints that the post is offtopic, and other obnoxious contributions. To an extent this is inevitable, but recently in some cases...

Read more...

Edit Clojure by its parse tree on your iPad - Lisping adds support for Clojure

It has been three months since I released Lisping into the App Store. After smoothing out the mechanics of editing by the parse tree in the 1.0.x series of updates, I felt it was time to add support for Clojure, a great new JVM...

Read more...

The problem with Clojure's type hints and Arc's if statement

Arc's (if ) statement has the same function as the classical Lisp (cond ) statement, but the parentheses around the conditional blocks have been dropped with the intention of condensing the code. For example, where in Scheme one writes

(cond ((= x 1) (do-this))

...

Read more...

Lisping 1.1 now supports Clojure, bugfix on the way

Lisping 1.1 now supports Clojure, but unfortunately there is an irritating bug with the editor window so I am holding off on announcing it for now. I have submitted a bugfix to Apple along with a request for an expedited approval, so I hope 1.1.1 will be with you all...

Read more...

What does Github's top ten languages list tell us about its userbase?

Earlier I saw a post on HN about the top ten languages on GitHub, and what struck me was how different the list is to Tiobe's top ten languages. My immediate question is who exactly uses GitHub?

This question was on a lot of lips earlier this...

Read more...

Would Steve Jobs have applied to Y Combinator?

A quick glance at yclist shows how Y Combinator has become the war factory for the Web 2.0 revolution. If your aim is to take an existing application, strip away the cruft, replace it with a stellar user experience and see your product adopted by the world then Y Combinator is...

Read more...

The genesis of a perfect programming language

Ask a room of young programmers "what is the best programming language?" and each will immediately spring to the defence of his or her favourite development tool, loudly explaining how it triumphs over all others in all situations. This will continue until the elder statesman of the office, disturbed by the cacophony...

Read more...

Beauty tips for programmers

The most famous written words are quotations; the author communicates in a sentence an idea that would take most of us an entire book, consequently quotations are memorised, regularly repeated, and generally held up as a pinnacle of composition. An equivalent in the programming world might be a hash table - undoubtedly a great deal...

Read more...

Lisping 1.0.1

Lisping 1.0.1 is now available as an update in the App Store. It fixes a unicode issue and adds support for inline comments and the retina display.

I'm putting the final touches to Lisping 1.0.2 now. Aside from internal refactoring and bug fixes the new features are:

  • Configurable display I have added a settings option to...
Read more...

In praise of Objective-C

It is tough to write anything about Apple without being accused of fanboism, however I really do admire Objective-C. Originally created at Stepstone it has become synonymous with Apple's platforms, and I believe it leads the pack of general purpose programming languages. This is not something I feel with the fervour of a Lisper...

Read more...

Lisping submitted to the App Store

Lisping headed off to the iOS App Store reviewers today. I can't say exactly how long it will be until it emerges in the store, but I hope it will be ready for sale this time next week at the latest.

This is a good moment to say thank you to all my beta...

Read more...

Why I prefer Scheme to Haskell

Before you sharpen you keyboards and spit acid at me as punishment for the title, let me point out that I haven't written this post to bash Haskell (no pun intended), in fact I love it. Haskell introduced me to algebraic data types, domain specific languages, pattern matching, and many other programming constructs...

Read more...

Where is Lisping headed?

Lisping is in the App Store, initial sales and feedback are extremely encouraging, and the first update to fix an issue with unicode, add support for the retina display, and improve inline comments is on its way through the approval process. This begs the question - what comes next? where is Lisping headed?

One of my...

Read more...

TouchScheme is dead, long live Lisping

I very recently announced TouchScheme, my iPad scheme editor and interpreter. The response has been fantastic, and something it has taught me is that there is a need out there for an iOS Lisp editor more general than just a Scheme editor. After release my first major upgrade will be to allow...

Read more...

Edit Scheme on your iPad via the Parse Tree - Lisping launched

Lisping has finally made it into the App Store. For those who don't know, Lisping is a Scheme development environment designed around the concept of editing the parse tree, an approach chosen because of its suitability to the iPad's touchscreen interface.

Anyone who has tried to edit code...

Read more...

Coding reinvented on the iPad, edit the parse tree

I learnt two important lessons during an idyllic holiday in Thailand over new year: Firstly I should relax more often, and secondly I should be able to code on my iPad when I am done relaxing. My resolve to relax more evaporated as soon as my fingers touched my keyboard...

Read more...