Thursday, October 12, 2006

The more things change, the more they stay the same.

Things fall apart; the center cannot hold;

Mere anarchy is loosed upon the world,

The blood dimm'd tide is loosed, and everywhere

The ceremony of innocence is drowned;

The best lack all conviction, while the worst

Are full of passionate intensity.

-- W.B. Yeats

Friday, May 12, 2006

Zope and Trac

I've put together a Zope frontend for Trac.
It seems to work fine (at least for me).
You can find it here

Friday, May 05, 2006

Erin and Scott's Web Blog: Engagement ring shopping

Erin and Scott's Web Blog: Engagement ring shopping

Fads & Erin got engaged! OMG jas and I are so stoked for them.
We both think Fads' heart probably nearly failed when he asked.

Thursday, April 13, 2006

Australian Eastern Timezones in Zope

Zope has had a well known bug with detecting Eastern Australian Timezones for a long long long time. Well today I got sick of detailing the workaround and created a Monkey Patch product for Zope 2 to fix it.

The problem is that Zope thinks that the EST and EDT timezones should be AEST and AEDT, well that's not what they're called, so most of the AU Zope servers run in US/Eastern time, which is very very very annoying.

So if you're in an Eastern AU state and you'd like your logs and times to be local without jumping through hoops, try downloading; ZAUTZ

Monday, April 03, 2006

More uploader stuff

Last night I had a lightbulb moment, and I added EPOZ support to the upload demo.
So you can use the wysiwyg editor, and add images from your HDD as you go.
I'll probably end up posting to the zope list for help with the IE javascript issues, since noone has responded on IRC or to the blog entry.

Saturday, April 01, 2006

Async AJAX Uploader with progress bar for Zope

I've tidied up the Threaded Transfer Agent code somewhat, and added enough support into it to build an upload demo that shows asynchronous uploads in action. The screenshot shows multiple uploads in progress, from the one form, allowing content to continue being added. The status is updated from Zope via XMLRPC (using jsolait), so I guess it's technically an AJAX application.
Async Upload Demo in Action

I'll release this code soon, I've got to find some people to alpha test it, I'm sure I'll have a few volunteers.

Actually if you know a bit about JavaScript for IE, I'd be happy for you to contact me as some of the status updating code doesn't work so well for IE (runs like a charm in FireFox), so I can get an IE version of it working. The JS code itself does fairly simple things, but, doesn't work satisfactorily in IE.

No, it's not an April Fool's joke.

Monday, March 27, 2006

More side projects, and (small) Javascript grid rant.

I'm letting Compiled Page Templates settle for a little bit, I got some pretty quick feedback about some bugs, but, nothing for a little while, I'm sure there will be more. I'm hoping it gets a hammering by some people. I converted ZWiki to use it, but, the underlying framework is a little too obfuscated to really get a decent speed up out of it (I could only manage 10%).

Meanwhile I'm working on Javascript parser in python. I'm not sure where this will end up, but, I can see that it would be very useful to be able to run javascript inside python.

I've been trying to find a 'nice' looking template so I can actually build a 'proper' website. I've spent a few hours playing around building static pages, and I just can't be bothered. So I guess I'll being doing something in Zope for that too. Actually once I get that up and running, I think I might consolidate all of my various projects there. As always it's finding the time, and since we're being evicted, I don't think I'll make any headway on that until after we find a new place and move in.

I played a little with jsolait and Zope the other day. The jsolait xmlrpc lib is like python's so it's nice to use (even though I'm not a Javascript guy really), but, it's going to help out on my current paying gig, so it was worth investigating. I'm not really a front-end guy at all, but, it's irritating that even the 'nice' javascript grid widgets suck. I guess that's a byproduct of living inside a webpage. I really want to be able to create a grid that grows and shrinks dynamically. All of the ones I've seen so far, can grow, but, never get any smaller. That's great if you want to browse a fixed dataset, but, rotten if, for example, you want to display an active queue of items.

On the grid thing, the LiveGrid people suggested we no longer needed paging, and we could just use scrolling to navigate through datasets. Well that's great if your dataset is really small, but, it's sucks if you want to get to something in the middle of the dataset. Something that will stay in the middle of the dataset regardless of how you sort it. I often find myself binary searching results from various searches trying to find the set I want (I'm not talking google searches here). I don't want to go back to linear search.

Sunday, March 19, 2006

Speeding up ZPTs

I'm doing a bit of 'tinkering' again with some of my old Zope projects I have lying around.
I''ve written my own TAL engine, and I was testing it to see if it was any faster;
Using this template (thanks mcdonc d8), I ran a test using the venerable ab tool that comes with apache. Don't write in to tell me my hardware is crap, I know that, I don't performance test on high-performance hardware..

<html xmlns:tal="http://xml.zope.org/namespaces/tal">
<head>
<title>This is the title</title>
<div>This is the head slot</div>
</head>
<body tal:define="values python:[('bug', 'me'),]*20">
<div>
<span tal:replace="values" />
<form action="." method="POST">
<table border="0">
<tbody>
<tr tal:repeat="itemz values" class="foo">
<td tal:content="python: itemz[0]">Name</td>
<td tal:content="python: itemz[1]">Description</td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>

The following are directly to Zope, not via apache.
First standard Page Templates;

Server Software: Zope/(Zope
Server Hostname: xanadu
Server Port: 8080

Document Path: /tmp/testTemplate2
Document Length: 2444 bytes

Concurrency Level: 10
Time taken for tests: 9.467635 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2651000 bytes
HTML transferred: 2444000 bytes
Requests per second: 105.62 [#/sec] (mean)
Time per request: 94.676 [ms] (mean)
Time per request: 9.468 [ms] (mean, across all concurrent requests)
Transfer rate: 273.35 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.8 0 9
Processing: 20 93 13.1 93 189
Waiting: 18 87 12.5 88 169
Total: 20 93 13.2 93 189

Percentage of the requests served within a certain time (ms)
50% 93
66% 94
75% 94
80% 94
90% 99
95% 105
98% 143
99% 150
100% 189 (longest request)
And now my Templates.

Server Software: Zope/(Zope
Server Hostname: xanadu
Server Port: 8080

Document Path: /tmp/testTemplate
Document Length: 2262 bytes

Concurrency Level: 10
Time taken for tests: 7.341181 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2469000 bytes
HTML transferred: 2262000 bytes
Requests per second: 136.22 [#/sec] (mean)
Time per request: 73.412 [ms] (mean)
Time per request: 7.341 [ms] (mean, across all concurrent requests)
Transfer rate: 328.42 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.8 0 9
Processing: 23 72 13.6 72 170
Waiting: 21 66 12.7 67 130
Total: 23 72 13.6 72 170

Percentage of the requests served within a certain time (ms)
50% 72
66% 73
75% 73
80% 74
90% 87
95% 94
98% 107
99% 115
100% 170 (longest request)

30% faster, and that's a trivial page template. I need to find a less synthetic test, to do some 'real' testing and find out how much faster it really is, especially with METAL involved.
I can speed it up a little more too by sharing the 'cooking' between threads.

Anyhow stay tuned...

Tuesday, February 28, 2006

China reports desert getting smaller

China reports desert getting smaller
I think that's pretty amazing given all the reports of global warming, and desertification that tend to populate the headlines. Although it's a drop in the ocean compared to China's total desertification, at least they seem committed to reversing the trend.

Thursday, February 16, 2006

Recruiters are delicate creatures

Sometimes I forget that IT recruiters don't quite have the same worldly experience that some of us have. My resume details my chequered past, and I have had to sanitise it a bit, so as not to possibly offend potential employers. There are two positions on my resume that have the place of work as "Confidential".

So I am at a recruitment office this morning, and this is the way it went, after the usual round of recruiter chit chat about roles and the company.

This recruiter asked me "Did you have to sign an NDA at these companies not to name them?"
To which I replied "One of them I did."
"What about the 2nd one that's marked confidential?"
"It was a porn company", I say unprepared for what is coming next.

Coffee squirts from her nose, all over her copy of my resume. "What were you doing there!" she spluttered.
"Well I wasn't stripping" I say wondering what the hell she thought an IT guy was doing there.
"OK well I think we should leave that one as confidential, and never mention it to anyone."
I agree with her, and can tell she wishes she hadn't asked. I don't think she'll never ask anyone that question ever again.

I only wish she'd asked me for more details. That's for another day though.

Wednesday, February 08, 2006

RMS doesn't own my brain

RMS has another rant going on over at LinuxP2P which is nothing new, but, this time he's slamming the Creative Commons people because they offer choice. Well, because they offer some choices that he disagrees with, coupled with the fact he thinks everyone else is too stupid to understand and differentiate those choices.

I respect the technical work he's contributed to the Open Source arena, I use xemacs daily, I use gcc, I use gdb. But, what's inside my head, even once I type it into xemacs and compile it with gcc, still belongs to me Richard, and I do have the right to decide what happens to my thoughts, just as you have the right to decide what happens to yours. Even if they are expressed in the form of a computer programme, or a catchy song.

The whole notion that my thoughts are not my own, because they're not a physical object, or because they're easily duplicated is rubbish.

If you want to release your code under the GPL, that's your right, I respect your right to do it. When I modify and distribute GPL code, I respect the license.

Please respect the rights I have to decide what I do with my own thoughts, I respect yours.

Tuesday, February 07, 2006

Why do I never learn?

I don't often have fast food, but, today I went to McDonalds for the first time in a long time. I grabbed a quarter pounder. They've changed the size of the buns and patties. They now have a larger circumference, and a thinner patty. They also don't taste the same as they did say six months ago.

Of course an hour later it was running through me like a dose of the salts. Next time I think I'll just have a doner kebab d8)

Sunday, February 05, 2006

Zope Stuff

I'm currently revamping some of my code just to clean it up. I'm toying with the idea of porting a bunch of my current Zope projects to Zope3.

A lot of my projects use RDBMS, especially to Postgresql. The SQL support for Zope3 doesn't seem to be there yet though, and my stuff uses a customised, optimised SQL class. I don't particularly want to go through the optimisation stage again, especially not prematurely.

My ExternalFolder Product is also something I'd really like to port to Zope3, it allows you to pretty much map anything to a Zope Folder. An SQL Table, LDAP hierarchy, filesystem. I was toying with allowing you to map a zip file to a Folder, so you could simply navigate it through the web.

XUF is also something I should probably port, and that could probably use the shoddy SQL support currently in Zope3, but, radical changes to Auth stuff isn't something I like doing (and nor do my users), so that will probably have to wait until after support has stabilised. I also have to shore up the Active Directory support (I don't have a domain controller to test against any longer), and do a new release.

Since I'm unemployed at the moment, I'm thinking of doing a web-based game for Zope in my "spare" time, I've got a few ideas;
  • Port Stellar Crisis
  • A Tradewars Clone
  • A (non-graphical) Elite Clone using the 'Text Elite' code that was released.
Stellar Crisis might be good, but, the code is in Pike, and I don't particularly like porting Pike code to Python.