Category Archives: Review

Succeeding with Agile, Brief Overview I

Succeeding with Agile

Couple months ago, I was promoted to a ScrumMaster role at DocuSign. In light of it, I decided to brush up on my agile development skills and theory by reading. My choice fell on the highly acclaimed Succeeding with Agile: Software Development Using Scrum by the guru of Agile Development and Scrum — Mike Cohn.

Succeeding with Agile

Succeeding with Agile

Here is a short overview of the first half of the book, or gist as programmers call it:

  • A ScrumMaster has more responsibility and authority over processes, but a limited authority over people; the role is akin to a fitness trainer (a yoga teacher analogy fits me better): enforcing the agile process.
  • Every sprint team needs to deliver shippable (and tested) code: features, bugs, etc.; if the task is too large — split it.
  • Developers should work with product managers/owners directly on requirements.
  • Different developers should work on all parts of the application / code base.
  • Agile is not for the developers who likes to work in privacy putting their headphone and not talking to people (Bummer). :-)
  • Team functions better with a mix of generalists and specialists; avoid all-specialists teams at all cost.
  • When possible use feature teams rather than component teams.
  • Keep teams small. Four to nine people is an optimal size due to the social loafing (having more people reduces average productivity) — this was one of the reason our DocuSign team was split into three smaller teams!
  • A non-coding architect and project manager are obsolete roles on a Scum team.
  • Don’t let team members multitask. Each additional task reduces productivity; however, after three and more tasks the reduction becomes smaller and smaller. Direct quote: “Individuals assigned to work on multiple projects inevitably get less done

To be continued…

What I really liked about the book so far is that it’s not just boring theory. Each point is supported by data, references to sources and personal three-decade-long (anecdotal) experience of the author (Mike Cohn). If you liked the bullet point above, get Kindle Succeeding with Agile on Amazon.

Switching from Windows to Max OS X

I’ve been a Microsoft Windows user for the most of my professional career. It all changed a year ago when I moved to Mountain View, California to participate in 500 Startups program, a summary of my experience in my blog post 15 things I learned from 500 Startups (aka Fail Factory).

People in Silicon Valley, especially developers and engineers, virtually all use Mac OS X or some flavor of Linux. But peer pressure wasn’t in itself enough for me to make a switch. After all those years I’d have amassed a set of tools and habits as well as assumptions about Mac OS X and Apple. Therefore I never owned any Apply device, even an iPod or iPhone, and thought of them as overpriced and limited gadgets. At that time we were using Ruby on Rails and I often stumbled upon some weirdness here and there within my setup. Very soon I’d discovered that Ruby on Rails just wasn’t meant to be run on Windows machines by design :-( The thing is that 37signals (company behind RoR) and other power contributors to Ruby on Rails are Apple users, as a consequence when they build a new gem or release a new version of core framework they do it for Mac OS X first. Then for Linux because the difference is minimal (Mac OS X is a Unix-based system, hence the X). A very few Ruby on Rails Windows enthusiasts are vastly outnumbered and that’s why it’s harder to find latest libraries, solutions and answers to specific questions (which there are many).

As always, the fear of a pain from switching is bigger than the pain itself. In a month or so I learned all the trackpad tricks, most of the shortcuts and installed the best developers tools (most of which are not free but they’re way better than free alternatives on Windows). Another great factor is a quality of the hardware: the keyboard, battery, charger (I have MacBook Air), etc. is superb! The look and feel of Mac OS X itself is not very different from some Linux distribution like Ubuntu but OS X has two huge advantages:

  1. All the drivers will work out of the box and with future OS updates; I often had discovered that either a microphone or a some other periferieal device is not working after installing Linux on my laptop;
  2. It has nice small but very convenient features.

A year after the switching I’ve sold all my Windows machines and I work, run errand and entertain myself solely on 13’’ MacBook Air. Recently I even was brave enough to install 240Gb Aura OWC SSD instead of a stock 128Gb SSD drive, it took an hour of cloning and 15 minutes of working with a tiny screwdriver :-)

So far Max OS X is a best tool for me and I highly recommend to make a switch if you’re still on Windows. The investment in Mac OS X machine has high ROI. It’s essential if you want to be an a bleeding edge of technology (Ruby on Rails, Node.js, etc.). As an added bonus, MacBook can simplify and organize your life better leading to a higher productivity, less stress (no worries about the brand, color, shape when the time for an upgrade comes, because I’ll just get the latest MacBook with the maximum everything) and a zen-like life :-)

Wintersmith — Node.js static site generator

This past weekend was a very productive one for me, because I’ve started to work on and released my book’s one-page website —rapidprototypingwithjs.com. I’ve used Wintersmith to learn something new and to ship fast. Wintersmith is a Node.js static site generator. It greatly impressed me with flexibility and ease of development. In addition I could stick to my favorite tools such as Markdown, Jade and Underscore.

Wintersmith is a Node.js static site generator

Why Static Site Generators

Here is a good article on why using a static site generator is a good idea in general, An Introduction to Static Site Generators. It basically boils down to a few main things:

Templates

You can use template engine such as Jade. Jade uses whitespaces to structure nested elements and its syntax is similar to Ruby on Rail’s Haml markup.

Markdown

I’ve copied markdown text from my book’s Introduction chapter and used it without any modifications. Wintersmith comes with marked parser by default. More on why Markdown is great in my old post, Markdown Goodness.

Simple Deployment

Everything is HTML, CSS and JavaScript so you just upload the files with FTP client, e.g., Transmit by Panic or Cyberduck.

Basic Hosting

Due to the fact that any static web server will work well, there is no need for Heroku or Nodejitsu PaaS solutions, or even PHP/MySQL hosting.

Performance

There are no database calls, no server-side API calls, no CPU/RAM overhead.

Flexibility

Wintersmith allows for different plugins for contents and templates and you can even write you own plugin.

Getting Started with Wintersmith

There is a quick getting started guide on github.com/jnordberg/wintersmith.

To install Wintersmith globally, run NPM with -g and sudo:

$ sudo npm install wintersmith -g

Then run to use default blog template:

$ wintersmith new <path>

or for empty site:

$ wintersmith new <path> -template basic

or use a shortcut:

$ wintersmith new <path> -T basic

Similar to Ruby on Rails scaffolding Wintersmith will generate a basic skeleton with contents and templates folders. To preview a website, run these commands:

$ cd <path>
$ wintersmith preview
$ open http://localhost:8080

Most of the changes will be updates automatically in the preview mode except for the config.json file.

Images, CSS, JavaScript and other files go into contents folder.
Wintersmith generator has the following logic:

  1. looks for *.md files in contents folder,
  2. reads metadata such as template name,
  3. processes *.jade templates per metadate in *.md files.

When you’re done with your static site, just run:

$ wintersmith build

Other Static Site Generators

Here are some of the other Node.js static site generators:

More detailed overview of these static site generators is available in the post, Node Based Static Site Generators.

For other languages and frameworks like Rails and PHP take a look at Static Site Generators by GitHub Watcher Count and the “mother of all site generator lists”.

Markdown Goodness

I’ve been introduced to Markdown by my co-worker through GitHub and the need to document the services we’ve been working on at Gizmo. And soon I’ve become a huge fan of Markdown. Honestly, I don’t think I would have been so productive writing blog posts, training manual and Rapid Prototyping with JS book without the help of Markdown and my favorite Markdown apps which I’ll list later.

Beautiful iA Write - my favorite Markdown app

Beautiful iA Write – my favorite Markdown app

Markdown is a lightweight text formatting syntax which allows you to write in a plain text, read what you’ve written, and convert marked text cleanly, without any additional mess, into HTML. It is a very accessible and efficient way of writing books, blog posts, articles, technical documentation and pretty much everything which is meant to be on the Internet. Markdown is de-facto a standard in a tech community, since it’s perfect for inserting code blocks and links. Also Markdown is gaining popularity in book publishing, e.g., LeanPub is accepting books only in Markdown.

Because Markdown doesn’t require typing too much extra code, like plain HTML, or using your touchpad/mouse, like Word, Pages, or Google Docs, Markdown is just a pure bliss. On the other hand if you’ve been dealing with plain HTML or WYSIWYG editors you know that it’s a matter of putting all those opening and closing angle brackets (<>) or cleaning up the extra mess. Really, who has time for that?

Markdown Sample

Markdown Sample

Here are the five most used styles, which according to 80/20 rule, aka Pareto Principle, will give you the most bang for you time:

  • Headers: use #,##, ###,…, e.g., # Markdown Post
  • Links: use: ([](), <>), e.g., [Cool blog](http://webapplog.com) will turn into Cool blog
  • Emphasis: for Bold use **bold** and Italic use *italic*;
  • Lists: just start with 1. item or * item and follow by space
  • Code: use var a=[]; or tabbed line before.

In case you have to dive deeper in to the markup, here is the original John Gruber’s Markdown: Syntax.

Note: there are many flavors of Markdown, such as GitHub or LeanPub, but those five styles should apply to all of them as they are considered to be the foundation.

And finally, here is my favorite Markdown tools which I can’t live without:

  • ByWord: apps which have nice UI/UX, tons of features, iCloud/Dropbox support, versions for: iPad/iPhone, and Mac OS X;
  • iA Writer: and similar to ByWord, although apps have less features which I guess was made on purpose to keep attention on the writing, versions for: iPhone/iPad, and Mac OS X;
  • Marked: preview app which supports multiple CSS files and many exporting functionalities, version for Max OS X;
  • Mou: free The missing Markdown editor for web developers which has live preview, version for Max OS X;
  • TextMate: plain code/text editor dubbed The Missing Editor for Mac OS X, version for Mac OS X.

And of course, you can use any text editor like Emacs, Vim, Sublime or Notepad for writing Markdown, — it’s just a text after all! Extra bonus: many websites and blogging platforms now support Markdown right off the bat, check with theirs FAQ/help.

LaunchRock vs KickoffLabs

UPDATE: KickoffLabs team kindly gave me one month worth of their service as a token of appreciation for spreading the word about them, I don’t think this in any way affected my review.

Tl;Dr

KickoffLabs is a winner, in my humble opinion. I picked KickoffLabs for my Rapid Prototyping with JS book’s landing page because KickoffLabs offers more functionality than LaunchRock does. Although LaunchRock has better user interface interface and less clunky user experience.

If you’re still bulging your own landing pages for whatever you’re launching, e.g., books, startups, apps, stop right now! Yes, I know, it’s not a big deal to throw together some PHP or Ruby on Rails, hook up email sign-up form and Google Analytics, and maybe even tinker with the design a little bit. Landing pages are all trivial but could be very time consuming especially if you’re a product perfectionist like I am. Lean Startup teaches us not to spend 10–40 hours putting together a landing page if there are solutions like LaunchRock, KickoffLabs and Unbounce!

LaunchRock

LaunchRock has seamless UI/UX

LaunchRock has seamless UI/UX

I’ve tried LaunchRock before they had a new design and multiple-site support, which is sadly unavailable for existing accounts, for CrowdSFX.

Pros:

  • easy step-by-step set-up and configuration;
  • user friendly design with live preview;
  • no hard selling.

Cons:

  • limited functionality and configuration;
  • no multiple-site supports for existing users.

KickoffLabs

KickoffLabs Dashboard is somewhat clunky

KickoffLabs Dashboard is somewhat clunky

Because I couldn’t set up new landing page with the existing account and I didn’t want to mess up with Google App setting up a separate email account for Rapid Prototyping with JS book website, I decided to try out KickoffLabs. I’ve heard about KickoffLabs from my designer friend, and she said that it had more features than LaunchRock, that’s even better I thought!

Setting up a landing page on KickoffLabs has started all right, but soon I realized that in order to get anything decent out of KickoffLabs service I needed to upgrade to a paid account. I went with the basic paid account which is $29/mo and got Google Analytics support, custom domain, no branding and something else. Google Analytics and custom domains are provided for free at LaunchRock, so it was sad to discover that I have to pay for those features at KickoffLabs.

Pros:

  • more features than LaunchRock;
  • easily customizable looks and feel;
  • free themes;
  • support multiple-sites.

Cons:

  • try to hard up-sell you on basic features like Google Analytics and custom domains (SRSLY?!);
  • some themes rely heavily on Twitter Bootstrap look and feel;
  • clunky user interface, easy to get lose in screens and menus.

In the end, I ended up using paid KickoffLabs account, for Rapid Prototyping with JS book with the unpaid old version of LaunchRock, for CrowdSFX project. Maybe I’ll try Unbounce next and write about it as well. No matter what service you choice to go with, just do NOT do your landing pages from scratch, or Gods of the Lean Startup movement will punish you! JK.

Follow up read on The Next Web — KickoffLabs beats LaunchRock out of the gate, throwing stones on the way.

PS: Scott Watermasysk, the founder of KickoffLabs, promised me a free month of service for this blog post. Let’s see if he keeps his promises :)