Older blog entries for sjanes71 (starting at number 88)

News-ish Blog on Python and Humane User Interfaces     Started a news-ish blog that will focus on Python and Humane User Interfaces in technology (not limited to just computers). Occassionally I'll post other things that seem cool. Recursism Laboratories Interactive. I just wrote up a small survey on grid computing and it made me exercise some journalisitic muscles that I haven't used since like the 7th grade.
25 April 2003: My Father Dies, Age 51; Heart Attack     However, I did not learn of this until the following Monday. This week has been a whirlwind of ups and downs, with many downs. Lots and lots of things are up in the air. He had no will that I can find, in fact, his files were fairly random so it took a few hours of creating files from his piles to determine this. I realize that financially he could not have done everything he may have wanted at the time and very likely was trying to do this eventually, but probably never expected to die so young. He had no prior history of heart problems.

For you Advogatians who are older, find an estate lawyer and financial planner to help you protect your assets-- because whatever you leave behind without instructions (aka will) will be administered by the State in ways you may not have liked. It isn't expensive to do this, and your family will greatly appreciate not having to grieve and juggle your finances at roughly the same time.

For you Advogatians who are younger, I realize that its somewhat morbid to ask your parents or grandparents about these things and might be uncomfortable doing so but you and your family should consider doing this at least every year because things change-- people die, friendships fade, relations change. And yes, you too also need to find a financial planner to help you protect and grow your assets into the future and as a benefit, doing is sooner rather than later will help you enjoy a better "retirement."

My worst day was last Tuesday, but I still think about him and I have four new reminders of him living in my house now, Mikey, Binkey, Fluffy and Precious; three tuxedo cats and a calico-tabby all with four distinct personalities. The arrangement is temporary as I think they'll eventually move back in with my mother. Otherwise, it has been non-stop phone calls and other reminders about him that have been pretty hard.

Working from Home Again     So very very happy to not have to drive to McLean, VA 5x/week. Of course that means that I'm not going to be working as much for that job, but then again, I was getting absolutely sick of the work.

Pondering Subversion     The ebuild in Gentoo requires neon 0.19.2 but Gentoo provides neon 0.21.3. I don't know how much time I'll spend hammering on it and give up and go with CVS, again. For those who haven't heard much about Subversion, there is a draft book at http://svnbook.red-bean.com/book.pdf. [...] Bummer, the ebuild fails. I've spent enough time on it for today.

pydbbench     Putzed a bit last night getting pydbbench to generate GNU Plots of the execution data. It made pretty pictures but didn't really progress the framework of getting a Python script to automatically run and summarize benchmarks. Tonight I had a small fight with DB 2.0 API until I figured out that the pyPgSQL has a more advanced "connect_string" feature (send a string or a dict of parameters) than the MySQLdb library has (only a string is allowed.)

The only test written is a connect-disconnect test and the harness makes runs roughly:

each benchmark to run 120 seconds
for each driver: (PostgreSQL, MySQL)
  for each benchmark: (dbconnectdisconnect)
    run the setup
    for each concurrency: (1,25,100,250,500)
      run that benchmark
      summarize that benchmark
    run the teardown

When it starts hammering 500 sessions I think either the 2.4.20 Linux scheduler or Python threading starts to choke. I don't have enough hardware to run the benchmarker against a different machine where I would expect some different numbers. Now I'm getting to a point where it's time to write some more interesting tests. The framework also tracks successful iterations which I just tested by setting the max-connections for MySQL down fairly low. I'm going to stop hacking on it tonight and go back and do some reading.

1 Apr 2003 (updated 1 Apr 2003 at 15:26 UTC) »
Gentoo Linux Switching To RPM Format     Fuck, shit, cunt, sonovabitch, damn... what a fucking great April Fool's headline. Now I'm going to be shell-shocked for everything else that'll happen tomorrow.

BT & Redhat 9     I'm not seeing as large a speedup for this download as I saw for Mandrake, could be a function of the mix of users attempting to download RH9.

Work     Again, I'm taking on risk to be happy.

For the Advogato Commons: Draft/Code in Progress     Working on a small database benchmarking harness for the purposes of comparing recent versions of MySQL and PostgreSQL. People too often say that "This or the other is better/faster" but it is still quite useful to be able to run some kind of benchmark to get some numbers. Many other database benchmarks out there have good concerns with "end-to-end" testing (browser-webserver-app-db as in TPC-W) but end-to-end testing takes too long to set up and administer and I think that there are some legal issues with "publishing" TPC-W numbers.

The Open Source Database Benchmark seems to be dead, it was written in C which I don't think is absolutely needed to get a general idea of how a database will operate. MySQL's sql-bench is written in perl but doesn't work with newer versions of PostgreSQL. I'm not sure that I want to use a benchmark written by a database vendor themselves when they may have intimate knowledge of the inner workings of their own system-- but also sql-bench does not seem to have a "concurrent" method of testing where multiple sessions are hammering on the database simultaneously.

I really do love Python, so I'm going to go at it with Python. Perhaps the work will create some more pressure to help bring Python's database support to the levels of Perl DBI.

What? No, this isn't an April Fools thing.

The Straw that is ATA/IDE     Waiting on an updatedb to complete so I can use the locate command without a warning. This is driving me nuts-- I wish there were a way to make these drives faster.

pydbbench     I hope I didn't accidentally use someone elses name, I didn't do a search. I haven't finished the code to summarize the total "measurement" for all sessions, but each session knows how to count the number of iterations, rate of execution, and min,max,avg times of execution. This is connect/disconnect for PostgreSQL 7.3.2. Eventually I'll figure out how to chuck this into SVG for more oohs-and-aahs. I'm pretty happy with Python's treading so far.

1 session
ssn 0 name do_dbconnectdisconnect timelimit 10 iterations 385 rate 38.000/s min 0.018036 max 0.136911 avg 0.025974
5 sessions
ssn 3 name do_dbconnectdisconnect timelimit 10 iterations 66 rate 6.000/s min 0.019086 max 0.429477 avg 0.151648
ssn 1 name do_dbconnectdisconnect timelimit 10 iterations 67 rate 6.000/s min 0.022207 max 0.451928 avg 0.151311
ssn 2 name do_dbconnectdisconnect timelimit 10 iterations 83 rate 8.000/s min 0.021862 max 0.324185 avg 0.123009
ssn 0 name do_dbconnectdisconnect timelimit 10 iterations 86 rate 8.000/s min 0.019195 max 0.412027 avg 0.119611
ssn 4 name do_dbconnectdisconnect timelimit 10 iterations 97 rate 9.000/s min 0.018624 max 0.382124 avg 0.105128
25 sessions
ssn 4 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.188134 max 0.778501 avg 0.588586
ssn 3 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.182435 max 0.774702 avg 0.591407
ssn 0 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.194805 max 0.826876 avg 0.595367
ssn 5 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.221709 max 0.859946 avg 0.599044
ssn 22 name do_dbconnectdisconnect timelimit 10 iterations 16 rate 1.000/s min 0.539721 max 0.879632 avg 0.628659
ssn 21 name do_dbconnectdisconnect timelimit 10 iterations 16 rate 1.000/s min 0.482847 max 0.946763 avg 0.632173
ssn 24 name do_dbconnectdisconnect timelimit 10 iterations 16 rate 1.000/s min 0.554055 max 0.947282 avg 0.631847
ssn 6 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.204366 max 1.102799 avg 0.608936
ssn 2 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.189930 max 0.938403 avg 0.609606
ssn 11 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.190076 max 0.919035 avg 0.602645
ssn 9 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.312997 max 0.918923 avg 0.615667
ssn 7 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.276532 max 0.878170 avg 0.618143
ssn 10 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.243147 max 0.922962 avg 0.619472
ssn 17 name do_dbconnectdisconnect timelimit 10 iterations 16 rate 1.000/s min 0.540462 max 0.894974 avg 0.648541
ssn 8 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.268107 max 0.932455 avg 0.624780
ssn 12 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.229943 max 0.903213 avg 0.618912
ssn 13 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.216434 max 0.949649 avg 0.619694
ssn 1 name do_dbconnectdisconnect timelimit 10 iterations 18 rate 1.000/s min 0.033609 max 0.949737 avg 0.595317
ssn 15 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.317664 max 0.940005 avg 0.622457
ssn 19 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.298987 max 0.946451 avg 0.624361
ssn 23 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.490933 max 0.944254 avg 0.628118
ssn 18 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.285008 max 0.995577 avg 0.630302
ssn 16 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.343448 max 1.094034 avg 0.635534
ssn 14 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.332970 max 1.043219 avg 0.638293
ssn 20 name do_dbconnectdisconnect timelimit 10 iterations 17 rate 1.000/s min 0.380707 max 1.072901 avg 0.638602
26 Mar 2003 (updated 26 Mar 2003 at 18:13 UTC) »
Mandrake 9.1 and BitTorrent     I'm running a download not because I care much about Mandrake but I care more about BitTorrent, and want to see BT "succeed" as an alternative to other P2P systems. BT follows a little bit more the UNIX philosophy of building "small tools to achieve one purpose" than any other P2P application out there, which seem to kitchen-sink IRC, P2P, and Media player altogether.

Unfortunately the GUI version of BT segfaults on Gentoo (it was a masked ebuild so I'm not dissappointed) but the headless downloader still works:

saving:         mandrake9.1 (1950.3 MB)
percent done:   53.5
time left:      5 hour 19 min 18 sec
download to:    /home/sjanes/Shared/mandrake9.1
download rate:  92.5 kB/s
upload rate:    91.0 kB/s

I started this download from my W2K Laptop, let it run all night and it choked down about 49% of the ISO's. This morning I moved it to my Linux machine and was happy to see that the interim formats were platform independent, and resumed at my faster T1 connection at work.

The only annoying part is the slow startup of BT when resuming, because it needs to scan the entire download to know how much is downloaded.

Some time later... we have completion:

saving:         mandrake9.1 (1950.3 MB)
percent done:   100
time left:      Download Succeeded!
download to:    /home/sjanes/Shared/mandrake9.1
download rate:
upload rate:    142.2 kB/s

BT is truly some amazing work that needs to be integrated into Squid somehow. :)

Distributed DNS Policies     First come-first serve would indeed cause a land rush by all the squatters-- I think that probably the best policy is to develop a system where the Internet itself decides who is the best manager for a given domain space, e.g. everyone agrees that IBM's collection of servers over there should manage the ibm.com namespace. Networks instead of using a fixed set of root servers (if we keep the existing mechanisms of DNS), servers would apply a trust metric or subscribe to a publisher of DNS delegation. However, this can break the "universality" of the namespace because no longer can one assume that your e-mail will go to the same place because your DNS trusts/subscriptions may be different than someone elses. Could the Internet withstand that kind of chaos in the interest of lancing the boil of ICANN off of itself? Internet heal thyself? Maybe the best thing to do is for one of the distributed DNS providers to trial out such a democratic/trust/rating/subscription style system.

Hacking     I never get too much done over the weekend, having a life distrupts hacking. :)

HTTP: The Definitive Guide     O'Reilly raises the bar of quality again for their own books. I've only read two chapters so far and they've filled in some gaps of knowledge. The biggest eye opener was learning that there are also kinds of parameters to the left-side of the ?, e.g. http://blah-blah/pagename;param1=value1;param2=value2?cgiparam1=value1&cgiparam1=value2 I've never seen it used before because I think it has mostly been used for FTP parameters (send it in binary/ascii, etc.). FTP et TELNET delendae sunt. Passwords sent in the clear just isn't good. I don't care about wrapping them in SSL, it's the equivalent of a wrapping the tourniquet on the detached leg and not the stub attached to the body in my mind. However, basic authentication in HTTP isn't much better.
Grid Computing     I know that personally I'm probably a big electricity waster considering that I've got more computers than most ordinary people. Two of them have been basically on-demand file servers with SAMBA. I have one machine now that I cart back and forth from work that I do all of my primary development and a laptop that hosts Windows 2000 because our world is a very cruel one. I'm wondering how grid computing would be useful within a family-- closer to home, rather than to some pharmaceutical company folding proteins or nationally supported Al-Qaeda distributed cracking system.

The Robotic News Desk Editor     Google News points out as a minor "Top Story":

Jackson Wears Fake Nose , Hates Being Black , According To Article Launch Yahoo - and 89 related »
Hopefully this doesn't become a trend-- I use google news daily because generally this crap only appears in the Entertainment section, not the "Top News" section.

User Friendly open     I didn't get a chance to do diddlysquat on this, might get some time tonight.

auspex's open     I wouldn't think of it as a pitiful "file manager"--this is a good idea and better if you made a "user friendly" version that did not require getopt style arguments for "ordinary people" who are adverse to getopt-style command lines:

view x [with tool]
edit x [with tool]
compress x [with tool]
encrypt x [with tool]
decrypt x [with tool]
translate x to language

We already typically use MIME types to decide what program to "view" something with, why not also create mappings for edit, compress, and translate? I have heard of many users of computers who might have used some program every day for the last 3 years on their computer and didn't know what it was called. ("Do you use Word to edit your manuscripts?" "What's Word?" {{Clippy bangs on the CRT and mouths "I'm Word! Look at me! Help meeeee!!"}}) Too often icons on desktops represent file-types as application tools (e.g. there's a Winamp icon for a sound file, but no distinct WAV, MP3, or OGG icon) instead of file types. This idea has given me a small kick in the pants and I actually started prototyping in Bash-- but will switch back to Python because of better array support. More verbs than just those will be available and the issue of "x" where "x" is some filespec (hard to remember/type by users) will be looked at.

79 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!