I had been working on a custom feature addition to FlexSnap at work for the past few weeks which was keeping me off of my main project, and also off of working on the new MacBook work bought.. It came in in the middle of a project and it would have taken too long for me to switch to a different machine running a different OS. But now that I’m “back in the saddle” I’ve moved everything to the Mac and can (hopefully) be full-time Mac at work now.
Headed out to Maynard yesterday for BarCampBoston. I had the dubious distinction of being the first person to show up (other than the volunteers putting it together), but fortunately some others were quickly behind me. Hung around for about an hour or so before the first session… At first, it looked like it was going to be slim selection, but the schedule filled up quickly. The first session I went to was on “Neo-Cartography”, but it was pretty lame because the guys running spent about 15 of their 30 minutes on going around the room … I was worried that the “ad-hoc” nature of the event would cause all the sessions to be kinda chaucey, but I think people just needed a bit of time to figure out how short 30 minutes actually is.
Went to several great sessions, and I even took notes for several of the sessions I attended.. I used SubEthaEdit for the first time, and while nobody else contributed to my documents, a few people requested copies of the notes by adding their address to the bottom of the docs.
I didn’t go back for day two of the conference because I woke up early to take
I’m writing a tool in python that will automate the posting of the weekly newsletters for the film club. Currently, I manually post to LiveJournal, Craigslist, the SNFC webpage, and the mailing list. I had a tool a long time ago but it broke for various reasons.
Anyway, I want to have a directory of .py containing classes, and call a method [execute()] on each of them. This way I can just create a new subclass, pop it in that directory, and it will be picked up automatically. This is what I came up with, somehow I feel it’s crude and there is a better way to do it (ignore bad var names pls):
plugins = glob.glob("plugins/*.py") for x in plugins: pathName = x.replace(".py","") className = x.replace(".py","").replace("plugins/","") foo = __import__(pathName,globals(), locals(), ['']) bar = getattr(foo,className) obj = bar() obj.execute(nl)
This code looks for all of the .py files in the dir, imports them, gets the class from the imported module, and instantiates them. Finally, it calls the execute() method. Any suggestions?
I have had fairly mixed results when picking horror films as the weekly selection for the Sunday Night Film Club, sometimes the turnout is good, but often it isn’t so good. So I’ve been avoiding picking horror films, but it was just too difficult to skip on Land of the Dead this week, so I threw caution to the wind and chose it anyway. We are seeing it tonight at 7:20pm, and I know
Around noon yesterday,
I have this project at work, which I had started working on a bit before I broke my leg. This project had a deadline of June 30th. This deadline was fixed, and couldn’t change even though I was out of commission for two months. What makes this worse is that nobody else worked on the project at all while I was gone. And I’m not talking about “no coding was done while I was gone”, I mean nobody worked on it.. I had questions out to program managers, image scientists, etc. when I left to go skiing that fateful weekend, and when I came back to work after convalescing nothing had changed, none of my questions had resolutions. It was pretty frustrating… Fast forward a month and change to today, and things are looking fairly OK, but mostly because I stopped waiting on those who were roadblocking me and just “got it done”. Of course, as soon as these individuals see the software I’m sure they are going to gripe and complain that it doesn’t meet the non-existent requirements. Fortunately for me, I’ve kept my boss in the loop of my frustration and have a nice set of “get me some fucking information” email to cover my ass.
Anyway, I employed the services of Tim, who has just returned to the company full-time after a co-op a year or so ago, to help me with some UI stuff just to get it done. We left friday with one outstanding configuration UI to finish, but it shouldn’t be a problem. In fact, I had one of those eureka moments after I got back from Adam’s last night, and quickly jotted down some notes that should help me thrash out this final bit in short time on Monday (after physical therapy, of course).
I love coming up with good solutions to weird problems. I guess that is what keeps me employed as well. :)
Almost quitting time…
Ok, I was here until around 7pm last night, which was a terrible choice, because there are home games at Fenway all this week… It was hell trying to walk the block between work and the Kenmore station against the baseball sidewalk traffic… I came into work later today planning to leave some time after 7:30p.. Hopefully the commute will be a bit simpler then, but who knows…
NSPR is pretty interesting, even if I am only using a limited subset of its functionality. I am working on modifying a load test client for one of our server packages. Originally, the test client compressed the data using Zlib, then sent it out over an SSL client… This put a lot of strain on our servers, and to see if there would be a benefit in using one of the hardware SSL accelerators out there, we decided to remove SSL from the client/server. Unfortunately, SSL and Compression were tied together pretty tightly in the test client, so I am rewriting quite a bit. One of the cool things about the I/O part of NSPR is that it allows you to add layers to the sockets, so I am adding a compression layer, and later I will remove the compression from the old SSL layer. Then we will be able to add the 2 layers in any combination with any other layers we dream up in the process.
I am here at work, learning the Netscape Portable Runtime (NSPR), which seems pretty cool. I need to extend their socket routines, compressing the data that gets sent across the sockets… Using zlib, that shouldn’t be too hard.
Going to bed now… I spent a few hours tonight working on the playlist editor… I solved the BPictureButton flickering bug; i stopped using BPictureButton. :) I instead wrote my own derivative of BControl that instead takes a BBitmap and gives me way more control over the whole situation (and gets rid of the silly need for the BPicture, which I still don’t quite understand).
Anyway, my “SkinButton” class works exactly like BButton except for one thing, it isn’t firing off its BMessage when it is clicked upon. I am calling Invoke() in MouseDown() as the docs tell me to… I will have to crank on it tomorrow, but I am happy with what I accomplished tonight. I think I have my GUI teeth sharpened again. :P
Time to go to peaceful slumberland now, perhaps after reading some bookage. Hopefully sleep will come easier tonight.
I spent quite awhile talking to Chris and Jared last night, which was cool. I laid some foundation and got the first button working on the playlist last night (it is the close button). One annoying thing is that the button (BPictureButton) flickers irritatingly when the window is resized, so I have to figure out what I am doing wrong there (any ideas, Soco?).
I felt like supreme shit last night, and it just got worse throughout the night. I had so much trouble sleeping, I estimate I eventually fell asleep around 5am, and I slept past noon today. The good side to that long sleep is that I don’t feel anywhere near as bad as I did last night, which is good. I headed out to do some health and beauty aid shopping. I needed Shampoo, Conditioner, and Razor Blades. I also got a Styptic Pencil on the recommendation of Midgetor. A year ago I never cut myself shaving (I shaved like Edward Scissorhands, just ask Rory), but something changed during that time, and I cut myself in almost the same spot every time now… I guess I am getting thin skin in my old age.
…Here is a screenshot of the playlist work I have been doing for SoundPlay. As you can see I haven’t gotten rid of the BScroll* stuff yet.