Product Management

The Save Icon is dead! Long live the Save Icon!

Or, some notes on evolution in language and metaphors.

Look: LibreOffice have gone and updated their ‘save’ icon for the internet age!

Whereas Microsoft is still languishing in the days of 3.5mm floppy disks:

It’s a helpful reminder that language and metaphors don’t stand still. In fact, there’s nothing more open source than language itself. Anyone can fork any language and make any update which may or may not then get adopted by the community.

Even the language around the 3.5mm floppy disks highlights another change in metaphors. Their predecessors, the 5.25″ floppy disks were definitely floppy, but you’d have to use quite a lot of imagination to find any floppiness in a 3.5mm disk.

Quirks of history led to the following evolution:

  1. The genuinely floppy disk (5.25″) is called a ‘floppy disk’
  2. Its next generation (3.5mm) is in a hard case but is still called a floppy disk
  3. Application developers adopt the hard-cased floppy disk as the save icon
  4. Which now becomes known as the save icon but no-one knows why
  5. Until eventually it gets replaced by something that is more familiar to people – a download to your local machine icon

Unless you and I share the same history then what is intuitive for me may well be counter-intuitive to you.

My kids (for example) have no idea that the 3.5mm floppy disk icon means “save”. They can learn this but they won’t get the meaning of it in the same way as someone who has carried around handfuls of these disk at a time. A “download” icon is much more intuitive for them. On the other hand, I am so used to the floppy disk icon meaning save that it took me some time to figure out that LibreOffice had changed it – goes to show that you look for what you expect to find.

Some more entertaining discussion around the save icon: https://uxdesign.cc/the-floppy-disk-save-icon-visual-language-of-an-era-long-gone-93f74efc9f9

A non-tech example of metaphors and their evolution: I only learnt last week the backstory behind a ‘reverse ferret‘, even though I’ve seen Private Eye use it all the time (or perhaps they are just using it more in these recent days). Now I know the history I’ll understand better the joke whenever they use it.

Software Development

Memory and Mining in Ethereum – a look in Geth internals

There are a few comments on my guide to getting started with Ethereum private networks about mining taking ages to run, or apparently not running at all. The consensus seems to be that you need to be on a 64 bit OS and using plenty of memory. In this post I’ll compare mining in a private network with 1Gb, 2Gb and 4Gb virtual machine configurations. This was an academic exercise I went through for my own interest, but hopefully will be of some interest to people who enjoy understanding a bit more about how the code works.

Here are the steps, collected from various docs, that I went through on Ubuntu. The developer’s guide was my starting point.

Install Go:

sudo add-apt-repository ppa:gophers/archive
sudo apt-get update
sudo apt-get install golang-1.9

Set GOPATH:

mkdir -p ~/go; echo "export GOPATH=$HOME/go" >> ~/.bashrc
echo "export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc

A few more commands so Go can be found in the GOPATH

mkdir $GOPATH/bin
sudo ln -s /usr/lib/go-1.9/bin/go $GOPATH/bin/go

Clone geth repo and build geth:

git clone git@github.com:ethereum/go-ethereum.git $GOPATH/src/github.com/ethereum/go-ethereum
cd $GOPATH/src/github.com/ethereum/go-ethereum
go install -v ./cmd/geth

You’ve probably got two geths installed now, a system-wide one and the one that you just installed, as below.

ethuser@eth-host:~$ geth version | grep '^Version:'
Version: 1.7.3-stable
ethuser@eth-host:~$ $GOPATH/bin/geth version | grep '^Version:'
Version: 1.8.0-unstable

Before we do anything else, let’s just double check that you can run the newly installed geth. Assuming you used the guide in the previous post:

cd ~
$GOPATH/bin/geth --datadir node1 --networkid 98765 console

Add some logging to geth. See this commit which provides additional logging during the mining process:

https://github.com/alanbuxton/go-ethereum/commit/3990f15fab13d32f9b9f0224367295f285f7f9db#diff-d48da17e6237684b832b97db3107179f

Apply these changes to your local version, or if you prefer you can clone the branch in my fork that has these changes already in.

git clone -b extra_logging --depth 1 https://github.com/alanbuxton/go-ethereum.git $GOPATH/src/github.com/ethereum/go-ethereum

Rebuild your local version using go install -v ./cmd/geth and now you’ll get some more logging when you mine in your private network. See below for some examples with extra logging with 4Gb, 2Gb and 1Gb virtual machine configurations:

4Gb

> miner.start(1);admin.sleepBlocks(1);miner.stop()
INFO [01-26|09:37:47] Updated mining threads threads=1
INFO [01-26|09:37:47] Transaction pool price threshold updated price=18000000000
INFO [01-26|09:37:47] Starting mining operation 
INFO [01-26|09:37:47] Commit new mining work number=34 txs=0 uncles=0 elapsed=125.978µs
INFO [01-26|09:37:47] Started ethash search for new nonces miner=0 seed=7377726478179259701
INFO [01-26|09:38:05] Still mining miner=0 attempts=1000 duration=18s
INFO [01-26|09:38:06] Still mining miner=0 attempts=2000 duration=19s
INFO [01-26|09:38:06] Still mining miner=0 attempts=4000 duration=19s
INFO [01-26|09:38:06] Still mining miner=0 attempts=8000 duration=19s
INFO [01-26|09:38:07] Still mining miner=0 attempts=16000 duration=20s
INFO [01-26|09:38:08] Still mining miner=0 attempts=32000 duration=21s
INFO [01-26|09:38:09] Finished mining miner=0 attempts=42332 duration=22s
INFO [01-26|09:38:09] Successfully sealed new block number=34 hash=c53c2f…45286c
INFO [01-26|09:38:09] 🔨 mined potential block number=34 hash=c53c2f…45286c

2 Gb

> miner.start(1);admin.sleepBlocks(1);miner.stop()
INFO [01-26|10:32:19] Updated mining threads threads=1
INFO [01-26|10:32:19] Transaction pool price threshold updated price=18000000000
INFO [01-26|10:32:19] Starting mining operation 
INFO [01-26|10:32:19] Commit new mining work number=37 txs=0 uncles=0 elapsed=129.734µs
INFO [01-26|10:32:19] Started ethash search for new nonces miner=0 seed=4187772785547710899
INFO [01-26|10:32:40] Still mining miner=0 attempts=1000 duration=21s
INFO [01-26|10:32:46] Still mining miner=0 attempts=2000 duration=27s
INFO [01-26|10:32:49] Still mining miner=0 attempts=4000 duration=30s
INFO [01-26|10:32:49] Still mining miner=0 attempts=8000 duration=30s
INFO [01-26|10:32:50] Still mining miner=0 attempts=16000 duration=31s
INFO [01-26|10:32:51] Still mining miner=0 attempts=32000 duration=32s
INFO [01-26|10:32:53] Finished mining miner=0 attempts=57306 duration=34s
INFO [01-26|10:32:53] Successfully sealed new block number=37 hash=068096…c31777
INFO [01-26|10:32:53] 🔨 mined potential block number=37 hash=068096…c31777

1Gb

I cancelled after over half an hour…

> miner.start(1);admin.sleepBlocks(1);miner.stop()
INFO [01-26|09:51:58] Updated mining threads threads=1
INFO [01-26|09:51:58] Transaction pool price threshold updated price=18000000000
INFO [01-26|09:51:58] Starting mining operation 
INFO [01-26|09:51:58] Commit new mining work number=37 txs=0 uncles=0 elapsed=243.956µs
INFO [01-26|09:51:58] Started ethash search for new nonces miner=0 seed=1420748052411692923
INFO [01-26|09:53:11] Still mining miner=0 attempts=1000 duration=1m13s
INFO [01-26|09:54:23] Still mining miner=0 attempts=2000 duration=2m25s
INFO [01-26|09:56:52] Still mining miner=0 attempts=4000 duration=4m54s
INFO [01-26|10:01:53] Still mining miner=0 attempts=8000 duration=9m55s
INFO [01-26|10:11:49] Still mining miner=0 attempts=16000 duration=19m51s
INFO [01-26|10:30:27] Still mining miner=0 attempts=32000 duration=38m29s
Enterprise Software

On Free, Open Source and VRM

Open source is pretty standard practice these days – whether on the desktop (OpenOffice), on the server (MySQL), in the enterprise (WSo2), even tools like CRM are now available open source in some flavour or another. There are two types of people who are interested in open source.

A. Open source is interesting because it’s open. The philosophy behind this one is that “given enough eyeballs all bugs are shallow” a la http://en.wikipedia.org/wiki/Eric_S._Raymond.

B. Open source is interesting because it’s free to use. The philosophy here is, duh, why spend money when I can have something for free?

Open source, because it’s open, is great for learning, great for practising and great for demonstrating your chops to your peers and to potential employers.

Open source, because it’s free to use, lets companies build more stuff better and faster and cheaper with open source tools than they would have been able to without. If you want you can even pay for your open source (even if only via add-on services for enterprise support).

There’s a big difference. And I suspect that for most people the free aspect of open source is more important than the open aspect.

Open Source and Free
Open Source and Free

For example I’ve been giving VRM a lot of thought recently (see post in my other blog in which I was put right on some assumptions by Doc Searls and Graham Sadd), and I’ve been interested in some of the debates (e.g here and here) about the role of open source in VRM.

On the one hand is a train of thought that goes something like “this needs to become commercial to be successful”. On the other hand is a train of thought that goes something like “the open source community is our best bet to solve something as massive as this.”

And then of course there are plenty of comments along the lines of “it is both commercial and open source”.

But open source as relates to VRM – is it really that important? Adriana Lukas’s MINE! project is open source but does it need to be editable by anyone (open)? Or does it need to be freely distributable to anyone (free)?

Of course the use of free software elements will be invaluable in building effective VRM, just as with building any software these days. But open source doesn’t need to be part of the philosophy of the movement itself. Identi.ca is open source. Twitter is not. But there are plenty of ways of getting at the data in Twitter in third party applications.

It’s at the data layer that I think the open-ness debate needs to happen. The importance with VRM is in a user controlling their own data and communicating that data easily to potential vendors, under the user’s terms. The code that enables this to happen is of secondary importance. And will probably come from a whole host of small, different pieces. Some parts may be open source, but other parts may be proprietary (but with good APIs). Perhaps I’m trivialising things but I wonder whether with VRM the secret of success is “open data” rather than “open source”?

Software Development

Thinking out loud on Free and Open Source

I was having a barbecue at a neighbour’s over the weekend and he showed me his new iPhone 3G. In particular he really enjoyed showing the Phone Saber application he had installed. In his view, the Phone Saber – a free application – was written by people with too much time on their hands, and he was delighted to have such a gadget for free. Obviously he would have thought twice if he had needed to part with ££ for it.

Which then got me thinking about the motivations behind the Phone Saber, the because effect and Whimsley’s great post on Linux growing up and getting a job and the sadly lamented Fake Steve’s tirades on open source. And open source hardware and how much quality you should expect from free stuff.

[Aside: I know there’s a distinction between Free and Open Source. But from the point of view of someone using an application it’s the Free-ness or not that matters more than semantics about who can see the source code. In this regard my friend and his Phone Saber are the same as me and Linux/MySQL. Will I ever look into the source code of either of these? No. So for the purposes of this post it’s the free-ness that I’m most interested in, not the open-ness.]

The Because Effect: Make money because of something rather than with it. Google gives search away for free and makes its money from advertising. Google makes money because of search rather than with it.

Whimsley on Linux Growing Up: I’m a sucker for a good analogy and Whimsley compares Open Source to Making Music:

To invoke another parallel, open source software is a creative venture like music. Many people create music for all kinds of reasons. Most people create music for an audience of one when they hum in the kitchen or sing in the shower. A smaller (but still huge) number of people get together to form groups or participate in orchestras or bands. They don’t earn a living from it, but they love doing it and enjoy their performances. Some might dream of hitting the big time, others are happy being part of their community. Then a much smaller set of people take it a step further. Maybe they are paid to be in an orchestra; maybe they are in a band with a manager and bar gigs around the country. And a lucky few, of course, hit the big time. They get a record deal, find a big audience, and make some real money.

Fake Steve on Open Source:

Also worth noting: While open-source is great in many ways, remember that the single biggest tech phenomenon of the past decade has been an entirely closed and proprietary system which was launched in 2001 (two years after Red Hat had already gone public) and which last quarter produced $4.8 billion in sales. It’s called iTunes and iPod. Have you heard of it?

Open Source Hardware: In case you were thinking that open source only works for software (and so the iPod would have to be closed source), think again: Here is MFGx.com on Open Source Machine Tools.

How much quality should you expect from free? A lot, it seems, in 2008. Here are some links from earlier this year I collected when everyone seemed to be complaining about the quality of free services:

http://jeffnolan.com/wp/2008/01/17/fixed-gmail/ (Gmail)

http://www.techcrunch.com/2008/01/17/blogger-suffers-major-outage-bloggers-not-happy/ (Blogger)

http://www.techcrunch.com/2008/01/15/twitter-fails-macworld-keynote-test/ (Twitter)

So back to my friend and his Phone Saber. This is made by TheMacBox who are two students who don’t charge for their software: “We don’t believe in charging for software (we’d rather everyone was able to use it) but it does cost money to run this site, and uses a lot of our time. If you’d like to help us out, there’s a donate button in the bar at the right side of the page.”

Last time I was at PizzaOnRails I had a good chat with some developers about open source. The upshot was that developers will do open source if they are out of a job and need to demonstrate their skills to potential employers. Obviously there are also those who do it because their company sponsors them to do open source work, and there are those who have an insane drive to spend all their waking hours producing code. But I wouldn’t discount the keen amateurs (Whimsley’s bedroom musicians). I’d put TheMacBox guys into this camp – even if they would appear to be on the brink of “making it big”.

So to attempt to pull al these strands together.

The because effect is important in understanding commercial behaviour in the world of free. But the because effect is more subtle when it comes to developing free or open source software. Rather than generating revenues with or because of the code, bedroom musician developers are producing code in order to make money in the future. With the coding skills they have demonostrated in the free software. Arguably “because of” their free software but it feels like someone producing a portfolio of work in order that they might get a job in the figure is a different proposition entirely to a going concern that gives away one thing in order to make money because of it.

And back to Fake Steve who so often hit the nail right on the head: don’t discount the importance of closed-source and paid for technology. Even if not SAP-level complex beasts, the sort of thing that 37 Signals are famous for.

And while Free might be great for “me-too” applications Fake Steve has a point about new stuff. You can make plenty open sourced hardware but I doubt whether the first car could have been made on an open source basis. (Perhaps it was … I’d love to be corrected on this).

Like I said, this is just Thinking Out Loud on Free and Open Source. Trying to figure out where they fit in the grand scheme of things.

So for now I’ll leave the last word to Mashable’s recent post on “This Entitlement of Free Needs To Go Away” .