Archive 5.2.2010 - 28.2.2010

Dynamic Web Development with Seaside - those who want to get started with Seaside might find an approach here. Free online book (also available as a paid PDF or print-on-demand via Lulu) about a quite impressive web framework for Smalltalk. And since it now also runs with GNU Smalltalk, operating it as a headless server on your own root box is no longer a big problem.

Heroku | Ruby Cloud Platform as a Service - also quite interesting: a Ruby service that enables easy website hosting in Ruby within a cloud structure. In principle, something like Google App Engine, but with Ruby. The approach is quite interesting, you generate a base app and then pull it to your own computer with Git, change and update with Git. There are various addons and plugins that you can use, Rails is of course also supported. And since you keep your app as a normal Ruby app locally, you are also relatively independent of the provider and can switch to self-hosting if necessary.

inessential.com: On switching away from Core Data - scary read. Really - sure, ORMs are nice. And practical. But somehow it scares me when programmers like Brent Simmons (the NetNewswire guy) so openly demonstrate that they actually have no idea what they are doing. Just because you use an ORM to walk through lists of objects and edit individual objects and then wonder about poor performance? And only at the end of the optimization sessions ask the question whether an ORDB is actually the right way? Hello, are you still there? As soon as large amounts of data are involved, the question of mass data processing automatically arises, and if the ORM does not provide usable abstractions, then it is out ... (one reason why I like the Django-ORM, it cooperates well with handcrafted SQL and offers a lot of helper tools via introspection to create these own SQLs as model-abstract as possible). For me, the linked post is on a similar level as Guido van Rossum's "what do you actually use continuations for, I don't get it".

Johnny Cache v0.1 documentation - definitely try this out with a project at the company, as the model is quite powerful and I could elegantly solve some of the problems for which I currently have special solutions. It's also quite similar to my first approach to this problem (although I have now solved the biggest performance problems through redundant data storage and automatic updates to objects, also quite elegantly).

Kotka : Projects : Clojure : VimClojure - and anyone like me who is a VIM fan might be pleased with this Clojure integration. Many of the features already come close to the performance class of IDEs like Netbeans or Eclipse. (although the Clojure plugins for Eclipse and Netbeans also make a very good impression).

LinuxTuples - a Tuple-Space Server for Linux, written in C but with a Python API. I should take a closer look, could be interesting for distributed apps. Although I would prefer a Python-local implementation based on standard process communication tools to work better with multiprocessing in Python. For simple tools or web apps, it would be easier to fork some things directly from there and then communicate via TupleSpaces. But to start an extra server for that, it's not quite right either.

mmcgrana's ring at master - GitHub - nice small lib at the level of Python WSGI. So absolutely minimal HTTP bindings for Clojure with the possibility to then operate the whole thing via a whole range of different techniques. Particularly interesting for the cases where you don't want to be put into the corset of a finished framework like Compojure.

Open Wi-Fi 'outlawed' in Digital Economy Bill - ZDNet.co.uk - in the UK, free Wi-Fi could soon be a thing of the past - a point where we can only hope that it remains a purely British path. But I can imagine one or the other politician who would crave to implement the same in other countries or even across the EU. And hey, if this forces hotspot operations only into the hands of large providers, that's great, because then we also know where the next party donations will come from ...

PiCloud | Cloud Computing. Simplified. - very interesting service: trivial distribution of Python code (with access to C/C++ libraries for number crunching and other things, e.g. also image processing, even your own C/C++ libraries are possible) on a provider-managed EC2 grid. The programmer only writes his Python code, tests locally, if everything works well with small sets, upload base data, import, function call and wait until the results are there - payment is made according to usage time. Definitely keep an eye on it, in case you need to process larger amounts of data - this can indeed be cheaper than providing the necessary resources yourself.

rfc1437 / django-standalone / overview — bitbucket.org - As I often refer to Bitbucket, GitHub, or Google Code, here's a link to my own small package on Bitbucket: django-standalone. It was created because I often need an ORM for small scripts and tools, but I want to keep the hassle to a minimum - not set up an entire Django project, but simply define a few models in my script and initialize the DB via parameters and then use it. Preferably with sqlite3. This library makes it wonderfully easy, and I can finally cross one of my long-standing projects - "write a simple ORM for simple scripts myself" - off my to-do list.

World Record-Setting Kick to the Groin Raises Five Perplexing Questions - World Record - Gawker - I think removing yourself from the human gene pool by letting yourself be kicked and beaten in the jewels for years to set a record, receiving a kick with 22 mph speed and 1100 lbs of force there, would be worth a Darwin Award. And he could even pick it up himself.

Fiat lux » Extracting iPhone Backup Data with mobilesync-inspect - and another tool that is available for OS X and Windows for this purpose.

iphone-backup-decoder - Project Hosting on Google Code - the same again as a command-line script in Python. Possibly even more interesting for me than the GUI tool.

iPhone / iPod Touch Backup Extractor - since iPhone backups are binary files and a friend now has problems with a corrupted backup, I linked this tool as a precaution, with which you can extract files from potentially defective iPhone backups, as long as the basic structure of the sqlite files is still somewhat clean.

Menial » Base - and if you just want to quickly take a look into a SQLite database with a GUI tool, this shareware tool doesn't look so bad.

Bundestag: Arguments or Transparencies? - Members of parliament who protest against military operations by the Bundeswehr are excluded from the debate. A federal foreign minister who disparages Hartz IV recipients can, despite broad protests from all parties in the Bundestag, continue to repeat his nonsense. And we call the whole thing democracy.

dajaxproject.com - easy to use ajax library for django - maybe I should take a look at that, the current project might use quite a bit of Ajax and if you can reduce the amount of JavaScript that would be quite desirable.

PostgreSQL: News: 9.0 Alpha 4 Available Now - was previously called 8.5, so it is the version with streaming replication.

Squeryl — Introduction - I should also take a look at that, as I was not so enthusiastic about the previous persistence layers for Scala. And for initial experiments, I actually don't want to build a web application with Lift right away, but perhaps just rewrite a few tools that I have solved differently with Scala.

IronPython 2.0 and Jython 2.5 performance compared to Python 2.5 - word of warning: both Jython and IronPython are significantly (and I mean significantly significantly) slower than CPython. The overhead for Jython with very large data structures is eventually better than with CPython, but for normal use it doesn't look so great.

IronPython hammers CPython when not mutating class attributes - more information about the performance issue. Here related to IronPython - apparently class variables can be problematic in some cases, as the classes themselves change through them and thus JIT compiler information must be discarded (due to the rather static structure of the VM, both in the JVM and in the CLI, probably a very similar problem), which means the JIT compiler then has to rework everything and thus not only are performance advantages lost, but they can potentially even be counterproductive.

Polyglot - a really nice plugin for Chrome that translates random words into a configurable target language. Why? So that you can see new vocabulary from time to time while browsing and thus learn new vocabulary easily. I'm currently trying it with Russian and it's really a nice method - with the few words you have enough context of the sentence to deduce the word. This of course does not practice grammar or declensions and conjugations, but as a little vocabulary boost from time to time very useful.

bpython interpreter - definitely try this out at the company, at home this alternative Python shell made a really good impression. In some points better than ipython and that is already very good (but in my opinion too focused on its own features and away from the Python philosophy, while bpython seems more pythonic)

DreamPie: The Python shell you've always dreamed about! - another interesting alternative Python shell, this one as a GTK window. This opens up completely new possibilities, such as real popups as small graphical windows and direct graphical output. However, py-gtk for OS X is still rather shaky (like all GTK stuff currently, it's still alpha) and actually I prefer similar environments under OS X and Linux.

The New App Store Rules: No Swimsuits, No Skin, And No Innuendo - not that I need bikini models in apps, but one should keep an eye on what Apple is doing in terms of censorship. Yes, in this case, clear censorship, because in the iPhone app market, Apple is the central controller and massively uses this central function. And that means for users of these devices that they live in puritanical America, at least with their available apps. It's probably time to get more intensively involved with jailbreaking. And perhaps at the next contract renewal, not to go for the iPhone again, but to get something else, even if the alternatives look worse and have a significantly worse usability. With Apple's current efforts, I don't want to find out at some point that not only my apps are censored (where even "offensive words" in dictionaries have caused trouble - and one of my current main applications are Russian dictionaries), but also Safari might start censoring my surfing behavior. The Google phones are not an alternative, as their operator is a professional data octopus and is also based in the USA. Nokia may be economically bad since Bochum, but it now has the most open mobile platform with the N900.

5 Animals That Can Do Amazing Things ... With Their Penises | Cracked.com - what evolution comes up with to ensure the survival of a species ...

ZODB - a native object database for Python — ZODB v3.9.0 documentation - because I always forget: ZODB is also available standalone, without the Zope monster on top. And with direct access from Python, ZODB offers some very interesting features. Still one of the most developed real object databases for Python (but unfortunately still no general query language for the database to handle object sets more efficiently).

Foto verboten - we can still hope that the British way will not prevail in the EU. However, the EU has already adopted some completely stupid ideas in the past. For amateur photographers, who usually do not have their photos registered with a recognized agency (we can assume that photo agencies will continue to ensure that their own rights are protected), this would be quite catastrophic.

The dark side of Dubai - a somewhat different story about Dubai. If you strip away all the ostentatious buildings, you're left with a dictatorship based on wage slavery and deception. And now the place belongs to Abu Dhabi.

django-piston - I should also take a closer look at this, as it is supposed to facilitate the building of Web APIs with Django. And some of my company projects could benefit from it.

Fuck you, Google « Fugitivus - why Google really screwed up with Buzz. This "automatically follow all regular contacts" is pretty much the dumbest idea ever, especially with their idea of opt-out-not-possible. I've been saying this for a while, just because they have "don't be evil" as a motto doesn't mean they also have "don't be stupid". It's hard to get much dumber than the introduction of Buzz.

Murky - a nice small GUI client for Mercurial for OS X. It already looks quite useful, you can easily navigate through the history of a project, display differences, etc. - of course, all of this can also be done with the shell, but sometimes it's just simpler to work with a GUI.

Tomboy : Simple note taking - because I looked it up again: it now also works on OS X. However, it is still extremely buggy (scrolling artifacts, no standard key bindings, you have to blindly fiddle with the bottom right corner to resize the window, the handle is missing). It is based on rather fresh libraries that are not yet really up to the best Mac-UI standard. But to access notes from Linux Tomboy and sync via Dropbox, it is sufficient.

Front Range Pythoneering: Realizing Jython 2.5 - it's written further down there. Jython has a GIL as a funny Easter egg in the future module (which makes future language features available as "Beta"). So no GIL, just a joke. I would have been quite surprised otherwise.

Interactive Python GIL Visualization [dabeaz] - very interesting analysis of the effects of the GIL in multithreaded Python projects. Could Jython (no GIL, threading based on Java standards) be a help here?

maven-jython-plugin - Maven Jython Plugin - hmm, the Jython support for Maven is quite outdated - the artifact only targets 2.2.1 and the plugin only goes up to 2.2.1. It seems like an update is urgently needed.

Protests against G8: Whistling concert for Ludwig Spaenle - "While students do have the right to freedom of expression and demonstration, this should happen during non-teaching hours." - exactly, protest where no one cares and no one notices. That's how politicians imagine democracy.

Security Researchers: Paying with Credit Card and PIN Insecure - Golem.de - but apparently paying with EC cards is absolutely secure.

Bill Clementson's Blog: Elephant and Rucksack - Comparison of two CL Open Source Prevalence packages - because I'm also interested in Common Lisp again at the moment. Elephant and Rucksack are probably the more interesting persistence solutions for Common Lisp right now. Unfortunately, Rucksack is not asdf-install-compatible, so a lot of manual work is required.

Presenting django-devserver, a better runserver. - interesting idea, an extension of runserver that logs SQL statements and provides cache information. This could be quite interesting for my current Django project, as I sometimes produce somewhat more complex SQL there. (And yes, I'm tinkering with Django again, maybe something publishable will come out of it - but it's primarily a work project).

Jesus, Kirk and Vinny - about stuff like that.

Schneier on Security: All Subversive Organizations Now Must Register in South Carolina - it's reassuring that, with all the nonsense going on here, the USA can still up the ante. Could all subversive elements in South Carolina please report? It only costs $5 ...

Twitpic / Astro_Soichi - twitter from space ... (the photographer is sitting in the ISS)

Persistence.js: An Asynchronous Javascript ORM for HTML5/Gears « I am Zef - very interesting, an Object-Relational-Mapper in JavaScript that maps objects to HTML5 databases. This could be very interesting for offline iPhone web applications, because raw database programming (raw database, not naked programmer) is not always fun.

Report: Post plans DE-Mail for 20 cents - when I read such nonsense, I really wonder what kind of weed the clowns at Post and 1&1 are smoking. The weed can't be legal if it produces such absurd delusions. Quite apart from the fact that "secure online communication" operated by such shops is a farce anyway.

Simtec Electronics Entropy Key - if you ever need real randomness.

Faster or Lazier Pagination - interesting approach, simply not to determine the amount of sentences, but instead to assume a number of pages and update this when accessing later pages. A bit similar to some websites that only offer a section of the page list as navigation - for this you don't need to know how many pages there really are. Google also cheats by limiting the number of pages to a maximum. For large amounts of data with slow count(*) certainly very useful and possibly you could also combine this with cached maximum page numbers for different queries, so that the next time the assumption about the amount is already more precise.

Please read: Security Issue on AMO « Mozilla Add-ons Blog - it was only a matter of time before the first Firefox extensions with trojans were distributed and slipped through Mozilla's review. Extensions are exactly that - code snippets that run in the same security context as Firefox itself. I believe that in the long run, we need a completely different architecture with much stronger sandboxing for applications and extensions if we want to get this under control.

Using ctags in Vim - amix.dk - ctags enables navigation in larger sources and entire projects based on the definition structure. Under Ubuntu, you can easily install the taglist plugin with vim-addons and then use it extensively. Pretty genius.

Vim 7: Turning completion on - amix.dk - after having dealt with IDEs for a while, but somehow I have to realize I am not really IDE-compatible, VIM can also do symbol completion - and also for Python. Quite easy to set up and quite practical for accessing system functions.