Up to Newsletter Index

July 2014 Newsletter

 

Quotable Quotes

Three:  1. The optimum number of software engineers that can collaborate on a single project.  2. The number of programmers who will write most of the code in a system developed by a team of 24 engineers, two project managers, three group leaders, a quality lead and an office manager.  –Russ Olsen, Some Important Numbers For Developers

 

Have the courage to use your own understanding! That is the motto of enlightenment.  –Immanuel Kant

 

Mixing one’s wines may be a mistake, but old and new wisdom mix admirably. –Bertolt Brecht

 

I have found that the best way to critique something is to create something better.  –Michelangelo

 

To be able to be satisfied with little is not a failing, it is a blessing—if, at any rate, what you seek is satisfaction. And if you seek something other than satisfaction, I would inquire (with astonishment) into what it is that you find more desirable than satisfaction. What, I would ask, could possibly be worth sacrificing satisfaction in order to obtain?   –William B. Irvine, A Guide to the Good Life: The Ancient Art of Stoic Joy

 

Try not to become a man of success. Rather become a man of value.  –Albert Einstein

 

There is no music in a 'rest' but there’s the making of music in it. And people are always missing that part of the life melody.  –John Ruskin

 

The command line isn't an old technology, it’s just an alternative one that happened to be invented first.  climagic

 

If you want to lift yourself up, lift up someone else.  –Booker T. Washington

 

Do your work, your best work, the work that matters to you. For some people, you can say, "hey, it's not for you." That's okay. If you try to delight the undelightable, you've made yourself miserable for no reason.  Seth Godin

 

Return to top

 

Software Development Process and Methodology

Article:  How Functional is Java 8?

Among the most highly-touted new features of Java 8 are the introduction of some functional programming features, particularly the addition of lambda expressions.  With the many functional languages built on top of the JVM, such as Clojure and Scala, just how functional is Java 8 and does it really matter?  This article looks at some of the relevant points.

http://www.infoq.com/articles/How-Functional-is-Java-8

 

Article:  Manifesto for Async Software Development

As we’ve noted in this newsletter, agile development (just like any other methodology!) is starting to show some of its limitations.  This developer has published a proposal for an evolutionary revision in the style of the Agile Manifesto with an emphasis on collaboration.

http://asyncmanifesto.org/

 

Article:  11 Takeaways from Mary Meeker’s Internet Trends Report

Mary Meeker’s annual report on trends in the Internet realm are the closest thing that we have to a crystal ball.  This year’s report is not a drastic departure from the themes of last year.  In particular, mobile is still the key topic for developers.

http://simplicity.laserfiche.com/content/11-takeaways-mary-meeker%E2%80%99s-internet-trends-report

 

Article:  The Original Sin of Software Metrics

This article claims that measuring the development process with the objective of ‘improving’ it is inherently flawed.  Instead, the author says you should carefully consider what your objectives are and then determine what factors actually reflect that.

http://www.infoq.com/articles/metrics-original-sin

 

Article:  Is Your Organization Ready for Agile?

Just like development projects require some planning and assessing of your capabilities, organizations need to take the same steps when preparing to adopt agile development practices.  This article gives some pointers about not only assessing your readiness at the macro level, but how to measure preparation for some of the key elements of agile practice.

http://blog.sei.cmu.edu/post.cfm/is-your-organization-ready-for-agile

 

Article:  Technical debt 101

Most developers are familiar with the concept of technical debt.  But how do you explain it to line of business management in a way that helps them understand the importance addressing these key architectural aspects of your system?  This article lays out the philosophical arguments to use.

https://medium.com/@joaomilho/festina-lente-e29070811b84

 

Article:  Teaching Relative Estimation by Throwing a Cat

One thing about Scrum that is difficult to learn (and often gets quickly lost by a working team) is what story points actually mean.  The key to story point estimation is that they are supposed to be relative measures of size and complexity.  This author offers an interesting approach to learning the concept.

http://www.scrumalliance.org/community/articles/2014/may/title-teaching-relative-estimation-by-throwing-a-c

 

Article:  Become an exceptional programmer by learning to ship

One of the things that they don’t teach in school is that your application isn’t valuable, no matter how “good” it is, until it’s in the hands of the actual users.  This author explains that shipping your system is the only appropriate measure of success.

http://renderedtext.com/blog/2014/01/30/become-an-exceptional-programmer-by-learning-to-ship/

 

Article:  Twenty Questions for Donald Knuth

If ever there were a godfather of computer programming, it would have to be Don Knuth.  The author of the seminal The Art of Computer Programming texts, his impact in programming is both broad and deep.  Here are his responses to questions posed by some of the other luminaries in the world of programming.  As always with Knuth, they are humorous, self-deprecating, and enlightening.

http://www.informit.com/articles/article.aspx?p=2213858

 

Return to top

 

Software Testing & Quality

Video:  Hunt for Information, Not Bugs

This excellent video, with complete transcript, explores one of the key aspects of good software testing:  Your role is to provide stakeholders with information so that they can make good decisions about the project or application.  In other words, you are in the business of risk-management.  Too often, testers concentrate on finding defects without understand the context of the project.

http://blog.smartbear.com/testing/hunt-for-information-not-bugs/

 

Article:  Thoughts About Software Quality

This is an interesting rumination about what characteristics define and affect the quality (real or perceived!) of applications.  This author says that longevity and number of users are good measures of software quality.

http://www.codingismycraft.com/2014/05/20/what-do-we-mean-by-high-quality-software/

 

Article:  ‘The best bug-free code is no code’

As we are moving toward the “Internet of Things”, such as self-driving vehicles and the like, this author says that we will need to make a fundamental shift in how we develop software to improve reliability and ensure safety.

http://startupjuncture.com/2014/06/19/best-bug-free-code-code/

 

Return to top

 

Tutorials/References

Reference:  Rest API best practices reloaded

Just because public APIs can be copyrighted doesn’t mean that REST APIs are going away.  Even for internal, enterprise projects, especially where mobility is important, these techniques are valuable for reducing coupling.  Here are a few tips on some best practices for building your services.

http://onlysoftware.wordpress.com/2014/05/17/rest-api-best-practices-reloaded/

 

Tutorial:  What Does a Neural Network Actually Do?

Neural networks are gaining popularity in a variety of fields, including artificial intelligence.  But if you don’t have experience with them, they can seem confusing.  This is an excellent introduction with examples and clear explanations.

http://moalquraishi.wordpress.com/2014/05/25/what-does-a-neural-network-actually-do/

 

Tutorial:  The Art of Computer Programming: Random Numbers

Programming and computer science are relatively young disciplines and, accordingly, there are few “classics” among the literature.  However, Knuth’s The Art of Computer Programming is certainly one of the classics.  Here’s an excerpted chapter that deals with algorithms for generating random numbers.

http://www.informit.com/articles/article.aspx?p=2221790

 

Reference:  The real 10 algorithms that dominate our world

Algorithms and data structures are the foundation of almost all programming.  But have you ever stopped to think about which are the most important (or, at least, most widely used)?  Here’s one developers take on the top 10.

https://medium.com/tech-talk/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04

 

Tutorial:  Favoring Curry

Currying is one of the common principles of functional programming.  This tutorial shows how to use the process with JavaScript to simplify code and make it more clear what the intention of the code is.

http://fr.umio.us/favoring-curry/

 

Tutorial:  The Lambda Calculus for Absolute Dummies

One of the underlying theoretical principles of functional programming is lambda calculus.  Many traditional languages are adopting some functional principles, such as the introduction of lambda expressions in Java 8.  This tutorial helps you understand the principles of lambda calculus and how it is applied in functional programming.

http://palmstroem.blogspot.com/2012/05/lambda-calculus-for-absolute-dummies.html

 

Return to top

 

Career Development/Miscellaneous

Article:  2014 Dr. Dobbs Developer Salary Survey

As with most other salary surveys for programmers in 2014, this one, based on input from more than 2200 technology workers, shows developers’ wages steadily edging up.  Some of the greatest gains have occurred for testers and for workers in the Midwest.

http://www.drdobbs.com/architecture-and-design/2014-developer-salary-survey/240168195

 

Article:  You are what you document

Many developers eschew documentation.  Nevertheless, everyone appreciates good documentation on a project, whether it’s formal or informal.  This excellent guide helps you understand the various options available for documentation and their suitability to different situations.  Likewise, the author provides good examples from each category.

http://brikis98.blogspot.com/2014/05/you-are-what-you-document.html

 

Article:  To Make Yourself More Productive, Simplify

According to experts, the single biggest boon to productivity is to make small adjustments to your work processes, such as blocking out time for work, develop routines to avoid procrastination, and prioritization of work.  Check this article for more suggestions.

http://online.wsj.com/articles/to-make-yourself-more-productive-simplify-1403399038

 

Article:  Employees Who Stay In Companies Longer Than Two Years Get Paid 50% Less

With raises barely outpacing inflation in the wake of the “Great Recession”, this author claims that most workers can expect 10%-20% pay increase when switching jobs, which means that over 10 years, those who change jobs every couple of years will make 50% more than those who stay put.  I’m not sure that the logic really pans out, but it is something to think about and should give you some support to ask your boss for a raise if you a loyal, long-time employee.

http://www.forbes.com/sites/cameronkeng/2014/06/22/employees-that-stay-in-companies-longer-than-2-years-get-paid-50-less/

 

Article:  No Time:  How did we get so busy?

In this review of the new book, Overwhelmed, about the counterintuitive fact that, even though we are more productive than ever, we are working more, the author, by referring to Keynes’ famous essay “Economic Possibilities for Our Grandchildren”, suggests that “busy-ness” has taken on high-value social status which drives an arms race of one-upmanship.  Nevertheless, there are those who disagree with the thesis of the book and article.

http://www.newyorker.com/arts/critics/books/2014/05/26/140526crbo_books_kolbert?currentPage=all

 

Article:  Java Tools and Technologies Landscape for 2014

With the fact that demand for Java developers remains high, it’s important to stay abreast of the technologies and tools in the Java eco-system.  This excellent survey of over 2500 developers shows the tools that are popular and up-and-coming.

http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014/

 

Article:  Taking a Vacation May Actually Save Your Career

Need a reason to take a vacation?  Maybe taking a vacation actually has a net positive impact on the economy, at least, according to this article.  Research shows that vacations actually improve productivity and the longer the vacation the greater the impact.

http://www.newrepublic.com/article/118285/workaholism-america-hurting-economy

 

Article:  Building Alliances at Work – Getting Help Before You Need It

Just like with governments, you need to work on developing relationships with your co-workers during the good times, so that when you need help, they’ll be there for you.  This excellent article offers practical tips for how to forge those bonds.

http://quickbase.intuit.com/blog/2014/05/23/building-alliances-at-work-getting-help-before-you-need-it/

 

Article:  The Brains of Successful vs. Unsuccessful People Actually Look Very Different

No one sets out to fail (or be a failure).  So why are some people successful and others not?  This interesting article claims that it comes down to a fundamental difference in mindset: the “fixed” mindset that says our intelligence and motivation are static and the “growth” mindset that says we can change and improve.

http://www.policymic.com/articles/89579/science-shows-the-difference-between-successful-and-unsuccessful-people-s-brains

 

Return to top

 

Telecommunications/Networking Industry

Article:  Level3 is without peer, now what to do?

Bob Cringely, in his own inimitable way, takes a number of major US ISPs to task for failing to augment network capacity where they interconnect (so-called “peering points”) with IP backbone providers, such as Level 3.  I imagine that this won’t be the last word on this matter.  (Disclosure:  I’m a Level 3 employee and shareholder.)

http://www.cringely.com/2014/05/06/14890/

 

Return to top

 

Useful Utilities

Babun (Free – Windows XP/2003/Vista/2008/7/8.x – 230MB)

While it’s certainly not small, weighing in at over 200MB, Babun is an excellent productivity tool for Windows developers who prefer working in a Unix/Linux-like shell.  Babun (pronounced like “baboon”) is a customized, stand-alone version of Cygwin with a plethora of great add-ons for productivity and ease of use, including Git, oh-my-zsh, a great package manager, and auto-update.

http://babun.github.io/

 

Nodeclipse (Free – Cross-platform/Eclipse – 36MB)

Server-side JavaScript application development using Node.js continues to grow.  If you are looking for a good IDE (and, especially, if you already use Eclipse), you’ll want to check out Nodeclipse.  It adds comprehensive Node.js support to the Eclipse platform, including syntax highlighting and code completion for JavaScript and JSON files, native integrated JavaScript debugging, a variety of plugins, and more.

http://www.nodeclipse.org/

 

Qonsole (Free – Windows XP/2003/Vista/2008/7/8.x – 409kB)

Qonsole is a tiny utility that provides a console (Command Prompt or terminal, if you prefer!) on Windows similar to the one made famous by Quake.  It allows you to quickly summon and hide the console with a simple hotkey combination (Window + C, by default).  It can use the regular Windows cmd.exe shell, Console2, or MinTTY.

http://sourceforge.net/projects/qonsole-ahk/

 

Portable Virtualbox (Free – Windows XP/2003/Vista/2008/7/8.x – 1.4MB)

Virtualbox is one of the greatest tools, especially for testers and developers.  But, have you ever wanted to have a portable version, so that you could run a virtualized OS on any system?  That’s exactly what Portable Virtualbox does!  And it even includes full support networking on both 32-bit and 64-bit Windows host systems.

http://www.vbox.me/

 

Return to top

 

Productivity Tips

Allocate more RAM to Google Chrome to improve performance

If you use the Google Chrome browser (or one of it’srespins) and you have a lot memory (probably 8GB or more) on your system, you can allocate additional RAM to Chrome to improve performance in tasks such as switch tabs, scrolling long pages, etc.  Just open Chrome and put chrome://flags/#max-tiles-for-interest-area in the address bar and change the value for max-tiles-for-interest-area to 512.  Then click Relaunch Now to restart Chrome.  This allocates 512MB of RAM to the main Chrome process.

 

Return to top

 

Just For Fun

Signs from the Near Future

With the pace of technological change, some things that we can only dream of today might not be that far away, such as ads on your refrigerator or thermostat.  This site features some excellent images with signs and notices that may not be too farfetched.

http://signsfromthenearfuture.tumblr.com/

 

Ghent University Vocabulary Test

OK…  So maybe taking a test isn’t your idea of fun…  But this is fun and helps linguistics researchers to understand how our language evolves.  Plus, you might learn about words that, typically, only men or women know.

http://vocabulary.ugent.be/

 

If Carpenters Were Hired Like Programmers

I’ve often thought that some of the things that we concentrate on when interview development position candidates were inane.  This is a nice comparison that certainly rings true in many ways.

http://www.jasonbock.net/jb/News/Item/7c334037d1a9437d9fa6506e2f35eaac

 

John von Neumann, EDVAC, and the IAS machine

This article is a little more technical than usual for this section of the newsletter, but I find technology history fascinating.  This article tells the story of how von Neumann came up with his architecture for computers and how it was exploited and improved upon over time.

http://www.linuxvoice.com/john-von-neumann/

 

Return to top