The Nokia N96 gets a lot of stick for short battery life. When I first got mine it wouldn't last the day, but it turns out the fix is extremely simple.
The N96's behavior out of the box is to scan for wireless networks. This draws quite a lot of power from the battery. If you're using it the way I do, you end up using the same wifi networks most of the time anyhow and don't need the phone connected 24/7 anyhow, which would have been the main advantage of continuously scanning for wifi networks.
I turned this off and am now getting up to 2½ days of battery time.
Not the most interesting post ever, but no one else seems to have latched on to this tip so I thought I'd throw something up for google to munch on.
Now that I've bored you, you may move along.
In the course of writing a little python command line RSS engine, I naturally came to a point where I needed to download the RSS feeds to store them and work with them.
My options looked like this:
urllib2.urlopenwhich would download the feeds serially. When you have hundreds of feeds in your opml file, that takes too long. Besides, what do I have ADSL for?
- Use Twisted. But, my application is not a web app and frankly, switching the whole thing over to the Twisted event-driven model is overkill and unnecessarily complicated.
- Use wget with threads. The problem with that would have been that I'd have to jump through hoops to pass the data from the threads back to the main application, possibly with messy kludges like temporary files. No thanks!
- Use libcurl through the pycurl library. Ah, yes, perfect. Or so I thought.
Open Source Startup Marketing: Initial Steps
As innovative open source startups gradually grow ambitious enough to start thinking about an enterprise-class client portfolio, marketing becomes more of a pressing priority. My observation is that marketing is overwhelmingly regarded by open source geeks (an accolade I aspire to myself despite my sub-standard code-fu) as either superfluous nonsense-ridden hand waving, as arcane dark arts taught only in the bowels of the netherworld, or somewhere in between.
For a smaller open source startup, it doesn't have to fall into either category. It can be simple and straightforward, and that is what I have written this article for: to reduce the dimensions of kickstarting the marketing function for an open source startup by emphasizing on key areas with disproportionately emphatic results. More bang for your unit of effort. Less of a marketing department, and more of an image and a strategy for how to access the enterprise client market.
Think of this as an "We're a small open source startup and we're all arsekicking engineers, but it looks like we need to market if we're going to attract lucrative clients" HOWTO.
Here is a neat little application which extends the UNIX at daemon with the XOSD (X on screen display) for very effective, non-blocking, and simple notifications.
Software Requirements Specification: A Modern Look at How the Enterprise Determines What It Thinks It Needs
Most modern schools of requirements gathering and system specification development are user driven; this can often be the death of a development project. The truth which is known to the more successful technology development outfits is this: the user is irrelevant, the user does not know what is good for the system, and the user will often try to mislead you into developing software which does something they find useful.
Why do we develop software requirements specifications?
This article is aimed at the enterprise programmer. It aims to introduce sound practises around the naming of variables, with the objective of making life more productively busy for the maintenance programmer and keeping the technical writers busy enough to hang on to their meaningless little jobs.
What is rate limiting with iptables?
iptables (http://www.netfilter.org) is the packet filtering firewall rolled into the GNU/Linux kernel starting with version 2.4.
In the transition from ipchains to iptables, many fairly significant changes were made. The most widely acknowledged was the introduction of statefulness, or 'connection tracking'. The more fundamental, and in my opinion, more exciting shift, has been the increased emphasis on modules.
This article will discuss the rate limiting module. The module itself is not overly complex, and I will try to emphasise application more than plain old invocation.