Sun
Nov 1st

Christmas eBook Reader Recommendations

This list of ebook reader recommendations on Teleread is interesting food for thought:

“There are no bad readers out there, at least as far as I have seen, so I don’t think you’ll go wrong no matter which one you choose”

I wrote a big introduction to the world of ebooks back in May, and I still generally read on my iPhone. I’m looking forward to testing a Kindle now they’re shipping internationally.

Comments (View)
Sat
Sep 19th

Kev’s PSP Money Saving Idea

The PSP is about to go serious on digital distribution with the release of the UMD-less PSP Go.  This is great for convenience because you can buy games right from your PSP using the PlayStation Store.  However, what’s not great is the price of memory sticks.

Here are the current prices on Amazon.co.uk:

Memory Stick Pro Duo 2 8GB: ~£20

16GB: ~£50

Here are the prices for micro SD cards:

8GB: ~£10

16GB: ~£36

Fortunately you can technically use a micro SD card using an adapter which sells on Amazon for around £4, which is still makes the overall cost less than a memory stick.

I haven’t actually tried this, but shopping around for cheaper 16GB micro SD cards might make it worth it.  Micro SD also works with more devices.

Comments (View)
Sat
Aug 1st

Review: Pinboard.in

Pinboard.in is a social bookmarking site by Maciej Cegłowski.  Here’s a few things you might like about it:

  • The interface is incredibly simple and clean
  • Your huge Delicious library will import quickly without hassle
  • It has handy bulk processing features
  • It has bookmarklets that work like Delicious
  • Gmail-like starred status, and a read later flag
  • Amazon S3 backups (with some Ma.gnolia mockery)
  • At a time when Microsoft and Yahoo! are working together, people are looking for serious Delicious alternatives

One big thing that’s unique about Pinboard is this: there’s a one-time signup fee.  It’s currently $4.99, and this will scale up as more people join the site.  This inspired Cegłowski to dub the site an ”anti-social bookmarking service”.

Imports

If you read this blog you probably already use a social bookmarking service, so the first thing you’ll do is import your bookmarks.  Pinboard does this efficiently, firing off a background task that imports items as you use the site.

It retained my Delicious metadata: private bookmarks are still private, tags all appear present and correct.

Design

The interface is inspired by old-skool Delicious, but has its own identity too.  It’s unobtrusive and easy to understand.

I think people will like the starred and to read flags.  Although tags would do the same job, these flags are much less hassle.  Stars are actually used for bulk editing.  Viewing starred items (from the top-right navigation) displays a bulk operations box.  This makes it easy to tag a set of items, or toggle their starred/to read status.

Bookmarklets

The main “popup” bookmarklet has the same layout as Delicious:

Which is actually nice if you’ve been using Delicious for a few years.

The Fee

I don’t know if the fee is a viable business model, and the developer cites it as a way to cut down spammers and people gaming the site.  He’s been careful to select one of the easiest possible payment methods — Amazon — so it won’t put people off.

However, with some grass-roots marketing and enough blog reviews, the developer could easily attract 10,000 signups (I’m speaking from my own experiences of launching commercial web apps here).  That would keep him hacking on Pinboard for a year.

I think the ability to gift the service to friends would work well, but that might be against the developer’s anti-social philosophy.

Comments (View)
Wed
Jul 15th

How to Twitter

When Twitter was new a lot of people couldn’t figure out what to use it for.  The question What are you Doing? appeared to have no relation to the way popular people used it.  It’s an innocuous question that inspired and yet confused people.  However, because Twitter is so fundamentally simple — especially compared to other social networks — just about anyone could get started with it and use it for… something.

Now Twitter has cemented its credibility and popularity, people are still wondering what to use it for.  As veterans of the service I thought we’d share how we see Twitter used in a meaningful fashion, which will hopefully inspire your own use.

If you like this post, also check out Twitter for your Boss which is a deeper article on helping Twitter gain traction at work.

Retweeting

I’ve seen treatises and manifestos on retweeting.  The truth is it doesn’t matter how you do it — if a friend writes an interesting blog post and you share it with a reference to their account name you’re doing them a favour.  Just remember to say thanks when people share your links this way.

For Casual Communication and Contacts

The type of people who initially disliked Twitter now seem to use it simple for communication.  It’s like a “permanent” IM system.  It’s really useful to print your Twitter account name on your business cards to give out at meetups or conferences — I’ve made some useful contacts and friends this way.  This is of course the true social networking that services like Twitter promised.

Tips:

  • Don’t be embarrassed to print your Twitter account name on your business cards
  • Consider making “casual” business cards for meetups or conferences — moo.com makes this cheap and easy
  • Get used to checking your @replies so you don’t ignore people

Internet Celebrities

We all know there’s celebrities like Stephen Fry on Twitter.  There’s also a lot of Internet celebrities — journalists, programmers, designers, musicians: just about anyone you follow professionally or through a hobby will have an account.

Tips for finding:

  • Try to discover people through Twitter search or Google — they’ll link to their Twitter account on their blogs or profiles on other sites
  • Searching for real names can be difficult — a lot of people (especially well-known videogame journalists) use crazy aliases

As an Aggregator

We use our Twitter feed, @quiteuseful to share links to things we think are interesting.  There’s a lot of aggregators out there now though, and they’re great if they fit into your interests.  Low traffic human curated aggregators like @quiteuseful are like more accessible, compact RSS feeds.

Tips for finding:

  • Search for hashtags based on your interests
  • Look for accounts with a topic-focused name, or a name that sounds like a blog
  • Check out interesting accounts to see if they provide human @replies — steer clear of bots that blindly retweet based on hashtags

Comments (View)
Mon
Jul 6th

Inspirational Books

There’s a war on my shelves between design and programming books.  It’s interesting that the programming books look like programming books, whereas the design books are all totally different shapes and sizes.  Here’s a few of the design books that I keep close at hand.

A Smile in the Mind

I borrowed this book off a friend and wanted to keep quiet about the fact I still have it, but he’s likely to read this so I’m going to get busted.  It’s by Beryl McAlhone and David Stuart, and explains the link between humour and wit and design: the subtitle is “witty thinking in graphic design”.

This book demonstrates through examples and short essays how important wit is to design.  It makes it seem so fundamental to design I can’t look at things the same way since reading it.

Show Me the Numbers

Show Me the Numbers by Stephen Few is a slightly technical introduction to the world of presenting tables and graphs.  It explains the history and psychology of presenting data, and gives practical advice and solid examples for producing incredible tables and graphs.

The technical background can be dry at times, but it’s watertight.  If you ever need to win a design argument with your boss, this book is a gold mine.  It’s helped me avoid pie charts time and again!

Paul Arden

I’ve mentioned Paul Arden’s books before on Quite Useful, but It’s Not How Good You Are, It’s How Good You Want To Be is worth mentioning again.  On the surface it appears to be yet another self help book, but Arden’s insightfulness, originality and sense of humour makes me keep coming back to it.

Creative Code by John Maeda

If you’ve read my Beautiful Algorithms articles you’ll know I have a fascination with art and code.  John Maeda has done a lot to further digital art, and this book is an accessible set of case studies about this area.

Comments (View)
Mon
Jun 29th

iPhone Survival Guide

I’m a first generation iPhone veteran and iPhone developer, and these are my hard-earned tips for you new 3GS users.

Keyboard Tips

  • Moving the cursor: hold your finger then drag the cursor to move it. You’ll get a magnifying glass effect so you can see it more clearly
  • Copy and paste: hold the cursor similar to the above, then release it. A pop up menu will display copy and paste options. You can even make a bounding box to copy ranges of text
  • Correcting mistakes: when you’re new to iPhone typing you’re going to keep hitting the wrong keys. Try leaving your finger on a key and dragging to the correct one before you release it. Also try getting used to trusting the iPhone’s suggestion, they’re generally accurate! Press space to accept a suggestion, or touch the suggestion to ignore it
  • .?123: You can tap and release “.?123”, or hold it and drag to punctuation. Holding it will cause it to flip back to “ABC”
  • Currency: Hold down your punctuation currency key to get a list of other currencies (I see £, but holding it shows dollar, yen, etc.)
  • Domains: When typing in a domain (web site address), you’ll see .com in the keyboard. Hold it to see other common TLDs

Headphones

  • The standard headphones contain a mic so you can use the iPhone hands-free
  • The mic bit (the weird white thing) let’s you skip tracks by pressing it twice. Once pauses, three clicks goes back
  • Pushing it once will let you answer a call or hang up
  • The new headphones also have volume controls
  • Removing any type of headphone will pause, which is great for when you arrive at work in the morning (have you ever forgot to pause your iPod and left it playing all day?)

Safari

  • Tap and hold a link to bring up a menu: open, open in new page, copy
  • Double tap white space at the top or bottom of a page to quickly move up or down. I prefer swiping up and down to quickly scroll: the speed you swipe affects how far it scrolls
  • Double tap images to zoom in

Syncing

  • Be aware that syncing can be slow. This is because iTunes will occasionally backup your iPhone. Factor this in to when you sync: generally syncing will be fast, but if you’ve got a train to catch you can guarantee it’ll do a full sync and backup
  • Make an iPhone playlist. My 8GB obviously couldn’t store all my music. Therefore, I prefer copying specific music and videos onto my iPhone. I have a playlist with my desert island discs, as well as new purchases and new podcasts
  • You can sync Yahoo! and Google contacts/calendars/etc with iPhones. Google syncing kind of… messed up my contacts, because of the way Gmail seems to add everyone ever to my contact list. I prefer just syncing with my Mac’s Address Book and iCal, which is standard behaviour

Apps

  • If you’ve got an Apple TV or Airport speakers, get the Remote app. It’s like living in Star Trek
  • There’s loads of interesting games, but keep an eye out for original iPhone games that don’t have crazy on-screen joystick interfaces: Flight Control, Peggle
Comments (View)
Fri
Jun 26th

Introduction to Git Part 2: Branches

This is the second part of Ric’s Introduction to Git series. Last time, he covered the basics; this time he’ll explain how to use branches and tags. This article was originally published on Ric’s Blog.

Branches

How Branches Work

In git everything is treated like a branch, so they’re quick and easy to create and manage. Branching doesn’t involve copying the files into a new directory, like in other version control systems. Git keeps track of only the most recent commit to that branch and from there, it can figure out all the changes in that branch. (The history of changes in git takes the form of a Directed Acyclic Graph).

Branching marks the point that files in the repository diverge onto two different paths. Each branch keeps track of the changes separately. Changes in branches can be merged together later if you like.

In Practice

You can use a branch for anything, but they’re especially useful for keeping experiments or new features separate from bug fixes to already-released code.

Making a New Branch

To make a new branch from the current one, use:

git branch <name of new branch>

If you then run the branch command with no parameters, it will give you a list of all the existing branches (with an asterisk indicating the current one):

> git branch
* master
  my_new_branch

Working with the New Branch

Before the branch can be used it must be checked out. Remember that checkout means something different in git to subversion?

In git, checkout refers to switching the working tree over to using another branch. Don’t worry – any committed changes will safely remain in the branch (even if you’ve not pushed them to your central repository).

git checkout my_new_branch

Pushing the Branch into GitHub

To share the branch, push it to GitHub with this command:

git push <remote_repository> <branch_name>

For example:

git push origin my_new_branch

Getting a Branch from GitHub

What if someone else has made a branch and pushed it up to GitHub already? You can see a list of all the remote branches for a repository with:

git branch -r

Then create a local version of that branch like this:

git branch <name of branch> <remote branch> 

Merging Branches

As I mentioned earlier, branches are commonly used as part of a release-process, to keep fixes to ‘live’ code separate from ongoing development. At some point, it’s likely that you’d want to get the bug fixes into the main development branch. This is where merging comes in.

There are three main types of merging:

  • Straight: Commits are just merged in as they appear in the source branch.
  • Squashed: All commits from the source branch are applied to the target branch as a single commit.
  • Cherry picked: A single commit from the source branch can by applied to the target branch.

For all types of merging, commands must be run from the target branch.

Straight Merge

git merge <source branch>

Squashed Merge

git merge --squash <source branch>

Note that for squashed merges, the changes are applied as staged (not committed).

Cherry Picking

git cherry-pick <commit name>

… where the commit name is the SHA-1 hash of the commit you want to pick (or at least, enough characters of it to uniquely identify a commit). You can stage multiple cherry-picked merges by adding the -n argument.

Merge Tracking and Conflicts

Git has automatic merge-tracking that keeps tabs on what commits have been merged together, and so wont merge the same thing twice. Git will also warn you when you try to merge and it can’t resolve merge conflicts automatically.

Tags

Tags are used to mark a certain point (such as a milestone like a release) in the history of a repository with a name.

To make a tag based on the current working tree’s latest commit:

git tag <name of tag>

To get your tags up to GitHub, you need to run:

git push --tags

You can make a branch from a tag by using:

git checkout -b <tag name>

When to Use Tags

Git is very flexible and it’s up to you based on your project’s requirements, but tags are very useful for managing releases. For example, you can tag the last commit that went into a release, so that if a bug arises in the released code, you can retrospectively branch from that point (even if you’ve already started work on the new features).

Comments (View)
Mon
Jun 22nd

Introduction to Git

This article is by Quite Useful contributor Ric Roberts.

I’ve been using the version control system, git (along with GitHub) for a couple of months now, for my open source projects: grrid.js and Taskit. At Swirrl, we recently decided to take the plunge to start using git for our main code repository.

With this series of blog posts, I hope to ease the transition from subversion (or sourcesafe, or whatever) to git. In this article, I’ll just cover the basics. More advanced stuff will come later.

Why Switch?

There are several advantages to using git over other version control systems:

  • Being a distributed version control system, everyone has their own version of the whole repository. The central repository (at GitHub in my case) is just arbitrary. This means that you can do operations such as tagging, branching and diff without having to be connected to the central server. This article by Eric Sink is a good explanation of how git differs from traditional version control.
  • Due to the git:// protocol and the way git stores and tracks the data and changes in repositories, it’s really fast and the repositories don’t take up much room on disk.
  • Quick, cheap, easy branching.
  • The repository and branches are separate from the filesystem.
  • GitHub. Why go to the trouble of hosting a central repository yourself, when you can do it securely, cheaply and quickly with GitHub? There’s Sourceforge for svn, but for me GitHub does it better. If you can get to grips with GitHub, it opens up a world of possibilities for publishing or consuming open source code.

How Git Works

The whole repository is stored in a hidden folder called .git at the top level of your project structure. The working tree — the actual files in your project — are just the ones you happen to be working with at the time. Git doesn’t track the files themselves, it just tracks their content along with some metadata (read more about this here).

Git stores content in these locations:

  • The working tree. This is the file system, where you manually make the changes.
  • The staging area, where changes lie until they’re committed.
  • The repository itself, where committed changes go (you can have local and remote repositories).

Commits in git are labeled with an SHA-1 hash instead of version numbers. There’s a very small chance of the hashes ever colliding, so they can be assumed to be unique. Git actually generates a 40 character-long hash but normally the first 7 or 8 characters are enough to uniquely identify a commit.

Installing Git

If you’re using Mac OS X like me, the easiest way to install git is to download the installer from the Google Code project. I used version 1.6.2.2. Alternatively, you can compile it from source or use Macports (see this guide).

If you want to share your code with others, you will need a centrally accessible server. GitHub provides this service for free.

Setting Up a Repository

Sign Up for GitHub

Visit GitHub and sign up for an account.

Next, set up an SSH key. This allows the git command to authenticate with GitHub and send your code to their servers.

Next, configure the global parameters on your computer to tell git what your GitHub username and email address are. For example:

git config --global user.name "RicSwirrl"
git config --global user.email my.email@address.com

Getting Code Into GitHub

Make a new repository with the GitHub web interface.  Creating a new repository on GitHub gives you a short guide so you don’t need to remember all the steps.  The process is outlined here for completeness.

Initialise your local project by changing into its directory and running:

git init

This will create the .git folder.  Next, tell git about the GitHub remote (get the full command from the GitHub web interface):

git remote add origin ...

Next, add all the files in the directory to the repository.  At this point they’re not being tracked yet.

git add .

This will add all the files in the directory to the staging area. You can then commit these files to your local repository, with a message:

git commit -m "my initial commit"

Now you have a fully fledged repository on your computer. To send it up to GitHub, just run:

git push origin master

Note that by default git will push to the “origin” remote repository in your config, using the current branch. If you want to push to a different remote repository, using a different branch, you can run something like:

git push github mybranch

Note: for this to work you’d have to define github in your config file as another remote repo, and have a ‘mybranch’ branch.

Push is a similar to a subversion commit, in that it allows you to share your changes with your colleagues.

Working With Existing Repositories

What if one of your colleagues has already set up the repository on GitHub? To get started, you just need to clone the remote repository like this (using the clone url displayed on the GitHub page). For example:

git clone git://github.com/Swirrl/grrid.git

I suppose this is equivalent to a subversion checkout. Watch out, though, because checkout means something a bit different in git.

Working With the Repository

Adding Files to the Staging Area

You’re now ready to start making changes to your code. Once you’ve made a few changes, you can see what’s happened by running:

git status

If you’re ready to commit some of these changes to your local repository, you need to run git add on each file you want to commit. This adds these changes to the staging area.

git add <filename_to_add>

What’s the Point of the Staging Area?

The staging area lets you choose which of your changes you want to commit – a bit like checking/unchecking files in the svn commit dialog in TextMate (or your editor of choice). You can change the files in your staging area as many times as you like, before committing.

Committing to the Local Repository

You can run git status again to check what’s going to be committed. When you’re happy, run:

git commit -m "my message"

…and the changes will be committed. If you know you just want to commit all the changes that you’ve made, you can do it all in one go by running this (i.e. skip the staging step):

git commit -a -m "my message"

Pushing Changes to the Remote Repository

At this point, the changes have been committed to your local repository, but the remote GitHub repository remains unchanged. For your colleagues to be able to see your commits you need to push them up to the remote repository with:

git push

Pulling Changes From the Remote Repository

If you want to see what your buddies have been up to, you need to pull their changes from the remote repository.

git pull

This will fetch the remote changes and merge them with your local ones — it’s a bit like the update command in subversion.

Viewing the Log

To see the history of the commits in a repository:

git log

Getting Help

Many git commands can take multiple optional arguments which I haven’t covered here. To get help on the usage of any command you can do:

git help <command>
Comments (View)
Fri
Jun 12th

Review: MinuteBase

MinuteBase is a web application designed for planning meetings and writing up minutes.  It helps focus meetings with an agenda, and provides lots of ways of collecting notes and other related information.

Each meeting can have several attendees, and they can be added as users to your MinuteBase account.  This makes MinuteBase a good tool for communicating agendas before meetings to help keep discussions focused.  Attendees can also see minutes (which have privacy controls), so meetings can be followed up with relevant actions.  Minutes can also accept comments for later discussion.

Text, actions, files, links and agendas can be appended to each agenda item.  This makes MinuteBase a good central location for information produced during a meeting.

Design

There’s some great attention to detail in MinuteBase’s design.  It also uses a lot of white space, so pages feel clean and easy to understand.

Here’s what the dashboard page looks like when you sign in:

The dashboard makes it easy to add a new meeting and see existing ones.  It also has some useful inline documentation:

I particularly like the search widget:

Minutes can be displayed in view or edit modes.  The edit mode has intuitive hover effects which make it easy to insert items at any position, or edit existing items:

The PDF export for minutes is also excellent.

Conclusions and Pricing

I’ve had many meetings where internal systems were used to collect data, which is difficult to access outside of the office unless you can use a VPN.  MinuteBase would be perfect for teams collaborating across different companies or departments.  It would also help in meetings where attendees are known to stray off-topic and overrun the allocated meeting time.

The only other things I’d like to see in MinuteBase are meeting timers and audio clips.  Most people find it hard to keep meetings on time, so it would be useful to have timers for each agenda item.  Additionally, although people have dedicated tools for recording audio in meetings, MinuteBase might appeal to certain corporate customers if it did that too.

Another thought I had was using MinuteBase for organising conference calls.  These can be awkward when working across company boundaries, so collecting attendees’ voip or telephone details inside MinuteBase would make a lot of sense.

The pricing varies between £10 and £50 a month, which seems like sensible pricing considering the types of customers who will use MinuteBase.

Comments (View)
Thu
Jun 11th

Review: Ringer

Ringer is a small Mac app made by Pixel Research Labs that helps you create ring tones for iPhones.  It’ll read any unprotected audio or video file.

It automatically adds a quick fade in and out, so tracks will sound right without much effort.  You can change the length of the snippet you want, and add a gap between rings.  Ringer automatically detects the volume too, so quiet or loud songs should still be effective ringtones.

Working with files looks like this:

Your iTunes media library is presented to you, and searching through a large collection is fast.

Garage Band can also be used to create ringtones, but Ringer is much easier, and it’s an incredibly well-crafted app to boot.  A licensed version will cost $15.

Comments (View)
Related Posts Widget for Blogs by LinkWithin