General Development Archive

The greatest program ever written

I'm a programmer. I write games. Games programmers get a lot of respect, but none of them, not me, not Carmak, and not Abrash. None of them deserve the honour which I want to bestow on David Horne. This is because David Horne wrote the greatest program ever written: 1k chess on the ZX81.

David Horne is not an urban myth. David Horne achieved what many would even now consider impossible. He wrote a chess game, with AI, that ran on a poorly documented, buggy machine that contained only 1k of memory.

Sometimes I feel like these kinds of programmers are a dying breed.

Hollywood 6.0 released

Hollywood 6.0 has been released. Since I'm not so sure most of you know what it is, here's the official description.

Hollywood is a multimedia-oriented programming language that can be used to create graphical applications very easily. It was designed with the paradigm to make software creation as easy as possible in mind. Thus, Hollywood is suited for beginners and advanced users alike. Hollywood comes with an extensive function library (encompassing almost 700 different commands) that simplifies the creation of 2D games, presentations, and applications, to a great extent. It has been in development since 2002 and hence is today a very mature and stable software package.

“Silver” brings Swift language to the .NET and Java worlds

While we're on the subject of Swift:

Fans of Apple's Swift language can now use their newly developed skills to write software for systems supporting both .NET and Java, including Android.

The Silver compiler, currently in beta, compiles Swift programs to run in the .NET and Java runtimes. It can also produce native binaries to run on OS X. With Silver, Swift developers can share their business logic and non-interface code across the different platforms.

It's a bit of an Apple news day today, isn't it?

Go 1.4 released

Today we announce Go 1.4, the fifth major stable release of Go, arriving six months after our previous major release Go 1.3. It contains a small language change, support for more operating systems and processor architectures, and improvements to the tool chain and libraries. As always, Go 1.4 keeps the promise of compatibility, and almost everything will continue to compile and run without change when moved to 1.4.

Half a decade with Go

Five years ago we launched the Go project. It seems like only yesterday that we were preparing the initial public release: our website was a lovely shade of yellow, we were calling Go a "systems language", and you had to terminate statements with a semicolon and write Makefiles to build your code. We had no idea how Go would be received. Would people share our vision and goals? Would people find Go useful?

Congratulations to the Go community and team.

Canonical Proposes LXD: A Next-generation Hypervisor

Take all the speed and efficiency of docker, and turn it into a full virtualisation experience. That's the goal of Canonical's new initiative to create the next big hypervisor around Linux container technologies. Imagine you could launch a new machine in under a second, and that you could launch hundreds of them on a single server. Hundreds! Now, imagine that you have hardware-guaranteed security to ensure that those machines can’t pry or spy on one another. Imagine you can connect them separately and securely to networks. And imagine that you can run that on a single node or a million, live migrate machines between those nodes, and talk to all of it through a clean, extensible REST API. That’s what LXD sets out to deliver. Update: a bit more about LXD from Dustin Kirkland.

Building a new programming language for games

Earlier this week, coder and game designer Jonathan Blow gave a presentation on his Twitch channel outlining his thoughts on why and how programmers might go about building a new programming language specifically for game development.

"We are literally killing ourselves every project, deathmarching to get games done," said Blow, during a Q&A segment. "It just really doesn't have to be anywhere near that bad -- at least for programmers."

Arment on ‘app rot’

We've touched on this topic several times already - most recently only a few days ago: the application store model is facing some serious issues at the moment, to the heavy detriment of users and developers alike. If you don't want to take my word for it - and really, you shouldn't, as you should make up your own mind - Marco Arment has written a great summary of all the problems the application store model is facing, with a lot of quotes from other sources to come to a good overview.

Apple's App Store design is a big part of the problem. The dominance and prominence of "top lists" stratifies the top 0.02% so far above everyone else that the entire ecosystem is encouraged to design for a theoretical top-list placement that, by definition, won't happen to 99.98% of them. Top lists reward apps that get people to download them, regardless of quality or long-term use, so that's what most developers optimize for. Profits at the top are so massive that the promise alone attracts vast floods of spam, sleaziness, clones, and ripoffs.

Quality, sustainability, and updates are almost irrelevant to App Store success and usually aren't rewarded as much as we think they should be, and that's mostly the fault of Apple's lazy reliance on top lists instead of more editorial selections and better search.

And:

As the economics get tighter, it becomes much harder to support the lavish treatment that developers have given apps in the past, such as full-time staffs, offices, pixel-perfect custom designs of every screen, frequent free updates, and completely different iPhone and iPad interfaces.

The application store model is under serious pressure.

Exploring Swift using GPUImage

Steven Troughton-Smith points to an article by Brad Larson:

I always find it more effective to learn new programming concepts by building projects using them, so I decided to do the same for Apple's new Swift language. I also wanted to see how well it would interact with my open source GPUImage framework. As a result, I made GPUImage fully Swift-compatible and I've built and committed to the GitHub repository a couple of Swift sample applications. I wanted to write down some of the things that I learned when building these.

It's interesting to see programmers get their hands dirty with what most likely will be the way forward for iOS developers.

The microg Project

The μg Project aims to provide a free, fully compatible replacement of the often used proprietary GAPPS package by Google.

Very little information is available at this point, but I've always wondered why nobody ever tried to create open source replacements for the various Google Apps - most notably Google Play Services. This is clearly in its very early stages, but it'd be fantastic if we could one day have a drop-in replacement for Play Services, ensuring you could have a truly Google-free Android device while still being able to run applications that use the Play Services APIs.

Full-motion video on a 1981 IBM PC

I gave a talk in 2007 that explained 8088 Corruption in detail, and in that talk I explained that displaying FMV using CGA in graphics mode would be impossible. This is because CGA graphics mode uses 8x the amount of video memory that 8088 Corruption was handling. Even a simple calculation assuming 24fps video reveals that the amount of data needing to be updated per second (24fps * 16KB = 384KB/s) is outside of the IBM PC's capability: CGA RAM can only be changed at a rate of 240KB/s, and most hard drives of the era operate at roughly 90KB/s. It sure felt impossible, so that's why I said it.

Then I thought about the problem for 7 years.

This is amazing. I also have no idea under which category to file this, but I settled for this one.

The desktop and the developer

I was at the OpenStack Summit this week. The overwhelming majority of OpenStack deployments are Linux-based, yet the most popular laptop vendor (by a long way) at the conference was Apple. People are writing code with the intention of deploying it on Linux, but they're doing so under an entirely different OS.

But what's really interesting is the tools they're using to do so. When I looked over people's shoulders, I saw terminals and a web browser. They're not using Macs because their development tools require them, they're using Macs because of what else they get - an aesthetically pleasing OS, iTunes and what's easily the best trackpad hardware/driver combination on the market. These are people who work on the same laptop that they use at home. They'll use it when they're commuting, either for playing videos or for getting a head start so they can leave early. They use an Apple because they don't want to use different hardware for work and pleasure.

Apple's laptops are still the best PCs money can buy at the moment (despite their horribly outdated displays). It's no wonder Linux developers, too, favour them.

(Ab)using language features: Common Lisp condition system

The hardest thing about learning a new programming language is that there are usually at least one or two novel features that break the mold of our current mental framework. If not, the language may not be worth learning in the first place.

So, given that learning new languages can be challenging, I would like to share a tip that has served me well over the years.

One of the best ways to really understand a new or novel language feature is to think of ways to twist and abuse it.

Three possible replacements for Fortran

A large research project in the physical sciences usually involves experimenters, theorists, and people carrying out calculations with computers. There are computers and terminals everywhere. Some of the people hunched over these screens are writing papers, some are analyzing data, and some are working on simulations. These simulations are also quite often on the cutting edge, pushing the world’s fastest supercomputers, with their thousands of networked processors, to the limit. But almost universally, the language in which these simulation codes are written is Fortran, a relic from the 1950s.

Ars looks at three possible replacements for Fortran.

‘Programming sucks’

Every programmer occasionally, when nobody's home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. It's a different file for every programmer. Sometimes they wrote it, sometimes they found it and knew they had to save it. They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world.

This file is Good Code.

StillDrinking writes on the torment of being a programmer.