A Grab Bag of Curious Links, Tutorials, Libraries, and Tools

Published:

Every so often it is fun to do a roundup of things that do not fit neatly into one category. This batch includes hiring puzzles, technical reading, web libraries, and a few small utilities that are either genuinely useful or at least entertaining enough to click through.

Let’s start with jobs.

One company’s recruiting page tied to the film The Website Is Down puts candidates in front of a list of programming questions. Solutions can be submitted in c/c++, Erlang, Haskell, Java, Perl, Python, PHP, or Ruby, but only Unix/Linux versions are accepted; Windows submissions are not. Dropbox has a similar recruiting page built around algorithm problems as well, though reaching it may require getting around network restrictions. These days, for American internet companies, if you have not been copied by consumer web services you barely exist, and if you have not been blocked somewhere, maybe you are not successful enough yet.

Reading material and tutorials

Most of the documents below are in English, and several are worth keeping around for reference.

  • A thorough comparison of Java and C#. This is a surprisingly complete side-by-side look at the two languages. If you want a clearer sense of where Java and C# overlap and where they differ in features and design, it is a good read.

  • SQL performance tuning. This document covers IBM DB2, MySQL, Oracle, PostgreSQL, and Microsoft SQL Server. It is still unfinished, but progress can be tracked through RSS, Twitter, or Facebook.

  • Clever Algorithms. A free ebook focused on AI-related and nature-inspired algorithms, with 45 algorithms collected in total. It includes probabilistic and stochastic methods, iterative and evolutionary algorithms, physics-inspired approaches, swarm-style methods involving ants and bees, immune algorithms, neural algorithms, and more. There is so much higher math in it that many readers will probably stall out at the formulas. Still, it looks excellent for people doing theoretical work—or, less nobly, for anyone hoping to patch together a paper and graduate.

  • HTML5 Audio & Video. This comes as a set of online slides; use the keyboard arrow keys to move through them. The presentation includes demos and is a practical way to learn the audio and video side of HTML5.

  • C macros. If you have ever wondered how far C macros can be pushed, this document is worth your time. It introduces macro usage from simple cases to more advanced tricks.

  • Sorting algorithms used by different languages. Curious about what sorting algorithm a language uses by default? This article gathers that information in one place.

  • A physics simulation tutorial in F#. If you have played those games where you draw an arbitrary rock shape and then watch it fall from the sky onto something below, this tutorial explains how to build that kind of effect in .NET with F#. There is also a demo program.

  • A Sin & Cos game tutorial. This article walks through a few techniques used in game programming.

  • An introduction to GNOME development. An unofficial guide to building GNOME applications. It is clear, straightforward, and well suited to beginners.

  • Learn Python in 10 minutes. Yes, titles like this can be irritating—right up there with those “master C++ in 21 days” books. This one is even more shameless. Still, after a quick look, it seems genuinely useful for beginners who want an intuitive first impression of Python.

  • A CSS shadow tutorial. A practical guide to creating different shadow effects with CSS, along with a demo.

  • Building iPhone apps with Haskell. A tutorial showing how Haskell can be used to develop iOS applications.

Open-source libraries for web development

There are also several web-related libraries and frameworks worth a look.

  • Photon. A lightweight PHP application server framework that presents itself as high performance. It claims to be 3 to 10 times faster than Zend, Symfony, and mod_php.

  • ChemDoodle. An HTML5-based library and API for drawing chemical molecular structures in both 2D and 3D. It looks powerful and is said to work across HTML5-capable browsers from all major vendors.

  • LimeJS. A JavaScript library for quickly building small touchscreen games. There are at least two demos available, and it sits comfortably in the broader family of game-oriented JS tools.

  • A JavaScript spell checker. A browser-side English spelling checker implemented in JS.

  • Pattern. This one is especially interesting. It is built for web mining and includes tools for pulling data from Google, Twitter, Wikipedia, web crawlers, and HTML pages, then analyzing text and visualizing the results. There are demos available if you want to see it in action.

  • Titanium Mobile. If you want one codebase to target both iPhone and Android, this cross-platform development tool is worth exploring. There is also a tutorial.

  • CSS3 buttons. A downloadable CSS3 library full of button styles—lots of them, and many are pretty slick.

Small tools

A few smaller utilities stand out too.

  • Web compatibility tables. If you need to check browser support for HTML5, CSS3, or SVG, this site provides compatibility charts for all major browsers.

  • qgrep. If plain old grep feels too slow, this is an alternative to try. It supports OSX, Linux, and Windows.

  • XKeymacs. For people with an Emacs fixation, this is a fun one. It brings Emacs-style key behavior into Windows, so you can go around using c-x c-c, c-x c-s, c-p, c-n, and the rest everywhere. Interesting is one word for it. Slightly unhinged might be another.

  • Sublime Text 2. Still in alpha at the time, but it already looks very promising, especially as a code viewer. It supports Windows, Linux, and OSX.

  • VS-Android. A project that lets you develop Android NDK C/C++ programs inside the Visual Studio 2010 IDE.

A few more things

  • Ranking of scripting languages. This page not only ranks scripting languages, but also compares them across a number of operations.

  • HTML5 3D demos. There are several HTML5 3D demos floating around—demo one, demo two, demo three, and demo four—and they are worth a quick look if you want to see what people are building in the browser.

  • Speaking of 3D on the web, Adobe’s Molehill APIs, with 3D GPU acceleration, are also worth checking out, along with an introductory article.

  • That fluid dynamics demo from before? Someone has now brought it to the iPhone and iPad.

That is all for now. Maybe not every link here will be useful, but there should be at least a few things in the pile that are fun to explore.