I’ve been a fan of Lua since the early 2000s when a friend introduced it to me, even though I never got around to finding the time to properly learn and use it in production stuff. We have discussed about using Lua as a scripting language to allow for downloadable bundles that would extend AthensBook/ThessBook functionality (or fix bugs, or provide dynamically determined personalised features etc., but that never happened until now, due to licensing restrictions by Apple) for ages. Codify is an unbelievably cool app that leverages lua to provide a simple programming environment for the iPad. Combined with the general appeal of the device, the lack of third party, scripting programming environments for it, the ease of programming and use of Codify and the excitement of using such great hardware, I feel that Codify might be the Logo/Basic equivalent for this generation of children between the ages of 5-10, a great introductory platform for programming and an amazing tool for everyone else. And at $7.99 I think it’s a steal. You might want to use a bluetooth keyboard for it though; typing code on the on-screen keyboard seems like a horrible horrible nuisance.
The depth of everything that’s involved
JBQ’s writings on Dennis Ritchie’s death find me in total agreement and are worthy of a citation. dmr was a legend and his contribution, concise as meaningful, simple yet immensely powerful, has — and still does — shaped computing (and much of modern life) as we know it. C may not be ‘modern’ anymore, it may have been relegated to systems programming, high performance libraries and embedded computing for the most part, but it is still an immensely powerful tool, a foundation upon which countless other technologies have sprung since the late 70s. UNIX, once considered a dying breed still powers, in the form of Mac OS X and Linux, the vast majority of smartphones, most servers connected to the internet and numerous other devices, from printers, to desktops, to routers.
It is hard for a non-technologist to comprehend dmr’s contribution as it is for a technologist to overstate it.
Once you start to understand how our modern devices work and how they’re created, it’s impossible to not be dizzy about the depth of everything that’s involved, and to not be in awe about the fact that they work at all, when Murphy’s law says that they simply shouldn’t possibly work.
For non-technologists, this is all a black box. That is a great success of technology: all those layers of complexity are entirely hidden and people can use them without even knowing that they exist at all.
[...]
That is why the mainstream press and the general population has talked so much about Steve Jobs’ death and comparatively so little about Dennis Ritchie’s: Steve’s influence was at a layer that most people could see, while Dennis’ was much deeper. On the one hand, I can imagine where the computing world would be without the work that Jobs did and the people he inspired: probably a bit less shiny, a bit more beige, a bit more square. Deep inside, though, our devices would still work the same way and do the same things. On the other hand, I literally can’t imagine where the computing world would be without the work that Ritchie did and the people he inspired. By the mid 80s, Ritchie’s influence had taken over, and even back then very little remained of the pre-Ritchie world.
Ubuntu Mono — The Gamma Travesty
In one of the latest commits, Ubuntu Mono, the monospace variant of the Ubuntu font that has recently been included in the distribution, was added to the repositories.
Ubuntu Mono is a relatively nice looking monospace font that borrows quite a lot from Consolas, but adds its own distinctive touches that make it fit better with the Ubuntu font family. I have been a member of the beta testing group and have seen it for a while now, but I never quite found the time to properly look into it.
Sadly, while the roman script looks great already, the Greek script suffers from some poor design decisions. Chief among them is Gamma (the capital gamma) which was clearly designed by someone totally unfamiliar with the Greek language and script. Gamma in Ubuntu Mono features a bottom serif that is totally distorting the perception of the character. It is unlike any other modern font I’ve ever seen and I feel is doing Ubuntu Mono a disservice (it has certainly rendered the font unusable by me as long as it looks this bad).
In an effort to remedy this, I have opened a bug in Launchpad, Ubuntu’s bug reporting system. You can find the bug, #867577, here. If you have a Launchpad account, use Ubuntu (and/or the fonts) and would like to see Ubuntu Mono fixed for Greek please subscribe, add your comment and/or contact those responsible to help them realise how their effort is being ruined by a few badly designed characters.
» Unbiased.
Recent developments on physically accurate, unbiased raytracers — and more to the point, GPU powered raytracers that provide near real-time, interactive manipulation of fully textured and shaded models and environment — promise an unmatched workflow that makes the creation of super-realistic images and animations very easy. I won’t write much about the technologies behind them, but I think the video below is a great example of some of the things that become possible for a single person using commodity technology and hardware — in this case Blender and Octane Render (one such raytracer), especially given how much of the lighting setup and performance trickery, that would otherwise be absolutely necessary, are ‘handled for free’ by the renderer.
You read this right: this is a ‘full-fledged’ PC emulator written in pure Javascript. It can boot linux. Amazing stuff, let’s hope we get ‘readable’ source code sometime soon.
Some thoughts on Ubuntu Unity
A lot has been said and written about Ubuntu Unity, the new ‘shell’ that’s replaced the ‘classic’ default GNOME desktop in Ubuntu 11.04. Despised by many that interpreted Canonical’s break from the ‘open-source’ norm of restricting modifications to upstream platforms to a bare minimum, as a threat to the upstream projects’ existence (a valid point to an extent), that found it to be half-baked and offering little more (if anything) over the classic desktop and a couple of additional programs (e.g. a Dock, a launcher etc.) while much slower and kludgey (a totally valid point, but it’s a 1.0), Unity is here to stay.
It is true that, despite Shuttleworth’s ramblings on his blog, most of Unity is hardly innovative. Most useful things in there can already be found in most modern desktop environments (including some linux desktops) while Unity’s implementation of those very features is hardly the best. But there are also some unique offerings that are different, such as lenses and the proposed (but not yet included, thankfully) windicators. The question there is: are those features really useful? Are they well thought-out?
I think not. Take for example desktop search, a hot subject in mid 2000s desktops that’s been largely solved in an exemplary way in OS X by Apple’s Spotlight and a number of third party tools on that platform (LaunchBar and then Quicksilver are prime examples of early game changers), and even Windows 7 to some extent through the built-in search field in the start menu. Then, with five years of hindsight, Canonical decides to make things somewhat harder for users by exposing the search context to the user in the form of completely separate ‘lenses’ as opposed to keeping the distinction internal (in the same way OS X does) and presenting filtering options in an innovative way. Put it simply: I’d much rather have a single search field, ala Mac OS X’s Spotlight that searches for my input text across ‘data domains’ and contexts and returns useful, filterable lists of data, than the frustratingly badly designed ‘lens’ concept that forces a clear separation of searches while taking up screen real estate and wasting the users’ time with additional clicks and keystrokes.
Which begs the question: why on earth did the fine people at Canonical make such a bad design decision, when the stated mission of Unity was to streamline the desktop while taking less space etc. and at the same time there are numerous implementations of search/launch applications (even in linux) that work significantly better than Unity? Were they afraid of being labelled copycats? Is that worse than been called bad designers?
The same can be said about the new ‘global menu’ and AppIndicators that replace Gnome panel in Unity. Having few replacements for the staple Gnome Panel widgets of yesteryear is fine, given it’s a 1.0. Having botched the whole concept of a global menu through inconsistencies when windows are maximised and in multi-display scenarios betrays a badly designed (viz. not just incompletely implemented) system that shouldn’t have been out in the first place.
Unity has divided the GNOME community by introducing a new shell on the world’s most popular linux distribution. While it’s true that the state of linux desktop has been moving frustratingly slow for a number of years and that a quasi-open project, funded by a commercial entity with a focus on usabilty and æsthetics — exactly like Unity is on paper — could help accelerate its development and help reach parity with the two main desktops in some of the more difficult areas where linux has been falling back over the years. Still, Unity is largely incomplete, it’s missing many of the configuration options and functionality that linux users are used to — nay, demand — and, sadly, what’s there betrays a rushed, badly designed feature set that should never have gone past alpha inside Canonical, let alone be part of the world’s most popular distribution.
Guardian.co.uk is switching from Java to Scala. I’m surprised it took so long and that other Java shops are not following en masse — it could be because of how different and esoteric Scala can be, especially to Java programmers. The linked infoQ article contains an interesting discussion with the Guardian folks.
Programming enterprise web applications (or anything, for that matter) in Java is painful for anyone mature enough to have experienced the wealth and breadth of tools out there, given how primitive, verbose and unproductive it is, and how much it caters for the lowest common denominator of a programmer. That’s not to say that Scala is the best choice for everyone, let alone those not starting from scratch, but given the Guardian’s existing infrastructure and systems, I guess that it’s the best choice they could’ve made.
My Ten Years With Mac OS X.
Ten years ago, on March 24th, 2001, Mac OS X came out. A first, publicly available, one point oh unpolished version of Apple’s ‘next’ (pun intended) operating system. An operating system that Apple had been trying, in one way or another, to create for more than ten years. Remember Pink? Taligent? Copland? Gershwin? Mythical codenames to those that heard of them in the 1990s of either projects that promised amazing experiences compared to Mac OS Classic and that were never finished or released as planned, or spun-off products that died after a few short years. Mac OS X, what finally became a cornerstone of Apple’s platform well beyond the Mac and a catalyst of its success in the 2000s was a reincarnation of NeXTSTEP in Apple’s colours. Fusing NeXTSTEP’s core and frameworks with the Mac OS of old as one product that didn’t exactly know itself. A new skin, the same — amazingly advanced for their time — underpinnings.
In this short article I will describe, in summary, some experiences with Mac OS X from the point of view of a software engineer as opposed to a user, over the past ten years: The initial chaos of integration, Apple’s flirtation and dilemma with Java, the modernisation of Objective-C, the eventual coherence of the APIs and the extension of the system to support Touch in a way that was never achieved before.
NeXTSTEP frameworks used Objective-C. It was a language unknown to 99% of programmers out there in 2001. I had only heard of it while fiddling with GNUStep a few years earlier. In the early 2000s you could still find C++/Corba programmers in major service companies (as opposed to large software houses or systems development divisions) and Java was only starting, slowly but increasingly, to become the preferred platform for enterprise software. I remember meeting amazing and suitably eccentric software engineers — not merely the subpar ‘developers’ that are increasingly common nowadays in service/enterprise environments — that proudly proclaimed ‘Java is for girls!’ and other elitist, sexist jokes like that. Anything less than Alexandrescu and Sutter-class C++ was unacceptable to them. Knowledge of x86 assembly was standard among their friends. How could a person like that appreciate Objective-C? I felt comfortable hanging out with those people because I had gone through the rings of fire of learning, liking and using assembly, ‘high-level’ [insert CPU here] programming (irony!) and C/C++, but I also enjoyed the elegance and simplicity of Objective-C and Cocoa for rapid application development.
»


