Lean Summer of 2015 – Week 5

Can 6 tech students help a telecom giant innovate in 6 weeks? Telenor Norway wants to solve real problems for real people. As summer interns in Iterate – the lean startup consultancy in Norway – we’ve been hired to build, measure and learn how to unleash the power of future telco technology. Every week we blog about what we’ve learned.

Here’s week 5.

Navigating the corporate jungle.

Compared to the real world, student life is easy. We are free to do almost whatever we want, when we want to. You never really have guilt-free time off, but you also don’t have to get up early every day.

For many of us, summer internships are the first taste of a real job. We would soon discover that getting up early would be the easy part.

IMG_20150720_180731

How many interns does it take to fire up a grill? One to light it and four to watch it in silence and scare away the seagulls

Continue reading

Lean Summer of 2015 – Week 3

Can 6 tech students help a telecom giant innovate in 6 weeks? Telenor Norway wants to solve real problems for real people. As summer interns in Iterate – the lean startup consultancy in Norway – we’ve been hired to build, measure and learn how to unleash the power of future telco technology. Every week we blog about what we’ve learned.

Here’s week 3.

We knew from the beginning this internship was going to be different.

Most tech student summer internships follow a standard format: You show up the first day to a round of introductions, you get assigned a workstation, a task, and maybe some company swag. The first week is focused on workshops and courses, and then you are set to work. For the next few weeks you work on your project in order to bring it to completion on time.

Certainly a cool internship when you get to brew your own beer and design a matching label.

Continue reading

Lean Summer of 2015 – Week 2

Can 6 tech students help a telecom giant innovate in 6 weeks? Telenor Norway wants to solve real problems for real people. As summer interns in Iterate – the lean startup consultancy in Norway – we’ve been hired to build, measure, and learn how to unleash the power of future telco technology. Every week we blog about what we’ve learned.

Here’s week 2.

Continue reading

Lean Summer of 2015

Can 6 tech students help a telecom giant innovate in 6 weeks? Telenor Norway wants to solve real problems for real people. As summer interns in Iterate – the lean startup consultancy in Norway – we’ve been hired to build, measure and learn how to unleash the power of future telco technology. Every week we blog about what we’ve learned.

Here’s week 1.

Continue reading

Distributed eternal bash history

As a developer you spend much of your time working in the terminal, every command written gets saved to history. How history is written and preserved, however, is highly configurable.

Wouldn’t it be nice, when you hit Ctrl-R, that the ssh-tunnel command you used four weeks ago was still there? Or if you do a “history | grep some-neat-trick-i-did-last-year” you found it? What if the commands you wrote on your work-station were instantly available on your laptop?

If you use a terminal, and you wish these things were true, this blog post is for you.

Continue reading

There will be failures – On systems that live through difficulties instead of turning them into a catastrophy

Our systems always depend on other systems and services and thus may and will be subject to failures – network glitches, dropped connections, load spikes, deadlocks, slow or crashed subsystems. We will explore how to create robust systems that can sustain blows from its users, interconnecting networks, and supposedly allied systems yet carry on as well as possible, recovering quickly – instead of aggreviating these difficulties and turning them into an extended outage and potentially substiantial financial loss. In systems not designed for robustness, even a minor and transient failure tends to cause a chain reaction of failures, spreading destruction far and wide. Here you will learn how to avoid that with a few crucial yet simple stability patterns and the main antipatterns to be aware of. Based primarily on the book Release It! and Hystrix. (Presented at Iterate winter conference 2015.)

Continue reading

Learn the new JavaScript features coming in EcmaScript 6

EcmaScript 6 (ES6) is the future of JavaScript. It is highly anticipated and contains many useful features seen in other programming languages like Python and CoffeScript. At Iterate we had an internal ES6 workshop where we went through some of the new ES6 features. We wanted to share the work we did preparing the workshop in this blog post. We recommend that you do the tasks right after reading about each feature.

ES6 is not fully implemented in any browser yet, even the specifications are not finalized. Still there are a number of good options for how to use ES6 features today. We use es6ify which relies on Google’s traceur. Together with Browserify and Gulp we transpile our ES6 code to ES5.

Our set up is availble in our GitHub repo with helper methods for some of the tasks. There you can also find a solutions branch with suggestions for how to solve the tasks.

There is a long list of features and improvements in EcmaScript 6 (see the ES6 draft or the features supported by Traceur). In this workshop we made a selection of features to go through; template literals, default parameters, arrow functions, destructuring, rest parameters, spread operator and generators.

Continue reading

Why we accept Bitcoin

Since its launch in 2009 Bitcoin has become accepted in increasing numbers of shops and services around the globe. As of writing this post there are 9326 places listed on spendbitcoins.com and 4359 on coinmap.org. If you happen to have Bitcoins, you can use them to pay for pizza, manicure, artworks, web hosting, geeky t-shirts, online dating and even Space travel. But why did an IT consultancy (aka: we) decide to accept Bitcoins, and to deal with it at all? Few weeks ago an article was published in a local news-site (in Norwegian) about us accepting bitcoin where we gave some reasoning. We thought to take it one step further and talk a bit more about the “why” behind it.

 

Because Community

It all started with our developer Jakob, who showed great interest in Bitcoins. Since then we held sessions both internally and openly about introducing Bitcoin to people (see picture). For free, because sharing is caring. Here in Norway Bitcoin enthusiasts just started to form nests of interest. Here is one facebook group operating in Norwegian and this meetup group mostly in English.

Bitcoin for beginners - intro to the “what” and “how” of Bitcoin

Bitcoin for beginners – intro to the “what” and “how” of Bitcoin

Continue reading

This is why I work for Iterate

I have recently published quite a popular blog post Frustration-Driven Development – Towards DevOps, Lean, Clojure. My good colleague Tom Bang has pointed out that it actually shows nicely the reasons why many of us work for Iterate and why Iterate does what and how it does. I therefore republish it here under a modified name.


 

A post about development practices, speed, and frustration.

My wife has mentioned that she likes my passion for doing things right in software development. That made me thinking, why do I actually care so much and do not just enjoy the coding itself? It boils down to that I am not happy until my code is in production. Seeking the satisfaction of having my code used by and helping people while trying to eliminate all unnecessary mental drain is behind all the practices that I embrace and evangelize. It’s a drug I like to take often, in small doses.

practices = f(max(delivered value), min(mental energy))

So how does this relate to DevOps, Continuous Delivery, testing, single-piece-flow, Lean Startup, Clojure? It is simple.

Continue reading

How to secure your Bitcoin wallet

Assuming that you have already invested some money in Bitcoin you need to decide now how to make them safe.

Bitcoins are associated with an identifier called an address which is an alpha-numeric string. Every Bitcoin address consists of a public key and every public key has a corresponding private key. With the private key you can prove that you are the owner of the Bitcoin address and you can sign transactions to spend the bitcoins.

If someone steals your private key, he has full access to all the bitcoin connected to that address. Needless to say, you need to figure out how to secure it.

Example of a Bitcoin address: 1CC3X2gu58d6wXUWMffpuzN9JAfTUWu4Kj
Example of a private key: 5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF
Example of a public key: 0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

The private key and public key are stored in a wallet. Wallets can be either offline or online.

Online wallets

An online wallet is, as the name suggests, online. The private keys are on the internet. You must choose to trust a third party that takes care of your keys. You trust that they do not run away with them or get hacked.

The online wallet service inputs.io got hacked and their customers lost a total of 4100BTC.

I don’t recommend using an online wallet for any larger amount of money. It is more suitable for smaller amounts intended for spending because its accessible from everywhere you have an internet connection. One online wallet that has good reputation is the open source blockchain.info. There is another open source service called coinpunk.com that currently is in  beta, but it has great potential.

Offline wallets

An offline wallet is a wallet that is generated and stored on an offline computer to minimize attack surfaces. Offline wallets provides the highest level of security for your bitcoins. To get started, download a wallet application and transfer it to an offline computer via an USB-memory. There are many wallet applications, but the most secure and stable ones in my opinion are armory and electrum

To be completely safe I recommend using a clean install of Ubuntu (remember to check md5 hash) with the network card physically removed. That way you minimize the possibility of having malware on your computer. An excellent in depth tutorial on how to do this can be found here: http://falkvinge.net/2014/02/10/placing-your-crypto-wealth-in-cold-storage-installing-armory-on-ubuntu/

As you can see it requires some technical competence to store your Bitcoins at the highest level of security. Even people that have the required background might be hesitant, simply because it is so time consuming.

But there are solutions to this problem. One interesting project is Bitcoin Rezor (http://www.bitcointrezor.com/). It is a hardware wallet that gives the highest level of security for Bitcoins, and is user friendly at the same time. Right now it is under development and the first beta version has been shipped. You might do good to get your hands on one.

In the meantime, you must figure out what level of security you need for your Bitcoins.

Good luck!

———————————————-

Interested in learning about Bitcoin? We invite you to join a Miniseminar on the 6th of march at 8 am in our office in Oslo. In 45 minutes you will get to know the “What” and “Why” of Bitcoin. Free to attend. Talk will be in Swedish, unless the audience decides otherwise. Check and subscribe here.