Category Archives: Uncategorized

Basics of Distributed Source Control – What is A Changeset?

A changeset is how source control systems keep track of changes.  Everything else is built up around these changesets. But what are they?

Quite simply, it’s a difference.  More specifically, a set of differences. What changes have you made since the last time you committed your code?  These differences are saved as text and tracked by the source control tool.

Creating changesets is referred to as a commit

Imagine if you made a change to a document and someone else asks you, “What did you do to it?”  So, you reply, “I added a line that says…” 

That’s similar to a changeset (for a single file – more on this later).  The person you’re talking to takes what they already knew about the document and adds the new information, the change of the new line, and now can picture the new updated document.

This can repeat for many changes.  “I added another line that says …”  And now the person you’re talking to takes the original document, plus the first change, and also plus this new change, and the final version of the document is known.

If you kept track of these changes, you’d be doing the basics of what a source code repository does.  Consider the following timeline:

  1. Original Document
  2. Add paragraph ABC…
  3. Add line … to paragraph ABC
  4. Change introduction from A to B

You can then answer the same question for each point in time and get a different result: “What is the state of the document at change number X?”  Each time, you start at #1 and add up the changes until you get to the desired point in time.

For a Single File?

Earlier in this post, I said that the document scenario was essentially a changeset for a single file.  But a changeset can be a set of changes all at the same time.  Consider the same document editing scenario, but for multiple documents.  “I added a line to doc A, and I deleted a line to doc B”.  Both of those changes can be saved at the same time in a set, a changeset.

This is the first of a planned series on using distributed source control.  More to come in the future.

Graphing Podcast Networks

I love podcasts.  I listen to them every day.

When I’m looking for more podcasts to listen to, one of my favourite resources is the iTunes website.  The reason for this is because iTunes offers a “listeners also subscribed to” section at the bottom of a podcast’s page.  I can instantly find similar podcasts to any given one.

For example, a great podcast is “Radiolab Presents: More Perfect”.

And if we jump to the bottom of the page, we’ll find five popular podcasts that appeal to the same audience…

We need to go Deeper

Picking one of these naturally takes you to its page and at the bottom again you’ll find yet more podcasts.  So what if we keep going down and down?

Going a mere three levels will get us to 155 podcasts.  Many will be duplicates; for example in the image above there’s Embedded *2, Invisibilia *2, Reply All *2, etc.

Visualizing It

What happens if we crawl this tree of podcasts and graph the connections?  Well, going three levels deep on the podcast “The Vergecast”, we can generate a network that looks like this:

And if we go five levels….

Now what’s really fascinating is the natural clustering that becomes visually apparent.  It makes sense that it would happen but these islands of genres and sub-genres are neat to look at.  Here are a few that jumped out at me, professionally highlighted with Paint:

It’s a fun way of looking at it.

Avoiding Email Scams

Being one of the more technologically capable members of my social circle, I am often asked if a specific email is a scam.

Usually it is.

But what if it seems real?  What do you do if that email honestly feels legitimate?  Well, I’ve been thinking about how to simplify my own rules and actions into general “rules of thumb” for others to easily understand and follow.

Here’s what I’ve got:

  • Is the email unexpected?
  • Get the URL / contact info with Google
  • Google the email itself

Let’s break these down.

Is the email unexpected?

Let me explain this with a couple examples.  If you go to a web page and click “I forgot my password,” I imagine the subsequent “password reset” email is fairly unsurprising.  It’s safe to say that this is not a scam.

Alternatively, let’s say you’ve simply been enjoying your day, doing cartwheels and whatnot, and then you get a “password reset” email.  Here, most likely, someone else is is trying to reset your password, or it’s a scam.  The link may take you to a fake (but identical looking) website, asking you to put your old and new passwords.  You’ll then be handing your password over to whoever runs that site.

If an email is spontaneous, if you weren’t expecting it, there’s a very strong chance that it’s a bad email that means you harm.

But is it possible for an unexpected email to be legitimate?


That is the point of email after all, to notify you of things.  Sometimes those things require actions on your part.  Perhaps the site has suffered data loss due to a hack, and wants everyone to change their password.  Well, when something like this happens, consider my next rule of thumb.

Get the URL / contact info with Google

It doesn’t have to be Google, of course.  Feel free to use Ask Jeeves or… Bing.  But the spirit of this rule is to only allow the email to serve as a notification; don’t let it help you accomplish the task.  If it supplies a handy link to take you somewhere, don’t use it.  Pretend you deleted the email accidentally, but still want to do what it said.

Maybe that means going to the website manually and finding the option to reset your password.  Or, maybe that means googling for the contact info, calling, and asking about it – do NOT use a phone number supplied in the email.

The point is that by doing this you’re now doing something outside the control of the scammer. The whole mission of the scam is to scare you into clicking their link or calling their number.

Google the email itself

Another tip is to Google parts of the email.  Often this will take you to discussions about the very same email.  Reading through what others have to say can help you to determine if it’s a harmful email and even help you gain some insite as to how others know.

Hopefully this post can help even just one person avoid even just one scam.

Sharing a Hotel’s Single WiFi Connection Between Two Phones

I recently visited a resort on vacation.  Overall, it was pretty good.  Except for a couple things, like when the entertainers really wanted you to participate in something embarrassing.  Dancing on stage is not my idea of a relaxing vacation, Mia!

Anyways, another not-perfect reality of the resort, was the WiFi.  When we arrived, we found out that the WiFi was not free, and not only that, it was fairly expensive.  $12/day.  Per device!

The per-device restriction was maintained with a captive portal of some sort.  You purchased a username and password to log into the network.  Attempting to use it on more than one device would yield a message along the lines of “maximum sessions exceeded”.

The way to get around this, is to turn one of the phones into a router, of sorts.  It’ll be the main phone responsible for connecting to the WiFi, and sharing this connection with another phone.  The network will just see this as a very busy singular phone.

What you want to do, is use Bluetooth tethering.  And it’s pretty simple to set up.  The below instructions are for Android phones.  I don’t know how they differ or if it’s even possible on iPhone.

  1. Go to the Bluetooth settings screen on both phones and pair them to each other.
  2. On the master phone (the one that will share the connection) find the settings screen “Tethering & portable hotspot”.  In this screen:
    1. Enable “Bluetooth tethering”
  3. On the secondary phone (the one that will connect through the other phone) go to the Bluetooth settings screen again and:
    1. Click the gear icon beside the phone – in paired devices.  This is to manage the settings of the connection.
  4. Check the box “Use for: Internet Access”

That’s it!


This method is not perfect.  I found it a little finicky.  Sometimes the phones refused to connect to each other, the connection was really slow for the secondary phone, and if the phones got too far apart they would not reconnect automatically upon getting close enough again.

But it was much better than paying an extra $12/day.