I have just completed transitioning to a new server, which serves this blog. I am now using GoDaddy.com’s Virtual Dedicated Server product. I have been administering my own dedicated server, GoDaddy.com’s Dedicated Server product, for more than two years. I changed from a Dedicated Server to a Virtual Dedicated Server to reduce costs and better fit my utilization.
Though, I am not sure when the last time I rebooted my old dedicated server, the result of running ‘uptime’ on my old server is:
XX:XX:XX up 790 days, 15:23, X users, load average: X.XX, X.XX, X.XX
As I publish this post, the ‘uptime’ on my new server is:
XX:XX:XX up 2 days, 19:52, X users, load average: X.XX, X.XX, X.XX
I am still searching for tools that would allow me to do web development with Python. I was leaning toward Zope, but it looks like I will be going a different direction with WSGI. WSGI seems very lightweight or minimalist, which requires me to research template engines. Kubica’s HOWTO Use Python in the Web refers to Mako, Genshi, and Jinja. Mako looks like a good candidate.
When thinking about software modules as service providers and consumers, from time to time, a situation occurs where a service provider and a consumer communicate through a common or shared buffer. In the sockets API, the consumer of a service provides the buffers from which write() sends and to which recv() receives. This can be made to seem sensible, since these I/O functions can be seen as operating on arbitrary buffers. In this case, the buffers can be viewed as owned by or being more associated to the service consumers.
There are other situations where certain buffers are used only when communicating with specific service providers. When many such service providers with their associated buffers are present in a system, it is very possible that the buffers will be placed within a “buffers module,” or a module that consists entirely of buffers. This effectively disassociates the buffers from their respective service providers. Identifying the correct buffer that is dedicated to methods of a service providing module is more difficult, if that buffer is defined as part of another module as opposed to being defined within the module that is providing the service.
An increased risk of duplicate code is realized when buffers are placed in modules other than that of the consumers and providers. Implementers of service consumers may feel the need to independently implement functions to operate on these buffers. The duplication of code may be due to the lack of communication and coordination between the implementers, but this confusion could be minimized by recognizing the logical cohesion between the buffer and service provider, and placing the buffer within the module that outputs its results through said buffer. The service provider is also expected to implement functions that operate on its buffer. This localizes the functions that operate on the buffer to the service providing module, thereby reducing the risk of duplicate code among consumer modules with regard to the buffer and increasing cohesion between the buffer and the service providing module.
I was thinking about doing web application development using Python during my free time. It would not be something that is pressured by schedules, but it would be an opportunity to learn something new.
At first, I believed that most Python web applications were implemented by using mod_python, since PHP web applications use mod_php. I have read about mod_python and tinkered with it a couple of years ago. From what I remembered, mod_python was very low-level. A quick search on the Internet about Python web application development gave me Python for Web Development in Apache.
I looked at the API documentation for Pylons, Django, and Zope. It looks like I may be going with Zope. I have begun this endeavor with The Zope Book.
In a word, one could say that I have been “busy.” I was unable to find time for my blog during a whole quarter of the year.
In one of those weeks, I flew from LAX to Dulles, Geneva, Paris, and Frankfurt. During another week in San Mateo, I was at the wedding of a friend, who I have known for almost 2 decades. Of course, before the wedding, we were at Las Vegas for a good part of another week.
Work has filled up the remainder of the second quarter and continues to do so during the current quarter. Milestones definitely make the weeks go by faster. Meeting project milestones on schedule has been highly motivating and a bit exciting, making almost half a year seem like a short duration.