open source Open Source Subway Map If you don't actually want to read this whole post (no shame at all) the tl;dr is that I'm going to try using a GitHub project to organize and hold myself accountable for open source maintenance. Mental health is a weird thing, sometimes. Like, oh I don't know, everyone,
technical What is "Tech Depreciation?" As soon as you drive that software off the lot, its value will start going down. "Tech debt" is a well-known and useful metaphor, but I've found it doesn't describe the whole picture. Technical debt is a choice, a trade-off—sometimes made well—that can be paid down. It describes
Code Open Source Update: Waffle I just pushed version 0.11 of Waffle [https://pypi.python.org/pypi/django-waffle/0.11], the feature flipper for Django [https://www.djangoproject.com/]. It contains a number of code and documentation fixes [https://github.com/jsocol/django-waffle/compare/v0.10.1...v0.11] which you can also see
bleach Open Source Update: Bleach As of today, I transferred ownership of Bleach [https://github.com/mozilla/bleach] to the Mozilla organization, and the Mozilla WebDev team, in particular Will Kahn-Greene [http://bluesock.org/~willkg/] and Jannis Leidel [https://twitter.com/jezdez/], are taking over maintenance of it. Huge thanks to Will, Jannis and Chris
Code Bounties and Tips Last week [https://coffeeonthekeyboard.com/biweekly-ish-update-07nov2014-1185/] I wandered into the tip4commit fracas [https://news.ycombinator.com/item?id=8542969] and a “helpful” commenter pointed out Bountysource, so I started asking some questions there. There must have been a few others doing the same thing because, to their credit, they started
cas Simple out-of-process lock with Python and Memcached On TodaysMeet [https://todaysmeet.com/] I need to check that a name is not in use before creating a new record. Unfortunately, because names can be reused over time, I can’t create a UNIQUE key in the database and enforce it there. That means there is some tiny amount
Code Actually Starting an Open Source Project I’m a little late to the party, but I just got around to reading Starting an Open-Source Project [http://coding.smashingmagazine.com/2013/01/03/starting-open-source-project/] and, as someone who has started several reasonably successful projects, I wanted to publicly disagree with, essentially, the entire article. The article outlines
Code Where are James' Slides? I give a lot—well, I give some—talks, but I never give the slides out. And, as far as I can remember, no one has ever asked for them. I know people, people who speak a lot more than me [http://stevesouders.com/], who put all their slide decks
Code Why Django Sucks, Except When It Doesn't Ken Reitz [https://twitter.com/kennethreitz] is a smart man. Very smart. Smarter than me. He’s responsible for some of the best [https://github.com/kennethreitz/flask-sslify], most widely-used [https://crate.io/packages/requests/] Python libraries out there. So when he talks, I listen. And recently, he talked about
Back-end Developing at Scale: Database Replication When a website is small—like this one, for example—usually the entire thing, from the web server to the database, can live on a single server. Even a single virtual server. One of the first things that happens when a web site gets bigger is this is no longer
amo Code-sharing Update When we decided to move SUMO to a new platform [https://coffeeonthekeyboard.com/the-evolution-of-sumo-339/], one of the reasons we chose Django [http://www.djangoproject.com/] was code sharing and reuse—specifically that SUMO [http://support.mozilla.com/] and AMO [https://addons.mozilla.org] would be able to share code, meaning
Code WP: Better Search Widget 1.1 Better Search Widget 1.1 [https://coffeeonthekeyboard.com/wp-content/uploads/2009/07/better-search-widget.zip] is a significant upgrade to Better Search Widget [https://coffeeonthekeyboard.com/wp-plugin-better-search-widget-113/] that adds new features and fixes an old bug with internationalization. Features (New features in bold.) * Optional default value. * Optional, custom widget title**.** * Optional
api Widget l10n I spent some of today working on bringing a couple of WordPress widgets up-to-date (Better Search [http://jamessocol.com/projects/better-search-widget.php] and Most Comments [http://jamessocol.com/projects/most-comments-widget.php]) only to discover there is a new widget API [http://codex.wordpress.org/Widgets_API#Developing_Widgets_on_2.
Code JavaScript: Private Static Members, Part 2 Finally, it’s time to finish up the lesson on private static members and methods in JavaScript. Last time [https://coffeeonthekeyboard.com/javascript-private-static-members-part-1-208/], I introduced the technique of creating and immediately executing a function, using parentheses. I talked a little about returning a function and storing it in a variable.
Code JavaScript: Private Static Members, Part 1 A little while ago [https://coffeeonthekeyboard.com/private-variables-in-javascript-177/] I talked about creating private variables and methods in JavaScript. This works, but is not necessarily efficient: each instance of the class creates new copies of the members. While that may be exactly what you want for instance variables (think of partNum
Browsers Stop Supporting IE6 As a community, as a whole, web designers and developers need to stop supporting Internet Explorer 6. Now. Completely. I’ve been thinking a lot about browser compatibility as I’ve been working on Today’s Meet [http://todaysmeet.com/]. My CSS is valid, but it doesn’t work quite
attack Responsible SQL: How to Authenticate Users Most SQL-injection articles set a horrible example for young programmers. Here is a very typical “bad example” of why you need to escape user data before it goes into SQL queries: (ed. The symbol « is a line break that’s not in the real code.) 1. $username = $_POST[‘username’]; // username=
Back-end Connecting PHP, IIS 6, and SQL Server 2005 I know I will be accosted for this, but at work we needed to run PHP on IIS 6 ( fairly simple [http://www.peterguy.com/php/install_IIS6.html]) and connect it to a remote database server running SQL Server 2005 (not terrible, once I gave up the Microsoft way)
Back-end WP Plugin: Better Search Widget Today I upgraded from WordPress 2.3.3 to 2.6.1. I’m such a late adopter sometimes. I had to go through and repeat a few hacks. For example, 2.3.x didn’t allow you to do get_sidebar($name), so I’d hacked the “get_sidebar(
Code User Interface: Be Nice! A short post for a busy week. I just downloaded the Spore Creature Creator [http://www.spore.com/trial], and this file showed up on my desktop: 792248d6ad421d577132c2b648bbed45_scc_trial_na.exe. Why not “Spore Creature Creator Trial Install.exe”, or, if spaces aren’t your thing, “SporeCreatureCreatorTrialInstall.exe”? Either
Code Organizing CSS Looking at WordPress themes usually makes me cringe. It’s as if there was a memo on semantic markup and the community of WP developers didn’t get it. Some themes [http://themes.wordpress.net/columns/2-columns/2991/autumn-concept-10/] waste kilobytes of HTML source on something that could be achieved
Back-end Help Me Scale I’ve been reading Eran Hammer-Lahav’s intelligent [http://www.hueniverse.com/hueniverse/2008/04/scaling-a-micro.html] posts on [http://www.hueniverse.com/hueniverse/2008/03/scaling-a-micro.html] microblog scalability [http://www.hueniverse.com/hueniverse/2008/03/on-scaling-a-mi.html], and now I’m concerned about my own “microblog” site, Picofiction
brand Do You "Designed By"? A debate has cropped up over “designed by” links, those (hopefully) little links a designer puts on a page to take credit and get themselves some traffic and customers. On the one side, Pat Dryburgh argues [http://www.atrickdesign.com/blog/you-will-never-see-designed-by-atrick-design/] word-of-mouth is superior to self-advertising: “If the design
Accessibility Work Pattern: Designing Web Sites The premise of Design Patterns [http://en.wikipedia.org/wiki/Design_pattern_(computer_science)] is that similar problems have similar solutions. In the same vein, I propose this Work Pattern a set of common steps I use when I create a web site, and maybe you can use, too. Elements
Code The W3C Sucks “If you wish to be a success in the world, promise everything, deliver nothing.” If you want to remain the standard-setting body for the web, promise new recommendations, never deliver. ![CSS 2.1 is not even a published recommendation. Off with their (the W3C) heads.](http://coffeeonthekeyboard.com/wp-content/uploads/