Monday, April 21, 2014

Marcus Node Bits: Deploying to Heroku (and MongoHq)

I've been doing something for real! A very simple little polling site, that actually turned out pretty ok (saved the UI but I have a friend brushing that up for me) and might be useful.
It's built with KoaJs, of course, and using MongoDb as database. Basically you can create a "question", tag it with some meta data and then send a link to a page where you can start receiving answers. And there's some very basic "export to excel"-reporting. Simple stuff. I spent maybe 3-5 hours altogether on it, in the hospital bed with my son in the bed next to me. He was pretty ok, so the concentration was not on top on either tasks for me. Bad!

This Sunday I wanted to deploy the first version of it. To Heroku. It went pretty smooth but I wanted to share my story and some problems I ran into.

Looking for better

Apparently my last post was not completely gibberish and contained some thoughts that you could make use of. Thanks for the feedback. Let me continue my train of thoughts here. It's not a very long train, but it's still a train.
Here's where we ended: there's a customer, we are here to delight them (thank you Stephen Deming for that phrase). Everything we do right now is just best so far in our strive to more effectively give value to the customer. We can and should, change our current state, process, organisation, tools or what have you, to try to improve. If we do the change in bigger steps there will be bigger impacts in our productivity, in smaller steps smaller impact.

See? Nothing really new or amazing here. In this post I wanted to talk a little bit about where this can take us. Because I see this as a guiding star, as a "true north", designed to draw improvements out of us. Taking us to ideas, places and innovations better than we ever thought. It's a bit "to infinity and beyond", I know.

Wednesday, April 16, 2014

No... this is how I think

I have recently come to realize that some of the most basic of my thinking is not as evident and obvious to people around me as they are for me. This was a real wakeup call for me and made me think long and hard on what is important to me and how I do work. And consequently try to lead others with this as guiding star.

My ideas is not new nor radical. The  ideas I did meet is not bad, they just strive to achieve other goals (I think) or maybe the same goals but in a totally different manner. I have really tried my best not to portrait my  ideas as better, but rather just another way.
My agile and lean friends will quickly see that this is by not measure unique or new thinking. But I've come to realize that for people that haven't seen this kind of reasoning before it is very backwards and counterintuitive. This will not be complete in the sense that I will give the theoretical back... (YAAAAWN)...ground to why I think this way. Come and ask me.
That means that you can put "to me" in front of every paragraph below. And you can disagree. Please tell me in that case so that I can improve.

Friday, April 11, 2014

KoaJs and the "SyntaxError: Unexpected identifier" error - or "that time when I understood generators"

It was quite sometime since I wrote a blog post with an error message in the title. However I have now got this error so many times, and keep scratching my head every time. Also I think I can explain why it happens.

Thursday, April 10, 2014

Aligning our sights - what Indonesians taught me, part I

I have now been in Indonesia for about 4 months. There's so many new impressions and things that I've seen, learned and experienced that I'm starting to forget them. Some is bad, some is good, some are ugly so I thought that I would write them down.
The first thing is some sort of alignment that is repeated almost everyday. In almost all workplaces that I've seen or heard about. Like a routine checkup on what is important here. I've actually experienced that before, in a very different setting.

In this post I'm planning to tell you a couple of short stories and episodes, to then try to see what this could look like in my "normal", more western culture. I hope it will be interesting and useful.

Tuesday, April 08, 2014

Marcus Node Bits: Let's flex Koa Js, shall we?

The first two we picked up the basic on getting Koa Js to start as well as understand what it's build from and the concepts behind it. It's time to do something for real. Well over time, one might add. This post is all about using Koa to build different websites and web api's.

By using Koas own examples I will show you how you can use Koa for a lot of common tasks and scenarios. Let's dive right in.

Wednesday, April 02, 2014

Team Yayasan week 5: Redoing Todo

This week started a bit late due to a public holiday, the Hindu new years celebrations, (the joys of working in a country that respect 4 different religions and celebrate all the main events publicly!) and then we had been spread out during the weekend. It took some time to gather the forces.

Last week we were a bit confused about the lead times and throughput. Sure enough this week we did some more items, due to the ketchup-effect of doing to big items. We are continuing to track both the lead time per size (S, M and L) and the number of items (or each size) that we are completing per week.
It's still a little too little data to draw any conclusions but we are confident that with this data tracked we will soon start to understand our work.

Tuesday, April 01, 2014

Marcus Node Bit: Let's talk about yield and generators, shall we?

Koa Js removes need for callbacks but still have uses non-blocking code. How is that possible?

If you read the code of the last blog post you might have reported a bug or two since I was using a strange asterisk at in the getGreeting-function. Is that really valid Javascript?

And when you looked very closely you might be wondering about the "yield" right there in the middle... What kind of witchcraft is this thing anyway?

These questions and more flew threw my head when I first learned about Koa and the concepts its's built upon. In this post I will try to explain that a bit and point you to other places where they explain this much better, if you don't like my tries. This is just how I, a newbie to these concepts, have tried to wrap my head around it. Hey, let's be completely transparent and say that I have to relearn this just about everyday.

It's really not that complicated once you understood it the first time... Just like quantum mechanics...

Monday, March 31, 2014

Marcus Node bits: Let's talk about Koa for a while, shall we?

Ok, let's talk about KoaJs. Why?
Well, it's new and shiny. But that's not it.
And it's tiny and stays out of your way. But that's not it.
It's created by the awesome crew behind ExpressJs (and others). But that's not it.
It teaches me about new things. And really strange things. Like generators for example. But that's not it.

No.
The
Reason
I
really
wanted to
get your
really important fact that we would like to hold on to in the rest of the text
attention
is something
different
altogether.
This has to
Stop.

Wednesday, March 26, 2014

Setting up a complete Node development machine. From scratch. For free

I got yet another computer. To work on. But there will be slow days on airports and hotels with this baby to... So I decided to try something new; I decided to go Linux and setup a development environment for Node Js. I did not set up a goal of this being a no-cost project, it just ended up that way (with one worthy exception, in the end).

I have never used Linux before and decided to go with Ubuntu that looked like it would suit my Windows/Mac background best. It did too. It's been a pure joy to use so far.

This blog post described what I did and what obstacles I ran into on the way. It was ... not surprisingly maybe... but at least gratifyingly simple and smooth. I've tried to describe it so that you can be both a total newbie and a little bit more advance. The short version (aka TL;DR) comes first in each section and then the details. Skip what you don't want to read.

I started with a normal PC Lenovo (2.5 Ghz, 4 Gb ram) with a 64-bits Windows 8.1 Pro on it. The good news is that you don't have to care about that. Because we are building a virtual computer using VirtualBox.

This post is pretty scary very very long but the installation is quick. Downloading Ubuntu and installing it it what's takes the most time. With a good internet connection (that I do NOT have), you should be able to complete all of this in under 1 hour.
Here we go.

Monday, March 24, 2014

"Do you think Kanban can help us?"

One thing that is really interesting and very enjoyable is to have long time contacts over social media (in my case Twitter mostly). Many of these people I have never met in reality and I still consider them friends. We know quite a lot about each other and have learned a lot from each other.

Kristof Claes was the guy that introduced me to NancyFx and SimpleData in 2011. From an excellent blog series about a photo blog (couldn't find a link...) he thought me a lot. He has now got an opportunity to use Kanban at work and asked me a question about that.

I asked him if I could blog the question and my answer and he agreed. Here you go:

Team Yayasan week 4: Throughput and lead times

The last week the blog post turned long. Sorry. This meant to just be short updates. Here's another one.

The first thing I did this week was to create a diagram over our throughput; the number of items we're getting done per week. And it looked pretty bleak. And was about to get worse... Here's how it looked at the beginning of the week.
Throughput trend at the start of the week
That's not looking good, right. I think I can explain it... and I think that I shouldn't care too much about data with these few data points.

Tuesday, March 18, 2014

For the Indonesian War Cry: Achieve more by doing less

DISCLAIMER for frequent readers of this blog:
I now work for the Salvation Army in Indonesia and they asked me to write an article from time to time in the Indonesian War Cry (the Salvation Army magazine). I of course used my normal style of writing and wrote about the thing I've written about here. Oh, not Javascript or Nancy maybe but Limit WIP, Lean and Kanban. But with a Christian twist and message.

So if you don't want to read this, please stop now. I'll soon come back to my normal things. But if you want to please continue. Maybe there's something that you can use in here. Or not. As normal on this blog, I use it to store my ideas and thoughts.
END DISCLAIMER

Here is the second of two short articles that I've written for the Indonesian War Cry. You can read the first here. This article is about Achieving more by doing less. I hope you like it.

For the Indonesian War Cry: On Motivation

DISCLAIMER for frequent readers of this blog:
I now work for the Salvation Army in Indonesia and they asked me to write an article from time to time in the Indonesian War Cry (the Salvation Army magazine). I of course used my normal style of writing and wrote about the thing I've written about here. Oh, not Javascript or Nancy maybe but Limit WIP, Lean and Kanban. But with a Christian twist and message.

So if you don't want to read this, please stop now. I'll soon come back to my normal things. But if you want to please continue. Maybe there's something that you can use in here. Or not. As normal on this blog, I use it to store my ideas and thoughts.
END DISCLAIMER

Here is the first of two short articles that I've written for the Indonesian War Cry. I hope you like it.

Monday, March 17, 2014

Team Yayasan week 3: Understanding the problem and sloppy limits

Every week (or in case of this week) we hold a short retrospective. It's very informal is basically just us asking ourselves what worked and what did not. And then we change something. I think that is very important. We change something. In order to improve. Those changes doesn't have to, and up to now most haven't, been suggested and implemented at the retrospective meeting. But we try to improve in small steps. Often. Hmmm someone should write about that.

Going into this week we decided two things to improve:
  • Deep dive into why we don't get reports in time
  • Lower our work in process limit from 14 to 12. 
One of those were very successful and one was not...

Saturday, March 08, 2014

Team Yayasan week 2: Transparency, culture and lower WIP

This week was really, really interesting. The things that happened on the board and within the team was good but what happened with our interactions with others was both unexpected, a bit though and also important. I'll try to describe both things without revealing to much details about people and events.

Speaking of that, I got a comment about being this transparent with our work and there's probably other thinking about it as well. Yes, I can see you. I can read your mind. You will give me $10000 Just kidding. But I have asked the team. I have checked the cards. There should not be anything too controversial on there. And finally, and most important, we are striving to introduce a greater degree of transparency and openness in our organization. I think it's very important that we are transparent with our work. For us and for others that will follow us.

The last blog post got attention and that scared us at first. Dare we write what's really happening? Yes - this will be our experiences, as they happen. It's just us. But I think and hope that it will be interesting to follow.

Thursday, March 06, 2014

Javascript callbacks: can't live with them can't live without them... or can you?

This is a confession post. Yes, I'm a phony too. I pick up some things very late. Like JavaScript. And Node and ... well a lot of things.

But I'm sure that a lot of people have run into this and maybe, just maybe, there will be some others that haven't run into it yet. So this might help someone. Or me, for that matter, when I come back to this problem later.

It has to do with callbacks. The things that Node is made up of. And how they confused me a lot. And how I grew to love them, then hate them, and finally get them. And right about that point realize that there's another way.

Let's see if I can explain this. Just as an experiment.

Wednesday, March 05, 2014

Marcus Node Bits: Ok then, Moogose is pretty sweet

I often blog too early. I get excited and want to tell everyone as soon as possible. I whip together a demo and then write a blog post about my experience. Sometimes that is a bit too early. Sometimes you need another look to really appreciate a tool, or to realize that it doesn't do the job.

In my blog post about Monk (which I still think is great... Monk, that is, not the blog post) I wrote that I didn't like Mongoose that much. That was too early to say. I have now used it for real and I think I like it.

Let's me redeem my bad Mongoose-conscience and write a short post on what I've picked up when trying it... for real.

Monday, March 03, 2014

A little lesson about document database modelling

This is just a short thing that I experienced when doing the data layer for AptiTalk. AptiTalk is an attempt to create a corporate chat, we want something like Hangout but better. Yeah, we're not only best - we are the most humble as well!

Ok, in this simple setting I learned a thing about using document databases (Mongo in this case).

Saturday, March 01, 2014

Team Yayasan - getting started

I have a wonderful opportunity on my hands. I have been given a team of 4 people that never have done agile or lean before (albeit one of the is Elin, my wife, so she should know something). I have also authorization to decide about how and what we work on, within some limits (that I don't really know the bounds of yet). And I have three years to work with them.

For the better part of my career I have been a consultant giving advice to people with power of various reach. I have often done gigs that have been ca 6 months in length. Sometime they have been prolonged but then it has always been to go somewhere else in the organization. This time I have plenty of time and direct application of my ideas, no need to try to convince the person in charge.

I've decided to try to use ideas from lean, agile and other inspirations I've picked up during my career so far, but also to move slowly. My main goal is to create leaders out of this team, and hopefully others around us.

I will blog about our experiences and tribulations here to remember it all. This is the first post, and it's a bit long, but I need to set a proper context. I'll keep it shorter later.