August 2014 Newsletter
Our greatest fear should not be of failure but of succeeding at things in life that don't really matter. –Francis Chan
The difference between successful people and very successful people is that very successful people say “no” to almost everything. –Warren Buffett
Remember that there is no happiness in having or in getting, but only in giving. Reach out. Share. Smile. Hug. Happiness is a perfume you cannot pour on others without getting a few drops on yourself. –Og Mandino
The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information. –Alan Perlis
If you are immune to boredom, there is literally nothing you cannot accomplish. –David Foster Wallace
Perseverance is more prevailing than violence; and many things which cannot be overcome when they are together, yield themselves up when taken little by little. –Plutarch
How does a project get to be a year behind schedule? One day at a time. –Fred Brooks
Communication builds trust. Trust generates commitment. Commitment fosters teamwork. Teamwork delivers results. –Jon Gordon
Most work in the modern workplace is project-based. And, accordingly, we frequently work with
project managers. This article helps the
technical worker (usually left-brained!) work effectively with their PMs, by
better understanding the priorities and motivations that a PM has.
https://medium.com/the-year-of-the-looking-glass/how-to-work-with-pms-3e852d5eccf5
This summary looks at ways that some organizations are introducing agile
practices beyond the typical management-directed approach. The interesting insight in these “insurgent”
approaches is that they focus on “small A agile” and
doing the things that work to improve productivity.
http://www.infoq.com/news/2014/07/alternative-approaches-agile
Don’t skip this article just because you aren’t a Haskell programmer or a functional
programming wonk. The title might
better be “Letter to a Fledgling Programming Language ‘X’
Enthusiast”, because it applies to most any language and programmer. While most personal philosophy, it gives some
excellent advice about how to be both a good learner at your new language and a
good “citizen” in the language community at large.
http://comonad.com/reader/2014/letter-to-a-young-haskell-enthusiast/
This editorial eloquently expresses the oft-stated complaint of many
developers that they must spend so much time on process matters, project
overhead, and other administrivia that actually
finding time to write code becomes difficult.
In the sequel, the author recommends that, instead of being distracted
by the new and flashy tools, developers use familiar and (typically) single-purpose
(think “Unix philosophy”) applications.
http://www.drdobbs.com/tools/just-let-me-code/240168735
http://www.drdobbs.com/architecture-and-design/getting-back-to-coding/240168771
If you could offer some nuggets of wisdom to other developers, what would
you include? You could certainly do
worse than these ten simple, yet insightful, tips for doing your best
development work.
Management wants you to go faster with your development, but you want to
ensure that your good has good quality.
The bottom line in both cases is value:
What does the customer get for the effort? This article looks at how speed and quality
can go together.
https://medium.com/@mhamrah/on-the-balance-of-speed-and-quality-5a0ebbd25bef
One of the items that is often difficult for those starting with Scrum is
the concept of “story points”. This
article explains not only how to use them, but the motivation behind the
(seemingly artificial) concept.
http://www.sitepoint.com/whats-point-agile-points/
Most of us know that preventing defects has a much lower cost than fixing them. While this sounds a bit too much like “Big Brother” for my tastes, it’s nevertheless an interesting approach to trying to stop bugs before they make it into code by monitoring a developer’s eye movements, physical and mental characteristics as they code to measure alertness and stress levels to indicate a higher probability of code errors.
This article sounds the call for software testers to come together to advance the state of the art in testing by sharing ideas. The author suggests that software testing has stagnated because of lack of innovation and original thinking by testers.
http://www.softwaretestinghelp.com/why-software-testing-needs-revolution/
After six years and $300 million, the US Social Security Administration (SSA) has abandoned plans to implement a system designed to replace 50+ disparate systems for disability eligibility assessment. Among the cited problems are use of contractors without web-based development experience and lack of a strong project champion.
http://fcw.com/articles/2014/07/24/it-flop-at-ssa.aspx
A new report from the GAO says that technology was not the fundamental problem with the HealthCare.gov web site implementation, costing taxpayers $840 million. Instead poor management and oversight were the main culprits. This supports the common knowledge in IT circles that technology is usually not the problem with failed projects.
http://www.cnbc.com/id/101880253
Keeping track of all of the elements and tags in HTML can make your head spin. This nice, simple site gives a comprehensive list of the tags and explanations of each, including any attributes for each tag. In addition, it has a handy reference of which versions of HTML are valid for each tag.
User interface (UI/UX) design often gets short shrift when it comes to application development. However, you don’t have to be an expert graphic designer to be create good interfaces if you follow these five practical tips for the “average” user.
https://medium.com/@TGines/designing-user-interfaces-for-your-mother-dd45ec50f7b0
Markov chains are a powerful tool in modeling systems, but if you aren’t familiar with them, they can be a bit difficult to conceptualize at first. This excellent, brief tutorial uses some great visualizations to help you get the basic ideas.
http://setosa.io/blog/2014/07/26/markov-chains/index.html
With the plethora of Git tutorials out there, you might ask why we’d want to suggest another one. However, this is a really good introductory version control tutorial aimed at non-developers (but certainly relevant to them!). The author presents each topic with a relevant example and explanation.
http://smutch.github.io/VersionControlTutorial/
One of the most important aspects of career management is keeping track of trends in your industry. This interactive chart allows you to compare the popularity of various programming languages based on a variety of different factors, including number of jobs, open jobs, search trends, and more. You can even compare between ranking factors and adjust the weightings of the factors.
http://spectrum.ieee.org/static/interactive-the-top-programming-languages
A neuroscientist who has studied creativity for many years shares her insights into what is behind people with substantial creativity, and why it is so often paired with debilitating mental illness.
http://www.theatlantic.com/features/archive/2014/06/secrets-of-the-creative-brain/372299/
Most of us have probably worked in a dysfunctional organization at some point in our career. And, typically, we want to do what we can to fix those problems. The first step to fixing problems is to understand the underlying cause. This book excerpt claims that the main reasons for dysfunction are misunderstood mission, lack of consensus on the nature of problems facing the team, misunderstood strategy, lack of team cohesion, or lack of resources, and then it explains each one and what approaches you can use to address them.
http://www.informit.com/articles/article.aspx?p=2168986
Wall Street Journal technology columnist Christopher Mims says that, to ensure we have enough programmers, we need to treat programming as a trade and develop apprenticeship programs to train young people for programming careers. Moreover, he indicates that programming education needs to focus more on the needs of business, instead of the typical theoretical curriculum of today.
At one time or another, you are bound to have to give a presentation using Power Point (or similar tool). This great slide show says that the four keys to creating a great presentation are significance, structure, simplicity, and rehearsal. Check it out before your next presentation.
http://www.slideshare.net/kasidyray/death-by-powerpoint-redesigned
Like it or not, most of us of work in open-plan offices. So how can you develop your own personal haven in the wide open spaces? This article offers three practical tips for habits that can make even the loudest office a productive one.
http://www.makeuseof.com/tag/stressed-work-relax-focus-open-office/
In almost any job, but certainly in technical roles, asking effective questions is one of the key skills for success. Frequently, our jobs require us to get clarification or additional details so that we implement the right solution. This excellent article provides tips and examples for asking good questions in a variety of scenarios.
http://joshkaufman.net/how-to-ask-useful-questions/
Many customers have waited to upgrade their Internet service to higher speeds, because they don’t have a specific need. According to this article, even if you don’t have a specific application in mind, the improved speed itself provides benefits, especially when you consider a VPN or VLAN for distributed organizations.
http://gigaom.com/2014/05/31/the-killer-gigabit-app-its-not-what-you-think/
This article reviews some of the more significant network, both public and private, failures over the past few years with an eye toward how to improve network reliability. The main takeaway provided by the authors is that networks can be very reliable, but it is often cost-prohibitive to make them so.
http://queue.acm.org/detail.cfm?id=2655736
If you use bash (or zsh), and even Windows users who use Git do, then you probably would appreciate a productivity boost when navigating between directories. This little shell script adds a number of intuitive enhancements for quickly moving between directories, using the bash history, mounting file systems, and more. And it comes with a nice set of configuration scripts so that you can customize the behavior to fit your needs.
https://github.com/spencertipping/cd
While there are plenty of great Python IDEs out there, for beginning Python programmers, they can be overwhelming requiring you to spend as much time figuring out the IDE as you do learning the language. WingIDE 101 is a minimal Python IDE that helps you be productive without getting in your way. It includes features such as white-space highlighting; Emacs, Vi/Vim, and even Visual Studio key bindings; integrated debugger support, including for web development; syntax highlighting for Django framework; and an integrated Python shell with auto-completion.
http://wingware.com/pub/wingide-101/
Almost everyone deals with CSV (comma-separated value) files from time to time. And wrangling them isn’t always the easiest, even with standard tools like Excel or your favorite text editor. CSVfix provides a variety of functions to help you clean up and manage your CSV files, including reorder, remove, split and merge fields; convert case, trim leading & trailing spaces; search for specific content using regular expressions; filter out duplicate data; and much more.
http://neilb.bitbucket.org/csvfix/
If you need to do any SSL key management of your Java applications, you are probably familiar with the arcane command line options for the built-in JDK tools like keytool and jarsigner. Keystore Explorer provides a comfortable GUI for managing key stores and digitally signing your Java applications.
http://keystore-explorer.sourceforge.net/
Are you a Firefox user who often opens new tabs from links? Each tab you open consumes additional memory, but with this extension it will open the link in a new tab, but not load the page until you activate that tab (similar to what happens when you restore a session in Firefox). Really handy since you usually don’t need the page loaded until you look at it.
https://addons.mozilla.org/en-US/firefox/addon/open-link-in-silent-tab/
Gonsole adds a handy interactive Git shell to Eclipse (version 3.7 or later) which allows you to run Git commands and see the results, just as if you were to run them in a separate shell/command prompt window. Gonsole uses JGit, so you don’t even need to have the Git client installed to use it. It even includes standard Eclipse <Ctrl>+<Space> code completion support and Git command history.
http://rherrmann.github.io/gonsole/
If you use the Google Chrome browser (or one of it’s “respins”) 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 to “512”. Then click Relaunch Now to restart Chrome. This allocates 512MB of RAM to the main Chrome process.
Most of you probably already knew this, but it was news to me… If you want to save the size and position of an application window for the future, simply hold down the <Ctrl> key while clicking on the “X” button to close the window. The next time you start the application, the window will open with same position and size!
When you do ‘View Source’ on a page in Firefox, it opens the page source in a separate pop-up window. One of the problems with the pop-up window is that it makes navigation difficult. If you want to view page source in the main browser window, just put ‘view-source:’ (sans quotes) in front of the URL! Or, better yet, you can create a simple ‘View Source’ bookmarklet on the BookMarks Toolbar: javascript:document.location='view-source:'+encodeURIComponent(location.href).
Just remember that work (and most of life, for that matter!) is about perception. So if you want to make yourself look good in front of your colleagues and (especially!) your boss, make sure to use some of these tips in your next meeting.
https://medium.com/@sarahcpr/10-tricks-to-appear-smart-during-meetings-27b489a39d1a
Struggling with deciding which programming language to learn next? Fret no longer! Check out the new ‘No’ language, which the author describes as “an advanced, purely-functionless programming language”. Best of all, you won’t have to worry about bugs or testing!
http://wildlyinaccurate.github.io/nolang/
When you arbitrarily create another UUID in your application, are you considering the long-term consequences of it? You might want to read up on responsibly dealing with UUIDs.
http://d315f714-26fh-4346-96a8-11a864cdfcb5.com/
Want to take a trip down memory lane? One this site, you choose a year and it gives you links to dozens of videos from a variety of sources for songs from that year. Now, if I could just get the “Ghostbusters” theme out of my head!
http://thenostalgiamachine.com/