I’m pleased to announce that OSTIF recently sponsored a security audit of simplejson, performed by X41 D-Sec . The release of simplejson v3.9.1 includes fixes for the potential security issues discovered in this audit, as well as a number of security hardening measures it recommended. Many open source projects such as simplejson are developed by volunteers without funding, sponsorship, or…
A convenient hack I’ve been using for the past few years is to leverage web development tools for desktop publishing. Maybe there’s some expensive and/or clunky software that can do these sorts of tasks well… but nothing I’ve found does a great job when you have to create a template that’s rendered in a few different ways from data. I’ve done this sort of thing a handful of times recently for…
I recently stumbled upon exercism.io . It’s an open source collaborative programming practice site by Katrina Owen of JumpstartLab that grew out of the daily warmup exercises for their gSchool students ( Introducing exercism.io ). The problems are generally simple, where solutions are fewer than 100 lines of code, usually around 20-30. Unlike the typical Euler problem , you won’t need to rely on…
This is the continuation to Why I made CodeCosmos and How I built CodeCosmos . If you’re interested in why I bothered to do this, or the technical details of the app, start there. This post is about my experience using CodeCosmos to teach an intro coding class. Prologue Monday , Tuesday , Wednesday , Thursday , Friday Epilogue Footnotes Prologue It does not suffice to hone your own intellect (that…
This is the continuation to Why I made CodeCosmos . If you’re interested in why I bothered to do this in the first place, start there. This post is just about the software itself, there’s more about how I used it to teach a class in Teaching with CodeCosmos . TL;DR : this is the open source “stack” I used to build the first version of CodeCosmos. I’ve left out a few things that are in the code but…
I never really thought much about my career until recently. From my first internship at Bethesda Softworks in 1997 to my short tenure at Facebook in 2012 I basically just followed my interests and made changes whenever I was no longer passionate about what I was doing. This optimization strategy served me very well, but I ended up at a local maxima. I’m very fortunate to have seen such success…
Coursera is really fantastic. Like many other entrepreneurs, I dropped out of college to work. Before Coursera, I had never taken a real Computer Science course. I’ve read some of the Computer Science classics over the years out of general and practical interest, but I didn’t take the time to do the exercises. I’m not sure how sustainable it is for Coursera and the universities that participate to…
I’ve been having a lot of fun learning Haskell these past few months, but getting started isn’t quite as straight-forward as it could be. I had the good fortune to work at the right place at the right time and was able to take Bryan O’Sullivan’s Haskell class at Facebook, but it’s definitely possible to get started on your own. While you can play a bit with Haskell at Try Haskell you’ll eventually…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.5+ and Python 3.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 3 came out just a few weeks ago. Hard to believe that I released the first version in December 2005, over 7 years ago! Python sure has changed a…
I no longer work at Facebook. I tried it for four months, but I just couldn’t find anything there that made it worth two hours on the road to spend another eight hours at a desk. I’ve been spoiled with a walk/bike commute for too long to go back to driving, and I’m not at all interested in moving to the suburbs. Other than the commute, the only part I didn’t care for was that they expected to have…
It's been a while since I've updated this blog. Life intervened. I became annoyed with the blogging platform. I lost motivation. Twitter was a good enough outlet. The excuses aren't interesting, so I'll stop. bob.ippoli.to A few months ago I decided it was time to rebrand. The domain bob.pythonmac.org and the title from __future__ import * reflected one thing I was very interested in nearly a…
Cross-posted from the Mochi Labs blog : statebox, an eventually consistent data model for Erlang (and Riak) . A few weeks ago when I was on call at work I was chasing down a bug in friendwad [1] and I realized that we had made a big mistake. The data model was broken, it could only work with transactions but we were using Riak . The original prototype was built with Mnesia, which would've been…
I've been following the PyPy project since I first heard of it in 2003 or so. The concept behind it is fascinating; it's a Python interpreter written in (a subset of) Python. It's actually a lot more than that because the language front-ends (e.g. Python) are quite separate from the backends (e.g. C, JVM, CLI, Python). This makes it a unique platform for language research because coding Python is…
Sadly there’s no web standard that I could find to determine when a tab becomes visible. My use case was to delay loading of Flash content until the tab is visible for the first time. Safari seems to do this by default, but none of the other browsers do. Chrome is the absolute worst offender here, it does not fire window.onmouseover until the mouse has been moved over the page and it does not fire…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.5+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.1.1 is a minor update with several bug-fixes: Change how setup.py imports ez_setup.py to try and workaround old versions of setuptools.…
There has been a recent and interesting set of discussions on python-dev (Decimal <-> float comparisons) for what the best behavior for numeric type interoperability would be. The most prominent “mistake” in the current implementation is that certain float and int/long values compare equal, and certain Decimal and int/long values compare equal, but all float and Decimal comparison operations raise…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.5+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.1.0 is a major update with several new features and bug-fixes: Decimal serialization officially supported for encoding with use_decimal=True. For encoding…
I gave a talk at PyCon 2010 in Atlanta last month called Analysis: The Other Kind of Testing ( video ). It’s a very simple overview of techniques such as split testing (AB testing) and a call to action to improve django-lean . Atlanta was a fantastic location for PyCon 2010, and I look forward to returning next year. Hopefully if I give another talk I’ll be able to put a little more time into it…
I'm getting increasingly lazy about updating my blog these days, probably best to follow me on twitter: http://twitter.com/etrepum Anyway, I gave a talk at PyCon 2009 in Rosemont ("Chicago") last week called Drop ACID and think about data . Basically it is a survey of some of the various kinds of non-traditional database technologies I've been looking at the past few years. Notable technologies…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.4+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.9 is a major bug-fix update: Adds cyclic GC to the Encoder and Scanner speedups, which could've caused uncollectible cycles in some cases when using custom…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.4+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.8 is a minor bug-fix update: Documentation fixes Fixes encoding True and False as keys Fixes checking for True and False by identity for several parameters
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.4+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.7 is a minor bug-fix update: Documentation fixes C extension now always returns unicode strings when the input string is unicode, even for empty strings
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.4+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.6 is a minor bug-fix update: Windows build fixes
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.5 is a minor bug-fix update: Fixes a segfault in the C extension when using check_circular=False and encoding an invalid document
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.4 is a minor bug-fix update: Fixes a parsing error in the C extension when the JSON document is (only) a floating point number. It would consume one too few…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.3 is an important bug-fix update : Fixes reference leaks in the encoding speedups (sorry about that!) Fixes doctest suite for Python 2.6 More optimizations…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.2 is a minor update: Fixes MSVC2003 build regression Fixes Python 2.4 compatibility in _speedups.c
I don't often post about open jobs at Mochi Media on my blog, but it seems that most of the awesome people we have here found out about Mochi Media from me so I might as well ;) Web development at Mochi Media happens primarily in Python and Pylons with Genshi templates. We're currently using mostly MochiKit for the JavaScript heavy lifting and we talk to all of our backend services (which are…
Python 2.6 was released yesterday, which has tons of cool new features including a new json library and a new multiprocessing library. The json library is basically simplejson (from a few months ago) minus the Python 2.4/2.5 support and refactored to take advantage of the latest future-compatible features (such as the new str.format method instead of using % format interpolation). The only…
simplejson ( documentation ) is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 2.0.1 is a minor update: Fixes long encoding regression introduced in 2.0.0 Fixes MinGW build regression introduced in 2.0.0 I didn't manage to do a simplejson…
Slides from my Ad Serving in Erlang talk at CUFP 2008 are available here: http://undefined.org/cufp2008/ I had a great time at ICFP and CUFP and it was really inspiring to see what other people are doing with functional programming. I look forward to attending in the future! I think I'll have to write an app in Haskell first though, so I can understand more of the ICFP talks ;) If you're…
simplejson is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies, but features an optional C extension for speed-ups. simplejson 1.9.3 is a minor update: Decoding is significantly faster (for our internal benchmarks) Misc. bug fixes
simplejson is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies. simplejson 1.9 is a minor update: Rewrote test suite with unittest and doctest (no more nosetest dependency) Better PEP 7 and PEP 8 source compliance Removed simplejson.jsonfilter demo module Misc. bug fixes There is one backwards…
I had the privilege last night of going to Google's Campfire One where the Google App Engine was launched, which is basically a service that I've been secretly hoping that Google would release for the past three years. App Engine is going to change everything -- as soon as they come up with a pricing model, anyway. I'm sure whatever it is will be more than competitive with Amazon's offerings,…
simplejson is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies. simplejson 1.8.1 is a major update: Optional C extension for accelerating the decoding of JSON strings Command line interface for pretty-printing JSON (via python -msimplejson ) Decoding of integers and floats is now extensible (e.g. to use…
So it seems that I made the wrong decision for our uplink at Mochi Media. We have a gigabit line to Cogent at 365 Main. They've been mostly good so far (and cheap), but their recent spat with Telia has cut us off to parts of Europe (at least Sweden and Denmark). Not cool. Anyone have any recommendations on other providers we should talk to? I don't want us to be dependent on Cogent for a minute…
The video of the Exploring Erlang talk I gave at C4[1] last August is up on the interwebs! It only took seven months :) Video: http://rentzsch.com/c4/c41VideosAvailable Slides and source: http://bob.pythonmac.org/archives/2007/08/11/exploring-erlang-c41/
A bit over a week ago we moved a slightly modified version of our project skeleton into the open source mochiweb repository, which gets you a start shell script, a skeleton application following (most of) the OTP paradigms, a Makefile, and a web server that serves static files out of priv/www . The first thing you have to do is make sure mochiweb is built: $ cd ~/src/mochiweb $ make (cd src;make)…
The float printing options that ship with Erlang all suck. You either don't have sufficient precision, or you have an extremely verbose representation: 1> io:format("~w ~.18g ~g ~s~n", [0.1234567, 0.1234567, 0.1234567, float_to_list(0.1234567)]). 0.123457 0.123456700000000003 0.123457 1.23456700000000002548e-01 2> io:format("~w ~.18g ~g ~s~n", [0.1, 0.1, 0.1, float_to_list(0.1)]). 0.100000…
mochiweb is finally well on its way to becoming a proper open source project, thanks to Matthew Dempsky. We've got a mochiweb project on google code and a mochiweb group on google groups. Similarly interesting is that iserve is now turning into something more useful. iserve and mochiweb are pretty much the same thing under the hood, but mochiweb exposes a different API (which I find to be nicer,…
It's hard to believe that almost a year has gone by since we launched the first private beta of MochiAds , but we just relaunched the site last night and the doors are wide open now! Every user of MochiBot already has an account via our MochiPass single sign-on, and anyone else can sign up and get in instantly. You can start making money with your Flash games today ! It's been quite a ride so far…
Slides from my Exploring Erlang talk today at C4[1] are available here: http://undefined.org/c4-1/ Yes, it is definitely caturday . For those of you interested in learning more about Erlang , I highly recommend buying Joe Armstrong 's Programming Erlang and/or read his 2003 ph.d thesis, which is kinda similar in content to his book but is more technical and is freely available: Making Reliable…
Recently, Fortify Software has claimed that there is a pervasive and critical vulnerability in Web 2.0 with their JavaScript Hijacking paper. The way they wrote the paper is extremely misleading and was likely constructed this way on purpose to garner press and business for their company. The first egregious dishonesty in their paper is that it analyzes client-side Ajax frameworks. This is not…
Aral Balkan has recently released SWX , a new data exchange format for Flash. In his current implementation it's really two standards: A JSON-ish format based on PHP (bad idea) and a particular layout of SWF bytecode on the receiving end (good idea). Creating another JSON-like format is stupid. I really don't know why he did that. There are plenty of fast parsers for JSON in PHP, which are almost…
simplejson is a simple, fast, complete, correct and extensible JSON ( RFC 4627 ) encoder/decoder for Python 2.3+. It is pure Python code with no dependencies. simplejson 1.7 is a minor update that improves encoding performance with an optional C extension to speed up str/unicode encoding (by 10-150x or so), which yields an overall speed boost of 2x+ (JSON is string-heavy). Additionally 1.7 adds…
In the comments of my post on Erlang Mode for Emacs Tobbe pointed me at the new Distel repository for Distel . I had originally tried to install Distel last year when I began with Erlang but it didn't work. It works now! Here's the deal. Check out Distel . In my case I'm going to check it out to /Users/bob/src/distel : $ cd /Users/bob/src $ svn co http://distel.googlecode.com/svn/trunk distel…
Erlang ships with a quite nice Erlang mode for Emacs . Editing Erlang code is actually the only thing I ever use Emacs for. Setting it up is only slightly painful. For a default R11B-3 installation your .emacs will look like this: (setq load-path (cons "/usr/local/lib/erlang/lib/tools-2.5.3/emacs" load-path)) (setq erlang-root-dir "/usr/local/lib/erlang") (setq exec-path (cons…
Erlang finally has a book out in print again (almost): Programming Erlang , written by Joe Armstrong . The best part of the story is that the publisher is allowing a combo purchase of a beta PDF plus the print book when it's available. How cool is that? I think this model makes a lot of sense with the speed that technologies move these days. Imagine how much they could have made riding the Ruby on…