tkui is all cleaned up

, | Tweet this

I broke out my Programming Python (2nd Edition) book and doubled my Tk knowledge in the space of an hour or two. I went through the tkui and fixed up a lot of issues involving thread contention. The tkui should be more stable now, titlebar manipulation works again (through the settitle(...) method), NamedWindows work, I fixed the Autotyper, and I went through and cleaned up the code while I was at it. All in a good night's work.

This was the last big issue I needed to solve before releasing 3.1 which has some sweeping fixes in it.

when going to Rose's...

, | Tweet this

you shouldn't bring a sleeping bag and you shouldn't bring food. She's got a futon and she's also planning on getting extra pillows. Additionally, if we run out of food we can always go out to eat or go out and get more food.

Stringbean overhaul completed!

, | Tweet this

I finally finished the complete overhaul of the Stringbean driver. It's now separated into a driver and a mudlib. I have everything implemented as a series of hooks and managers. Some portions are a bit awkward, though and could probably be re-written. Some components are implemented simplistically for now until I (or someone else) design and implement a more sophisticated version. All in good time, though.

Currently implemented: commands, emotes, heartbeats, lookables, exits, simple NPCs, connect, disconnect, and some other stuff.

Tk is irksome

, | Tweet this

So for some reason (and I haven't done enough research to even describe the problem adequately) Tk in Python 2.2.2 will hang (the entire Python process) when you go futzing around with the members of whatever you get back from Tkinter.Tk(). It only seems to have this problem on Windows 2000 and Windows XP. No one has mentioned issues on other platforms.

Anyhow, so I was going to do a version release this last weekend (that would be January 5th), except now I have to go puzzle through why Tk is being so twitchy.

tutorial on writing basic Lyntin modules

, | Tweet this

I wrote a tutorial on writing basic Lyntin modules. Hopefully it helps to fill a void in coming up to speed on Lyntin module writing. I'll probably add more tutorials as time goes on... Oh. Now that I think about it, I should have the Lyntin site just grab my RSS feed for the status. Mmm... I'll have to toss that around.

calendar, logger, pyblosxom!

, | Tweet this

I re-wrote my calendar utility (which tells me what my schedule looks like when I log in) in Python. This is good because I haven't touched Perl in some time and I wanted to add some other formats to it (like handling "second thursday" and "*/15") and I wasn't looking forward to figuring out what I wrote many years ago.

I also re-wrote my logger at work. It's not really a logger--it's more of a log extrapolator. It takes all these fun bits and puts them in places where I can glance over them quickly and guess at what happened rather than reading all the gory details and know enough to write a thesis.

Then I wanted to add a calendar to pyblosxom. So I adjusted the code to handle drop-in plugins and threw together a pycalendar thingy. It's not great but it works and it's not half-bad for an hour of coding.

every morning coming down

, | Tweet this
"Well, I woke up Sunday morning
With no way to hold my head that didn't hurt.
And the beer I had for breakfast wasn't bad,
So I had one more for dessert.
Then I fumbled in my closet through my clothes
And found my cleanest dirty shirt.
Then I washed my face and combed my hair
And stumbled down the stairs to meet the day."
-- Kris Kristofferson, Sunday Morning Coming Down

This guy must have been a developer--he just described my morning routine.

more Lyntin updates

, | Tweet this

I've just felt really inspired lately. I cruised through a color overhaul which fixed the totally borked handling of color formatting I had in there before. I also added a NamedWindow class to the tkui which is kind of neat. If that wasn't enough, I added bell handling and fixed up some stuff to make telnet control code issues easier to discover.

I've got a lot of changes. I think I'm going to release a 3.0.1 really soon.

At some point, I hope I feel motivated to do the distutils stuff. I haven't even researched it enough to figure out if we want to be doing distutils stuff or what code changes it would entail.

regular expressions in highlights and telnet control handling

, | Tweet this

I fixed some issues with telnet control handling which were borked. I also adjusted some things so that we show up more favorably on the Cryosphere mud client support table after talking with the maintainer of that table. I may look into adding some more features based on that table--like NAWS support. The existing problem is that for the textui, I can't seem to determine what the LINES/COLS numbers should be if you're running Lyntin over telnet/ssh. I'm tossing around adding hooks for telnet control negotiation and changing the MudEcho handling to use this hook instead. That'd open up the possibility of creating something like a wxPython ui which is completely xterm compliant. I have to toss this around a bit more. I also want to enable logging of incoming telnet control code sequences so I can see what's going on.

I finally added Sebastians patch for regular expressions in highlights, though I made some adjustments to account for the current codebase (the patch was from like 6 months ago or so) and also to use our regular expression syntax instead of a toggle on the Session.

It's slick! The regular expression implementation is also faster than my original string.find implementation. Doing something like this:

  > #highlight red e
  lyntin: highlight: {red} {e} added.
  > #highlight green i
  lyntin: highlight: {green} {i} added.
  > #highlight blue a
  lyntin: highlight: {blue} {a} added.

doesn't tax Lyntin as much as it did with the string.find method. I kind of wish I had done this a few months ago, but didn't really get around to putting in the time to figure out what needed to be done. I think I'm going to overhaul substitutes/gags in the same way next.