Recent posts

Functional fun in JavaScript with Dojo

Everybody knows that JavaScript is a multi-paradigm language, and it can be used to program functionally. Practically all functional idioms can be used directly: higher-order functions, recursion, closures, and so on. The recent resurgence of Functional Programming (FP) brings functional methodologies in the mainstream. FP fundamentals gave us a lot of powerful idioms: iterative functions, which can replace loops, list processing in general, function manipulations, and many other things, which helps us to keep our code small yet concise, more powerful, and more fun. Let’s take a look at how Dojo helps to leverage the functional paradigm in the Core, and in the extended DojoX package (dojox.lang.functional).

PyCon 2007 pictures

24 Feb, 2007 - 1 minutes

I published first day pictures from PyCon 2007. They are raw, unedited, I didn’t put descriptions yet. You can recognize Django guys, people from multiple Python web frameworks, and, of course, the BDFL with OLPC. But why wait for pictures to be prepped? Dig in while they are raw and fresh:

Steve Holden in Django t-shirt

Yes, this is Steve Holden sporting a Django t-shirt.

Improving performance of Dojo-based web applications

Introduction

Web 2.0 brought on us an onslaught of new server-side web frameworks, and made it OK to put some code on the client side as well. Yes, I am talking about Ajax . While elements of Ajax were available (and used) for a long time now, 2005 was the crucial year for this relatively old technology fueled by proliferation of modern browsers with proper support of JavaScript and HTML DOM, which, in turn, gave a rise to numerous Ajax toolkits. As always new exciting technology polarizes people — you can find ardent supporters of Ajax and a booing horde of naysayers. The latter crowd points out real and imaginary problems with Ajax. Some problems are real enough but stem from a misuse of the technology. One of them is a performance of a web application. In this article I will show how to improve a performance of a web application with Ajax and how to optimize an Ajax web application. Specifically I will show how to optimize a Dojo -based high-performance web application. I will use Django and Apache as examples of a server environment.

Estimating unknown

2 Aug, 2006 - 7 minutes

How long does it take to do a project? Software developers are asked this very question on regular basis. This is how every project begins. Why is it important? Because “time is money” and many software projects are priced mostly by time spent on the project. “We will take your project estimate in hours, multiply them by your rate in $/h, and we have our price.” Ask any consultant or IT staffer about that. Let’s look at estimates in the Real World(tm).

Setting up tools 2

This is the 2nd part of Setting up tools on Windows — notes mostly for myself. (No, I don’t run Django with MSSQL under IronPython . Yet.)

In this installment I add more stuff to Eclipse, and set up my apps under FastCGI on Linux-based shared host (I use DreamHost).

Eclipse

This section was updated on 9/30/2006.

I already set it up with PyDev and Subclipse. Now I want to add HTML/CSS editing. And I want to do AJAX.

Migration to magic-removal

6 May, 2006 - 2 minutes

Today I converted three web sites to the latest Django’s trunk formerly known as the magic-removal branch. It was a very positive experience in general. New Database API with lazy database queries (courtesy of QuerySet) rocks! Direct interaction with model classes allows doing a lot of things much simpler than it was before. A lot of small improvements, which makes a big difference like explicit template extensions (use whatever is appropriate for your content), more transparent new Admin inner class, natural overriding of model methods (no more _pre_save() and _post_save() hooks!), and, of course, no more pluralization guessing.

Google Summer of Code 2006

2 May, 2006 - 2 minutes

Yes, another Google SoC is upon us. I signed up as a mentor with Dojo and Django . Both projects are on the leading edge of new wave of web-based applications doing extremely cool stuff. I anticipate that some smart students will bridge both projects, but individual projects are fine too.

What is Google SoC? Read the FAQ . Who can apply? Any student anywhere in the world can apply. You don’t have to be Comp. Sci. major to participate. Why should I apply? You will gain a real world experience with open source projects on the bleeding edge of modern technology. Your code will be used by high profile projects (it will look spiffy on your resume). You will meet new people who "do it" instead of "talk about it". And you will earn $4,500 USD and a cool T-shirt as a proof of your participation.

JTAG

5 Apr, 2006 - 1 minutes

By popular demands I am publishing pictures of my JTAG, which I made to revive a wireless router some time ago. Just click on the picture below to see it in all ghetto-style glory with some explanations of my "design decisions".

JTAG in its full glory

You can see that it is very basic. It was made in ~3 minutes and costs ~$6 (the most expensive part was the cable — $3.99). It was assembled according to this diagram . You can find a full description of details here .

What programmers do

2 Apr, 2006 - 5 minutes

Let me give you one more definition of what computer programmers do: they design, build, and maintain complex systems . In many cases computer programs are more complex than “Hello, world!” examples. Way more complex. I am talking about the systems

  • that have more branching possibilities than atoms in the universe.
  • that cannot be verified using any formal methods in any practical timeframe.
  • that cannot be tested with 100% code coverage in our lifetime.
  • that cannot be completely understood in all details by their creators.
  • that can handle real life requirements.

So what?

GPL violation: Sveasoft

15 Mar, 2006 - 1 minutes

OpenWrt has officially terminated Sveasoft’s license citing blatant violation of the GPL. For more details go to OpenWrt’s forum: Unbelievable . It’s getting quite hilarious. For example you can “learn” that the GPL is derived directly from “the economic and political theories of Karl Marx ”.

In general it is so sad to see such abuses. It is not hard to comply with the license. If you don’t like it, don’t use the GPL’d software in your product. It is as simple as that.

Finalizing PyCon 2006 pictures

4 Mar, 2006 - 1 minutes

I found some time to finalize my pictures and notes on PyCon 2006. I tried my best to identify people in my pictures. Now you can see their names and links to their blogs. I added links to official descriptions of their talks, as well as to excellent detailed notes of some talks by Steve Holden . I advise to visit his blog, because he has notes on some talks I didn’t attend.

More PyCon 2006 pictures

26 Feb, 2006 - 1 minutes

I added more pictures from PyCon 2006 . Enjoy.

Simon, Adrian, Jacob, and Matt.

Now time for a blog roll of my photo models (far from complete):

Person Blog
Adrian Holovaty http://www.holovaty.com/
Simon Willison http://simon.incutio.com/
Jacob Kaplan-Moss http://www.jacobian.org/
Matt Croydon http://www.postneo.com/
Derek Willis http://thescoop.org/
Ian Bicking http://blog.ianbicking.org/
Bob Ippolito http://bob.pythonmac.org/
Guido van Rossum http://www.artima.com/weblogs/index.jsp?blogger=guido
Ian Maurer http://itmaurer.com/blog/
Andrew Kuchling http://www.amk.ca/diary/
Jeremy Dunck http://dunck.us/anabasis/
David Ascher http://ascher.ca/blog/
Jeremy Hylton http://www.python.org/~jeremy/weblog/
Jim Hugunin http://blogs.msdn.com/hugunin/
Phillip L. Eby http://dirtsimple.org/
Mark Ramm http://www.compoundthinking.com/blog/
Steve Holden http://holdenweb.blogspot.com/
Bram Cohen http://bramcohen.livejournal.com/
Kevin Dangoor http://www.blueskyonmars.com/

I know I missed some blogs, please let me know your blog address, and I will add it.

PyCon 2006 pictures

26 Feb, 2006 - 1 minutes

Here in Dallas PyCon 2006 gave us an opportunity to meet many "virtual" people from Python community, and put faces to names. For those who couldn’t attend I am publishing pictures and small notes on Flickr . I will add more pictures tomorrow. If anybody’s name is misspelled, or missing (I didn’t catch all names), or you want me to remove your name or picture, please contact me and I will change notes. I am planning to add blog addresses to people’s names as well.

Setting up tools on Windows

Update 9/30/2006: when you finish this article don’t forget to read more about setting up tools in the second part: Setting up tools 2 .

My goal is to set up working environment for Django development on Windows box. You can find a lot of information on setting up open-source development tools on Linux. Somehow it is assumed that your project should target LAMP (Linux, Apache, MySQL, Python). Windows-bound guys are advised to decorate their platform as ersatz Linux: install Apache, install MySQL, and you have WAMP (Windows, Apache, MySQL, Python). What kind of fun is that? No, we are going full WIMP (Windows, IIS, MS SQL, Python)!

OpenWrt GUI: new release

15 Feb, 2006 - 1 minutes

It looks like this is the last update before upcoming beta release. Besides some minor bug fixes, it sports improved firewall configuration widget:

  • Compact representation of port ranges.
    • Example: tcp 9000-9100 ⇒ mycomp
  • Port redirection.
    • Example: tcp 8080 ⇒ mycomp:80

While the former improves on existing functionality, the latter implements totally new feature. It allows mapping external ports to different ports of internal computers. Redirection of ranges is supported as well. As a matter of fact it was the most requested feature so far.

Packaging web apps

2 Feb, 2006 - 4 minutes

Have you been frustrated lately by speed of web applications? Typically they have a lot of art, and structured into a nice set of JavaScript and CSS files. They look beautiful, aren’t they? But do you have the patience to wait them load? And proceed from step to step?

Of course, it is possible to prepare a web application to high-demand life: merge all stylesheets, and JavaScript files, and compress the result, structure your GUI in such a way that it is possible to combine all small images in one, and so on. This is very tedious low-level work. There are some tools, which can take care of the problem. For example, Dojo compressor merges JavaScript files and transforms the code to minimize its size. There are some tools to “compress” CSS. But the task of general optimization of your web app is up to you. Otherwise you will have a lot of frustrated users.

Looking at stats: Google Video

2 Feb, 2006 - 2 minutes

Let’s take a look at Snakes & Rubies stats published on Google Video. But before that take a look at previous stats published on 1/27/2006. New stats include 5 more days covering 18 days of January 2006.

Title Page views Downloads
Snakes and Rubies (Adrian’s Django presentation) 190 7
Snakes and Rubies (David’s Rails presentation) 169 19
Snakes and Rubies (Q&A session) 89 2
Snakes and Rubies (full) 149 12
Totals 597 40

Lessons:

Python web frameworks

31 Jan, 2006 - 1 minutes

Now after two posts about Guido ’s quest for the Right Web Framework (1st , 2nd ) I am starting to feel like his relay station. But I want to share his comment made in Matt ’s blog post on Python web framework shootout :

Why criticize Django for claiming to be the best? Nobody has denied it, and yet it’s criticized as if it were somehow unethical. Frankly, the problem is that there are too many Python web frameworks and wannabees, and if we don’t start some kind of shootout, however subjective, we’ll never get to market dominance of a few good ones. I’m not saying Django is already the winner – but we are looking for a winner (or, more likely, a small set of winners) so future developers looking for a Pythonic solution only have to compare a small number of options, all mature, feature-rich, well-supported etc., rather than having to sift through 80+ half-baked solutions.