A convenient hack I’ve been using for the past few years is to leverage| bob.ippoli.to
I recently stumbled upon exercism.io. It’s an open| bob.ippoli.to
This is the continuation to Why I made CodeCosmos and How I built CodeCosmos.| bob.ippoli.to
This is the continuation to Why I made CodeCosmos. If you’re interested| bob.ippoli.to
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.| bob.ippoli.to
Coursera is really fantastic. Like many other| bob.ippoli.to
I’ve been having a lot of fun learning Haskell these past few months, but| bob.ippoli.to
simplejson| bob.ippoli.to
I no longer work at Facebook. I tried it for four months, but I just couldn’t| bob.ippoli.to
It's been a while since I've updated this blog. Life intervened. I| bob.ippoli.to
Cross-posted from the Mochi Labs blog: statebox, an eventually consistent data model for Erlang (and Riak).| bob.ippoli.to
Playing with PyPy| bob.ippoli.to
Sadly there’s no web standard that I could find to determine when a tab| bob.ippoli.to
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.| bob.ippoli.to
There has been a recent and interesting set of discussions on python-dev| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
I'm getting increasingly lazy about updating my blog these days, probably best to follow me on twitter: http://twitter.com/etrepum| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
bob.ippoli.to| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
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 ;)| bob.ippoli.to
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).| bob.ippoli.to
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.| bob.ippoli.to
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 ;)| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
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, which isn't really worth any price given that they can't keep it fully operational. Yesterday was the...| bob.ippoli.to
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.| bob.ippoli.to
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.| bob.ippoli.to
# 08 March 2008| bob.ippoli.to
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.| bob.ippoli.to
The float printing options that ship with Erlang all suck. You either don't have sufficient precision, or you have an extremely verbose representation:| bob.ippoli.to
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.| bob.ippoli.to
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!| bob.ippoli.to
If you want to play with the examples, go to CEAN and download "Erlang/OTP Full (Standard)" at the bottom for you version of Mac OS X and follow the "How do I install CEAN to /usr/local/bin" FAQ entry. Alternatively, if you want to wait longer, you could use MacPorts to download and compile it. Once you've got that set up just run erl from the examples directory in the slides download and it should all work.| bob.ippoli.to
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.| bob.ippoli.to
Aral Balkan has recently released SWX, a new data exchange format for Flash.| bob.ippoli.to
bob.ippoli.to| bob.ippoli.to
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 support for encoding unicode code points outside the BMP to UTF-16 surrogate code pairs (specified by the Strings section of RFC 4627).| bob.ippoli.to
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.| bob.ippoli.to
Erlang ships with a quite nice Erlang mode for Emacs. Editing Erlang code is actually the only thing I ever use Emacs for.| bob.ippoli.to
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 Rails hype train a few months earlier than any other publisher with a 70% finished beta PDF plus a...| bob.ippoli.to
simplejson 1.6 is a minor update that improves str support for encoding. Previous versions of simplejson integrated strings directly into the output stream, this version ensures they're of a particular encoding (default is UTF-8) so that the output stream is valid. See the documentation for more information.| bob.ippoli.to
Jameson and I did an interview with Irina and Eddie from PodTech's LunchMeet yesterday at our office. Twenty minutes of video podcasty goodness right here:| bob.ippoli.to
simplejson 1.5 is a major update that provides better Python 2.5 and Windows compatibility, and two new features that control encoding (indent for pretty-printing, and separators for generating optimally compact JSON). See the documentation for more information.| bob.ippoli.to
Food is cheap in Taipei and Shanghai| bob.ippoli.to
We've been looking at solutions for hosting and serving large amounts of (small) static content to a global audience and are currently in the process of evaluating all of the CDNs out there.| bob.ippoli.to
MochiAds is finally out the door! There's a pretty good summary of what we're doing on TechCrunch.| bob.ippoli.to
Part 1 - JavaScript:A general overview of JavaScript and AJAXPart 2 - MochiKit:An overview of what MochiKit is and why you'd want to use it. Lots of pointers to cool features such as DOM and Signal.Part 3 - Dojo:Covers a bunch of the great functionality that Dojo has that isn't available anywhere else such as widgets, layout, animation, and offline storage.Part 4 - Case Studies:A few very short case studies of some JavaScript web applications.| bob.ippoli.to
I was benchmarking egeoip today, which is my from-scratch Erlang geolocation library. It uses the MaxMind GeoLite City database, which has implementations in a bunch of other languages so it's great to compare with. The results were rather surprising to me, because I hadn't previously done any benchmarking of Erlang performance.| bob.ippoli.to
Since the svnsync tool in Subversion 1.4 still lacks documentation, here's a quick example to get you started with it:| bob.ippoli.to
A few weeks ago in Reverse Proxy Roundup I was evaluating reverse HTTP proxy solutions. At the time I had settled on Pound, but frankly it wasn't good enough for the load I expected it to handle. Additionally, spawning so many threads used far more RAM and CPU than it should've.| bob.ippoli.to
The Erlang kernel has an undocumented module for dealing with ipv4 and ipv6 internet addresses: inet_parse. I ran across it from a brief mention in the inet documentation while looking for a function to convert an Erlang ip_address() tuple to a string().| bob.ippoli.to
The first line of defense in scaling out a web solution is a load balancer, often implemented as a HTTP reverse proxy. In my particular situation, I wanted to be able to load balance based on HTTP headers (Host is a must, URL is a bonus) on a FreeBSD platform.| bob.ippoli.to
They were built with a slightly modified s5 (so that I could toggle an interactive mode with ctrl-i to demonstrate MochiKit inline without advancing the slides), using the docutils rst2s5 tool.| bob.ippoli.to
After over three years with a 1ghz 15" titanium PowerBook I've finally upgraded to a 2ghz dual core 15" MacBook Pro! Compared to my old laptop, this machine is absolutely amazing. I've been waiting a LONG time for:| bob.ippoli.to
This is a bug fix release of MochiKit 1.3, which includes some minor documentation improvements and the following important fixes:| bob.ippoli.to
MochiKit 1.3 "warp zone" is now available [download, release announcement].| bob.ippoli.to
For all of you ajaxians out there, The Ajax Experience is coming up next month! From the roster it looks like it's going to be quite the conference. There are representatives speaking for quite a few of the ajax-related frameworks and libraries (including my Intro to MochiKit), as well as the people responsible for JavaScript, JSON, and just about everything else a "web 2.0" developer should be intimately familiar with.| bob.ippoli.to
It's been a pretty long haul getting Python to do the right thing on Mac OS X with regard to Universal Binaries. The dust is settling, and it's about time to start publicizing the results.| bob.ippoli.to
simplejson 1.3 is a minor update that provides a new feature: an object_hook parameter to the decoder. The optional object_hook function is called upon decoding of any JSON object literal, and its return value is used instead of the dict that would normally be used. This can be used to efficiently implement features such as JSON-RPC class hinting, or other custom decodings of JSON. See the documentation for more information.| bob.ippoli.to
I haven't bothered to mention it yet because I'm not speaking this year, but I'm currently at PyCon 2006. I've been really busy lately and I wasn't entirely sure I was going to make it out this year until late December, but I'm definitely glad that I did.| bob.ippoli.to
This release is the calm before the storm, it contains mostly bug fixes and minor functionality improvements -- but big things are coming soon. We have a signal/slot dispatch mechanism, a script.aculo.us port, a new testing system, non-browser compatibility (SpiderMonkey, KJS, SpiderMonkey, Rhino) and a normalized event object all in the works which will be hitting the trunk soon. For more information about the new features check out the mailing list and the trac instance.| bob.ippoli.to
A quick and dirty way to use setuptools commands (such as develop, bdist_egg, etc.) given a standard distutils setup.py file is to just add an "import setuptools" statement to the top of the script. This can also be done without modifying the setup.py as such:| bob.ippoli.to
For those of you just starting out with setuptools, here's a quick way to install it. After running this, you'll have access to easy_install for all of your other installation needs:| bob.ippoli.to
We at Mochi Media have been working on Macromedia Flash related stuff a lot lately (especially MochiBot). One such thing is a soon-to-be-released (but available from svn) open source library called flashticle.| bob.ippoli.to
Our company, Mochi Media LLC, is in need of a web developer to put together a content portal site (ideally with the TurboGears stack) on a contract basis. Being located in the San Francisco bay area is a huge bonus, as is working knowledge of Macromedia Flash and JavaScript.| bob.ippoli.to
simplejson is a simple, fast, complete, correct and extensible JSON encoder/decoder for Python 2.3+. It is pure Python code with no dependencies. It's now the recommended module for Python use by JSON.org (replacing json-py).| bob.ippoli.to
simple_json is a simple, fast, complete, correct and extensible JSON encoder/decoder for Python 2.3+. It's pure Python code with no dependencies.| bob.ippoli.to
The browser security model dictates that XMLHttpRequest, frames, etc. must have the same domain in order to communicate. That's not a terrible idea, for security reasons, but it sure does make distributed (service oriented, mash-up, whatever it's called this week) web development suck.| bob.ippoli.to
The JavaScript engine in Firefox has some really asinine warnings, here's the one that annoys me most:| bob.ippoli.to
I just put together the first MochiKit screencast! Check it out: MochiKit_Intro-1.mov [13:24 23M H.264 AAC QuickTime 640x480] (raw transcript, archive.org entry). The screencast is confirmed playable with QuickTime 7 and VLC 0.8.2.| bob.ippoli.to
MochiKit 1.1 is now available [download]. This release contains a bunch of bug fixes, performance enhancements, cross-referenced and bookmarkable documentation, and some convenient new APIs.| bob.ippoli.to
Now the documentation is cross-referenced rather nicely and it should be relatively easy to scrape out some metadata, perhaps for use by the interpreter, making a function index, search, etc.| bob.ippoli.to
I've been putting in a lot of time into MochiKit lately getting it ready for this release: 1.0 [download]. This version number carries a certain connotation, but honestly MochiKit's first release was beyond 1.0 quality compared to the rest of what's out there in this space. It's stable, and we just tagged the latest MochiBot release with what's currently in there (which was a couple checkins before 1.0).| bob.ippoli.to
xattr is a Python wrapper for the extended attributes APIs available in Darwin 8.0+ (Mac OS X 10.4) and Linux 2.6+. 0.2 added Linux compatibility, and API compatibility with the GPL pyxattr module. Unlike pyxattr, xattr supports both Darwin and Linux, has a dict-like API, and it is MIT licensed.| bob.ippoli.to
MochiKit 0.90 has been released! This release includes a new feature, some bug fixes.| bob.ippoli.to
When using Apache's mod_proxy in a reverse proxying scenario, usually you'll want to take a look at the (seemingly undocumented) X-Forwarded-For header. This header contains whatever the client sent for X-Forwarded-For (if anything), plus the remote IP address of the client.| bob.ippoli.to
TurboGears, "the rapid web development megaframework you've been looking for", has just been released. It's the first web framework (for any language) that includes MochiKit in its war chest. TurboGears looks cool because it leverages a lot of very good existing software and wraps it up in a very usable manner. It does not have NIH syndrome. It has excellent documentation and a very nice 20 minute wiki tutorial that covers the whole stack (all the way up to "AJAX" with MochiKit!).| bob.ippoli.to
Tagalag, by John Wehr, has recently opened its doors. It is a contact manager that allows you to assign tags to email addresses and view tags that have been assigned to you. John is a close personal friend of mine, and he helped us out a bit with MochiBot and MochiKit this summer. Tagalag is cool stuff, and it's free, so go check it out!| bob.ippoli.to
I was taking a look at the AjaxLibraries section of the OSAFoundation wiki, because mochikit.com has been getting a lot of referrals from there. There's a bit of misinformation in the cons section, which I'll clarify in this post:| bob.ippoli.to
For those not watching the entire blogosphere, here's two pretty good articles/posts about MochiKit that have come up recently:| bob.ippoli.to
The OSCON 2005 PostgreSQL Presentations are up, but a bunch of them are in OpenOffice format. I went through the pain of installing OpenOffice to convert them to PDF. For completeness, I have also included the presentations that were already available as PDF.| bob.ippoli.to
/usr/ports/databases/postgresql-contrib comes with the very useful (until 8.1, anyway) pg_autovacuum daemon, but no rc script. Here's one I whipped up:| bob.ippoli.to
We're currently experimenting with various optimization techniques for our databases using PostgreSQL's features, and we've become quite interested in the Table Partitioning in PostgreSQL 8.1. Bizgres has this feature now (amongst others that will likely benefit our app) in its 0.7 release, so I decided to give it a whirl.| bob.ippoli.to
It sucks if your recent previous experience is with more capable SQL databases. I actually learned SQL using MySQL back in 1997 or whatever, but it was| bob.ippoli.to
We've been using MySQL for MochiBot for a while. It worked OK, until this week.| bob.ippoli.to
MochiKit 0.80 has been released! This release includes a new example, a bunch of new features, and some bug fixes.| bob.ippoli.to
While the Flash 8 runtime is still in public beta, quite a bit about its new features have already been discovered by reverse engineering. One "feature" I haven't heard much about is the new "security" model.| bob.ippoli.to
MochiKit 0.70 has been released! This release includes a new example, a bunch of new features, a minor API change, and some bug fixes.| bob.ippoli.to
I went ahead and created a mailing list for development of and with MochiKit: Google Groups: MochiKit. No public Trac instance yet, but we're planning to have one soon.| bob.ippoli.to
MochiKit 0.50 has just been released (download here)! In addition to everything that was in SVN yesterday, the documentation has been proofread a bit and Dojo Toolkit package system compatibility was added.| bob.ippoli.to
I’m pleased to announce that OSTIF recently sponsored a| bob.ippoli.to