The bizarre world of the expectant father

I don’t often blog about non-work related stuff. Actually scratch that, I don’t often blog. But I can’t help but talk about how life becomes very strange when you’re expecting. None of this is new but it is new to me so therefore you must read it again and in some cases relive it.

Random strangers are suddenly your closest friend

I don’t know how my wife copes with it at least I don’t have to wear a stamp on my forehead proclaiming me to be an expectant father. Even so the fact does occasionally slip out while I’m talking to people I don’t know. All of a sudden I’m expected to offer up details on how far along we are, how my wife is feeling, if we know the sex, what names have we picked and damnit I just want to order some new checks please I don’t need to hear about how great the schools are around here.

They’re also all experts

So far I’ve been told in no uncertain terms that the city I live in is great for kids and terrible for kids. Natural birth is way better but epidurals are the way to go. Working from home is going to be great when the baby is here but also terrible. I don’t know what it is but when it comes to raising a child people suddenly start talking like they’re an authority rather than giving you suggestions like for other subjects.

They all think that you must be excited

Of course we must. I mean we’re only a few weeks from a large change in the status quo that by all accounts nothing can prepare you for so excitement is the natural reaction right? Generally I tell people that I’m actually petrified and everyone laughs like they think I am joking.

Which is strange because they apparently also think that your life is about to become terrible

  • What’s that? You’re feeling a little tired? Haha just wait until your baby is here!
  • You went to the cinema? Better do as much of that while you still can!
  • Laundry day? When your baby is here it will be laundry hour, amirite!

Need I go on?

But naturally we’ll want a second

Without a doubt the most bizarre thing to me is how common it is for everyone from friends and family to the supermarket trolley boy to ask when we’re planning to have our second. Hold your horses there buddy the first one isn’t even cooked yet, plenty of time to be thinking about dessert later.

Welcome to the new Toolkit peers – Paolo, Matt, Jared and Irving

Slightly belated in some cases but I’d like to formally welcome four new toolkit peers. Paolo Amadini, Matthew Noorenberghe, Jared Wein and Irving Reid have all shown themselves to be well capable of reviewing patches in any of the toolkit code. Paolo, Matt and Jared actually got added a few months ago but apparently I failed to make an announcement at the time. Irving was added just last week. Please congratulate them all and don’t go too hard on their review queues!

Also if you think there are others who should be peers of Toolkit (or current peers that are no longer relevant) then please let me know.

An update for hgchanges

Nearly a year ago I showed off the first version of my webapp for displaying recent changes in mercurial repositories. I’ve heard directly from a number of people that use it but it’s had a few problems that I’ve spent some of my spare time trying to solve. I’m now pleased to say that a new version is up and running. I’m not sure it’s accurate to call this a rewrite since it was entirely incremental but when I look back over of the code changes there really isn’t much that wasn’t touched in some way or other. So what’s new? For you, a person using the site absolutely nothing! So what on earth have I been doing rewriting the code?

Hopefully I’ve been making the thing a whole lot more stable. Eagle eyed users may have noticed that periodically the site would stop updating, sometimes for days at a time. The site is split into two pieces. One is a django website to display the changes. The other is the important bit that reads the change data out of mercurial and puts it into a database that the website can use. I do this caching because it would be too expensive to work it out on the fly. The problem is that the process of reading the data out of mercurial meant keeping a local version of every repository on the server (some 5GB for the four currently tracked) and reading the changes using mercurial’s python API was slow and used a lot of memory. The shared hosting environment that I run this out of kept killing the process when it used too many resources. Normally it could recover but occasionally it would need a manual kick. Worse there is some mercurial bug where sometimes pulling a repository will end up with an inconsistent database. It’s rare so many people don’t see it but when you’re pulling repositories every ten minutes it starts happing every couple of weeks, again requiring manual work to fix the problem.

I did dabble with getting this into shape so I could run it on a mozilla server. PAAS seemed like the obvious option but after a lot of work it turned out that the database size restrictions there made this impossible. Since then I’ve seem so many horror stories about PAAS falling over that I think I’m glad I never got there. I also tried getting a dedicated server from Mozilla to run this on but they were quite rightly wary when I mentioned that the process used a bunch of memory and wanted harder figures before committing, unfortunately I never found out a way to give those figures.

The final solution has been ripping out the mercurial API dependency. Now rather than needing local mercurial repositories the import process instead talks to them over the web. The default mercurial web APIs aren’t great but luckily all of the repositories I care about have pushlog installed which has a good JSON API for retrieving recently pushed changesets. So now the process is to pull the recent pushlog, get the patches for every changeset and parse them to work out which files have changed. By not having to load the mercurial structures there is far less memory used and since the process now has to delay as it downloads each patch file it keeps the CPU usage low.

I’ve also made the database itself a lot more efficient. Previously I recorded every changeset for every repository, but many repositories have the same changeset in them. So by noting that the database gets a little more complicated but uses much less space and since you only have to parse the changeset once the import process becomes faster. It took me a while to get the website performing as fast as before with these changes but I think it’s there now (barring some strange slowness in Django that I can’t identify). I’ve also turned on some quite aggressive caching both on the client and server side, if someone has visited the same page as you’re trying to access recently then it should load super fast.

So, the new version is up and running at the same location as the old. Chances are you’re using it already so if you’re noticing any unexpected slowness or something not looking right please let me know.

Developer Tools meet-up in Portland

Two weeks ago the developer tools teams and a few others met in the Portland office for a very successful week of discussions and hacking. The first day was about setting the stage for the week and working out what everyone was going to work on. Dave Camp kicked us off with a review of the last six months in developer tools and talked about what is going to be important for us to focus on in 2014. We then had a little more in-depth information from each of the teams. After lunch a set of lightning talks went over some projects and ideas that people had been working on recently.

After that everyone got started prototyping new ideas, hacking on features and fixing bugs. The amount of work that happens at these meet-ups is always mind-blowing and this week was no exception, even one of our contributors got in on the action. Here is a list of the things that the team demoed on Friday:

This only covers the work demoed on Friday, a whole lot more went on during the week as a big reason for doing these meet-ups is so that groups can split off to have important discussions. We had Darrin Henein on hand to help out with UX designs for some of the tools and Kyle Huey joined us for a couple of days to help work out the final kinks in the plan for debugging workers. Lot’s of work went on to iron out some of the kinks in the new add-on SDK widgets for Australis, there were discussions about memory and performance tools as well as some talk about how to simplify child processes for Firefox OS and electrolysis.

Of course there was also ample time in the evenings for the teams to socialise. One of the downsides of being a globally distributed team is that getting to know one another and building close working relationships can be difficult over electronic forms of communication so we find that it’s very important to all come together in one place to meet face to face. We’re all looking forward to doing it again in about six months time.

An editable box model view in the devtools

This week the whole devtools group has been sequestered in Mozilla’s Portland office having one of our regular meet-ups. As always it’s been a fantastically productive week with lots of demos to show for it. I’ll be writing a longer write-up later but I wanted to post about what I played with over the week.

My wife does the odd bit of web development on the side. For a long time she was a loyal Firebug user and a while ago I asked her what she thought of Firefox’s built in devtools. She quickly pointed out a couple of features that Firebug had that Firefox did not. As I was leaving for this week I mentioned I’d be with the devtools group and she asked whether her features had been fixed yet. It turns out that colour swatches had been but the box model still wasn’t editable. So I figured I could earn myself some brownie points by hacking on that this week.

The goal here is to be able to inspect an element on the page, pull up the box model and be able to quickly play with the margins, borders and padding to tweak the positioning until it looks right. Then armed with the right values you can go update your stylesheets. It saves a lot of trial and error with positioning.

It turned out to be relatively simple to implement a pretty full version. The feature allows you to click one of the box model values and type whatever value you like, in any CSS unit you prefer. If the size had been set in the stylesheet in some specific unit then that is what appears in the input box for you to change. Better yet as you type numbers the element updates in the page on the fly and you can use the arrow keys to increase/decrease the value until you’re happy. It’s a really natural way to play with the element’s position.

The changes made appear on the element so you can find them in the rule view pretty easily. This patch is based on an updated version of the box model view which is why it looks so different to existing Firefox, all my work does is make the numbers editable.

I actually completed this so quickly that I decided to take this one step further. One thing missing from the box model display is information about border colours. So I added some colour swatches for each border and made them editable with the regular devtools colour picker.

Both of these patches are pretty much complete but they’ll have to wait for the new box model highlighter to be complete before they can be reviewed and land.

Sycamore Canyon, July 27th

We went for a hike through Sycamore Canyon this afternoon getting some amazing overlooks of the Pacific coast as well as seeing some very alien landscape. This canyon was one of those hit by the wildfire recently and while the firefighters clearly worked hard to keep the campsite untouched as soon as you walk out onto the trails the impact is clear. The area looks almost desolate with blackened trees littering the hills. It’s so quiet up there too, it seems that few people want to explore while the canyon is in this state but I found it quite interesting to see just how different everything is right now. It’s not all bad news, there are lots of signs of regrowth, prickly pears with green buds, agave with green shoots and many trees are showing new green leaves. I think the most spectacular thing was how a lot of the damage was clearly only skin deep. Lots of the trees there are black on the outside yes, but where the bark has started to peel away the branches are a bright red underneath, as if untouched by the heat and flames. It makes for quite a spectacular contrast. We’re planning on going back there a lot to see how everything changes.

This trail was just under 4 miles though we extended it by having to park down the road because the campsite was full. It’s mostly a loop with a spur off to follow the ridge to overlook the coast. It is amazing to be up so high and see down the coast. Today the skies were clear and the ocean was a beautiful blue making for some truly epic views. Check out the photos I took on the map below.

Wildwood Regional Park, 1st June

Last weekend a friend of ours was visiting so we took him out to one of our favourite walks in the Wildwood Regional Park. We’d spotted earlier in the week that there was a closer entrance to the park, just a few minutes drive from our house so we decided to try it from that side. From the maps it looked like we could drive quite close and by just a mile or so from paradise falls. Of course things never work out like that. One of the roads was closed to public traffic and so we ended up parking further out. We spotted the start of a trail leading up into the hills and so decided to take that instead. It ended up being a very steep climb up some 600 feet in the first hour but it was worth it for the views from up there. After we got down into the park and to the waterfall we found a flatter route back, it just involved going past a water reclamation facility so we had to put up with some bad smells for five minutes.

This is a five and a half mile hike, quite steep at first but it flattens out once you get out of the hills and into the main park. It took us three hours to complete.

 

How to Win Friends and Influence People in the Digital Age

A friend recently made me a deal where he would buy me this book if I’d read it and tell him something that I learnt from it. I think this is all a cunning plan of his to get all his friends to do the same and save him having to read it himself but I’m never one to turn down a free book, especially when it is one that a former manager recommended I read. Well ok so he recommended I read the original which was written in the 1930’s. Since then there have been a number of books based on the same ideas for different audiences, even one in pink for teen girls (I am not kidding). This version attempts to bring the concepts into the modern age by using more recent examples and explaining how you can apply them to the internet age.

The title of this book always put me off. It made it sound like a textbook on manipulative practices to make people like you. That isn’t really what it’s about though. It’s more about changing your own attitudes and behaviours than it is trying to get others to change theirs. The claim is that others will react to your attitude towards them and often respond in kind so if you can change yourself for the better then you’ll see others respond to you in better ways.

The principles in this book are well worth anyone taking the time to read over and try to follow. This is particularly true of those in corporate environments and they are all vital for those who manage people. It should come as no surprise then that all of them are also covered to one degree or other in other management books that I’ve read. This means that nothing in this book was completely new to me. Some of the chapters did put some of the ideas into different contexts and had me thinking of ideas that might help me manage my teams though.

What I liked about the style of the book was its simplicity. It’s short and doesn’t mess around. You can see what all the techniques are from the table of contents. For many you don’t even need to read into the chapters to understand why they are important but the chapters provide useful examples of how they can be applied in certain situations. I’m planning on making a list of the chapter headings to stick up by my desk somewhere for quick reference. A couple of the chapters seem to go off the rails a little, particularly towards the end and some of the examples meant for the digital age felt a little contrived and jammed in for the sake of it. I do wonder if it might be as good to read the original and rely on yourself to figure out how to apply it to the modern world.

I think the thing I immediately drew from the book is that I am consistently too negative. I was at first going to make this post a scathing review of the book because for sure it does have some problems. But that would be ignoring all of the benefits you can get from reading it. And what would be the point? Maybe it makes me feel big and clever but it doesn’t make me look big and clever. So hopefully this is a more positive review that should convince you to take a flick through, it is certainly worthwhile if you haven’t read much like it in the past.

And now I feel big and clever for seeing that being negative only makes me feel big and clever. Ah well, can’t win them all.

500px isn’t quite Flickr yet

Since the big changes to Flickr last week I’ve been mulling over the idea of switching to a different photo sharing site. 500px had caught my eye in the past as being a very similar concept to Flickr. It has social aspects like Flickr does, maybe even more so as it supports the notion of “liking” a photo as well as making it a “favourite”. They seem to target the more professional photographer (yes Marissa Mayer, there really is still such a thing) and the curated photos that show up through their main photos section shows that. Frankly it’s a little off-putting since my photos don’t even come close to that level, but the same can be said for Flickr’s similar sections so I guess it’s not that big of a deal. So I took a day or two to upload some of my photos, put 500px through its paces and see how it measures up to Flickr. I’ve built up a fairly specific workflow for my photo uploading and I’m measuring against that so what might be show-stoppers for me may not affect others.

Ultimately if you can’t be bothered to read the details I found that 500px is a nice enough photo site and while visually it may look better than Flickr right now it is missing much of the functionality that I find important.

Basic organisation

500px lets you organise your photos similarly to Flickr. You have your photo library and you can put your photos into sets. The main difference is that while in Flickr your full library is generally visible to everyone, on 500px it isn’t. Instead the main photos you see for a person are those put into the “public photos” area, which just appears to be a special set. This is a little odd. If I want to see someone’s photos I have to click through all their sets, Flickr just lets me browse their photostream. Stranger still, sometimes photos randomly end up in the public photos set without me putting them there. I don’t know if this was something the website did or the plugin I used to upload, but after uploading two sets which overlapped all the photos that appeared in both sets were suddenly in the public photos set too.

Browsing through photos is hard on 500px. On Flickr if I go to a photo I can see which sets it appears in and easily move back and forward through any of those sets or the photostream. 500px only shows you thumbnails for the set you got to the photo through, it makes finding similar things from the same photographer more difficult. 500px also supports tags of course, but there doesn’t seem to be a way to show all the photos from a photographer with a particular tag. There doesn’t even seem to be a way to see a full-size version of a photo, just the 900px wide version on the main photo page.

Uploading

I’m not the sort to trust online sites to be the place where I store and manage my photos. I keep everything managed locally in Lightroom and rely on Jeffrey Friedl’s excellent plugin to then mirror that to Flickr, so I wanted to do the same with 500px. They have a Lightroom plugin too. Excitingly for me it is open source so while I found problems here it could be possible for me to improve it myself. 500px’s plugin is in a word “basic”. It can upload your photos tag them and name them but that is about it. It is remarkably slow to do that too. For some reason it does the upload in two passes, the first pass eats up my CPU and seemingly does nothing (maybe rendering the photos to disk somewhere?) then it goes ahead and does the upload. This is frustrating since you have no way to guess how long it might take. Probably not a problem for small uploads though. The other big problem for me is that it uploads the photos in a random order. I like my photos to be in the order I shot them but there doesn’t seem to be any way to do this at upload time with 500px’s plugin. Just the lack of options in their plugin mean I’d be spending a long time trying to make this plugin do what I really wanted, things like tagging based on rating, stripping certain metadata from photos etc.

Organisation

Once you have your photos in Flickr you can use their excellent organiser to put things into sets and arrange things how you like. As I mentioned I prefer to do this in Lightroom and just mirror that, but that doesn’t work for things like the order that photos appear in sets. Flickr makes that pretty easy, you can reorder a set manually or by various attributes like capture time. After uploading to 500px put all my photos out of order I figured I could just correct this online. Sadly the 500px equivalent is extremely basic. You can reorder manually … and that’s it. For a set of a few hundred photos that just doesn’t cut it.

Portfolios

One feature that 500px has that Flickr doesn’t is portfolios. They are effectively a custom website to show your photos off on, no 500px branding, very clean layouts that just show your photos off. They’re a little oddly implemented to my tastes, you have to create custom sets to appear in your portfolio, and those sets don’t show on the main 500px site. Want the same set in both? You have to duplicate it. I wasn’t a fan of any of the available layouts either but that is just my taste. Apparently you can go in and edit the layout and styles directly so you can probably do better things with this. Ultimately I don’t think it’s a very useful feature for me, and if I wanted it I could just use Flickr’s API to build something similar on my own site.

Stats

One of the things that scares me about Flickr dropping Pro membership is that they are probably going to be phasing out their stats. I like to be able to see how many people are looking at my photos and where they are coming from and while Flickr’s stats offering was always simplistic to say the least I could at least use it to find sites that were linking back to my photos. 500px boasts “Advanced Statistics” for the paid tiers, but I’m sad to say that this claim is pretty laughable. Flickr’s stats are poor, 500px’s stats are even worse. They track the social aspects (likes, faves, comments) over time but not the photo views which is what actually interests me. You can see the total views for each photo, but not over time. And that’s about the total of all the stats you get. 500px’s highest tier also boasts Google Analytics. Don’t be fooled though. This only extends to your portfolio views, not views of your photos through the main 500px site.

Summary

There is a recurring theme throughout this post. 500px has the basic functionality that you need for putting your photos online but not much beyond that and has nowhere near the functionality. There is another problem too that affects any site that isn’t Flickr. Flickr was the first big site in the game and has a great API. They are the Facebook of photo hosting. Almost any application or tool that does anything with photos boasts some level of integration with Flickr, support for other sites is random at best.

All of this is not terribly surprising. 500px launched just 4 years ago, Flickr has has more than twice that time to develop its feature set, user base and developer base. Maybe 500px will improve in the future but for now it just doesn’t have the features and support that I need and Flickr provides. Maybe I’ll continue looking at other options but if it comes down to Flickr or 500px, right now I’ll stick with Flickr.

Hello new Flickr, goodbye social

To say that it was a shock to find Flickr had released a massive revamp of their site is something of an understatement. Ever since Yahoo took over the reigns the site has received minimal attention leading many to believe that it wouldn’t be long before they gave up altogether. Every time Yahoo announced another set of web properties that they were discontinuing users breathed a sigh of relief to see that Flickr wasn’t on the list … yet. Now those days may be over. Love them or hate them it is clear that Yahoo have invested a lot of time and thought into the changes that they released earlier this week.

The thing that strikes me as really odd about the changes though is what they seem to be doing their best to hide, the social aspect of the site. Flickr was possibly the first social photo sharing service. Many other sites have always existed that allow you to put your photos online and show off your portfolio. Flickr though was always aimed at also making connections and discussing each others photos. You have contacts, comments, favourites not to mention information about where and how each photo was taken right alongside each shot. It seems remarkable that in this time when everyone seems to be trying to build social sites that Yahoo have decided that the social aspect is less important. When you look at a photo’s page now you see a giant version of the photo. All of the information about the photo and comments people have left are hidden below the fold. The front page suffers equally. Where before I would see a list of recent comments on my photos and thumbnails of what my contacts have uploaded recently my current page shows me one and a half pictures from my contacts.

Yahoo seem to have decided that the photo is all that is really important. I disagree, the photo is of course very important but the information about the photo and how people react to it is very important too, far too important to hide.