Gordon P. Hemsley

Where I am in the software development world.

GPHemsley.org

Posted by GPHemsley on October 13, 2009

I know it’s been a while since I last wrote something here, but I wanted to pop my head in to make a long-overdue announcement. I’ve finally gotten myself an official, centralized place on the Internet: the aptly-named GPHemsley.org. (The .org part means that all donations are accepted—just don’t expect them to be tax deductible.)

I still haven’t gotten it to the point where it contains everything you might want to know about me, but my goal is to eventually make it a one-stop shop for everything I’ve ever done on the Internet. Ever. Right now, though, it just has a list of my blogs and notable papers I’ve written in my college (i.e. adult) career.

I felt this announcement was especially important to make now because there are two linguistics-related blogs writing posts about topics I’ve brought up, and I wouldn’t want to poop the party and have you find out about my new website from them. Perhaps I’ll have made more progress on my website by a week tomorrow.

Posted in Open Source, Web Development | Tagged: , , , , , , , , , , , , , , , , | Leave a Comment »

SVN Support in Bespin

Posted by GPHemsley on August 10, 2009

A couple of weeks ago, I kicked off the addition of SVN support to Bespin (bug 493038). This required two things: One was the actual ability to choose which VCS you’re using, as it defaulted to Hg and the auto-detection was primitive and long since functional. (There were rumors that it had even been missing from the code for a while already.) But that was the relatively easy part, as it was mostly just manipulating HTML.

The (relatively) harder part was writing the code that would do the actual work with SVN. (VCS support in Bespin is powered by UVC.) A factor in this difficulty was that the backend code is written in Python, which I’m not especially familiar with. Nevertheless, the process was actually simplified by the way things are set up, because I was able to copy the Hg code and just modify to fit the SVN commands. I was able to add basic checkout, commit, and update support, as well as username/password authentication. Kevin later came in and finished up the push/commit differentiation, among other things. I believe SSH support still needs to be done, but we’re looking for a method to use to do it. (Kevin has suggested using environmental variables, as SVN does not have the ability to pass SSH details via command line, like Hg does.)

Kevin and the other Bespin folks are in the process of getting the 0.4.0 release out the door today or in the next couple of days, and that will include this support for SVN, as well as collaboration.

Posted in Mozilla, Open Source | Tagged: , , , , , , , , , , , , , , , , | 1 Comment »

SASHA 0.1.0-RC1 Released

Posted by GPHemsley on July 12, 2009

It’s been a while since I’ve updated here, but I’d like to take the opportunity now to announce the first ever release of the Student Assignment, Scheduling, and Homework Assistant. SASHA 0.1.0-RC1 was released a few weeks ago for testing purposes, before 0.1.0 final is released.

Here is the official announcement:

This marks the first ever release of the Student Assignment, Scheduling, and Homework Assistant. SASHA is a tool designed to help students keep track of their assignments, tests, and other time-sensitive items. This release candidate includes features related to courses in educational institutions, including schedule items, assignments, and tests.

This release candidate is also a call for testers to help ensure that the release is relatively bug-free, and in a usable state. If no major defects are found, then the 0.1.0-RC1 code will be re-released as 0.1.0; else, another release candidate will be forthcoming.

Since SASHA requires institution-specific packages to operate efficiently, this release is mostly geared towards students at the University of Vermont (UVM), as that is the only package that is currently available. Packages must be downloaded separately.

SASHA Website: http://sasha.sourceforge.net/
SASHA Project Page: https://sourceforge.net/projects/sasha/
SASHA 0.1.0-RC1 Files: https://sourceforge.net/project/showfiles.php?group_id=163392&release_id=632770
SASHA 0.1.0-RC1 Release Notes: https://sourceforge.net/project/shownotes.php?group_id=163392&release_id=632770
SASHA Institution Packages: https://sourceforge.net/projects/sasha-pkg/

(This announcement was also submitted to the Slashdot Firehose.)

I’m currently looking for testers to give SASHA a beating to ensure that I haven’t missed any bugs. I’ve been using everything personally (i.e. dogfooding it) since I began writing it, but that also means that I may be too close to it to find the kinks. You may attempt to set up your own instance of SASHA, if you’d like, but be sure to read the instructions set forth in docs/INSTALL. You’ll be lost otherwise.

If you’re worried about setting SASHA up yourself, but are willing to try to help anyway, I’ve also set up a demo at YourSASHA.com for testing (and demonstration) purposes. If you have any comments, questions, suggestions, or any other feedback at all, please do not hesitate to join me in #SASHA-dev on Freenode. I’ll help you out.

Please forgive me for tagging this with Mozilla. While it’s not directly Mozilla-related, it is education-related, so I hope you’ll let it slide. More importantly, I hope SASHA will be able to help you at some point in the future.

Posted in Mozilla, Open Source, SourceForge | Tagged: | Leave a Comment »

Online Video Editing Using HTML5 <video>?

Posted by GPHemsley on April 30, 2009

This thought just popped into my head a couple a seconds ago, so I thought I’d throw it out there. Has anyone considered (or is anyone actively developing) an online video editing service that takes advantage of all the nice use features afforded by HTML5’s <video> tag? It just seems like it would be the perfect thing to do, especially with support in the upcoming Firefox 3.5 and Safari 4 releases.

Any thoughts?

Update: WTF? WordPress doesn’t automatically escape HTML symbols in post titles?!

Update 2: Nor does it support <small> tags in its posts?!

Posted in Mozilla, Open Source, Web Development | Tagged: , , , , , , , , , , , , | Leave a Comment »

Dropping Support for Mac OS X 10.4 in Firefox

Posted by GPHemsley on April 27, 2009

When I posted in the topic on mozilla.dev.planning about dropping support for Mac OS X 10.4 (Tiger) in the next version of Firefox after 3.5 (to be powered by Gecko 1.9.2), I was merely trying my viewpoint as a user of that operating system that likes to use the cutting edge of Firefox versions. I wasn’t expecting to anything more than contribute to the discussion.

However, my buddy Google just alerted me that I had been quoted—sandwiched between two slices of Mike Conner (mconner) bread—by Gregg Keizer in an article for ComputerWorld:

“Overall I think there’s a lot of technical reasons why 10.5 should be a new baseline, and the number of users is small and diminishing in any case, so I definitely support this from the Firefox side,” said Michael Connor, one of the company’s software engineers, later in the discussion thread. Connor was the one who jump-started the conversation earlier this month about dropping support for Windows 2000 and versions of Windows XP prior to Service Pack 2.

Not everyone is keen on the idea, however. “Suffice to say, I will be very disappointed if I can’t upgrade to Firefox 3.6 or Firefox 4 next year,” countered Gordon Hemsley, a user who posted to the forum.

Even though he recommended dropping 10.4 support, Connor acknowledged that doing so will irk some Firefox fans. “Users will be [angry]. That’s just the way it works,” he said. “But a huge number of apps seem to be 10.5-only these days anyway, so we’re just another tree in the forest.”

How cool is that?

Posted in Mozilla | Tagged: , , , , , , , , , , , , , , | Leave a Comment »

Coding for Tab Awareness in Bespin

Posted by GPHemsley on April 18, 2009

During our last status meeting, I brought up the issue of people not taking tabs (and the fact that they are variable-length characters) into consideration when coding new features that require text manipulation. As a result, I was asked to write a little tutorial on the wiki to help explain the situation to those not familiar with the code.

Take a look at the article. It starts by giving a little background information about the issue. It then makes note of which functions are expecting to be fed modelPos, rather than pos. It then goes on to explain how to obtain the proper position value and other things related to the fact that tabs are variable-length, based upon where they are in a line.

This article outlines the tools that one needs in order to properly consider tabs in text. However, it does not necessarily give step-by-step instructions on how to properly use the code; it has no examples. Is it clear enough to use? Or is there still confusion as to what to do?

Please leave me feedback here, and I’ll make any changes that are necessary to clarify things better. (Alternatively, you could make the edits yourself—it is a wiki, after all—but I wouldn’t necessarily recommend that. I mean, I am the one that wrote the original code…. You know, just saying.)

Posted in Mozilla | Tagged: , , , , , , , , , , , , , | Leave a Comment »

Quick Bespin Update

Posted by GPHemsley on April 13, 2009

A lot has happened since I last blogged about adding real tab support to Bespin. Since then, my code was merged into the main repository and things have taken off. I later tore apart a huge chunk of Bugzilla by way of sorting through and updating a lot of the old bugs, many of which had been on the books since before Bespin went public, or had been fixed a long time ago. I still have not sorted through all of them, and there are probably still a number of open bugs that fall into that latter category.

Since appointing myself the de facto Issue Manager (hat tip to amotsjonov for the link), I have been watching the incoming bugs like a hawk, and have determined that using the whiteboard to organize bugs has already become too unwieldy. Bespin needs to pop itself out of the Mozilla Labs product so that it can have components of its own. So I’ve filed a bug to that effect. I hope it will get approved and put in place soon, so that I can really attack all of the remaining unloved bugs and narrow down the focus of what there is to do.

Last week was also the first Bespin Status Meeting. After some technical difficulties getting our more foreign correspondents into the call, it went well. We discussed the near and far future of Bespin and what we plan to do. April is dogfood month, so we’re going to have to sort out the most glaring bugs and get the most important features implemented. That way, we’ll be able to use Bespin to edit Bespin. I’m looking forward to it.

Our next meeting is tomorrow. Though the agenda is not quite set yet, I do hope to discuss how things are running, and how to get them running even more smoothly. Perhaps I will chime back in after the meeting with more details.

Posted in Mozilla | Tagged: , , , , , , , , , , , , , , , , | 2 Comments »

Real Tab Support in Bespin, Part 2

Posted by GPHemsley on March 21, 2009

A couple of days ago, I blogged about trying to add real tab support into Bespin, and about the discussion going on about where that code should live. However, I can now report that, not only have I been successful in my endeavors (again, if you count my first attempt), I have been able to accomplish it solely within the Cursor Manager. This means that I have gone against what I had originally argued for, and I did it by simply starting over.

My first few attempts helped me get familiar with the code that controls the model, the cursor, and the editor. (MVC, as Ben referred to it. But no, not that MVC.) But attempting to switch between model-awareness and cursor-awareness just cluttered up my code and confused the heck out of me. So I saved everything I had in a little patch file, then reverted all my changes and began anew. (Having Ben first commit some basic cleanup stuff I came across certainly helped to clear things, too.)

So I approached the problem logically, with none of the conceptions from my prior attempts, other than my new-found familiarity with the code. This allowed me to focus on the one task that I had: keep everything in cursor. It also helped prevent me from having dozens of search windows up trying to figure out where things were. And, after a bit of minor confusion about object state persistence and object cloning (thanks, kdangoor!), it was done pretty quickly. But it does require that any position coordinates that are sent to the model be translated via the new getModelPosition().

Since Julian Viereck has been “messing around” with “my” code a lot lately, and since this darn task has taken up a good chunk of my day every day this past week and a half, I decided to put up my own public clone of the Bespin repository on BitBucket to keep things running smoothly. That way I can mess around with things, too, and not get in other people’s way (as much). My code for the tab support is available in this changeset, in addition to this attachment on the bug.

So go merge or import or whatever it is you do in Hg, and give my code a whirl. If you find anything amiss, don’t hesitate to let me know. I would imagine Ben will be critiquing my code at some point soon and then eventually getting it into the main source. Enjoy!

Posted in Mozilla, Open Source | Tagged: , , , , , , , , , , , , , , , , , , , | 1 Comment »

Real Tab Support in Bespin

Posted by GPHemsley on March 18, 2009

Over the past week, I have been attempting to add real tab support to Bespin (bug 474055), under the guidance of Ben Galbraith (bgalbraith). Discussion on this issue has ensued in many places, including on Ben’s blog (in which he indirectly called me a weird hippie), as well as in at least two topics on the Google Group/mailing list Bespin Core.

The issue behind supporting real tabs is getting the editor to know that a tab is a variable width character. I was able to solve the problem of calculating just how wide that character is supposed to be, but that turned out to be the easy part. The problem that I’ve/we’ve been having is whether to contain all that knowledge in the cursor code (since it is essentially only a display issue) or to allow it to seep into the model code (which does all the actual text manipulation). That discussion is still ongoing right now, but either way, the change would require a little bit of refactoring of a lot of different functions, so that we can keep track of whether the function is getting the cursor position or the model position (as the latter is really just the nth index in the array, with all characters being equal).

So that’s where I’m at now. I’ve tagged the bug with the “student-project” keyword, since I’m a student and I’m working on the project, and I’ve posted a couple of patches in the bug to track my progress (the first one actually works, for the most part; the second one, not so much). All suggestions welcome.

Posted in Mozilla | Tagged: , , , , , , , , , , , , , , | 1 Comment »

Writing an Extension for Tab Sets

Posted by GPHemsley on March 7, 2009

So, lately, I’ve been having problems with running Firefox 3.0.x on my MacBook Pro (which, admittedly, has been causing me many, many problems in the past couple of months unrelated to Firefox) in terms of speed and response time and whatnot. I’ve fairly certain it has something to do with the number of tabs I have open (which usually falls within the range of 75–100 tabs in my main window, plus a couple of other windows with fewer). However, running even more tabs (115+) on the latest Firefox 3.1b3 candidate build (build 2, as previously mentioned) doesn’t give me nearly as many problems. In fact, I think any problems it does give me are a result of Firefox 3.0.x slowing down my computer and confusing 3.1b3 into think it’s the one to blame.

But anyway, that’s beside the point. The point is, because of this large number of tabs, I’ve been looking to splitting them up into multiple windows. The thing is, if the computer’s not being slowed to a halt, I still have plenty of trouble finding the tabs that I want. It’s no fun having to scroll through 100 tabs to find what you’re looking for, after all.

So, I came up with the idea of writing an extension to have some way of managing what window is for what tasks (i.e. giving them names). Unfortunately (or fortunately, as it often saves me trouble), like every other idea I’ve thought of, someone has already created an extension that does what I’m looking for. This time, it was FireTitle.

The difference in this case, though, is that I’m not quite sure it’s tailored to fit exactly what I want to use it for. In fact, there are a number of problems with it:

  1. It doesn’t work with Firefox 3.1 (or, at least, hasn’t been tested for it).
  2. It only seems to get updated whenever a new version of Firefox comes out (i.e. it’s only been updated 3 times since it was created for Firefox 1.0).
  3. It doesn’t put the name of the tab set in the window title bar, only in the Window menu.
  4. It has a couple of other features I’m not interested in.
  5. It doesn’t save the information across sessions, a feature that was introduced in Firefox 2. (This is especially important, because I work continuously on the same set of tabs, independent of whether Firefox had to close for some reason. I don’t want to have to rename them every time I restart Firefox.)

On the flip-side of that, I’ve been wanting to write an extension for Firefox, but I haven’t had any good ideas to do it with. (Like I said, every time I come up with an idea, someone’s already beaten me to the punch.) So I think I just may go ahead with this idea. Or, at least, I’ll try to. I mean, I have a lot of stuff to do. But this should be useful for me, so that should drive me to do it. Another problem, besides time, would be learning how to do all the fancy code work. I’m a PHP coder, and I haven’t had sufficient experience with JavaScript to know everything by heart. Your help will be appreciated as I blog about it along the way.

I haven’t yet decided what I’ll call it, but it will be based around the concept of “tab sets”. As the term implies, these are sets of tabs group together by a common purpose. This might include “Firefox development” or “Fixing bug 487625” (a completely random number, as it were). This common purpose will also be reflected in the name of the tab set. (In these cases, they’d likely be identical.) So now on to the features:

  • As previously mentioned, named tab sets, possibly with more lengthy descriptions available somewhere.
  • Prepend tab set name to window title (which is followed by the browser branding on Windows, but not Mac; not sure about Linux)
    • Keep normal page title of frontmost tab of each window involved
  • Include number of tabs in the window title bar
    • Eliminates the need for the Tab Counter extension
  • Allow bookmark sets (folders) to be opened as a named window/tab set
  • Perhaps create a status bar button that would open (pop up) to give a list or thumbnails to bring a different tab set into focus (à la most multiple desktops applications). I’m imagining this in the lower left corner of the browser, by the way.

That’s all I’ve come up with so far. I haven’t yet started working on anything. I first have to look into the heart of FireTitle and see how they do it. Also, I don’t know quite how the features go across Firefox versions, but I’m going to be aiming this primarily for Firefox 3.1 (or, 3.5… grr…). If it turns out that’s not a big hassle to include Firefox 3.0 support, then I’ll do that, too.

If you have any questions, comments, suggestions, or answers regarding anything I’ve mentioned here, please comment. I’m looking for any and all feedback I can get.

Posted in Mozilla | Tagged: , , , , , , , , , , , | Leave a Comment »