Figuring out how dependencies work in Autosys
I've started work on Adaptation, a small framework to implement adapter registries and object adaption in .NET. It's based (as far as C# allows) on the adapter functionality in Zope 3.
Developing software in service layers is generally a good idea, but only when the problem demands it.
Is it me or are DeploymentItems supremely dodgy?
The first alpha of Adaptation has been released.
Support for that browser stalwart, the Back button, seems to be declining in the current crop of Web 2.0 applications. Should we try to support the browser back button, or is a relic of Web 1.0? And who's that other dark figure in the corner?
Why I think Apple released Safari on Windows
Adaptation 1.0.0 has been released. Adaptation provides Zope 3 style adapter registries and lookup for the .NET framework.
I've started working on Forms, a package for ASP.NET to automatically generate forms based on an interface or class.
I've written a lot of .NET code recently. I want to do some more Python.
So the TFS server has fallen over. Again. What's one to do?
I need to find some time to try out the Varnish web cache.
Only joking. I just found a blog post which articulates a lot of the frustration I feel at the moment.
I'm building a small site for a photography group I'm a member of.
A cryptic error message on Zope startup, but with a simple solution
Facebook is opening up its user lists to public search engines such as Google. But it's OK, you can opt out. You did know that you can opt out, didn't you?
Problems encountered when reconfiguring a Team Build server to work from a different TFS instance.
Having fixed extensive breakage after an update to Apache 2.2, I was left with one final, strange error message to solve.
My first Django app has gone live, using the new mod_wsgi.
Note to self: how to dump the JIL for an Autosys job.
Existing documentation about updating request.POST with request.FILES is now obsolete.
Django filters are a pretty cool idea. I needed to be able to generate image thumbnails. I found some existing code, and fixed it up to, well, work, and also behave better with custom upload_to locations.
Django, by design, maintains its session state by storing a cookie on the client. This is a good design decision. Sometimes, however, you need to track sessions for clients that don't support cookies.
Lamenting the size of Logitech's mouse driver.
Software engineering shouldn't be 9 to 5 job. It should be a source of constant intellectual stimulation, in an environment of constant change. However, experience tells me that there are plenty of people for whom programming is the process by which a specification document is turned into a paycheck.
Sometimes it's the little things that make you say "wow".
The Fez Consulting web site has gone live - another dirt simple site built on Django.
When TFS tells you something, you want to think twice about whether you believe it.
Django view functions often feature an initial stanza near the start in order to handle POST data differently. You often end up with quite a lot of logic in one method. Here I describe a cleaner way, using a decorated view class to replace the single function.
Using Zope 3's component architecture can significantly reduce dependencies between applications within a Django project. Why stand on the shoulders of one giant, when you can stand on the shoulders of two?
I keep getting this error, and it always takes a moment of head-scratching to figure out what's wrong. Here's what's wrong, to save you some hair.
Browsing the Django code after a recent svn up shows that newforms.form_for_instance and friends are deprecated and that you should use a ModelForm instead. This post gives a brief example of how to do this.
Mac OS X Leopard provides a simple way to manage your system-wide PATH and MANPATH for command and man pages.
This is a brief note for those having trouble compiling the latest version of PostgreSQL on Leopard.
Michael Trier's "This Week In Django" podcast is turning into something of a gem mine. I'm particularly taken with one website he mentioned, djangopeople.net. Plus, thoughts on GeoDjango and PostGIS, and the iPhone's Wi-Fi Locations technology.
The ASP.NET AJAX toolkit includes controls, such as the DynamicPopulateExtender, which invoke methods on the pages on which they are included to obtain data. This post looks at a common problem and its under-documentated solution.
Why having automated tests for your web site's functionality is a good idea.
Trying to get stored procedure output parameters working when you're using the Enterprise Library 3 can be frustrating. Here's a couple of tips to help you along.
This is a quick-n-dirty app to let you set up redirects on your Django site through the admin interface. (Updated to reflect my own oversight of django.contrib.redirects, which, er, does all this for you...)
One of the big culture shocks moving to a .NET development team was the amount of shared development infrastructure - particularly on the database side. In this post, I share some of my experiences and suggest ways that you can work around some of the impositions of shared infrastructure.
The Zen of Python doesn't just apply to Python.
Compiling Python, Zope and Plone on Leopard isn't as easy as it is on Linux. Here's a walkthrough of the process, from a bare Leopard install right through to having a working Plone 3 development environment, using paster and buildout.
Apple products aren't infallible, you know.
A quick way to improve the performance of Apple Mail.
Snapshotting your VMWare Fusion machine can start eating up disk space. This is not widely known.
I've become interested in CouchDB, written in Erlang. My copy of the 'Programming Erlang' book arrived today, so I tried to fire up the Erlang shell - only to be greeted with a Bus Error.
While these are more properly integration tests than unit tests, it can be handy to have Django roll back the database transaction after each test method runs.
How to easily test views in applications which don't have a urls.py file.
How to modify properties of a Solaris SMF service.
This article will show you how to create a repeatable Django development environment from scratch using zc.buildout.
There's not a lot of documentation out there about ZODB blobs and how you configure a buildout with blob support in both ZEO and non-ZEO configurations for a pure Zope 3 application.
I've made an initial release of fez.djangoskel, which provides simple paster templates for egg-based Django projects and applications.
Badly seated memory found with smoking gun (or, memtest86 is your friend).
An understanding of PYTHONPATH is key when developing new Python modules, or installing third-party packages and eggs. This article gives an overview of PYTHONPATH and the way Python imports modules.
I got the dreaded "(programme) is temporarily unavailable. Please try again later" while using the BBC iPlayer desktop AIR app. Fixing it was simple... once I found out how.
The article that I followed to get a static IP for VMWare fusion guests seems to have been removed, so in the name of preserving this knowledge I'm reproducing the salient parts here.
The installation of the PostgreSQL requirements is somewhat daunting. I've spent a bit of time putting together a buildout.cfg to try to make this easier.
My upgrade from Leopard to Snow Leopard went pretty smoothly - except for Firefox, which steadfastly refused to start. No error messages, nothing. Just a single dock bounce, and goodnight.
In the years I've been developing in Python, Unicode seems to be the topic which causes the greatest amount of confusion amongst developers. Hopefully much of this confusion should go away in Python 3, for reasons I'll come to at the end; but until then, the UnicodeDecodeError is the bane of many developers' lives.
A quick tip to ease testing emails.
My Subversion backup cron job in /etc/cron.daily wasn't running. Finally I figured out why.
I've migrated my blog from a creaking Plone 2.5 to a fork of Django Mingus. This is the process I went through.
A corrupted Django tarball can cause mysterious errors from djangorecipe.
After a botched PostgreSQL upgrade, I managed to leave my postgresql user with a non-existent home directory. Here's how to fix this on Snow Leopard.
The Python world is blessed with two mainstream choices for integrating Python packages into an application: buildout and pip. This post looks at the pros and cons of each, to try to help you pick which one is best for you.
Foundry's first GeoDjango site, Swoop Travel, has gone live.
Stereoplex is now running Plone again! So why have I moved back?
It's not immediately obvious how to filter dropdown lists in the Django admin interface. This article will talk about how ForeignKeys can be filtered in Django ModelForms and then the Django admin.
Here are a couple of tips to speed up unit test runs on Mac OS X and Linux when running MySQL.
django-lazysignup is a package designed to allow users to interact with a site as if they were authenticated users, but without signing up. At any time, they can convert their temporary user account to a real user account. Read more about it below.
This article explores the problems of optimising REST APIs for mobile device performance, and suggests a way of allowing clients to request alternate representations.
django-dfk allows deferred foreign keys to be declared on models, so that a concrete target can be set later.