Aug 222012
 

A large part of my decision to move back to tech­nic­al work, and less pro­ject man­age­ment, was due to how much fun it was last year work­ing on the web applic­a­tions course for the XML Sum­mer School. And now it’s that time of year again to brush up on my cod­ing for this year’s ver­sion. For­tu­nately, although I’m run­ning a bit late in my pre­par­a­tions, Matt has done ster­ling work get­ting the code base work­ing, and Norm and Paul are doing their bits too.

This is all very dif­fer­ent to the health­care doc­u­ment ana­lys­is I’ve been doing recently, so I need to refresh my memory on Ruby, Sinatra, OAu­th, and co, as well as catch up on recent changes (in par­tic­u­lar to OAuth2, which finally made it to RFC not so long ago). Last year I worked through Singing with Sinatra; this year I get to see what Matt did for our XML web pub­lish­ing applic­a­tion (tak­ing XML files, con­vert­ing to HTML for browser view­ing, adding vari­ous webby bells and whistles) before the del­eg­ates do.

I’m mostly talk­ing about the secur­ity and iden­tity aspects of web sites (as well as help­ing out on the oth­er sec­tions), with the stated aim of mak­ing every­one para­noid enough to be care­ful. The hack­ers are get­ting more soph­ist­ic­ated these days, which means web­site coders have to be more careful.

Jun 012012
 

Recently I’ve had a late-night routine where I grab the Android tab, check email, check twit­ter, then catch up on Google+. I’ve found a few inter­est­ing people there to fol­low and enjoyed the con­ver­sa­tions and (some­times) eru­dite com­ments. Then I made a mis­take — I updated to the latest Google+ app.

It’s unread­able. The mix­ture of white text on pale back­grounds, and the caco­phony of jumbled bits of cropped pho­tos in gar­ish col­ours gives me a head­ache. I can­’t find any way to get rid of the images, or any way to turn back the UI to the old one (not per­fect, but at least I could scan for inter­est­ing art­icles). I’m told lots of people love the UI; I guess they must have some artist­ic sens­ib­il­ity that I lack. Or bet­ter eye­sight, able to scan past the dis­trac­tions to get to the text. Or maybe they are more inter­ested in the pho­tos than the text any­way, so for them it was the text that was the distraction.

Whatever the cause, I don’t read Google+ any more. Which is a pity, because I enjoyed that late-night routine, found some inter­est­ing art­icles, learned some new things. 

Maybe one day Google will learn to allow people more choice in the Google+ UI? It should­n’t be that hard; I can well ima­gine hav­ing dif­fer­ent apps that can all access the same under­ly­ing data, and present it in dif­fer­ent ways to the read­er. And if they’re try­ing to encour­age lots of people to use G+, it seems odd to me to force one UI on us all.

Apr 232012
 

Work­ing on remote, widely-dis­trib­uted teams has its advant­ages (I can work from home in my base­ment, wear­ing whatever I feel like) but also, of course, its dis­ad­vant­ages. In par­tic­u­lar, when the team is work­ing against a hard dead­line, being sep­ar­ated means not able to gath­er in front of a white­board, or eas­ily meet to dis­cuss the prox­im­ate cause of some bug.

For the latest dead­line-driv­en push to com­plete the test­ing and bug-fix­ing on time to deliv­er to the cli­ent, with a five-per­son team work­ing in timezones from East­ern Canada to Bris­bane, Aus­tralia (with a couple of us on Pacific time in the middle and the pro­ject man­ager on Chica­go time), we star­ted a group chat using skype. Teams have done this for years, of course, using IRC, so the tech­nique isn’t new. Skype has the nice fea­ture that you can switch cli­ents (in my case from PC to Mac laptop to Android phone), and the chats auto­mat­ic­ally sync so you can catch up on what happened since you last logged on (in my case also answer ques­tions while sit­ting in a con­cert at my son’s school, or at the air­port). Yes, I’ve heard the con­cerns about secur­ity back doors with skype but the choice of chat sys­tem isn’t mine to make. 

Sev­en days, 2351 lines, and 29964 words later, we shipped. Coordin­at­ing the test files, regres­sion test­ing, bug fixes, and doc­u­ment­a­tion updates with the com­pet­ing pro­jects, late nights, and timezone issues would have been much more dif­fi­cult with any oth­er means of com­mu­nic­a­tion. Yes, the chat got con­fus­ing at times with vari­ous issues being dis­cussed sim­ul­tan­eously amongst the three of us who were most involved, and there was a cer­tain amount of “can you remind what that issue was about again”, but some of that was due to the late nights and dead­line pres­sure rather than the medi­um of communication.

And it was fun, more fun than email mes­sages. Chats are more imme­di­ate, less form­al, we made each oth­er laugh and wandered off top­ic at times, which does­n’t hap­pen much in email in a cor­por­ate set­ting. It’s some­how easi­er to write “well done!” or “I need cof­fee” or “can you explain that again” in a chat than email. And in some ways it’s almost easi­er than being in the same room with people. With the amount of work in a short time, and late nights/long days, tem­pers occa­sion­ally get short and irrit­a­tion rises. In a chat it’s easi­er to step away and not say some­thing you’ll regret later; easi­er to say “I need a break, I’m going for a walk” than if you’re in the same office as someone else work­ing on the same deadline. 

Remote teams are often said to not be as pro­duct­ive as teams in the same office. After this exper­i­ence, I think some of that lack of pro­ductiv­ity is due to the people, and some to not fig­ur­ing out how best to use tools (even simple ones like chat) that are avail­able. Of course, every­one has to for­get their ego, and be pre­pared to say when they don’t under­stand or need more details (often easi­er in chat than face-to-face). And be under­stand­ing when things go wrong, while still work­ing to put them right again. A good pro­ject man­ager who knows when to keep out of the way and when to offer encour­age­ment also helps, thanks AM!

Apr 212012
 

My Win­dows 7 PC has been sub­ject to ran­dom freezes, once every couple of days, where the entire PC freezes to the extent that a reboot is neces­sary. Since most of my phone calls are VOIP, when my PC freezes it cuts me off, which isn’t great for busi­ness or my peace of mind. So I set about try­ing to find the cause.

One poten­tial cause of these sorts of crashes is old drivers. So I updated the sound card drivers, the mouse driver, the video card driver, and most oth­ers I could find. Net effect on freezes: zero.

Some web site sug­ges­ted old ver­sions of Java might be a prob­lem. I unin­stalled Java com­pletely, and rein­stalled the latest. Net effect: zero, except for muck­ing up my install­a­tion of Eclipse and cost­ing me time play­ing around with envir­on­ment set­tings to get the right com­bin­a­tion of Java ver­sions set up again.

The fam­ous (infam­ous?) Win­dows chkdsk pro­gram found no errors.

Check­ing wheth­er any import­ant ker­nel files had been cor­rup­ted, using system32/sfc.exe, showed no problems.

Microsoft has a Memory Dia­gnost­ic Tool, worth a try. Res­ult: no appar­ent memory issues.

At this stage I was run­ning out of good ideas, so I tried some­thing more ran­dom and moved the USB cables for the mouse and key­board to dif­fer­ent USB slots on the back of the PC. I did this two weeks ago, and the sys­tem has­n’t frozen since. Coin­cid­ence? Maybe mov­ing to a dif­fer­ent slot made Win­dows rein­stall the USB drivers? 

Aug 312011
 

A small note in the “in case I need this again” category.

I’m writ­ing a Sinatra app and want to add Twit­ter OAu­th for sign­ing in. A good way to do this appears to be with the omniauth gem but I ran into an issue. require 'oa-oauth' is the doc­u­mented way to require the right gem, but the error I was get­ting was ‘require’: no such file to load — oa-oau­th (Load­Er­ror), des­pite hav­ing installed the gem. I use RVM to con­trol the Ruby envir­on­ment, so also checked I’d installed the gem with the RVM ver­sion set to the ver­sion of Ruby I was using (1.9.2). Hunt­ing around I found a par­tial answer on the issues list. Par­tial, because the answers there did­n’t help, but the sug­ges­tion to try bundle show omniauth did. Bundle came back with Could not find gem ‘omni­au­th’ in the cur­rent bundle.

The answer turned out to be to edit the Gem­file to add gem omniauth to it, then run­ning bundle install. After that, bundle show omniauth found the gem, and require 'oa-oauth' in my Ruby app worked as well.

Aug 232011
 

I came across this weird prob­lem recently, where my Tungle account (tungle.me/laurenwood) was only syn­chron­iz­ing some of the events on my Google cal­en­dar. I checked they were set to the right cal­en­dar (yes), marked as busy (yes), and still could­n’t find the answer. 

This is an issue that quite a few people have had. Appar­ently what’s going on is that Google cal­en­dar sup­ports three types of avail­ab­il­ity for events: free, busy, and tent­at­ive. In the UI on the browser and on the Android they only show the free (avail­able) and busy. BUT, when you cre­ate an event on the Android cal­en­dar, it’s assigned the “tent­at­ive” status. I have no idea why, since I added those events to the cal­en­dar myself, they’re not invit­a­tions that I still have to accept or decline. And the fact that there appears to be no way to change the status once the event has been cre­ated just makes it worse. I tried chan­ging the status manu­ally to “busy” in both the browser and the Android cal­en­dar app but that did­n’t work. The only thing that did work was to delete the event and recre­ate on the desktop.

For­tu­nately tungle imple­men­ted a fix — you can choose to mark the sup­posedly tent­at­ive appoint­ments as “busy”. Here’s hop­ing any oth­er apps I may wish to sync with my Google cal­en­dar also imple­ment this feature.

/* ]]> */