Pure CSS speech bubbles – Nicolas Gallagher
Pure CSS speech bubbles – Nicolas Gallagher. pure CSS speach bubbles using generated content & CSS3 by @necolas a beautiful demo and elegant solution!
Pure CSS speech bubbles – Nicolas Gallagher. pure CSS speach bubbles using generated content & CSS3 by @necolas a beautiful demo and elegant solution!
:nth-child tester. Simple yet fantasticly useful css3 checker for nth child expressions
has a plan. Will get @stephalicious to sew me a @natbat suit so I can infiltrate Clearleft with my awesome CSS skills! Must not tweet plan.
- Leeky
Today I ate loads of bangers and loads of mash at The Big Bang to celebrate Amy's viva.
grammar.coffee (via). The annotated grammar for CoffeeScript, a new language that compiles to JavaScript developed by DocumentCloud’s Jeremy Ashkenas. The linked page is generated using Jeremy’s Docco tool for literate programming, also written in CoffeeScript. CoffeeScript itself is implemented in CoffeeScript, using a bootstrap compiler originally written in Ruby.
Scott and Scurvy. Did you know that Scott’s 1911 expedition to the south pole was plagued by scurvy, despite the British navy having discovered an effective cure way back in the 18th century? A fascinating tale of how scientific advances can lead to surprising regressions.
Today we walked by the canal to our favourite pub for Sunday roast. It was a lovely sunny day.
Today I packed my bags for the ski trip and it made me sneeze and sneeze.
Announcing django-cachebot. The ORM caching space around Django is heating up. django-cachebot is used in production at mingle.com and takes a more low level approach to cache invalidation than Johnny Cache, enabling you to specifically mark the querysets you wish to cache and providing some advanced options for cache invalidation. Unfortunately it currently relies on a patch to Django core to enable its own manager.
Announcing that I am leaving Clearleft, going freelance then travelling the world with @simonw http://natbat.net/2010/Mar/5/new-adventures/
- Natalie
There is just under a week to go before I bid farewell to Clearleft on the 10th March. I have had a very happy and productive two and a half years working here, though it doesn't feel like it has been that long since I started.
Naturally I am sad to go, it has been great fun working and being part of a team of talented people. I've learned a lot and been very lucky to have had the opportunity to work on some pretty cool projects over the years, including WWF's panda.org, the Mozilla Addon's site and so many more.
I feel I have done some very good work during my time here, both for individual project builds, giving talks and workshops on CSS and CSS3, generally helping out with events such as dConstruct and Uxlondon. Also in introducing a systematic approach to web development—writing componentised maintainable CSS and HTML—which we now use for all of our projects.
It is always sad to leave: I really will miss my fellow Clearlefties. We have had lots of fun memories, many team outings, conferences, fridays at the pub, epic adventures at SXSW, in depth debates & discussions, general office banter, dressing up daft for Halloween etc. They have become more than just colleagues, they are good friends.
There are some exciting times for me on the horizon though, in addition to running the Brighton Marathon, working on some personal projects and getting married on June 5th to the lovely Simon Willison, I am also making myself available for freelance work. If you have any HTML / CSS / Javascript projects or need emergency cross browser CSS help—I'm your girl, feel free to drop me a line.
…and if that wasn't enough announcements for you: Simon and I will also be leaving England's green and pleasant land in mid June for an elongated honeymoon travelling the world in search of adventure, interesting food and funny animals. We will also be working as we go round. We don't have any fixed route or return date, but you can be sure there will follow a site that lets you track what we are up to as we journey through foreign lands :)
How To Be A Good Participant On A Panel: Disagree. When I’m on a panel, I always try to have lunch or dinner with the other panelists beforehand to figure out in advance what points we disagree on.
Today I tried on my ski gear and got even more excited about my upcoming ski trip.
Geospatial Indexing in MongoDB (via). New in version 1.3.3. Handles “order by distance from” queries using a geohash approach under the hood, automatically searching nearby grid squares until the correct number of results have been gathered. Bounding box search is planned for a future release.
Everyone in a particular demographic will now know that the BBC director general, Mark Thompson, has announced a plan to close two of the most Reithian of radio stations, 6Music and the Asian Network. If you're up in arms about these closures, you can still do something about it.
Kate Butler has an excellent eight-point plan. You don't have to complete all eight points: this is not a competition. More specifically, J Hunt has a basic pro forma letter and two email addresses you can send it to. I recommend you actually send it to both, as you won't get a reply from the "srconsultation" one.
In the spirit of not sending anything entirely pro forma, I've written my own as an open letter below (and of course emailed it to the relevant contacts). Feel free to rewrite for your own use.
Subject: Response to Mark Thompson's announcements - NO to closing 6Music and Asian Network
To whom it may concern,
I would like to address proposals announced on March 2 2010 by the BBC director general Mark Thompson. These suggest the closure of BBC 6Music and the BBC Asian Network, among many other changes.
I am a loyal supporter of the BBC and of the licence fee. I believe that the BBC's television, radio and multimedia outlet easily justifies the licence fee, and moreover that the two stations earmarked for closure in the proposals are exactly what the BBC is about and what make the BBC worth its fees.
Each station fulfils a remit that commercial broadcasting simply cannot and will not provide for. The stations cater for "sizeable minorities", which commercial media ignores in favour of massive homogeneities. 6Music's audience are committed, involved, interested listeners who get a lot out of the service, whereas a large commercial station (or even BBC1) simply does not have that audience buy-in. 6Music, the Asian Network and catering for other "sizeable minorities" constitute the most direct routes to the very heart of Reithian, socially active, life-changing public-service broadcasting. 6Music supports live music and niche genres, and provides an access to the BBC's archive of recordings, thus offering a service not just for listeners but also for the UK's arts and culture, for which no equivalent commercial alternative exists.
Having said that, I would certainly not recommend the closure of any other part of the BBC in the place of these stations: I am not writing to you to merely express a preference as to where the axe should fall (although I am myself an avid listener to 6Music.) In an ideal world I would rather there be no axe at all: through ringfenced experimentation and risk-taking the BBC has always fostered new talent and fulfilled social functions that again no commercial broadcaster would care about. Any closure at the BBC makes me, a BBC fan, unhappy.
Yet if cost-cutting is essential, then what's the point in cutting such vital, heartland services for the sake of some £7m and £21m respectively? Such sweeping cuts make for great soundbites, but when BBC1 has a budget of £1400m, and £600m is being brought back into media production by the closure of online services, then it would surely represent far less of a wrench for £30m of savings to come from that £2000m total - around one percent of that total! - rather than getting rid of 100% of the 6Music and the Asian Network channels.
If the BBC can work with its audiences of "sizeable minorities", rather than neglecting them when the time comes for cuts; if the return of £600m into programme-making can be visibly demonstrated to float 6Music, the Asian Network and even other digital channels; if the BBC Trust rejects the proposals to close these passionately loved stations; then it will find that the listeners to these stations will be active and reliable supporters of the BBC for years to come.
I therefore strongly urge the BBC Trust to reject these proposals, for the good of musicians, of the BBC and of the listening public.
Best regards,
J-P Stacey
Is johnny-cache for you?. “Using Johnny is really adopting a particular caching strategy. This strategy isn’t always a win; it can impact performance negatively”—but for a high percentage of Django sites there’s a very good chance it will be a net bonus.
Some People Can’t Read URLs. Commentary on the recent “facebook login” incident from Jono at Mozilla Labs. I’d guess that most people can’t read URLs, and it worries me more than any other aspect of today’s web. If you want to stay safe from phishing and other forms of online fraud you need at least a basic understanding of a bewildering array of technologies—URLs, paths, domains, subdomains, ports, DNS, SSL as well as fundamental concepts like browsers, web sites and web servers. Misunderstand any of those concepts and you’ll be an easy target for even the most basic phishing attempts. It almost makes me uncomfortable encouraging regular people to use the web because I know they’ll be at massive risk to online fraud.
Running Processes. I’ve been searching for a good solution to this problem (“run this program, and restart it if it falls over”) for years. I’m currently using god which works pretty well, but according to this article I should be learning upstart instead. It never ceases to amaze me how difficult this is, and how obtuse the tools are.
I’m not worried about guys like us. There will always be machines for us (powerful, complex, etc.). Why? Because if for some magical reason there wasn’t all of a sudden, we’re the type that would just make one.
Internet Explorer: Global Variables, and Stack Overflows. An extremely subtle IE bug—if your recursive JavaScript function is attached directly to the window (global) object, IE won’t let you call it recursively more than 12 times.
GeoPlanet Explorer. Chris Heilmann’s YQL powered explorer for the invaluable Yahoo! GeoPlanet / WhereOnEarth dataset. Every API deserves an explorer of some sort.
Today I watched the winter olympics and got excited about my upcoming ski trip.
jmoiron.net: Johnny Cache. The blog entry announcing Johnny Cache (“a drop-in caching library/framework for Django that will cache all of your querysets forever in a consistent and safe manner”) to the world.
Notes from a production MongoDB deployment. Notes from running MongoDB for 8 months in production, with 664 million documents spread across 72 GB master and slave servers located in two different data centers.
Node.js, redis, and resque (via). Paul Gross has been experimenting with Node.js proxies for allowing web applications to be upgraded without missing any requests. Here he places all incoming HTTP requests in a redis queue, then has his backend Rails servers consume requests from the queue and push the responses back on to a queue for Node to deliver. When the backend application is upgraded, requests remain in the queue and users see a few seconds of delay before their request is handled. It’s not production ready yet (POST requests aren’t handled, for example) but it’s a very interesting approach.
Johnny Cache. Clever twist on ORM-level caching for Django. Johnny Cache (great name) monkey-patches Django’s QuerySet classes and caches the result of every single SELECT query in memcached with an infinite expiry time. The cache key includes a “generation” ID for each dependent database table, and the generation is changed every single time a table is updated. For apps with infrequent writes, this strategy should work really well—but if a popular table is being updated constantly the cache will be all but useless. Impressively, the system is transaction-aware—cache entries created during a transaction are held in local memory and only pushed to memcached should the transaction complete successfully.
Unit Testing Achievements. A plugin for Python’s nose test runner that adds achievements—“Night Shift: Make a failing suite pass between 12am and 5am.”
ClearMaps: A Mapping Framework for Data Visualization. An open source library for map visualisations using ActionScript, with an Adobe AIR based encoding tool for translating data from shapefiles in to vector data suitable for use with the library.
kriszyp’s node-promise. Another elegant approach to managing asynchronous flows in Node, including running things both in parallel and serial.
Today I finally went out to town after weeks of staying in, and then got drenched cycling home in the rain.
Today I fantasized about working as a chef. I love food so much.
Django Advent: Scaling Django. Mike Malone’s advice on scaling Django applications, including taking advantage of new features in 1.2.
PiCloud. An interesting twist on cloud computing for Python. “import cloud; cloud.call(my_function, arguments)” serialises my_function and its arguments, pushes it up to one of their EC2 servers and hands you back a job ID which you can poll (or block on) for a response. They suggest using it for long running tasks such as web crawling or image processing.
Internet Explorer Cookie Internals (FAQ). Grr... IE 6, 7 and 8 don’t support the max-age cookie argument, forcing you to use an explicit expiry date instead. This appears to affect the cache busting cookie pattern, where you set a cookie to expire in 30 seconds for any user who posts content and use the presence of that cookie to skip caches and/or send their queries to a master instead of slave database. If you have to use expires, users with incorrect system clocks may get inconsistent results. Anyone know of a workaround?
Using Bash’s History Effectively. The HISTIGNORE environment variable is particularly useful, allowing you to suppress certain commands by specifying a pattern. This article has a tip for causing a command to be omitted from the history if you prefix it with a space.
Today the pigeons, crayfish, mussels, shrimps, squid, beef, vege box, etc groceries that I ordered on the internet on a shopping binge arrived.
“Do” it fast!. Tim Caswell’s Do library has been upgraded for compatibility with Node v0.1.30, and now has a clever Do.convert() method which wraps Node’s low-level APIs with the Do libraries “continuable” abstraction.
node-v0.1.30 (via). A very significant new release of Node.js: the Twisted/Dojo-style Promise abstraction has been removed entirely, causing backwards incompatible changes to a bunch of core APIs. This means the pseudo-blocking Promise.wait() method is gone too, making it even harder to accidentally block your event loop. Instead, user-level libraries are encouraged to add Promise-style abstractions. I’m pleased to see Node sticking to the low-level stuff.
Ryan Tomayko on Github’s development process. In the comments—a fascinating insight in to how GitHub’s “developers work on whatever is most interesting to them” process manages to achieve really good results.
So my official half marathon time is: 2hrs 40mins and 40seconds! 5952 out of 5989 & heres another soggy photo http://twitpic.com/14l2a3
- Natalie
Today I watched Blaise Aguera y Arcas talk about bing map on TED, and though I hate Microsoft, I was impressed.
jacobian’s django-deployment-workshop. Notes and resources from Jacob’s 3 hour Django deployment workshop at PyCon, including example configuration files for Apache2 + mod_wsgi, nginx, PostgreSQL and pgpool.
Making Facebook 2x Faster. Facebook have a system called BigPipe which allows them to progressively send their pages to the browser as the server-side processing completes to optimise client loading time. Anyone reverse engineered this yet to figure out how they actually do it?
Today I succumbed to my shopaholic itch and ordered too much grocery online.
Why @clearleft designers are required to be able to code well, but never touch a line of production HTML http://clagnut.com/blog/2315/

A fascinating post detailing the creation of a consistent visual identity of the BBC’s online presence. Also, worth reading is the response from Paul Robert Lloyd. The use of big clunky Verdana for headings seems to have been phased out – hurrah!