October 2005 Archive
I didn't have a lot of time this weekend. So I decided to implement the simplest part of upcoming OpenWrt GUI (webui) — hosts editor. It is a perfect candidate to write something in 15 minutes or less — it has almost no "business" logic in it: read/edit/verify/write cycle. The hardest part was to learn how to upload dynamically generated files without writing them to disk first.
It turned out to be very simple. Right now it is implemented using Dojo's versatile dojo.io.bind() facility and some external code.
I am extremely pleased with dojo.io.bind(), which is a Swiss-army knife of AJAX programming. It makes practically any types of server callbacks possible! I hope it would be even better with support of alternative encoding and dynamic file uploads. I'll submit a patch to Dojo as soon as I'll find another free time slot in my schedule.
Stay tuned!
[See details]
Update: this document is officially obsolete — alpha is released!
Please download it again: http://lazutkin.com/webui-0.1-pre-alpha.ipk — two debug files made their ways to the release messing things up. Now it is fixed and I hope it'll work for you.
[See details]
DreamHost has switched to Python 2.4.1. Now python is the alias for python2.4. Yay!
Update: checked it again — nope, python is the alias for python2.3. But python2.4 is available as well.
[See details]
[See details]
Update: this document is officially obsolete — alpha is released!
Finally I released a preview: http://lazutkin.com/webui-0.1-pre-alpha.ipk!
I included two information applets and a simple network configuration applet. I think it would be enough for a proof of concept. I borrowed heavily from nbd's webif. So if it works for you, it is due to his OpenWrt expertise. If it doesn't, it is my fault.
Now please read release notes:
[Read more]
Finally I found time to finish it up. It is pre-alpha quality now, but shows the direction.
The only problem is a packaging. I didn't mean OpenWrt's IPKG. I am talking about creating a custom build of Dojo to reduce the foot print. Dojo has a special provision for that but so far I was not able to do it getting some strange errors. I hope I'll get some help from developers.
[See details]
I've migrated my sites to new Django admin. It is easy to do but make sure that you followed instructions closely. Small mistakes can cost you a lot of head-scratching time. You can find the instructions at the bottom of Backwards-incompatible changes.
New refactoring has totally made sense. Meanwhile Robert Wittams & Co is working on new-admin (note the hyphen). Django's admin is a very nice app (now it is an app!). I hope I could reuse some pieces of upcoming new-admin in my apps. If I remember correctly it was the main driving force behind branching.
If you want to try it out and help guys to polish the new-admin, you can switch to new-admin branch.
[See details]
DreamHost has installed Python 2.4.1. Somehow I didn't see it before. Default python goes to Python 2.3.5. Use python2.4 instead.
[See details]
I decided to post some screenshots of OpenWrt GUI running on my browser. I didn't package it as .ipk yet. Screenshots are hosted on Flickr. If you want to see full-size picture (== undistorted by scaling), go to "different sizes" (it is in "Additional information" on the right side), and select "Large". Please bear in mind that this is the first cut without any niceties. I'll put some niceties in, but I want to have working functionality first.
Almost all plumbing is in place now. I am about to create wizards, which will allow simple configuration. I don't have IPKG management yet, but it is on my to-do list.
Upcoming wizards will cover typical scenarios first. After that we will see about complicated scenarios: separate subnets, un-bridged wireless, and so on. Of course, I want to have a firewall configuration generated completely on client's side. But the last feature is planned for remote future.
[See details]
As you know I bricked my wireless router some time ago. All simple things were tried without any positive effect. Kaloz (of OpenWrt fame) has advised me to try JTAG. It's a very simple thing: you need a computer with parallel port, a proper software, and JTAG cable, which can be self-made. Obviously the last part is the crucial one.
[Read more]
In his blog post Ian Maurer shares a very slick way to run unit tests with SQLite's in-memory database. Check it out:
Simple, elegant, practical.
[See details]
Today I have good news and bad news.
The good news is tonight I was able to work on AJAX OpenWrt GUI a little bit more. It is coming together. I coded my first applet. It shows current stats, nothing fancy.
The bad news is I bricked my router apparently by running nvram show repeatedly. I suspect that nvram is corrupted beyond salvation. I have to reset it somehow. I tried simple recipies listed in OpenWrt Wiki but no luck so far. I'll try to revive it on weekend. I have a feeling that my future lies with JTAG. Until the router is up I cannot debug OpenWrt GUI. 
PS: Don't worry, the code was backed up before the incident. I'll continue as soon as I have my router up and running.
[See details]
O.K. I migrated to InnoDB using backup/restore. So far so good.
Don't forget to replace all "MyISAM" to "InnoDB" in your backup files before restoring them to new databases.
[See details]
Joy to the World! DreamHost just started to offer MySQL/InnoDB! Finally we can do transactions. Just three weeks ago they "didn't have any plans." 
Wording of the news is kind of strange: "we now offer InnoDB support on all new MySQL databases anybody adds from our web panel." It turned out I cannot change my existing databases. Oh, well. I can copy them.
[See details]
Today I learned that this blog is ranked 775,745 by Technorati! It means that only 775,744 blogs are better than mine. Eat my dust you two nameless losers!
I pledge to continue my standards of excellence and to grow my rank to at least 1,000,000. As a matter of fact I did almost everything I could for that. Now I have to find 224,255 people to join Technorati with their blogs... Damn this Technorati pyramid scheme!
[See details]