Can learning non-programming languages make you a better programmer?

That’s what I wondered about when I got an email containing this bit:

I took four years of german in university and I think the knowledge has always made me a better programmer.

So, among my reply, I asked the guy to explain that, and later for permission to reproduce his reply here:

I spent twelve years off and on living in Germany as a child in Mainz, as a high school student in Wiesbaden, and in college at the Goethe Institute in Schwabsiche Halle. I eventually got a degree in german and econ from George Washington University in DC.

I didn’t start programming until graduate school at the University of Southern California and I am currently finishing a phd at Virginia Tech.

By profession I have been a Marine Pilot(CH53), management consultant(KPMG),CEO(Datacyr and Topik Solutions), and since 9/11 working exclusively with the US government developing semantic search engines (sesame, lucene, rdf, and sparql). I also spent many years in the data warehouse field building in-memory ETL engines.

Languages come in all shapes and sizes, as you know.

The human species and those members who appear to survive and evolve fitness adaptations better than others, do so through language. The primary goal of any language is to improve search skills(Google) and the tools to control resources(The Third Reich). The structure of both german and c require a very ordered syntax when arranging symbols(info), motion(services), and objects(things) in the mind’s mental model of the world. Unlike english, which allows for some flexibility in ordering the mental model of the world, german enforces a structured approach to control and memory management not found in english. It is no accident that SAP has been so successful as a technology and a company.

I have had to program in a dozen languages and across as many operating systems. Since my work is all about data manipulation, design, and models, I always come back to c when I have to achieve ultimate control (memory) and performance(pointers). Without an early education in german, I don’t believe I would have ever achieved what I have been able to accomplish in the technology field.

My phd develops the theory of semantic intelligence. The theory is based on the concept that human cognition is a type of computational model that can be implemented in software.

Thus my admiration for the elegance of jQuery and your validation plugin as a structure for optimizing search and control in human computer interfaces.

With german as my native language and english as a key requirement for learning to program, I can’t really reflect this well with my own experiences. The four years I learnt a bit o french at school certainly didn’t make a difference. I’d like to hear from others if they had similar experiences when learning other languages.

Erste JavaScript Köln Veranstaltung

Am 13. Juli findet das erste offizielle Treffen der CgnJS statt, einer Gruppe JavaScript Begeisterter aus Köln und Umgebung. An diesem Abend wird es zwei Vorträge geben: Jens Arps mit ‘JS auf mobile devices’ und ich halte ‘Developing web applications with jQuery UI’.

Vorher und nachher gibt es viel Möglichkeit zum Kennenlernen und Austausch rund um JavaScript. Das Treffen beginnt um 19 Uhr und die Vorträge um 19:30 Uhr. Das ganze findet in den Räumen der Coworking Cologne statt (Deutz-Mülheimer Straße 129, 51063 Köln) – dort fand auch letzten Dienstag ein kurzfristig organisiertes Node.js Meetup statt, mit Ryan Dahl als Vortragenden. Ein paar Fotos dazu hab ich bei Picasa hochgeladen, inkl. einem 3-minütigem Video, einem Ausschnitt aus Ryans Vortrag:

Für Updates könnt ihr CgnJS bei Twitter verfolgen. Hoffe man sieht sich nächsten Dienstag!

Nachtrag: Es waren 24 Leute da, hier auf ein paar Fotos auch zu sehen. Mein Vortrag lief gut (etwa 17 Minuten vorgetragen, dann nochmal so lang Fragen beantwortet), der von Jens Arps zu Mobile JavaScript war sehr interessant und hochaktuell. Konnte ich auch daran merken, das letztes Jahr im November meinem jQuery UI Vortrag niemand nach Mobile gefragt hatte, gestern hingegen war da eine Menge Interesse. Nächster Termin ist dann am 10. August.

Git fu: Updating your GitHub fork

GitHub with their web interface makes it really easy to fork a project, but it leaves you alone when it comes to updating your fork with the changes in the original repository. Its actually really easy with a few steps:

git remote add original git://url-to-original-repo

This adds another remote repository. You can use git remote -v to see your existing remotes. There should be “origin” already, pointing to your GitHub fork. You can use whatever name you like for the new remote repository, above I’ve used “original”.

git fetch original

This loads all commits, including branches and tags, from the specified remote repository, using the alias defined above.

git merge original/master

This merges all changes from the original master branch in your current branch, eg. your local master branch.

git push

By default, push pushes everything to your “origin” repository. Which brings your repo up-to-date. That’s it!

Autocomplete is dead, long live Autocomplete!

I’m finally deprecating the jQuery autocomplete plugin, about four years after its creation (which was actually a merge of two forks of another plugin). jQuery UI 1.8 was released in March, bundling the brand new Autocomplete widget and a worthy successor of my standalone plugin. The API is way more simpler while much more capable, eg. its now trivial to work with JSON. And thanks to Themeroller-support, the result looks a lot better.

Today I’ve finally finished the Autocomplete Migration Guide, which explains how to migrate from ye olde plugin to the new jQuery UI Autocomplete widget. It covers the various options and their replacements, if any. In a lot of cases, we were able to get rid of the options by providing better defaults or by restructuring the API, with the source option being the most prominent example.

The next major jQuery UI release should include the new Tooltip widget, paving the way to shut down another plugin on this site.