Aug 202009
 

I wanted to run a python pro­gram on my Mac that was ori­gin­ally writ­ten for Linux. Should work just fine, right? Well, not quite. Giv­en it took quite a while to fig­ure out pre­cisely what I needed, I’m writ­ing it up for next time I need to do this.

The first prob­lem was an error mes­sage triggered by the fail­ure of import gtk. The first assump­tion was that I needed to install python-gtk2. For­tu­nately I’d already installed XCode. The easi­est way to pull in pack­ages for oth­er code is to install some port soft­ware; I picked Mac­Ports. Installing that does­n’t take too long, and it sets up the right depend­en­cies and envir­on­ment vari­ables. Then comes the fun stuff, installing the oth­er pack­ages. This takes some time, although being almost an auto­mat­ic pro­cess makes it rel­at­ively easy.

The first thing to install was python_select, since I wanted to use a ver­sion of python oth­er than the default 2.4, then the right ver­sion of python-gtk. For python 2.5, that meant

sudo port install python_select
python_select python25
sudo port install py25-gtk2

The pro­gram still did­n’t run, with the same gtk error mes­sage, so after vainly edit­ing path vari­ables etc, I looked at the source, and added 

try:
      import pygtk
      pygtk.require("2.0")
except:
      pass

before the

try:
      import gtk

lines. This worked, and the pro­gram moved onto the next miss­ing package.

Repeat­ing for libxml2, and libxslt:

sudo port install py25-libxml2
sudo port install py25-libxslt

and my pro­gram finally worked.

Check­ing what was installed where is easy: port contents package-name where pack­age-name is the name of the package. 

It looks like things work a lot bet­ter than they did just a few months ago, if all the art­icles I found on how to get libxml to work with python on the Mac are any­thing to go by. 

Aug 182009
 

I’ve often wondered why so many U.S. online com­pan­ies won’t sell to people liv­ing in Canada. It’s a smal­ler mar­ket, to be sure, but not trivi­al, in fact big­ger than most U.S. states. I’ve recently dis­covered a large part of the reas­on — Canada’s import pro­ced­ures and tax laws.

Tim’s blog costs a reas­on­able amount to keep going, so we thought it might be nice to come up with some way to defray some of that. His pho­tos are pop­u­lar, so we figured to do some­thing with that, prefer­ably using drop ship­ping so we don’t have to invest in an invent­ory of things that might not sell at all. The idea, after all, is to make a little money, not have invent­ory sit­ting around that nobody wants. With drop-ship­ping we col­lect the money, send the order to the com­pany cre­at­ing the item, and they ship it dir­ectly to the end customer.

I try to do the right thing in terms of pay­ing taxes etc, so I star­ted phoning the rel­ev­ant agen­cies to find out the answer to one big ques­tion: how do I make sure the end cus­tom­er isn’t charged the Cana­dian sales taxes (GST for Canada, PST for BC) twice, while still allow­ing the com­pany to ship to them directly? 

The answer is: you can­’t. Not leg­ally, any­way. By law, if I sell some­thing to someone who lives in Canada, I have to col­lect the GST (and PST if they live in BC). When the item comes across the bor­der into Canada, if it’s shipped dir­ectly to the cus­tom­er, they have to pay it again. Leg­ally I can­’t not col­lect it on the grounds that they will pay it, and leg­ally they can­’t not pay it on the grounds that I already col­lec­ted it from them. I could engage a cus­toms broker to do this, but they’re far too expens­ive for me to con­tem­plate at this stage. The only leg­al way for the cus­tom­er to avoid pay­ing the taxes twice is if I have the item shipped to me, and then I ship it on to them. Which increases the cost of ship­ping, increases the deliv­ery time, and neg­ates much of the point of drop shipping.

Now I’m try­ing to fig­ure out the options. There’s the option of selling only to U.S. people, which seems weird since I live in Canada. There’s the option of telling Cana­dians that their deliv­ery will take a lot longer, since it has to be sent to me and then I’ll send it on (and I do have oth­er things to do with my time). There’s the option of recom­mend­ing they use some ser­vice that does this for them. And there’s the option of giv­ing up on the whole endeav­our. None of those options are par­tic­u­larly appealing.

Help­ful com­ments and sug­ges­tions are welcome!

Aug 132009
 

I’ve had a couple of inter­est­ing com­ments on my piece about Cod­ing vs Non-Cod­ing Pro­ject Man­agers; in my case it was the way things worked out rather than a delib­er­ate choice.

After my degree in phys­ics, and a couple of years of post-doc­tor­al work (which involved some com­puter stuff, of course) I got post-gradu­ate dip­loma in inform­a­tion man­age­ment that included all the good stuff such as data­base design, unix sys­tems admin­is­tra­tion, trans­ac­tion pro­cessing, C, etc., etc. And then went to work for a small SGML doc­u­ment con­sult­ing house doing, amongst oth­er things, the motif inter­faces for a doc­u­ment retriev­al applic­a­tion, schema design for dic­tion­ar­ies and encyc­lo­pe­di­as, and oth­er related work. I ended up doing more of the cus­tom­er-facing work, and less of the back-room cod­ing, mostly because I was bet­ter at it than some of the oth­er people who worked there, good at talk­ing to the cus­tom­er and tak­ing their require­ments back to the developers, and good at trans­lat­ing the developers’ con­cerns in terms the cus­tom­ers could understand.

When I got to SoftQuad, the idea was that I’d spend 50% of the time cod­ing, and 50% doing oth­er use­ful stuff. The oth­er use­ful stuff, as is its wont, grew. As an example, when we loc­al­ized HoT­Met­aL Pro, I was the one work­ing with the trans­lat­ors to make sure the strings made sense for the con­text. I checked the Ger­man ones myself since I speak flu­ent Ger­man and worked with a French-speak­ing per­son on staff for the French ones. I worked with the Adapt­ive Tech­no­logy Resource Centre on ways to make the pro­gram access­ible, as well as fig­ur­ing out the best way to incor­por­ate access­ib­il­ity check­ers to encour­age users to make the HTML access­ible. I rep­res­en­ted SoftQuad on many W3C and OASIS tech­nic­al com­mit­tees, bring­ing back the res­ults of com­mit­tee dis­cus­sions to the engin­eer­ing team and try­ing to make sure the com­mit­tees did the right thing without mak­ing it more dif­fi­cult for us to imple­ment. I coded demo scripts and taught tutori­als on how to use the macro sys­tem in XMet­aL, but that was the extent of my pro­gram­ming. Everything else took enough time that by the time I left SoftQuad after 7 years, the joke was that I owed my boss 3.5 years worth of coding.

Aug 112009
 

In my post­ing about becom­ing a Scrum Mas­ter, I talked about teams with non-cod­ing pro­ject man­agers often being more effect­ive than teams with pro­ject man­agers who also code. It seems that that’s a minor­ity view; most com­pan­ies appear to assume that any pro­ject man­ager should also act­ively code. I agree that any pro­ject man­ager in the soft­ware industry should have a cod­ing back­ground; if you haven’t been in the line of fire for a cus­tom­er deliv­er­able, or a demo for a con­fer­ence, then you don’t under­stand the needs of the coders on the team. You also won’t under­stand when they’re pulling the wool over your eyes, or mak­ing excuses because they don’t feel like doing some bor­ing but neces­sary task.

In a mid-sized to large com­pany, a pro­ject man­ager does the bor­ing stuff, talk­ing to leg­al about copy­right or licens­ing (for open source pro­jects in par­tic­u­lar), talk­ing to sales people about when the pro­ject might become a product they can sell to their cus­tom­ers, mak­ing sure the vari­ous parts of the team not only talk to each oth­er, but under­stand each oth­er, and mak­ing sure the vari­ous parts of the pro­ject mesh togeth­er. A pro­ject man­ager makes it pos­sible for the team to work as effi­ciently as pos­sible. This might mean shield­ing them from a man­ager who wants to change require­ments every day (one of the good things about Scrum, BTW, is the sys­tem for mak­ing sure that does­n’t hap­pen), or schedul­ing the secur­ity reviews for the right phase of the product design and release cycles.

In a small com­pany, the pro­ject man­ager is often also the product man­ager, doing all of the above as well as talk­ing dir­ectly to cus­tom­ers, tak­ing part in online dis­cus­sions, attend­ing con­fer­ences, and tak­ing part in rel­ev­ant stand­ards activities.

All of these are neces­sary activ­it­ies, and they all involve meet­ing with oth­er people, wheth­er in per­son or via some oth­er com­mu­nic­a­tion mech­an­ism. They aren’t tasks that require you to shut your­self away and think for hours, unlike, say, design­ing the serv­er-side archi­tec­ture, or hunt­ing down a recal­cit­rant bug. Paul Gra­ham recently wrote a rel­ev­ant piece entitled Maker­’s Sched­ule, Man­ager­’s Sched­ule. Using this ter­min­o­logy, each team mem­ber is a maker. It’s the pro­ject man­ager who takes care of the man­ager­’s sched­ule on behalf of every­one else, it’s the pro­ject man­ager whose sched­ule is inter­rupt­ible. The pro­ject man­ager does­n’t have the lux­ury of look­ing for­ward to a whole day of unin­ter­rup­ted work, the time to get deep in the zone, the abil­ity to ignore the phone and email. A lead developer will get more done, and the team as a whole will get more done, if s/he does­n’t also have to worry about HR issues, or nego­ti­at­ing an NDA, or telling a sales per­son why that large fea­ture for one cus­tom­er can­’t be added between now and tomor­row morning. 

Aug 042009
 

I’ve been asked by a couple of people involved in organ­ising con­fer­ences why they should have a con­fer­ence Twit­ter account, so I fig­ure it’s a gen­er­al enough ques­tion to be worth blog­ging. Basic­ally, it’s all about start­ing or con­tinu­ing your con­ver­sa­tion with those who attend, or might attend, or have atten­ded, or are inter­ested in the sub­jects your con­fer­ence covers.

If we take that as a start­ing point, then that answers the “why”, and Twit­ter itself answers the “how”, so we’re more or less left with the “what” (as in, what to tweet). Of course it depends on what sort of con­fer­ence you’re run­ning. One way to look at them is pre‑, dur­ing, and post-conference.

Pre-con­fer­ence: use twit­ter as an adjunct to the con­fer­ence web site, to remind people of impend­ing dead­lines, tell them of the new speak­ers who are signed up, or the new tracks that have been added. Even the fact that you’re get­ting the plan­ning com­mit­tee togeth­er is tweet-worthy, as it tells people the con­fer­ence is being planned, even if the web site does­n’t show it yet (and we all know how long it often takes to update the con­fer­ence web site). If the hotel is about to sell out, let people know. If fun swag has arrived for the attendees, let them know that too.

This is also the right time to tweet about art­icles or blog posts the speak­ers have writ­ten (point­ing out they’re speak­ing, of course), or news items related to the sub­ject of the conference. 

Dur­ing the con­fer­ence: you can remind people about today’s social events, tell them of changes to the sched­ule, remind them where the exhib­its are if you have an exhib­it hall. Point to people who are live-blog­ging the event, if any. Remind people which tag to use for pho­tos. I’d advise against tweet­ing so much inform­a­tion that people are pay­ing more atten­tion to the con­fer­ence tweets than the speak­ers; con­tests and the like can be dan­ger­ous for this reas­on (unless it’s a con­fer­ence based on twitter).

Post-con­fer­ence: point to blogs, write-ups, and photo pools from the event, let people know when plan­ning for the next one starts, ask for sug­ges­tions for speak­ers and top­ics for the next one.

A couple of tips about fol­low­ers: fol­low people who fol­low you, except for obvi­ous spam­mers or mar­keters. Con­sider fol­low­ing all the speak­ers you can. Don’t worry too much about how many fol­low­ers the con­fer­ence account has; if every speak­er retweets only the tweets about them, you’ll still pass the word around to people who by defin­i­tion should be inter­ested in the con­fer­ence con­tent.I’m sure there are oth­er ideas for con­tent, but these will at least get you started.

/* ]]> */