Up to Newsletter Index

November 2012 Newsletter


Quotable Quotes


The existence of forgetting has never been proved: we only know that some things do not come to our mind when we want them to.  –Friedrich Nietzsche


Measuring programming progress by lines of code is like measuring aircraft building progress by weight.  –Bill Gates


Nothing is so contagious as an example.  We never do great good or evil without inciting more of the same in others.  –Francois de La Rochefoucauld


Return to top


Software Development Process and Methodology

Article:  Functional programming: A step backward

This author argues that most of the emphasis on functional programming being cleaner misses a key point:  Functional programming can better support the coming revolution in concurrent/parallel programming, because application state is inherently eliminated.



Article:  20 controversial programming opinions

This article collects almost two dozen beliefs about software development that frequently raise the hackles of others.  You are certain to find some (maybe many) you agree with and others that you'll grind your teeth over.  Nevertheless, they are useful fodder for developing your own personal philosophy of best practices so that you can work toward improvement.



Article:  Moving Beyond Scrum

As we've noted before, as agile techniques become mainstream and mature, some of their warts start to show.  This article provides a summary of some of the lessons learned from agile and offers some suggestions for the "post-Scrum" world.



Article:  There Are Only Two Roles of Code

If you want to write better (and simpler!) code (and, hopefully, everyone does), you would do well to take this article to heart.  The author says that code only has two roles:  to do something (the algorithms) and to coordinate the work of the pieces that do something (the "glue" code).  When you understand (and apply!) this concept, it is very helpful in properly arranging and organizing your code.



Article:  I Don't Care About "Agile"

This article makes the excellent point that the goals of agile (or lean or whatever!) methodologies aren't to follow the steps, but to improve your organization.  Specifically, the author says that core concepts are to move organizations from controlling to learning and emphasize people over process.



Article:  In Mobile World, Tech Giants Scramble to Get Up to Speed

Most people are aware the mobile is the new target for applications (in fact, many organizations eschew traditional applications and go for mobile first).  This article discusses how large tech companies are struggling making the transition to mobile and how this is an opportunity for mobile-focused startups.



Article:  Gartner: Top 10 Strategic Technology Trends For 2013

At their annual symposium, Gartner outlined their anticipated top trends for 2013.  Very similar to their predictions for last year and 2011, the main themes are cloud computing, mobile technology, and "big data".



Article:  Big Data Hype (and Reality)

This article explores the real state of "big data" by business and tries to separate some of the hype (myths?) from the facts.  The basic premise of the article is that while big data is increasing in value and importance, it still hasn't reached the point of easily measuring or identifying that value.



Article:  The less the code, the better

Borrowing from T.S. Eliot's (or was it Pascal?!) well-known quote "If I had more time, I would have written a shorter letter," this author emphasizes that taking your time, especially in designing your implementation (TDD anyone?) makes your application intrinsically better, not to mention easier to maintain and scale.



Return to top


Software Testing & Quality

Article:  Penetration Testing – Complete Guide with Sample Test Cases

With the many recent high-profile security breaches, security testing is coming to the forefront of priority.  This excellent overview gives you the background along with dozens of actual tests that you should run.  The list of tests is also good reading for developers wanting to write secure applications.



Article:  4 Reasons Why Bugs Are Good For You

Who would ever believe that someone would say that defects are good?  This author makes some good points about how bugs are opportunities to better understand our code and applications and improve them.



Article:  5 Questions to Cut Through to Software Testing Problems

At one time or another, you will probably be involved in a development project that seems to get “stuck” in testing.  Here are some salient questions to determine the underlying reason for problems, which usually aren’t testing issues per se.



Return to top



Reference:  A quick overview of JavaScript

If you don't use JavaScript on a daily basis, it's easy for the syntax to get muddled (for me, at least!).  This brief reference covers nearly all of the JavaScript concepts and constructs and provides a quick way to get back on track.



Tutorial:  cucu: A Compiler You Can Understand

Have you ever wanted to write your own compiler?  OK, well maybe not.  But understanding how compilers work is useful when trying to optimize your own code written in a high-level language.  This 3-part tutorial takes you step-by-step through creating a simple compiler based on a subset of the C language.



Tutorial:  Understanding matrices intuitively

Linear algebra is one of the most practical divisions (pun intended!) of math, especially for programmers, and is key to game programming.  But the typical explanations of the subject are dry and often lack relevance.  This one is different:  It's both mathematically sound and understandable.




Reference:  Programmer Competency Matrix

While certainly no list can be "one-size-fits-all" when assessing programming skill, this chart provides a broad, comprehensive treatment of the various skills and the level of maturity of each.  It includes a 4-level (0-3) structure, similar to those of organizational Capability Maturity Model.



Tutorial:  Five Myths about Hash Tables

Hash tables are one of the ubiquitous data structures for modern programming.  However, sometimes they are derided as inefficient and poorly performing.  This article challenges some of the common myths about them.



Reference:  Software Architecture cheat sheet

The actual job of software architect seems to be diminishing.  But it's not because software architecture is not important, rather because architect is becoming a role for everyone involved in the development process.  Accordingly, this list of 10 basic architecture principles is a great reference for all developers.



Return to top


Career Development/Miscellaneous

Article:  Math Nerds vs. Code Monkeys: Should Computer Science Classes Be More Practical?

This is one of those on-going debates that you probably believe nothing new or interesting can be added to.  Nevertheless, this essay gives some interesting perspectives on striking a balance between theory and practice when it comes to programmer education.



Article:  Developer's Creed

Taking the letters of the word DEVELOPER, this programmer provides a succinct, yet powerful and relevant creed for professionals in the web design and programming domains.



Article:  Grandpa the programmer

One of the memes currently making the rounds on the Internet is the idea that by the time we've reached a certain age, we should be beyond actually writing code.  A lot of the discussion (more here and here) stems from this article by James Hague.  Pundit Steven J. Vaugh-Nichols provides a passionate and well-reasoned rebuttal.



Article:  Mmm, what's that smell: Coffee or sweat? How to avoid a crap IT job

When looking for a new job, you are interviewing the potential employer as much as they are you.  This succinct article gives some good pointers for how to assess the fit of a potential employer from some of the unspoken indicators in an interview.



Article:  Hot IT jobs: Why location matters

Just like with real estate, when it comes to developer salaries, only three things matter:  location, location, location.  However, as this article explains, using the latest IT salary data from Robert Half, salary is not an absolute and when cost of living is factored in, the big cities may not have the brightest lights.



Infographic:  How Much Developers Make Per City

This chart compares hourly development rates between New York, Los Angeles, Seattle, and San Francisco.  Probably the most interesting (and startling!) tidbit is that based on hourly rate alone, the average annual salary is $209K.  Presumably, the difference between reality is explained by the fact that freelancers don't work (at least not billable time!) 40 hours a week throughout the entire year.



Article:  IT jobs on the other side of the cloud

As more and more applications move to a cloud-based (or hosted) model, some IT folks might consider making a jump to one of those providers.  This article discusses what to expect if you are considering this option.



Article:  Mind Management (Not Time Management)

Most of us have read more articles and books about time management than you can shake a stick at.  This person offers an obvious, but typically overlooked, aspect of productivity that most improvements have more to do with willpower, self-control and focus than with organizing your time better.



Article:  In the UK we have 1 manager for every 2 workers in IT

This interesting analysis shows that roughly 1/3 of the UK workers in IT (which includes telecom) are managers.



Article:  Marc Andreessen’s Productivity Trick to Feeling Marvelously Efficient

Netscape founder Marc Andreessen uses a counterintuitive productivity principle that he calls the Anti-Todo List.  Instead of making a list of things you need to do, he writes down each thing (even the small ones!) that he does.  He believes that this provides positive reinforcement for accomplishing things that keeps him going.



Return to top


Telecommunications/Networking Industry

Article:  Internet traffic exchange: 2 billion users and it’s done on a handshake

Did you know that one of the linchpins of the Internet, known as peering arrangements between various carriers, is mostly unregulated and handled without contracts?



Return to top


Useful Utilities

HandsFread (Free – Cross-platform/Browser bookmarklet – N/A)

This simply, but handy browser bookmarklet automatically scrolls the displayed web page at a user-defined rate, so that you easily read without having to click the mouse to scroll.



Cloudfogger (Free – Windows XP/2003/Vista/2008/7 – 9.6MB)

If you use Dropbox, Box.net, Skydrive, or really any online storage system, including FTP, Cloudfogger provides simple client-side encryption of your files before they are uploaded to the cloud.  Cloudfogger's simplicity is in that it creates a "virtual" drive that acts as a front end (proxy) for your online storage server, which encrypts the file and then uploads it to the storage server.



Codestre.am (Free – Linux/Unix/Online tool – N/A)

Codestre.am is a free Node.js-based tool that allows you to live stream and/or record a video (i.e., one that can be posted to Youtube or similar) of your Linux/Unix terminal session.  It's perfect for demonstrating how to use a shell tool or to give a tutorial on any text-mode application or process.



Return to top


Just For Fun

Animated Factorization Diagrams

While all that this site does is increment the natural numbers and show their factorizations, it does so in a remarkably beautiful and minimalistic way.  You could easily waste a lot of time on this site.  Or learn more about it here.



Return to top