US Postal Service going all-in on Agile

The US Postal Service has managed to develop systems that would never receive approval if they were to be implemented in a waterfall manner.

Through waterfall, by the time requirements were gathered, the cost was way too high to get the project started. Of course, the problem is people don’t know what they really want, so they ask for everything they can think of.

Using an agile approach, they start the project, and develop the minimum they can. Then, based on feedback and usage patterns, they develop additional functionality. A great use of Agile, and one more case where it’s allowed a company to build a system that does a better job than the old process, and saves them money.

http://zacgery.blogspot.ca/2013/06/hiring-developers-slow-down-to-speed-up.html

Hiring Developers – Don’t be desperate

The linked article provides some very good reasons for not settling for developers. Shoot as close to a ’10′ as possible, or people that have the potential to be ’10s’. If you settle for less, your existing 9-10′s will get frustrated with the lower people in the chain, and no longer want to work with you.

10′s like to be surrounded by their peers, or people, that with mentoring, can be their peers. Keep this in mind when you’re hiring. It’s better to reject a candidate that’s borderline, then hire them and take the chance they also alienate your great developers.

http://zacgery.blogspot.ca/2013/06/hiring-developers-slow-down-to-speed-up.html

Apple commercial shows what design should be about

Although I’m not an Apple fanboi, I certainly respect the company. This commercial transcends all companies, and in a minimalistic way, shows what the focus should be for design.

It’s not throwing everything in, but instead doing as little as possible, as cleanly as possible.

Both ads on this page are worth watching.

http://appadvice.com/appnn/2013/06/two-impressive-apple-ads-are-now-available-to-view-online

WordPress security

I run a WordPress blog, and recently decided to implement some security precautions. One of the first things I did was install the Limit Login Attempts plugin and activate it.

In the course of 2 months, I now have well over 1000 locked out attempts. All of them are trying to login as admin.

So, my recommendation is like most others. Don’t use the admin user, or rename it if you did, and install the Limit Login Attempts plugin and activate it!

WordPress Shortcodes

If you want to create your own shortcodes, here’s a great tutorial.

The only thing I found was adding them to the suggested functions.php didn’t work for me. So, I took the ‘easy’ option, and added them to the bottom of shortcodes.php. I’ll just have to remember they’re there anytime I upgrade my WordPress.

http://www.webdesignerdepot.com/2013/06/how-to-create-your-own-wordpress-shortcodes/

Finally. Fantastic looking non-Mac laptops with hi-res screens

Asus is starting to show off some impressive laptops, with great designs, and hi-res screens. Other manufacturers are following suit. Something to rival the Apple Macbook’s.

Will be interesting to see how the prices compare for any given hardware specs.

Check out images at http://www.anandtech.com/show/7035/asus-zenbook-infinity-hands-on-with-the-most-beautiful-notebook-at-computex

Windows 8.1 is coming.

Microsoft has gotten a lot of press over Windows 8, and unfortunately, most of it seems to be negative. Dell is constantly quoted in the media blaming Windows 8 for the decline in PC sales (I guess they haven’t heard of tablets yet?). Everyone calls the design a flop. The Start Menu being gone is terrible. And on and on and on.

I’ve been using Windows 8 almost from the time it went release. I have it on both a laptop and a desktop computer. Neither has a touch screen. I find the majority of the changes are either neutral or for the better. The Task Manager finally reports good stats. Startup and shutdown are faster. Reporting during a copy is much more informative. The Start screen is good for organizing programs, and selecting the one you want.

Personally, I’d like to applaud them for doing something different. They always get accused of copying, and yet when they try something new, all of a sudden it’s terrible.

Innovation is all about trying things. There have been rumours of Apple combining iOS and OSX for years. They’ve never done it, but the rumour still exists. Microsoft decided to take a shot at it. Again, I think they’ve made a good first step. Sure it’s not perfect, and they’ve also acknowledged that. Hence the release of 8.1, with some changes that reflect feedback from actual usage. This is iterative or agile development. Isn’t this what we want to see from companies?

Here are a couple articles on what to expect from Windows 8.1 as well as a promo video from Microsoft.

Why is software estimation so often wrong?

This is a commonly asked question, and here’s a great analogy (reply by Michael Wolfe) posted on Quora. The question is also well summarized.

http://www.quora.com/Engineering-Management/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3 (ignore the sign up requirement, and click outside box to read w/o registering).

Basically draws an analogy of planning a hike from San Francisco to Los Angeles to meet friends. Initially, look at map, figure out distance and average speed, and set a date.

Start on hike, and discover not moving as fast as thought. So, decide to move a bit faster, and push out arrival date.

Next day, additional discoveries, and straying off the path. Obstacles that weren’t visible on the map. Physical limitations of the body. Tasks that take longer than expected.

Obviously as time goes by, the arrival date is further and further away.

One of the comments on Michael’s reply is also very good.

Devdas Bhagat, Just another geek.

Do you want precise estimates, or accurate ones? Accurate estimates have ranges (we will be done between 1 year and 3 years from now with a 95% chance of this being correct.). Precise estimates are absolute, but almost always absolutely wrong.

Developers are also the only group where they are asked to do something which has never been done before, and tell someone else how long it will take before they even know what actually needs to be done.

Developer Abusing ignorance, or Government corruption?

Is this a case of a company abusing ignorance of technology, or government corruption? In either case, if this story is true, then someone has abused something.

A wordpress site should not cost $40 million, especially since all the content appears to be static. Most of the effort would be installing the custom template, and entering the text.

Something really went wrong here….

http://www.timeslive.co.za/scitech/2013/03/04/free-state-wordpress-website-worth-40-government-paid-r40-million

Monitoring Application Performance Using Logging

All developers are aware of logging, but do we log the right things? If you code in Java, odds are you use one of the loggers that support slf4j. Logback is becoming the default on more and more projects, and in my opinion, rightfully so. It supports all sorts of scenarios, easy filtering, and easy control of output. There are also several addons to write to most anything you want to write to.

But, most developers merely log events. A user logged in. An error occurred. Not many will log state. Number of DB connections open, memory consumed, cpu. Good logging will focus more on state, and less on events. This way, through graphing and analysis, can observe what state the system is in, and whether it is potentially going to experience issues. This is discussed at http://peter.gillardmoss.me.uk/blog/2013/05/28/monitor-dont-log/, and explained quite well. Bottom line. Monitor rather than log. A good way of doing this with logging tools is Structured Logging: http://gregoryszorc.com/blog/category/logging/.

If you’re interested in tracking log output in a central location, and being able to easily search it, check out http://logstash.net/. Here’s a quick interview with the author, and review of the ‘Logstash Book’. http://www.infoq.com/articles/review-the-logstash-book. Here’s a great podcast with Jorden Sissel, the main contributor to LogStash. http://foodfightshow.org/2013/02/logstash.html. One fantastic thing about the LogStash community is Jorden’s statement “if you’re having problems installing or configuring logstash, that’s a bug”.

He admits that Logstash isn’t as powerful as Splunk, but it likely has most, if not all, the features you will require for your project. The community is constantly working on enhancing its capabilities, and is very responsive.

Here’s some good information on loggers, and why you should consider Logback. http://architects.dzone.com/articles/sawing-through-java-loggers.

TortoiseHG on Mac OSX

I’ve recently started using a Mac, but missed 2 tools. I make extensive use of Mercurial, and on Windows or Ubuntu, used TortoiseHG. I haven’t found anything that approaches it’s quality, power or ease of use for interacting with Mercurial repos.

There were instructions to install TortoiseHG, and I was able to follow them, BUT the application wrapping wouldn’t work correctly for me. The only way to run it was from Terminal.

Well, the community has responded, and there’s now a build that creates both a stable and unstable build. The downloads are available from S3 and are proper Mac apps with all dependencies contained internally. No more building from source, and homebrew and various other tools required.

Here’s a link to the Google Group message https://groups.google.com/forum/?fromgroups#!topic/thg-dev/StsdthOV3c4

And a copy of the message:

Folks,

Nightly builds of TortoiseHg for OS X are now available: https://s3.amazonaws.com/kiln-tortoisehg-nightlies/index.htm

Both stable and unstable (i.e. default) are built from the heads of those branches, nightly around 1am Eastern, packaged into app bundles, and uploaded to the above URL. The build scripts are here: https://bitbucket.org/kevingessner/thg-macbuild

The bundles should run on OS X 10.7 and higher, and do not have any dependencies (which is why they are kinda big).

Thanks to Fog Creek Software for providing the compute and storage resources for this build server.

Cheers,
– Kevin

Developers and Testers need to cooperate.

After all, we’re on the same team.

Here’s a great post describing the existing stereotypes from the tester’s side. Similar biases and opinions exist on the developer side.

In order to truly be doing agile, we all need to work as a cohesive team, and acknowledge the unique abilities we each bring to the team.

http://blog.smartbear.com/software-quality/testers-and-developers-can-we-please-get-along/

CSS Hack management

Here’s an interesting approach to manage CSS hacks. The idea is to have a css file called Shame.css or hacks.css. The ONLY thing put into this file are the ugly hacks that are necessary either because of browser oddities, or lack of time, or some other reasonable reason.

The css in here is intended to be replaced as soon as time, techniques or skills allow. The hacks will be well documented so that anyone looking at the file will know why it’s there, and can potentially address the issue.

The idea is not to shame the developer doing it, but to recognize the necessity of hacks occasionally, and ensuring that they’re clearly documented, and potentially corrected.

Another assumption of this technique is that you’re using a css pre-processor so that the file doesn’t explicitly appear in your markup.

http://csswizardry.com/2013/04/shame-css/

My observations of the latest Thoughtworks Technology Radar

Thoughtworks has released their latest Technology Radar. Always an interesting read, and well worth at least skimming.

http://martinfowler.com/articles/radar-faq.html

A few highlights for me.

Gradle as Adopt and Maven as Hold. The more I learn, and work with Gradle, the more I lean to this too. Not quite yet, but almost. IDE support is finally very close to Maven, if not on par. Getting better documentation, and with every release, Gradle keeps adding more and more powerful features. Maven has been standing still for quite awhile now….

Logstash in Assess. I’ve had this in my assess for way too long…

VERY interesting that they have chef-librarian in asses, and NO mention of Berkshelf. From what I’ve seen in the devops community, everyone talks about Berkshelf, and very few mention chef-librarian.

Both Scala and Clojure are adopt. Java is NOWHERE to be found.

Gatling is in Assess. They prefer this to JMeter and Grinder as it’s lighter weight. I’ve taken a quick look at Gatling, and would agree with that.

They make mention of heavyweight testing tools (I’m looking at you, HP QC), and how they drag a company down with licenses, complicated structures etc. I’ve discovered that HP QC can be used in a lighter weight approach, so I have a higher opinion of it than previously, but still…

Explicitly calling out TFS as Hold. Too many teams losing too much time to it. And yet they include Perforce and Subversion in their list of alternatives. I’ve done some work with TFS, and would say it’s not really different than Perforce nor Subversion, so this one puzzles me.

They also mention Git as an alternative, but no mention of Mercurial… More proof that Git is ‘winning’ the battle? I really like Mercurial, and wish it had higher visibility. I still prefer it as the starting point for DVCS, even if you do end up moving to Git. Also, no harm in knowing both, as you’re likely to need to interact with Git as some point in time.

Scaling the NetFlix way

If you’re interested in how NetFlix supports its large customer base, and learning more about the open source tools they’ve released, here’s a great podcast to listen to.

There are several people from NetFlix involved, and the questions are also very good.

They discuss their infrastructure architecture, how they manage it, deploy it, and test it. The links from the podcast page are also very useful. There are links to a ‘how to get started’ page, the various tools they’ve open sourced, and to their presentations at re:invent. A lot of information to follow up on.

http://foodfightshow.org/2013/05/netflix-oss.html

How to introduce Agile into an environment that doesn’t want it

An excellent post describing how to introduce Agile into an environment that doesn’t want it.

Walks through a scenario of a waterfall team in serious trouble, and how he introduces some Agile practices, but doesn’t call them that, nor does he explain why he’s introducing some practices.

Slowly introduces Daily Scrum, Task Board, Retrospectives and begins to foster collaboration.

Well worth the time it takes to read.

http://www.mendix.com/think-tank/promoting-agile-in-a-waterfall-culture/