November 2014 Newsletter
You can make more friends in two months by becoming interested in other people than you can in two years by trying to get other people interested in you. –Dale Carnegie
Let me never fall into the vulgar mistake of dreaming that I am persecuted whenever I am contradicted. –Ralph Waldo Emerson
The idea that scientific method is the only method of discovering the truth has a lot to be said for it, if you mean by truth how the world ultimately is as a system of organised matter, but I defend cognitive dualism: that the world can be understood completely in another way which also has its truths which are not translatable into the truths of science. So we have to look at the different ways we organise this material that science explains for us. –Roger Scruton, The Soul of the World
Be the chief but never the lord. –Lao Tzu
Thinking is the hardest work there is, which is probably the
reason why so few engage in it. –Henry
Ford
If you’ve read this newsletter for very long, you know (by now!) that I’m
a fan of functional programming (even though I don’t get to use it much in
practice!). This excellent article
provides some great reasoning about the value that FP brings in terms of
helping us prevent mistakes in the first place when we are implementing our
programs.
Here’s a nice list of 5 simple (but not easy!) questions that you should
ask on any project to ensure that you can deliver value to your customer. I like that he doesn’t try to limit the list
to simple “checkbox” items, but rather some more general (and, at times,
philosophical!) questions that we often fail to think about.
http://paul.oremland.net/2014/08/whats-your-measure-of-success.html
This article provides an interesting perspective on problem-solving. The essential points are that reframing the
problem and potential solutions often lead to better results and that you need
to be able to test and validate/refute your hypotheses quickly to avoid
spending too much time going down a blind alley.
http://www.azarask.in/blog/post/the-wrong-problem/
Most readers know that I keenly differentiate
between management and leadership.
This interview with the author of one of my favorite blogs, Rands In Repose, explores what it means to be a leader in the
world of software development.
Facebook founder Mark Zuckerberg famously coined the motto of 'Move Fast
and Break Things'. (And he subsequently changed
his mind.) In this
article/presentation, the author says that moving with due speed is important,
but having a good customer experience is at least as important. His point is mainly in the context of APIs,
but applies across the board from my perspective.
http://zachholman.com/talk/move-fast-break-nothing/
Technical debt
is almost universally considered bad in development circles. However, this article which compares
technical debt to the various kinds of financial debt, it’s clear that the view
of technical debt is quite a bit more nuanced.
https://medium.com/@the_ajohnston/questions-about-the-debt-in-tech-debt-d651fa08980a
Here are some key insights from Jeff Sutherland, the
co-creator of Scrum methodology, on Scrum
best practices, based on his new book about how to
apply the Scrum concepts to any aspect of business.
http://www.itworld.com/application-management/440827/how-do-scrum-right
Competition among technologies is nothing new (remember VHS versus Betamax?),
but the competitors often change. Here
are some of the technologies and platforms that are vying for mindshare among
developers today.
http://www.infoworld.com/article/2687807/application-development/article.html
Most of us are familiar with the fact that all software has bugs. Here is an interesting story about how even serious defects in widely used software and libraries can lie dormant for years, even decades.
As a tester, you probably hear a lot about “agile testing”, but many of the resources don’t give you any practical suggestions about how to do it. This article gives several relevant tips that you can use right away to improve your productivity and effectiveness as a member of an agile team.
http://www.bughuntress.com/articles/agile-may-get-even-more-productive-if-you-follow-these-tips
In my own experience, testers tend to be “glass half empty” people. This isn’t necessarily bad, since it’s part of what makes a good tester successful. At the same time, this article points out that testers may need to take a step back and understand the need to balance quality with time-to-market.
https://developer.ibm.com/urbancode/2014/10/16/testers-may-never-happy/
Certainly, no one wants to have to take the blame for a 911 system outage. Likewise, we may not always consider the life-or-death consequences of the applications that we develop or test, but this example shows how easy it is to overlook system limitations or constraints that can snowball into a significant failure.
With the recent spate of security issues in open-source software, such as the Shellshock problem with bash and Heartbleed breach in OpenSSL, pundits from many quarters claim that Linus’s Law has been disproven. However, this editorial says that it’s a misapplication of the concept.
http://www.drdobbs.com/open-source/open-softwares-thousand-eyes-a-misunder/240169160
Most readers of this newsletter are already very well versed in at least one programming language and, therefore, when they start out with a new language they prefer a “quick start guide”. This is an excellent one for Google’s Go Language. It takes you through the typical steps of getting your environment configured and then developing a simple web server application that uses external APIs to show the weather. And now you can even write your front-end code in Go!
http://howistart.org/posts/go/1
JavaScript has become the go-to platform for data visualization, stealing a lot of thunder from Python in the process. This comprehensive tutorial teaches you how to use JavaScript for visualization from basic graphs to fully-interactive tools, using a variety of excellent open-source JavaScript libraries, including D3.js.
JavaScript has supported arrays since the beginning of the language, but like some of the other portions of the language, they can be counterintuitive. This tutorial explains some of the powerful built-in JavaScript functions for handling arrays.
http://www.frontendjournal.com/a-few-tips-on-how-to-work-better-with-arrays-in-js/
With the weight of Google behind it, AngularJS seems to be gaining market share in the JavaScript framework world. Learning AngularJS can be daunting, but this comprehensive guide with examples of each of the various concepts is a good place to start. Part of the difficulty (at least for me!) with AngularJS is the nomenclature and this tutorial uses good analogies to help clarify terms.
http://www.airpair.com/angularjs
Algorithms and data structures are the meat and potatoes of software development. Most of us learned them using dry mathematical or code-based explanations. This excellent site has visualizations for many algorithms, from the common to the sublime, along with explanations about how they work.
Hazelcast is a popular open-source in-memory database platform for Java. Although powerful, it is also (somewhat) notorious for being difficult to get started with it. This multi-part tutorial series walks you through the steps to building an example application with Hazelcast, using detailed code examples for each concept.
http://darylmathison.wordpress.com/2014/04/01/beginners-guide-to-hazelcast-part-1/
http://darylmathison.wordpress.com/2014/05/23/beginners-guide-to-hazelcast-part-2/
http://darylmathison.wordpress.com/2014/06/22/beginners-guide-to-hazelcast-part-3/
I try to stay away from (inter)national politics directly in this newsletter, because I want to avoid making it too divisive. (Of course, I recognize that, whether we realize it or not, we all apply our “worldview lens” to everything that we read and hear!) And, usually, economics is too-close a cousin to politics. However, in this case, I’m going to make an exception, because this is a matter of great importance to everyone who reads this newsletter, not least because we are smack in the middle of the sea-change that it is bringing about. This report from The Economist does a good job of being fair about the issue and I encourage you to read it and research more on your own.
By now, you are probably familiar with the flap about Microsoft CEO Satya Nadella’s comments about gender differences in pay for technical workers. This pundit (and serial-entrepreneur) says that one thing that has gotten lost in the whole discussion is the importance (in some cases, necessity!) of asking for better pay when you think you deserve it. She goes to offer some practical advice for making the pitch to your boss.
http://heidiroizen.tumblr.com/post/100265592165/some-thoughts-on-asking-for-a-raise
Looks like technology startup Weeby wants to start an arms race for the best developers by offering a million dollars over four years plus company equity. Weeby CEO says that developers can’t typically have direct bottom-line impact at public companies, but a startup can live and die by their technical staff.
http://sapan.svbtle.com/musings-on-programming
The bottom line for all work, from writing a novel to building the next “big thing”, is productivity. Some new research says that you should work intensely for 52 minutes and then take a 17 minute break. But the key to the whole regime is that the break is spent doing things away from your computer, such as taking a walk, talking to others, etc.
Most of us would probably not show up at our jobs, if we did not need the salary to pay for our houses, cars, food, and the like. However, in some counterintuitive conclusions explained in this article, most workers, while often feeling disengaged, actually want to do meaningful work, but they feel that their supervisors don’t hear or understand this. And it’s not simply a matter of the introduction of technology to the contemporary workplace.
Borrowing from Daniel Kahneman’s ideas about how we think and act, this developer applies them to why we so often underestimate the difficulty and complexity of software development. It’s a very insightful discussion and he makes some good suggestions about how to break the cycle of overconfidence.
http://blog.hut8labs.com/coding-fast-and-slow.html
The incidence of “accidental leadership”, where a person is moved into a management role simply as a result of success in their technical domain, is quite common. In this article, one of those people offers some great advice about how to succeed, starting with the statement: Effective leadership is all about humility.
https://medium.com/on-management/accidental-leadership-1083f5d390cc
In this world of an Internet saturated with graphics and video, who would think that plain old text is still relevant? But, as we’ve seen the growth of Markdown, wikis, and simple presentation engines that use plain text, it’s more relevant than ever. This article gives a nice philosophical perspective on the importance of text. And check out the discussion on Hacker News. And perhaps this is part of the reason for the resurgence of interactive fiction.
http://graydon.livejournal.com/196162.html
As in chess, successful career planning and management in development means that you always need to be thinking at least two moves ahead. This article asks the question about where folks with 10 or more years of development experience are, but doesn’t really answer it. The comments and these discussions on Hacker News and Reddit offer some insight. What do you think? And, more importantly, where do you want to be in 5, 10, or 20 years?
http://ayende.com/blog/168802/career-planning-where-do-old-devs-go-to
According to a new report from New America Foundation, the U.S. continues to lag the rest of the world in both speed and affordability of broadband Internet access. The cite regulation as the main cause, but, as with most such things, the overall picture is more complex.
With all of the attention on the Republican’s regaining control of the US Congress,
this is a story that you probably
missed. But it has the potential to have
longer lasting effects, at least in the technology realm. Pundits expect this result
to push
the FCC to make a ruling
about municipal broadband.
If you like to have quite a few tabs open in your browser, you are probably also familiar with how they can start to use a lot of memory. OneTab helps by converting all of your open tabs into a list that you can use to re-open all of the tabs or one at a time. You can also export your tabs as a list of URLs or generate a web page from the list.
This cool Visual Studio add-in allows you to get code snippets (examples) via Bing Code Search directly inside Visual Studio. Just enter your question/search on a line starting with three slashes (///) and hit <Tab> to see code samples in the Intellisense drop-down list. (You can see live example on the site.)
http://codesnippet.research.microsoft.com/
Valleyball is a bit of a cross between game and simulation. You make predictions about current and future valuations of non-public companies. You can revise your guesses for up to a month, but then it’s locked in.
Who knew that someone could be so passionate about carrots? Anyway, check out this subtle satire of a lot of the marketing landing pages on the Internet these days.
http://www.introducingcarrot.com/
Here’s a fun spoof on what Windows 95 might have looked like had it been released a couple of years earlier. The coolest part is that the whole thing is very well done using only JavaScript and CSS.
Recently, we featured this author’s 10 Tricks to Appear Smart in Meetings. She follows that up with some additional tips on how to win friends and influence people via e-mail.
https://medium.com/conquering-corporate-america/15-tricks-to-appear-smart-in-emails-608f5cf27975
Why would we put a JavaScript framework in this section instead of the Useful Utilities? Well, when you take a look at this library that calls itself “A modern cross-platform JavaScript library & only 18 bytes”, you’ll know why!
Just a little bit of software testing humor… Enjoy!
https://twitter.com/sempf/status/514473420277694465