Backup software implemented with Python, here.
- The Python Imaging Library (PIL), can be downloaded here, the
documentation is here,
with the work-in-progress version here.
An article on using PIL
to add watermarks to photographs. And another watermark
Motion Graphics with Python, is an article on working with video,
it makes use of PIL to do a number of interesting image manipulations
and for transition effects. The PIL ImageEnhance module contains
routines that implement colour, brightness, contrast and sharpness
changes according to the technique described in Image
Processing By Interpolation and Extrapolation by Paul Haeberli and
module implemented in Python
in Python, also the sparkplot
module. Sparklines are described in the book: Beautiful Evidence, ISBN:
by Edward Tuftle, this is reviewed here.
A Python implementation of the Mandelbrot Set,
implemented using pygame.
is a Python XML reader/parser/writer that's been implemented in both pure
Python and C. Using non-standard
encodings in cElementTree. Here is a talk on using
ElementTree to process XML. A recommendation
- escript, a
python based environment for implementing mathematical models, in
particular partial differential equations. Now here on PyPI.
pyformex, a Python
implementation of Formex algebra, this is useful in creating 3D
geometrical structures (and may be used in finite element preprocessing
and medical imaging tasks)
is a module that implements a way of sharing a number of pickle files
in a safe way amongst a number of processes.
- The Twisted networking
framework, has a book: Twisted:
Network Programming Essentials, available in Oct'05.
There are a number of projects
implemented with Twisted, these include Twisted Web (an HTTP
server), Twisted Mail (SMTP, POP and IMAP clients and servers),
Twisted News (an NNTP client/server), Twisted Lore (a documentation
generator with HTML and LaTeX support), Twisted Runner
(for process management and inetd replacement). Allegra is an
alternative to Twisted, here are some comments on Twisted vs.
Allegra. An article
that introduces some client-side programming using Twisted. Another comparison
of Allegra and Twisted. Another mail server based on Twisted. A series of articles on using the Twisted Web in 60 seconds.
specializes in hosting web sites that are implemented in Python.
the Pyparsing module
to implement recursive decent parsers in Python, for when
string.split() is not enough. Includes an example of doing HTML
scraping. There is a support Wiki for this here. O'Reilly is publishing a small book on using this: Getting Started with Pyparsing.
URLS, and a Python module
to implement them
source VOIP implemented in Python
is a robust, high performance CORBA implementation for C++ and Python
- web.py, a simple web framework
for coding sites in Python. Using web.py to implement a RESTful API.
- TLS Lite, which is a pure
Python implementation of SSL. In the readme file there is an
example (see section 10: Using TLS Lite with SocketServer) of a secure
HTTP server. This is used by MoinMoin and TMDA-OFMIPD to provide SSL connections.
Mbus, RFC3259, a protocol for
group communication between application components implemented in Python
implementation for C#, Java and Python
single sign on in Windows Domains with a Zope / Plone / Apache
Microsoft is opening
up Windows Live ID (aka Passport) and has provided sample
implementations in Python, Perl, PHP and Ruby.
- How one might correct
typos (in URLs or words) by
looking for closest
distance matches. And a Python module called Levenshtein
to solve this. This recipe contains bktree.py which implements Fast Levenshtein distance (Wagner-Fischer algorithm) and the BK-tree. A recipe for calculating the Levenshtein distance between two strings.
this is implemented as a web form, paste in your code and it runs,
obfuscates it, and returns the result.
- Implementing a simple HTTP server with IronPython's (.NET) HttpListener. This should also be able to handle HTTPS connections. 
- python-cjson, is a module that provides C implementation of JSON encoding and decoding that can be up to 250 times as fast as native Python.
- People are
to figure out how to manipulate Google
attempts to provide you with a way of annotating a map with your own
content, and Google
Maps Hacking is figuring out and documenting how to do these
Maps Standalone is also looking into these issues, and has a more
detailed how to here.
Here is an application that lists houses for
sale and rent. Here's one that implements a form of traceroute.
An O'Reilly article on Google
Map Hacking with some informal Google statements on the issue. A
wiki on Google mapping,
and some samples.
Here's a general
explanation of how this works. As of July 1, 2005 Google has started to publish
their maps API, its still not final, and they expect to make
significant changes to it in the future months. Feeding GPS coordinates to
Google Maps. How
to build a Google Maps based service, this is an interactive bus
route map and is described
here, along with the source code.
of RISK with Google Maps, and of course, its now been shut
The Google Web Toolkit gets implemented
properties for dictionary attributes - an attribute that is accessed
like a dictionary but is implemented using method calls.
Implementation of relational
join algorithms in Python
Python implementation of the
XTEA block encryption algorithm
Implementing an immutable
dictionary by overriding the modification methods of a dictionary
implementation in Python
implementation, a dictionary that preserves the object insertion
Implementing the composite
design-pattern using dictionaries
Radio, implements tuning and decoding of signals in software
Master returns in Java! Now I can loose another month of my life...
And now there is FreeCiv too, an
implementation of Civilization II.
XviD, a free
an MPEG-4 codec (a free version of DivX)
- Octave is a Gnu
package (see here)
Matlab for working with mathematics. SciLab may be another. Maxima (a reimplementation of the old Macsyma)is another.
Design Science makes MathType,
which is an upgrade to Equation Editor component in Microsoft Word, and
some other things, including the ability to create MathML.
search engine, great news, but what is Google's business plan here?
Are they going to supply Google Adds to your desktop? Or is it to get
you used to running Google software so that you're ready to buy their next big thing when it comes out?
It also seems unlikely to me that this implements all the algorithms of
the full web searcher, otherwise its just a matter of time before its
disassembled and Google's secrets are known to all. One possible issue
with this is that it subverts
A re-implementation of the Amiga chip set
in a single fpga chip. Wow!
- Content-aware image resizing (using the seam carving technique) implemented in Python using PIL, SciPy and NumPy. This technology will be appearing in a commercial product. 
A good introduction
to the discrete Fourier transform (and the discrete sine and cosine
transforms). This also includes code for the the classic FFT which is
much faster. I would guess the same general (but slow as its NxN)
algorithm could be used with other orthogonal basis functions to
implement other transforms.
- An attempt to implement RFC2324, the internet coffee machine. 
- The Canadian Music Industry's levy on blank media (mainly cassettes and CDRs) has finally come full circle and the industry is realizing that they have pulled their own teeth by implementing this. Effectively they have established that it is ok (in Canada) to copy recordings that you own a copy of onto whatever media you want so long as you don't sell or further distribute them, this is fine because they have forced you to pay a fee up front to cover the expected lost revenue do to this. Its now becoming more confused, because as everyone in Canada is forced to pay this it could be argued that, as long as a fee is not charged, it is ok for individuals to exchange copies. I think that's a bit of a stretch but the Copyright Board of Canada appears to be reasoning this way:
First, the Board has stated, in obiter dicta, on several occasions that the Private Copying regime legalizes copying for the private use of the person making the copy, regardless of whether the source is non-infringing or not. Therefore, according to the Board, downloading an infringing track from the Internet is not infringing, as long as the downloaded copy is made onto an 'audio recording medium'
the key here would be that to be legit you need to save a copy of the song to an audio recording medium, i.e. you need to burn it onto a CDR on which you will have paid the levy.  
IBM is granting
universal and perpetual access to some of its intellectual property
that is necessary to implement standards designed to make software
is a very
small (no frills) implementation of the IDEA encryption algorithm,
its written in x86 assembler and works well on WindowsNT4. It has a
limitation with file names, it does not like files with more than a 3
letter extension, and when you try this it will send its output to the
console rather than the file. There is some more information about this
along with a number of other links to download it from and some other
crypto tools. A copy of it is also available here.
- Printers are now spying on you... well, cunningly recording unique identifying marks on the pages they
print. The EFF has compiled a list of printers which have implemented these tracking dots.
- Citizenrē implements solar solutions for home owners. Their business model is a bit different, they purchase, install and then maintain the system on your house. In return you buy the electricity it produces at some pre-determined rate (that is to be at, or below, your current electric rate). 
Ajax pages, could these be the new web desktop? ajaxWrite is a word
processor implemented with Ajax. There is also an ajaxSketch that understands SVG.
is a Python module that uses AJAX to implement a classic ASCII terminal
inside a web browser
- PyWPS is a Python implementation of GRASS, the Geographic Resources Analysis Support System that is used for geospatial data management and analysis, image processing, graphics/maps production, spatial modeling, and visualization. 
verifiable elections with cryptography, a new protocol that
approaches this issue as a secret-sharing problem.
- The HTTP1.0
draft discusses basic
authentication, and RFC2617 discusses digest authentication,
with some copies of the actual headers involved. RFC 1738 discusses
the syntax of Uniform Resource Locators (i.e. URLs). This article discusses
Another follow up to the issue
of logout. This article has a very good
discussion of the issues involved in implementing authentication.
Apparently this add-on
for Firefox adds the ability to logout (which is present in
versus Obscurity, a discussion on the use of salt. RFC 1867 talks about
the file upload ability that was added to html forms. RFC 2616 is a more
up to date HTTP specification.
- The PyMOTW looks at the shlex module, which can be used for parsing quoted strings, implementing shell-like syntaxes and writing domain-specific mini-languages.  
- Stepic, image steganography implemented in Python. 
- Thoughts on implementing ordered dictionaries in Python. 
referenced on Slashdot,
is claiming that many drives do not implement the "flush buffers to
disk" functions correctly
USB-key installed applications
- The idea of using existing WiFi access points to implement a public WiFi grid is discussed here on Slashdot. 
- pygossip is an implementation of a distributed domain reputation service, the idea is to track the spam to ham ratio of emails from various domains to determine a reputation index. 
- gocept.paypal is a module that implements PayPal's express checkout and Website Payments Pro APIs.  
How To: Implement
Samba as your PDC
- The PyMOTW takes a look at the socketserver module, which is usful in implementing TCP/IP socket server programs.  
- CLY is a Python module for implementing interactive command line shells. 
- TrueCrypt Explained goes into great detail about how the TrueCrypt software works (from a cryptographic point of view) and includes Python code to decrypt a TrueCrypt volume (it includes Python implementations of the various crypto routines that are not available in the standard Python distribution). 
- An article about a simple way to implement a plug-in (plugin) system to allow user-written extensions to software.  
Kids, never do this at home: how to
implement a decimal
adder in DOS batch files
suggestions from decks of cards to help think through difficult
problems (implemented in Python)
- Implementation of some .NET libraries for CPython. 
- How to implement truly transparent text (useful for watermarks) with PIL. 
- pyOSC is a Python implementation of the Open Sound Control specification for communication between computers and musical instruments (something like MIDI). Also here on PyPi. 
- While not NAS in the traditional sense, the idea of distributing a file system across spare space on a number of PCs on a LAN has been implemented in a number of ways:
The main problems with such system are what to do about nodes that are off-line, fail or are frequently unavailable. Clearly a useful system must include redundancy, perhaps multi-way, to compensate for this, even if you are using a relatively reliable set of machines (like a number of servers that have had an extra IDE drive installed for spare storage). Such systems would be quite useful for applications like a backup storage pool.
- GNU's Gluster package includes GluserFS a clustered file store.
- OpenAFS has some Windows support.
- The Network Block Device for Linux could be used to do this, though for redundancy you would have to make a RAID array out of a number of NBD devices.
- dCache is a system that has been used in the nuclear physics labs to help store their large data sets.
- Wuala appears to be a commercial service that is building a distributed storage grid out of space on individual participating PCs.
- The IDC is finding that IT departments that build projects around open-source solutions are much more successful in successfully completing them. Perhaps this is a case of just reducing the work from a full design and programming effort to a much simpler implement and tweak type task? For example, an IT department might want to build an issue-tracking system, if it designed and built this from scratch this might consume a few man years of effort and result in an unusable monstrosity that, while completed, never gets used. However, there are lots of free, open source, issue trackers that can be configured and put into use in a matter of hours to days (or weeks if the department works hard at it). 
- The 2.5 inch Easy Nova Data Box PRO-25UE RFID portable encrypted drive turns out to be pretty insecure (discussed here on Slashdot), seems the manufacturer only implemented an XOR algorithm instead of the claimed AES.  
- pydkim is a library that implements the Domain Keys Identified Mail (DKIM) protocol for email signing and verification. 
- munkres.py is an implementation of the Munkres algorithm (also known as Kuhn-Munkres or the Hungarian algorithm) which is used to solve the Assignment Problem. The assignment problem is used to determine the best way to use n workers to do n jobs at least cost when the cost to complete a particular job depends on which worker does it. pyLAPJV is another approach to this problem, this implements the Jonker-Volgenant algorithm.  
- TuxFighter is an implementation of the classic Astroids game in Python using the pygame module. 
- Discussion of the enter key and how to override its
default functionality (of OK-ing the dialog) as well this
mentions that the tab key order is the same as z-order for a dialog
and has discussion of PreTranslateMessage() which can be used to
implement accelerator keys in a dialog.
- pyLinkage implements linked lists for Python, not that you really need these with the built in Python list class. 
- Consistent hashing is a method to use a hash function to distribute load across a group of non-uniform servers. This can be very useful in combination with a memory caching system. This idea can also be used for other sorts of problems too. hash-ring is a Python module that implements consistent hashing.  
- Introspecting call arguments, a recipe that implements in Python the algorithm the interpreter uses for passing and assembling the arguments to functions.  
- Erasure Codes can be used to transform N blocks of data into N+M blocks of data for redundancy purposes allowing the original N blocks to be recreated from some of the N+M blocks in the event of data corruption or loss. zfec is an implementation of a fast erasure codec that can be used with Python (it is part of the AllMyData project).   
- WiMax has been called a disaster, an Australian implementation had trouble getting beyond 2km range. 
- A software engineering course has student teams build a project in stages, at the end of the first stage they review the work of the other teams and then must select one of the other team's work to continue. An interesting idea, perhaps this could be used in a company which can afford to take a "multiple implementation, select the best of breed" approach to software development. While this sounds wasteful it might be a good way to get higher quality and/or meet tighter schedules. 
- Using GStreamer to write a video player in wxPython. Another article talking about implementing a video player for wxPython with Gstreamer.  
- One s3fs to rule them all a quick note on interfaces to the Amazon S3 storage service, two of which are implemented in Python. 
an implementation of the ECMA Common Language Infrastructure proposed
- CTL's 2go PC is an implementation of the Intel Classmate PC, this will be available through Amazon and priced in the $300-500 range. There is a review of it here. CTL also makes the IL1PC which is a direct competitor to the ASUS 7-inch Eee, discussed here on Engadget. 
- pyoai is a Python implementation of the Open Archives Initiative Protocol for Metadata Harvesting client and server. 
- springpython (here on the cheese shop) is an implementation of the Java Spring Framework for Python 
A cross platform 3d scanning
solution, called Splinescan,
its now being reimplemented in Python
- On 8-Apr-08 Google started to preview their Google App Engine, discussed here on Slashdot.
Their overall design goals:
- make it easy to use
- make it easy to scale
- free to start (small apps)
What Google will do for you:
- Run the web applications
- provide the full life cycle, logs, status, updating, database...
- provide access to Google's scalable infrastructure, google accounts, big table, Google FS
To do this the application stack they provide has:
- Scalable serving infrastructure
- Python runtime
- Web based administration console
- Datastore (based on big Table)
Their environment does allow you to run a local test server, so you can do your application development on your own private machine.
They provide a basic Django template module.
Seems to follow the Python wsgiref module.
An initial presentation of this is in these videos.
One of the things this does is to get you to build things using Google tools which may result in an implementation that is difficult to move to some other service provider without doing a complete rewrite. Whereas if you were using Amazon's EC2 you are writing for a more standard LAMP style environment so you should be able to take whatever you develop and run it somewhere else. Of course, if you keep this all in mind it might not be a big issue, use the Google tools to develop a prototype and test the waters before investing in a full scale project.
With Google's use of Python as the first application language to be supported by this system it has caused an unprecedented stir in the Python community, see:
- A Python implementation of the old UNIX fortune program. 
- Vertex is an implementation of the Q2Q protocol (better than P2P) in Twisted. 
a spam filter written in Perl for Qmail. This is an
of this algorithm
was cited in this Slashdot
article. Here's another
implementation of this idea. And another follow
up on this on Slashdot. And now is has been added to Mozilla's
- A pure Python implementation of the RSA core cryptographic functions, done as a student project. This looks to be the same thing. 
- py-notify is a package for implementing the Observer programming pattern. 
- Guido is part of the App Engine team and has implemented a source code review system with it called Rietveld. 
- Oolite is a implementation of the old Elite space game for Mac OS X, Windows XP and Linux. 
Numerical Recipes in C++, byt Bernt Arne Odegaard. Bits of this
have been implemented in Python in the pyFinancials package, announced here.
- RSA is an implementation of some of the RSA algorithms in Python.  
- The PyMOTW takes a look at the heapq module which implements a min-heap sort algorithm.  
- Using secure authentication cookies with Django, this implements part of a paper on secure cookie protocols. 
- The Zope Object DataBase (ZODB, the package is here) can be used without the rest of the Zope environment to give Python programs a transactional object database. A brief introduction to using it is here (and discusses a bit of how object references are maintained persistently. An IBM DeveloperWorks discussion of it with some simple use example code. The ZODB/ZEO Programming Guide is online here, a stand-alone PDF copy can be obtained here.
tempstorage provides a RAM based storage implementation for ZODB.
Introduction to the Zope Object Database provides a good summary of what the ZODB is, how it behaves and how to use it. FileStorageBackup talks about the design of the FileStorage type of storage system for ZODB, as well as the repozo tool for backing it up and some other integrity related tools. This article includes a list of tools that can inspect or analyze ZODB databases.
How to Love ZODB and Forget RDBMS.
CouchDB for ZODB Users takes a look at CouchDB and how it compares to ZODB. 
- If you need really fast parsing of XML you might want to take a look at AsmXml, which claims to be able to parse XML at about 200MB/s on an Athlon XP 1800+ type chip. Despite this being an assembly language implementation there are versions for a number of operating systems (presumably all running on X86 chips). 
- A simple example of implementing a COM server in Python. 
- Newton's method can be used to implement a faster division algorithm.  
- The PyMOTW takes a look at the uuid module which implements the RFC 4122 system for making universally unique IDs.  
- Slashdot discusses error-proofing data using Reed-Solomon Codes. ICE ECC is another implementation of this technique for files and directories. 
- A discussion of The Invisible Cost of IP Law. Where progress stalls in certain fields because of key patents acting as road blocks. This happened to some extent with the RSA cryptography patent, though its effect was largely restricted to the USA and it was further diminished because the patent was granted too early - before computer technology and applications were really ready for it. Another example is probably the touch screen display issue, not a lot happened with touch screen displays until the Apple iPhone popularized them in 2007, but I recall reading something that suggested that a key patent on touch screen technology had expired around then and with this expiry an economic obstacle to implementing touch screen based systems was lifted. This topic might well be worth a thesis in Economics. 
- Pad images to power-of-two dimensions uses PIL to read and pad images so they have dimensions that are exact powers of two, which might be required for some OpenGL texture map implementations.  
- Windows may be falling behind the curve on supporting new technologies, the adoption of a fast booting small Linux system (that ASUS first implemented in some of their motherboard BIOSes) has started to go mainstream with Dell's "Latitude On" system. Dell has taken this a step forward and included a special low power ARM processor that runs the laptop in this mode to greatly extend battery life. 
- pysync is an implementation of the rsync algorithm in Python.  
- morbid is a publish/subscribe messaging server that uses the STOMP protocol and is implemented using Twisted. 
- httpripper is a ripper for the web implemented as an http proxy. 
- This recipe on yet another signal/slot implementation in Python could serve as an example of weak references as implemented by the weakref module's WeakValueDictionary. 
- markdown2 is a text to HTML filter that implements the markdown text format. 
- domainmodel is a Python implementation of ideas from Domain Driven Design by Eric Evans. 
- keas.kmi implements a NIST SP 800-57 compliant Key Management Infrastructure (KMI). 
- pytpic is an implementation of the TPIC protocol for transparent communication between processes in a cluster. 
- This article: Benchmarking hardware RAID vs. Linux kernel software RAID, shows that a high end RAID card can outperform a software implementation of RAID5 by about a factor of two (from about 150MB/s to 300MB/s write speeds with 6 disks) using an AMD X2 2.2GHz CPU. They also mention that XFS has some performance advantages over ext3 when used on a RAID disk set. 
- The PyMOTW takes a look at the imaplib a module that implements IPAM4 client communication functions.  
- Build a web server on a business card sized PCB (discussed here on Slashdot). This uses a micro-SD card to hold the files that the web server will serve up. Sparkfun Electronics has a similar, pre-built, Mini-Web PIC Development Board for about $40, the main difference is that it only has 128Kbytes of on-board storage for the web pages - though if you were using this to implement parts of a home control system that would not be an issue. Another possibility are the EZ Web Lynx devices. 
- A recommendation for the new multiprocessing module which implements an API similar to the threading module, to distribute work across multiple processes. Combining this with Net-SNMP for asynchronous multi-processing in Python. 
- Replacing the Python socket.ssl with M2Crypto's SSL implementation. 
- Vehicle to grid (V2G) is an idea to allow the electric grid to use electric cars as a power source during peak demand times. Researchers at the University of Delaware are conducting V2G trials for The City of Newark. 
- The PyMOTW takes a look at the smtplib which is used to implement a simple message transfer client.  
- Apple has finally been granted a patent for The Dock, or at least some particular aspect of their implementation. 
- phprpc a project to implement a Perfect High Performance Remote Procedure Call client and server for use over the internet. 
- The PyMOTW takes a look at the smtpd module for implementing SMTP servers. This way to the land of spam.  
- An implementation in pure Python of the CPython dict type. 
- pyDes is an implementation of DES and triple DES in pure Python. 
- The Gillespies SSA algorithm implemented in Python. This is used to model the spread of disease from an infected individual to a population.  
- AROS is an API-compatible reimplementation of the Amiga operating system. 
- Ironclad is an implementation of the Python C API for use with C#, this allows the use of Python C extensions from IronPython. 
- The Enable project is a multi-platform object drawing library build on top of Kiva. Kiva is a multi-platform implementation of DisplayPDF (which is used in Apple's Quartz 2-D graphics API). 
- Slashdot discusses an ExtremeTech article which presents a performance study of Intel's current crop of quad processor CPUs (including the old Q6600 and the newest Core i7 chips). Looks like about 30% is the improvement you could get by spending 2 to 3 times as much as the $200 a Q6600 goes for. And if you are looking for faster video transcoding its probably still better to wait for a good GPU implementation to appear. 
- Implementing a tiny stack-based language in Python. This sort of thing might be useful for some form of configuration language or application extension (macro) language. 
- The Kaleido R7 wireless digital photo frame from IPEVO looks like it might launch some new trends in how wireless capabilities are implemented in photo frames. 
- A recipe for implementing state machines. 
- PyOBEX is a package that implements some of the Bluetooth Object Exchange (OBEX) protocol.  
- fhsp - Fairly Secure Hashed Password - is an implementation of the PBKDF1 specification from RFC 2898. 
- Bloom filters are another interesting application for hashing functions. They are used for testing, in a probabilistic fashion, whether an element is a member of a set. pybloom is a Python implementation of a bloom filter.  
- The SheevaPlug is an embedded Linux device from Marvell Semiconductor that will deliver a low cost, low power, platform for working with ethernet and USB devices. It gets discussed here on Slashdot, here on Make and here on SlashGear. It is what the Pogoplug is based on. Attaching something like phidgets to it would allow for some home automation functions to be implemented, but as the device contains some IO lines it would make more sense for someone to build a version that includes analog and digital IO interface circuitry. This is now available (see GlobalScale and PlugComputer.org), Slashdot discusses what to do with it. It appears that Seagate is making a NAS adapter for their FreeAgent portable drives that is based on the Pogoplug system. After about a year the second version of the Pogoplug got announced. An updated version with a 2GHz processor was announced at the start of 2010. 
- Python HTTP Pipelining is an implementation of HTTP Pipelining for Python, this allows an HTTPConnection to send the next request(s) ahead of time (i.e. before the response to the previous request has been received). Now if only an HTTP server could send responses back to the client before the client makes the requests...  
- OpenSSH is widely available (particularly in the UNIX world), an implementation of it for Windows which includes a server mode is copssh. 
- pypng is a pure Python implementation of a PNG image encoder/decoder. 
- python-daemon this simplifies the implementation of a standard UNIX daemon process in Python. 
- Computing Normal Probabilities in IronPython includes a function for calculating phi(x) which is then used to calculate the normal probability - this is implemented in standard Python code so will work with CPython too.  
- The PyMOTW takes a look at the new multiprocessing (part 1) module. And in part 2 looks at communication between processes with multiprocessing. And also takes a shot at implementing MapReduce with multiprocessing.  
- An implementation of the Game of Life in XAML/WPF using embedded Python. 
- pymodbus, possibly an implementation of the modbus protocol in Python.  
- TileLite (here on PyPI) is a light weight WSGI tile-server, written in python, using Mapnik rendering and designed to serve OSM (OpenStreetMap) tiles. I guess this allows one to implement a Google Maps like server. 
- An implementation of the RC4 encryption algorithm in Python. 
- An implementation of a bitset. 
- A demonstration of the CORDIC algorithm for polar-to-rectangular coordinate conversions, this implements sine and cosine functions using a series of integer shifts and additions. CORDIC has been used for other transcendental functions and was used in the HP-35 calculator.  
- The PLplot scientific plotting package has Python bindings implemented with SWIG. 
- An implementation of the Floyd-Steinberg dithering algorithm. 
- An explanation of what the twisted txAMQP library is used for. Turns out this is a form of messaging middleware used in large business applications. carrot is another AMQP implementation for Python. The Electric Duncan waxes poetic about txAMQP in a three part discourse: part 1, part 2, part 3. Some more discussion about AMQP and the Python py-amqplib module, apparently JPMorgan Chase was the original developer of AMQP and Goldman Sachs is involved too. 0MQ is a similar (but simpler) thing. 
- Disco is an implementation of the Monte Carlo UCT technique for playing the Game of Go.  
- The arc4 implementation of the RC4 cipher. 
- tempstorage is a RAM based storage implementation for ZODB. 
- Google has implemented an extension for Internet Explorer that adds SVG display capability. 
- Using the new With statement to implement multi-line Lambdas in Python. Scary, very scary. 
- The PyMOTW takes a look at the fractions module which implements a class for working with numbers in rational form.  
- Western Digital explains that one reason you don't want to use their desktop drives in a RAID array is that the desktop drives will try to read a failing block for a long time (say up to 2 minutes) before returning an error and this long delay can cause a RAID controller to think the whole drive has died and drop it from the array. Their enterprise drives implement a feature they call TLER (Time Limited Error Recovery) which limits the time spent trying to read a bad sector to about 7 seconds and so should not cause a RAID controller to panic and drop the whole drive when only a single sector is having trouble. 
- ruffus is a module that implements light-weight computational pipelines.  
- Mozilla's Raindrop could be a competitor to Google's Wave, this is currently built using couchdb for the storage component and the back end is implemented in Python.  
- myconnpy is an implementation of the MySQL Client/Server protocol in Python. 
- An implementation of the Talbot method for numerical inversion of the Laplace Transform. A second version of this using mpmath for extended precision.   
- The rl package is a full implementation of the GNU readline command completion interface. 
- The city of Chicago are thinking about implementing a system called ShotSpotter. This listens for gun shots in your crime ridden sectors and then alerts the EMS teams. Not sure I'd want to live anywhere that this system is useful! 
- Thoughts after a couple of weeks. I have owned a Google Nexus One for a couple of weeks now and I thought it would be a good time to record some first impressions. In a word BETA. Yes, in keeping with Google's fine tradition of apparently never finishing anything, this is most certainly a beta product. Now given the intended audience (geeks) of the Nexus One this is not a particularly bad thing, but Android is being billed as a mass-market phone (and appliance) operating system and I am finding the smart phone platform is falling short of what a consumer would need, want or expect.
The hardware is quite good, the device looks and feels nice. The screen is very nice, except in bright sunlight. The digitizer generally works quite well, it certainly feels like the iPhones I have played with. The sound quality is good for both phone and media functions. The battery life is good for this sort of device, I'm getting about two days of use out of it by which time the battery level is at about 30%, but I don't do many calls and maybe log about an hour of web surfing, an hour or two of MP3 playback and about 2.5 hours of GPS use in that time. I leave the WiFi and Bluetooth radios on all the time. The fastest drain is when I use the GPS (using Google's Latitude and the MyTracks route tracker applications). I like the fact the battery is user-swapable and there is a microSD card slot.
The only issues I have with the hardware so far are:
The software, this is the part of the phone that's really beta. I have not had any real problems with the underlying OS, I have not had to reboot the phone to get it to function properly or anything like that. My gripe is with the included applications. One of the things I wanted from this phone was a unification of the functions of my old phone plus my old Palm Tungsten T3 PDA, so that I would be able to replace two devices with one and have more functionality at hand too (like the GPS and browsing on the go). So far the places I find that fail are with the basic PDA functions. Here's how I see it:
- The ringer volume (as is mentioned here along with other issues) is too low
- the back cover is rather hard to remove, they could fix this quite easily by including a ridge or slot to get a grip on, or better yet a small latch.
- I would prefer that the microSD card slot was exposed (i.e. externally accessible on one side) so one could change cards without having to power down the phone, remove the back cover and battery and the reassemble everything. My little Samsung flip phone did this quite well. Perhaps there should be two slots, an internal one that is used as fixed storage and an external one that is intended for user-swapping?
- the dock connector appears to only provide a power connection, any other connection must be either through the USB port (which is limited) or via Bluetooth or WiFi radio. This may be a good thing, but at the moment it limits what other things the unit can be used for. Perhaps someone will make a WiFi player dock for it so that the device can be used to play video to an external monitor or TV.
- For a few cents more why didn't they put an infrared transmitter/receiver on this so that it could also be used as a programmable remote control?
- The GMail client is pretty good, its an effective way of doing email triage on the road (train) and the unification of your email into the Google GMail cloud is very well done. You do something on either the GMail web client (at home or at the office or where ever) or on the phone and it's auto-synchronized in a seamless fashion. For anyone who needs to deal with email while on trips this would be worth it alone.
- The contacts manager is also very good, again it pulls off a nice, seamless two way synchronization All you need to do to make this useful is to import your contacts into the GMail contacts lists. I had to do some work on this one because GMail does not have a direct import from Palm devices, you have to export to a CSV and then upload to GMail, which is ok, except GMail import does not understand a lot of the columns that the Palm export provides so it just tosses a lot of stuff into the "Notes" section.
- The todo (tasks) list is missing. Total fail, GMail has a todo list on the web, but to get at it from your Nexus One you must visit a web page! Todo lists have been standard on PDAs since the beginning, so why is this missing?
- The Note taking function is also missing. It seems obvious that this should have been implemented as something that interfaced with Google Docs on the web, in fact there is a third-party free application called GDocs that attempts to fill this void.
- While the device does have a media player that does a reasonable job of MP3 playback and video playback this is a very basic implementation. It lacks the glitter of what the world has come to expect from the iPhone, so it's just basic marketing that this needs to be improved. Note the video formats this can play appears to be pretty limited, so expect to transcode anything you want to view here. Given there are a lot of inexpensive media players that are based on Linux that do a great job of playing just about anything without using super powerful chips one wonders why this cannot be done on this phone?
The last issue is with accessing the microSD card over the USB cable to load or unload data. As a geek I can understand why they have done what they have done, but surely there must be a better way! Here is what the user sees:
In my view what should happen is that when you plug in the USB cable the phone should immediately do all the mounting, the fact it can detect the connection and then prompt you, tells me that there's no real reason why it could not have just done the mounting right away. The mounting attempt might fail if some phone application current was using the SD card (though I have not seen this happen yet), in which case it should notify you of the problem. Then Windows would have quickly opened the drive and you could get onto the important business of dragging over some more MP3s right away. Once you are done with the drive in Windows, you should just use the Windows eject function as normal. Then the phone would detect the end of the session (as it currently does) and instead of bothering you with some more UNIX voodoo it should just silently umount the drive and return it to the normal phone mode - only if there is a problem should it prompt you for anything. This would make the whole process plug and play, the only voodoo left is on the Windows box when ejecting the drive at the end, and that's now accepted as "normal".
- Upon connecting his Nexus One to a computer via the USB cable he gets a notification that says the USB was connected.
- He then drags open the notifications list and touches the USB notification.
- Then a dialog appears saying: "You have connected your phone to your computer via USB. Select "Mount" if you want to copy files between your computer and your phone's SD card." and it gives you two buttons: "Mount" and "Don't Mount". This simply reeks of geek, and not just any geek, we're talking about 50 year old UNIX geeks with massive beards that wear old hiking boots to work in case they need to climb things in the server room! Mount, don't talk to me about Mount! Steve Jobs must find this hilarious!
- Once you hit "mount" your microSD card becomes accessible from the computer and then you can use it until you use the Window's remove USB devices tool to eject it (in a way equally mysterious, but in this day of USB thumb drives something that most people know how to use).
- Once you do this the Nexus One gives you another notification titled: "Turn off USB storage", tapping this gets you another dialog that reads "Before turning off USB storage, make sure you have unmounted the USB host. Select "Turn Off" to turn off USB storage." and gives you to choices "Turn Off" and "Cancel". Again the mountains appear on the phone.
- A felt tip pen based printer implemented in Lego, also discussed here on Slashdot. 
- The MIDIbox Hardware Platform brings a modular set of components to the DIY MIDI music industry, some of these are available as kits and have been used to implement some big projects like this Station MIDI controller.  
- A rather good list of The Most Important Algorithms. I have used about 12 of these (that I know of) and written implementations of about 10 of them over the years. 
- Some new keyboards have recently appeared for Android, the Swiftkey is another take on the conventional on-screen keyboard but with somewhat different handling of word completion and this Palm Graffiti implementation is very nice, though probably slower than a keyboard. 
- Engadget puts forward the case that copy protection (especially when poorly implemented) may hurt a product's sales. 
- The so-called human powered car is more likely a very light weight electric vehicle with the capability of getting a boost from the passengers. When you look at the video bear in mind that the handle bar crank system is unlikely to be providing a significant portion of the power (I would be amazed if it provides more than 5%) as there is no way that driver could even go half as fast on a light weight bicycle let alone a much heavier vehicle with rather poor air drag (look at the wind on his shirt). Also the hand crank system is a very poor choice for human power, a recumbent pedal system would be far better as the legs can produce much more power and for longer periods of time than the back and arms (not to mention it would be safer as this would not interfere with the steering control). So while it's cute I don't think it makes a significant contribution to "human propulsion", though it might point the way to ultra-light electric vehicles. I do like the idea of a four-seat human-propelled vehicle that has an electric booster system (to assist when loaded, or accelerating or climbing hills), but this is not a reasonable implementation. Also, such a vehicle needs a cover to reduce air drag and keep the occupants dry.