maetl

Programming

Why I No Longer Work for the Man

Positive life changes can only happen when I am able to choose when and how I work, what I work on, and who I work with.

A Simple App Engine Picture API

Making a micro web service for processing and resizing images.

Livecoding the musical apocalypse

Algorithms are thoughts, chainsaws are tools, and the triumph of the cyborg composer.

Picture-driven programming

Treating the entire visual interface of a program as data input to another program that modifies the original behavior.

Random Textmate Buffer

Found this waiting in a Textmate buffer...

Ascii Art Diagrams

ditaa is a small command-line utility written in Java, that can convert diagrams drawn using ascii art into proper bitmap graphics.

Signs, Sigils, and Syntax

Why do we call programming languages “languages”? What is missing from the literary traditions of programming?

Only Magic to Those with Inadequate Understanding

A quote from Raganwald: “The correct response is not calling arbitrary features ‘magic’. It’s programming. That’s all.”

Robots & Visual Programmers

After recently discussing the widely underestimated importance of visual programming, it’s great to see research like Visual Programming Environments For Kids.

The Only Accurate Metaphor in Software Development

Software development is hard. A lot of people like the idea of couching this difficulty in a form of explanation by analogy. The most common comparisons are generally the most facile and glib, and…

Ridiculous Moments in Code

The world wide web has led to a massive day-to-day proliferation of crap jokes that would have been unthinkable 30 years ago, and the programming culture is no exception. Interestingly enough though,…

Ambient Oriented Programming

Interesting research is emerging that explores new programming models for mesh connected mobile devices. The experimental language called AmbientTalk is a prototype based object oriented language…

The Stress Addiction Loop

In the last 30 years neuroscience has given us great insight into the workings of the human brain and as more information emerges, it becomes clear just how out of step with reality conventional attitudes…

Improving Architecture with Testable Code

Unit testing can have productive side-effects that manifest in the emergent design of classes and API's. Testing objects in isolation from their interactions in the larger code-base pushes you to…

On Refactoring

Refactoring reveals purpose. It sets you up to be ready for the next move.

The True Scope is Unknowable

"Agile" has balkanized, and the individual cults have - in some cases - become religions that are just as bad as the things they intended to replace. But at the outset, the interesting thing about…

Membrane Oriented Programming

For many years, Object Oriented discourse has been far too constrained by language oriented thinking.

Room for improvement: Women in OSS

It just wouldn't be fair to ask where are the women in open source and criticize open source usability without providing some kind of summary of how we can do something about it. Humanized…

Py3000

Python 3.0a1 release hits the network, with significant backwards incompatible changes. The best way to describe this is a shedding of the snake's skin, sloughing off a whole bunch of weird ambiguities…

Software is not made of Bricks

Raganwald dissects the misguided metaphor from a software process perspective. I have come to believe that these kinds of problems are even more prevalent in the web development world than in…

Is PHP Doomed?

There's a tide of opinion suggesting that PHP is threatened with extinction as standard hardware begins to favour widening multicore processors. This would be a fair argument if PHP was a general…

The Myth of The Next Big Language

It's not a showdown between Javascript and Ruby, it's a race towards bioware. Language oriented programming is not a new idea, but it has taken a long time to become a significant influence on…

Most Programmers Are Stupid

“The only thing that everyone seems to agree upon is how stupid all the other programmers are.”

Clusters and Flows of Data: The Twitter Way

The playing-field of Twitter annotations and the challenge to the developer community.

Experiment Driven Development

A new skillset for interactive designers, who must now take direct evidence into account with every design variation that affects user flows.

What is Missing from Modern Programming Languages?

There’s still a lot of important dialogue about the standard features of modern programming languages that hasn’t happened yet.

Counting Accented Vowels

The Twitter API Wiki has one of the most practical explanations I’ve seen of some of the issues involving Unicode normalization.

Updating Ideas

I feel like my web skills have been swept out from underneath me. You go away for a few months, and come back, and everything has changed so much.

Software Design Folklore

Results of a survey of over 3000 developers, regarding their approach to OO software design.

Algorithms Should Not Be Patented

Donald Kunth – “I remain convinced that the patent policy most fair and most suitable for the world will regard mathematical ideas (such as algorithms) to be not subject to proprietary patent rights.”

Code is Not Inevitable

If crap code is an unavoidable problem for the software industry, maybe the solution lies in trying to change the nature of the code, rather than trying to change the people who write the code.

The Landscape of Computing

People think that it is strange that someone like me who knows so much about programming languages chooses to program in PHP so frequently. They're probably right, and I appreciate where…

Undocumenting PHP: Harnessing Simpletest

Simpletest is quite possibly my all time favorite PHP library. The way it's put together greatly appeals to my sense of object oriented design symmetry and the high level API is absolutely fantastic…

The Axes of Parsing

This is an introductory guide to the theory and praxis of parsing and lexical analysis. All this material is a necessary basic foundation to the study of parsing.

Startups and the Future of Journalism

Y-Combinator has published a list of ideas they'd like to see new startups tackle. Aside from obvious criticisms (we're already well familar with Paul Graham's penchant for proselytizing certain forms…

A quick and dirty language...

For quick and dirty programs... Paul Graham has released an early version of Arc, his ongoing project to develop a Lisp dialect suiting a minimalist taste in programming style. Never one to shirk…

The Missing Literary Traditions of Programming

Learning how to forget the properties of programming languages themselves, and think about the context of what is actually written in these languages.

Coding Diversity

I fear that I'm beginning to sound like a stuck record by now, but I can't help attempting to push back against that particular form of inertia that has infected our discipline. First I saw this,…

Overloading the MQL Acronym

MQL must be one of the most overused acronyms in todays technology field, including (but definitely not limited to) such specificities as search/analytics, automated trading, and molecular substructure…

Method Missing?

Builder is a completely declarative library which makes it easy to generate XML from a cascade of Ruby method calls. But it's not completely smooth sending: working on an Atom feed, I ran into a…

Shiny Shoes

Why is one person who cares about children learning to program, if Cut Holes In Shoes And Get A Mask is anything to go by. Many people would think this is completely insane, or merely reinventing…

10 LET M EQ MIND ROT 20 GOTO 10

I hate to agree with grouchy old Dijkstra, but unfortunately now it's impossible to deny: BASIC is what killed my ability to be a truly great programmer. Dijkstra was right, GOTO completely rots your…

Java Chases Its Tail Calls

John Rose talks about implementing support for tail call optimization in the JVM. I've been waiting for this one, as in my mind, it has long been one of the biggest holes in the leaky dike of…

FullCodePress Selection

Finalists for the New Zealand FullCodePress team have been selected, and I'm one of them! Final selection is tomorrow. Good luck to everyone who has been nominated, especially the other two selected…

Black or White

The real reason why nobody is right, even when they are.

Complexity and Unit Testing

“Lots of unit tests are a symptom of an architecture with complex and highly stateful abstractions, which, in turn, are a sign of a low quality architecture.”

Programming Again

It’s hard to explain the collision of forces and events that has occurred over the past several months.

Technē 1: Gordon, Gremlins, and Pipeline Programming

The Forgotten History of Timezones

Jon Udell’s literary appreciation of the Olson/Zoneinfo/tz database is flush with small details that will delight history geeks.

Because it's Unix

Watch the cascade from Ruby is Unix to Python is Unix to Perl is Unix.

Why? Oh _why?

_why has gone. Left the intarwebs. And in the process, he tore down the house, and leveled the garden.

Rands Hits a Home-Run

Software industry zealots focus far too much effort on debating methodology for methodologies sake.

Undocumenting PHP: URL Handling in SilverStripe

Many people have wondered about the lack of support for nested URLs in a basic install of the SilverStripe CMS. There is a forthcoming module that will enable nested URLs as plugin functionality,…

Learning to Read Code

Usually when I write spontaneously here, it's because a topic or idea has been percolating in my mind for a while, and I will stumble across a reference or blog post that provides the necessary…

People-Power and the Mythic Man Month

Dog Bites Man Month. Or does it? The criticism is sharp, but I'm not sure how deep it cuts. Anecdotal evidence is no less valid than statistical reasoning if it is widely understood to be advice that…

What is least surprising?

I always enjoy reading interviews and discussions with Larry Wall - a brilliant language designer whose unconventional wisdom and humor makes his explanations of complex and chaotic issues seem…

Linking 2D maps and 3D reality

How can we close the perceptional gap that lies between two dimensional maps and the surrounding three dimensional reality? Enkin is a technology aimed at the Google Android platform that…

Frameworks and Seedworks

Frameworks are the shining stars of this current era of web development and there are many benefits for designers and programmers to focus technical solutions around a given framework as a platform…

Escaping the equality conundrum

Equality is a mathematical concept, not an object concept. It's contextual. So, what is the correct implementation of equals? Sometimes it's no implementation at all. On the Beautiful Code…

When a language is only as good as its tools

Ruby programs can be written in unicode, meaning that you can label a real lambda. Once, when working on a school assignment to build a simple regular expression interpreter, I had a similar flash…

Undocumenting PHP: Static Late Binding

PHP is flawed. Deeply, immensely so. I first discovered this over a year ago, when I made the naive assumption that PHP 5.1 had fixed a lot of the language level failings of its predecessor. Because…

Lessons learned from FullCodePress

Since Ali posted 20 things I learned at FullCodePress, I thought I'd chime in with my own observations from the perspective of being programmer for the Code Blacks.

Escaping the Self Denial Instinct

In Hearing without listening, 37Signals screws up, then admits what they did wrong and how they fixed it. In the end, it's just a matter of several weeks downtime before the application is working…

Putting Python and Django on the iPhone

Not for the weak of heart, but the prospect of wrangling the call database with Django is a tantalizing hint of things to come...

Redefining Computing

As I am now starting to discover, many of these ideas were originally considered by Alan Kay, and summarized at OOPSLA in 1997. If the true shape of object oriented programming is qualitatively…

Undocumenting PHP: It's about Time

Forget Everything You Ever Knew about Date-Time Handling in PHP...