|
||
| Tue, 19 Jul 2005 |
|
||
|
I've spent most of the last two weeks with my head burried in code. After spending much of the last year mulling over how to improve OpenThought, what to do finally hit me, and I've been inspired enough to spend days on end not doing much else but coding. The result is what I consider to be some pretty cool stuff, and what will soon be called "OpenThought 2". Details of the new version can be found on the openthought.net website. You can download OpenThought-1.99_03.tar.gz here. The architecture is about where I want it, my primary concentration at the moment is now bug fixes, writing tests, and cleaning up the installer. I'm sure some new features will work their way in, but for the most part it's where I want it for the next release. Part of whats been done is to clean up the JavaScript, to make it easier to have varying frontends. Currently, it's written in Perl, but it'd be great to have it available in additional languages. If you think you might like to help port the frontend to another language, let me know, I'll try and lend you as much support as you need to do that. There's only 17 functions, many are only 5 lines, and one of those 17 is the constructor :-) Any language is helpful. I'm really pleased to see where this has led, and I'm eager to get the next release out the door. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (5) | ||
|
|
||
| Mon, 04 Jul 2005 |
|
||
|
So, with the antibiotics given to me by the good doctor in my back pocket, we set off to see Toronto. Wednesday, after the conference was over, a few of us wandered off to a Vietnamese restaurant in the Chinatown (yeah, a bit ironic, but it works). Now, envision this. I had done nothing, nor eaten anything except for 2 bananas and a bowl of soup for 3 days. I woke up with an appetite. For dinner, I ordered the large fondue, not really knowing what to expect, but hoping for something big. I wasn't dissapointed, as you can see here. I had a plate full of beef and shrimp, and another plate full of veggies. A third plate held a bunch of rice wraps. When soaked with water, they became editable, a bit like how pitas would work. You cook your meat, toss in some bean sprouts, lettuce, and hot sauce, and munch away. Yes, I guess I really was sick to actually eat vegetables. The following day, we went to the science center. Now, that was kind of interesting. But perhaps even moreso, was what we saw on the way back. It was a McDonalds with underground parking. Even later that evening, we wandered around a bit to inspect some buildings we had seen during the car ride to the science center. On the way, we caught a nice sunset. We even ran across a moose who posed for a picture. On Friday, we wandered off to a castle build in the early 1900's, called Case Loma. The guy had it built, and ran out of money before it was finished. The big portion was done, but things inside, like the swimming pool, were never completed. Here is a picture of the outside of Casa Loma. Here is a nice view of the city from the castle tower. You can also get a good view of the courtyard. There's geeks everywhere you go. This guy participated in QuakeCon 2004. That evening, we went on a Hippo Tour. The tour's are on this vehicle, which is part bus, part boat. You drive around the city, with a tour guide pointing out stuff. Then whenever that's done, the bus just drives into the water and the tour continues. This is one of my favorite pictures, taken from the bus (while in the water). Afterwards, we just drive out. Friday, of course, was Canada Day. Something like our Independance Day. So they run around having parties, waving flags, doing fireworks, etc. We did go to see the fireworks, which began around 10:30pm at the lakefront. The Canadians really liked their fireworks, and "oh'd" and "ahh'd" the entire time. We personally found it to be a bit short and unimpressive, but whatever keeps Canadians happy :-) Perhaps slightly more interesting than the fireworks, was the Canadians trying to watch them. There was an 8 lane highway behind where we were sitting at the shore to watch. The cars kept pulling over to watch them, blocking 4-6 lanes. There were two "mounties" (Royal Canadian Mounted Police) who desperatly went car to car trying to shoe everyone along, but it was a losing battle. As soon as soon cars left and he moved on to others, additional cars took their place. Alas, there were so many people there, that we would have been outside for hours waiting to get on the street car to take us back to the subway. We instead decided to hoof it, walking 3 miles or so to the station. Oddly, in the midst of thousands of people downtown during all this, we ran into Chemboy, who was willing to walk along with us. Even on Monday, my legs are still tired from that walk. Saturday, we started off by going to the Art Museum. The only thing they let us take pictures of were the sculptures upstairs. Then we hit the subway yet again and wondered downtown. Today was a trip to Center Island. It has games, rides, food, beaches, restaurants, but most of all, really cool looking scenery. Here is a family of swans, a picture of the city across the lake, some folks fishing, Shana with some flowers she really liked, the beach itself (from a pier), a look at Lake Ontario, a maze, a lighthouse, and the boardwalk. As you can see on the right, some people actually live on this island. Saturday night, we weren't quite content to just stop. We decided to hop on the subway and go all the way out to the end to see what was there. What we found was this sculpture of a bus. Then on Sunday, it was time for the long trip home. We stopped at a rest stop on the way, which had a nice view out back. That's where we took this picture of what we think is Lake Raystown. And that's it for our Toronto adventure. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (3) | ||
|
|
||
| Fri, 01 Jul 2005 |
|
||
|
So, the continuation of the previos story.... I took some drugs given to me by the doctor a few blocks down (who just so happened to help his son with a programming business, doing C++ work. I would have loved to dig for some more info, but I wasn't all that into talking at the time). Anyhow, I fell asleep, aided by some Nyquil. I woke up a few hours later. Shana came over to see how I was, and almost dialed 911 when she found my forehead to be hotter than it already had been, and now covered in sweat. Actually, all of me was. I then noticed the pile of blankets I seemed to have pulled over me. Having a fever makes me feel like a woman. I'm hot, then I'm cold, hot, then cold, I just can't seem to make up my mind. Apparently, I was cold when I went to bed. But the antibiotics had since kicked in, and knocked my fever out. My body then began wondering what all those blankets were and tried to save me by creating a river on the bed that I could use for escape with a raft. If only I had a raft. I'm feeling better though, and made it to the cruise that night, and the YAPC festivities of the following day. Shana and I poked around the city some more today. I'll post the specifics, as well as some pictures, later on. Oh, and as Don said, the drugs were pretty cheap :-) |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (2) | ||
|
|
||
| Tue, 28 Jun 2005 |
|
||
|
Shana and I got up here nice and early -- way back on Friday. We'd have the whole weekend, and then 4 days after the conference, to poke around the city. Well, it hasn't worked out quite like that. On Saturday, while walking around (and taking some pictures I'll post), I managed to pick up a throat infection of some sort. Accompanied by a high fever and sore throat. Yuck. So, I've spent most of the time in bed so far. NyQuil has been my friend. I just picked up some antibiotics, so I should start feeling better soon. Shana, on the other hand, certainly seems to be enjoying herself. She sat in on a number of good talks, as well as always having some people to eat lunch and dinner with. That's good. Okay, some more NyQuil, back to bed. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (1) | ||
|
|
||
| Wed, 21 Apr 2004 |
|
||
|
I just gave the OpenThought website an extreme makeover. The new design is a lot simpler, easier to look at and... properly validates as HTML 4.01 Transitional, woohoo! The new site also makes use of OpenPlugin::Application and HTML::Template, the old site had made use of some custom PHP. The new design is much cleaner, which makes maintenance lovely. Still a few TODO's: I need to spice up the logo. Nate noticed that a lot of the online documentation is text, it should probably be converted to HTML. And the demo is a dismal grey, it should really match the rest of the site. Aside from that, it's coming along really well. Thanks to everyone who offered their comments. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Mon, 12 Apr 2004 |
|
||
|
Mirroring content found on Perlmonks and Chris's site, Robert Nagler has made his book "Extreme Perl" available online. As you might guess by the title, his book is about Extreme Programming using Perl. It will ultimatly be published by O'Reilly. I've gone through some of it, it looks good. I don't really care for reading that much material online, so I printed it out for perusal at home. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Mon, 15 Mar 2004 |
|
||
|
I got the crap beat out of me by references this weekend. It started last week, when I began doing some code profiling (using Devel::Profile. I actually hadn't used a profiler before. After seeing how simple and useful it was, I can't believe I waited this long. I noticed a number of issues with OpenPlugin that seemed relatively easy to deal with. For instance, Log4perl was taking up 33% of the execution time. I tried limiting the calls made to Log4perl by caching a whole bunch of stuff, but it was still incredibly high. So I just created a new Log driver, OpenPlugin::Log::Fast. So, your development code can use Log4perl, and production code can use the new Fast driver. It really does, in my environment, shave off 25-33% of the execution time. I also found an oddity where "use" appears to be faster than "require". Chris promptly posted a question about that on Perlmonks, as this is unusual behavior. But I regularly found that "use" took significantly less startup time than "require". Perrin feels that it might actually be a bug or inacuracy in Devel::Profile, but I dunno. Lastly, I found that it was spending a significant amount of time reading the config file each time the application ran. It was about 11% of the execution time. That's silly, because under mod_perl, we can read it once when Apache starts up, and just cache it for future use. We shouldn't have to read it more than once unless it changes. So, I made a hash for caching the config. It took two minutes to add the caching code. It was great, only two minutes for such a significant speed increase. Only it didn't work like that. The code awoke, and spanked me for trying to change it. I spent the entire weekend (minus my sister-in-law's birthday party, which was fun) fighting with this code. Whenever I was using the cache, values were mysteriously changing, causing all kinds of havoc. And not just any values, just a few values, in a deeply nested hash. It took a long time to track down what in the world was going on. It turns out that my nested data structure had a reference to it laying around somewhere (I'm still not sure where yet). So the first item cached worked fine. But when another item was being cached, any similarities to the first data structure caused the original values to be overwritten. For example, some of the config files contain a key called "include". So we cache a config file with the key "include". When pulling up the next config file, if it also contained a key named save, it ended up overwriting the first include value. While I still haven't found the exact spot the reference was being abused, I got around that by using Clone::PP. Clone::PP makes copies of data structures. Anything going into or out of the cache must be cloned. The good news is that everything seems back to normal now. What took 650ms to run last week now takes 250-300ms... profiling is cool :-) |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Thu, 04 Mar 2004 |
|
||
|
Woohoo! After 4 years, OpenThought finally has a new demo. It has most of OpenThought's features squeezed into two screens, which is cool. But to truly appreciate it, you had to have seen the Blues Brothers :-) |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Tue, 02 Mar 2004 |
|
||
|
Someone posted a message on the OpenThought mailing list a few weeks ago that got me thinking. In OpenThought 0.71, if you click a link, and you're waiting for the server to respond, clicking a second link cancels the first request. That can be what one wants, but that could also really stink. A user can't be expected to sit there and wait for a request to finish if it takes a particularly long time. So OpenThought now supports queueing of requests. Whenever a link is clicked, you can either have it execute immediatly regardless of any outstanding requests, or you can optionally have it queued if the server is busy. I've tested this out on a few different browsers, it seems to work pretty well. The actual code is a bit rudimentary, it needs to try harder to ensure there isn't a race condition. But it does work, and it's much better than what currently exists. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Sun, 22 Feb 2004 |
|
||
|
I've been particularly efficient with my time this week, and managed to get a whole bunch done within OpenThought (changelog) and OpenPlugin (cvs.sourceforge.net/viewcvs.py/openthought/openplugin/Changelog?rev=1.37&view=markup). OpenThought has a whole bunch of useful new features, and OpenPlugin is significantly easier to install, along with various fixes. Both modules suffered due to OpenPlugin's dependencies. OpenPlugin has enough as it is, but a bunch were regularly failing tests on standard systems. Those are the exact steps you need to take to make no one want to bother using your module. Five of those modules were because of the excellent Log::Log4perl. While it's a cool module, it requires a quite a bundle of modules. But it's developers discovered those problems too, and removed five of their dependencies. That's just cool. OpenThought no longer uses XML. As OpenThought matures, and specifically, becomes simpler, I've realized that using XML was just a decent way of handling the fact that OpenThought was too complicated. It's now just using GET params. This removes the dependency on an XML parser. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Fri, 20 Feb 2004 |
|
||
|
Back in 2001, I was amazed to learn that I had won second place in the Perl poetry contest for my submission of Jabberwocky. It was published in SysAdmin Magazine (which, at that point, was also The Perl Journal). That was really cool, but it had slowly slipped my mind over the years. It recently jumped out at me when I received an email from Susanne, a student at The Free University of Berlin. She's working on her master thesis in comparative literature. Her thesis is on, well, code poetry. And Jabberwocky is one of the three poems she's analyzing. She knows some coding, but not Perl. So she wanted a hand in deciphering what it was that I had written. I was happy to help out. I was curious how she had run across Jabberwocky, so I poked around on Google a bit to see what references there were to it. She had seen it on Perlmonks. But I was astonished to find this flattering review of Jabberwocky, along with a reference to it in this Wiki. Wow. I was really thrown off by all this. I'm surprised people understood it, much less enjoyed it :-) It was my first attempt at Perl poetry, and there's a number of things I'd consider changing about it, which is probably why I have trouble with all this attention :-) You can read it at one of the links above, see below for my commentary that I sent to Susanne. Be warned that the explanation is for someone who really doesn't know Perl well, and takes away from the flow, and any cleverness that it may have... it's like trying to explain a sunset, it's much better to just watch it :-) |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Sun, 17 Aug 2003 |
|
||
|
I've just committed the changes to CVS which implement an events system in OpenThought. In OpenThought, the browser might contact the server for one of several different reasons, each of which requires a different type of response. Previously, application authors had to test for these on their own, by checking the value of a GET parameter. That was aweful. The events-based system offers more structure to the requests the browser might send. There is a new method, called event, which figures out which event the browser has sent to the application. It then calls the appropriate subroutine, based on the parameters an author has given to the event method. I think this new system makes OpenThought applications much cleaner, easier to understand, and it lowers the learning curve for new developers. OpenThought is still considered alpha, but only because parts of the API are being finalized. I'm incredibly picky about API's, and I'm not okay pushing it into beta until I'm happy with how the API looks. Aside from that, OpenThought has been stable for over a year, we've been using it in production for quite some time at work. It will be going into beta very shortly so we can bang out any lingering bugs. Version 1.0 creeping up on us. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Thu, 31 Jul 2003 |
|
||
|
Joel (from Joel on Software) had posted the Joel Test, or 12 Steps to Better Code. In there, he has listed 12 things that any software development team should be using. He feels that everyone should be shooting for a perfect 12, or 11 would be okay, but 10 and below means your group may have serious problems. The items he lists certainly have merit:
A year ago, I'd say that our organization definitely fell into the "we have serious problems" category. I think we would have scored a zero. Perhaps a one, the schedule may have been up to date sometimes (#6). As far as the web team is concerned, between last year and now, we've gotten a bug database, written some specs (though this needs to be vastly improved), have begun buying the tools we need (they're about to buy me a copy of VMWare so I can actually test web code using IE -- but generally, I find it hard to compete with X, Vim, Perl, and an Xterm), we have several folks who can test (though not fulltime), and candidates have been writing code in interviews. Bugs are fixed immediatly, always before new features are added. Furthermore, today I just finished up the CVS repository for our web products, and we're preparing to move into a new area built just for the programming team. So what's left? Builds made in one step, daily builds, and hallway usability testing. Something along the lines of daily builds would be good. We don't actually need to do a "build" for Perl code, but perhaps running it through a syntax checker (perl -c) in checkin would be useful. Building in one step, or in our case, moving from development to production, should be easily scriptable. As for Hallway Usability Testing, well, that'll be interesting. Most people aren't used to that around here, but they could learn :-) Anyhow, we're not too far off now. Our products are generally web-based, and offered as a service, a convienence, to existing customers. We don't have the same level of funding for those shipping products as their main source of revenue. That doesn't mean we can't still do it well. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (1) | ||
|
|
||
| Fri, 18 Jul 2003 |
|
||
|
In between preparing to close on a house, getting a mortgage, getting an inspection, working on OpenThought, OpenPlugin, working late to roll out apps at work, going to four CPLUG and HPM meetings a month, and celebrating several birthdays, I've taken a real liking to the Perl Panel. Think GNOME Panel, without the GNOME part. And of course, it's written in Perl :-) It's a panel which sits somewhere on your desktop, can run applets, and allows you to launch apps. It's not really at a point where one would want to use it every day, it has plenty of things that need to be done with it (and the version number makes this apparent, 0.0.4). There's so much stuff that needs done, in fact, that it seems like the perfect group project for our Perl Mongers group. We've been looking for a group project for awhile that would accomodate varying experience levels. It's also possible to start off writing a very simply app, then to build upon it. The first thing I built for it was a battery monitor, which simply displays the battery status of a laptop in text. A next step would be figuring out how to change images on the fly, and have it show a nifty icon stating whether or not it's plugged in. If someone wanted to start out simple, some sort of system monitor, or weather monitor, would be a good way to learn the details of the interface. The Panel uses Gtk-perl, which is what I'm spending most of my time on. The Panel's interface is simple, it's Gtk's which is more of a pain to learn :-) There has been some positive feedback from our group. The next step, once I get a grasp on how Gtk works, will be to explain some of that at a meeting. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
| Sun, 15 Jun 2003 |
|
||
|
Lately, I've been quite busy with an apps rollout we're doing at work. A number of processes which used to be done by paper are being made electronic. The idea is fairly straight forward, though there's a lot of work involved. One of the neat things is that my company seems to be happy with using OpenThought to do all this. That's pretty cool :-) It's cool for a number of reasons too. Of course, OpenThought gets use, which quickly helps to bang out bugs, helps us to see what features are missing, and the like. But OpenThought has also reached a certain level of maturity that it's actually pretty easy to use, and allows you to bang out apps pretty quickly. The pilot release for our apps is next week, I'll get to see for myself how OpenThought really works for a large group of people. |
||
| /Blog/Computers/Programming/Perl | Permanent Link | Comments (0) | ||
|
|
||
|
Also, be sure to check out the OpenThought Web Application Environment |
|
Copyright 2003 Eric Andreychek |