Serendipity is the process through which we discover unknown unknowns. Understanding it as an emergent property of social networks, instead of sheer luck, enables us to treat it as a viable strategy for organizing people and sharing ideas, rather than writing it off as magic. And that, in turn, has potentially huge ramifications for everything from how we work to how we learn to where we live by leading to a shift away from efficiency — doing the same thing over and over, only a little bit better — toward novelty and discovery. –Greg Lindsay, The Aspen Institute
Only those who have the patience to do simple things perfectly will acquire the skill to do difficult things easily. –Friedrich Schiller
Thus it is that no cruelty whatsoever passes by without impact. Thus it is that we always pay dearly for chasing after what is cheap. –Aleksandr Solzhenitsyn, The Gulag Archipelago 1918-1956
The curious task of economics is to demonstrate to men how little they understand about what they imagine they can design. –F.A. Hayek, The Fatal Conceit
By the toil of others we are led into the presence of things which have been brought from darkness into life. –Seneca
With that in mind, we have to realize that frameworks are not tools. Frameworks are machines. Each one has the code equivalent of interrelated interdependent moving parts. Frameworks are fascinating for the same reasons that machines are fascinating. –Paul M. Jones
… it really gets to the heart of what management is. Management isn’t about accruing power, it’s not additive in that way. Management is about letting go of your old power (the power to write great code or design an awesome feature yourself) and putting that into the hands of your team. –Cap Watkins, Management & Power
A lot of developer mind share these days is devoted to microservices. And just as any technology or methodology, microservices are good when applied correctly and appropriately. In this interview, pundit Fred George (not the Weasley brothers!) discusses how to make microservices as small as possible/reasonable and more.
http://www.infoq.com/news/2015/07/microservices-programming-style
Most of us are familiar with psychological “flow” and ability to substantially improve your productivity when you are in that state. But what about applying the concept to your entire team? This article considers what it takes for a team to achieve flow collectively.
http://blog.hypesystem.dk/group-flow-in-software-development
With almost all of the focus in the past dozen years on agile methodologies, you might think that waterfall development processes are long gone. But you’d be wrong. As we try to emphasize in this newsletter, you should use a methodology that works in your organization and fits its unique culture. This article discusses the waterfall concepts and briefly compares it to agile.
http://blog.standupti.me/post/127220134289/waterfall-software-development-isnt-dead
Sometimes these sorts of articles are a lot of fluff, but this one delivers some relevant and practical advice to help you move your application from idea to implementation. I especially appreciated the author’s emphasis that you should avoid using the latest new thing and focus on your experience and what works for you.
As microservices continue to gain attention and mindshare, it is likely that you’ll at least be experimenting with, if not actually using, them in the near future. This article explains some of the pitfalls that you may encounter, so that you watch out for them if you are an early adopter.
http://www.infoq.com/articles/seven-uservices-antipatterns
Agile development and scrum, in particular, even with all of their problems and pitfalls, are still good principles to apply to improve development and customer satisfaction. Here are a few ideas from an experienced scrum master that can help you most effectively introduce agile techniques.
https://www.madetech.com/news/lessons-from-the-trenches
At one time or another, you’ve certainly been told to look at the big picture when working on a development project. This extensive blog post goes way beyond that to provide a systems thinking approach to avoid some of the common pitfalls in programming. While this article is long, it’s highly recommended to read it at least a couple of times to tease out as much as you can.
Turing Award winner Michael Stonebraker says that the relational database (RDBMS), which he helped popularize 40 years ago, is obsolete because they are disk-based solutions and with cheap main memory (RAM), in-memory technologies are much better suited to today’s needs. He goes on to talk about how NoSQL and other technologies solve some of these problems, such as replacing spreadsheets.
This developer of Java application profiling tools presents their findings about Java versions used in practice. Notably, among their users, this is the first year that no Java 5 versions have been in use. Java 6 and Java 8 both make up about 20% of usage and the remaining 60% belongs to Java 7. So, Java 7 still dominates the landscape and, according to historical trends, probably will for a couple more years, especially with Java 9 not expected until fall 2016.
https://plumbr.eu/blog/java/java-version-statistics-2015-edition
Which programming languages do you think fare best with respect to having the fewest defects in applications? This interesting analysis of open-source projects on Github compares how popular languages, including Java, PHP, Python, Ruby, Go, Scala, and JavaScript, rate in terms of handling common defects.
http://deliberate-software.com/programming-language-safety-algorithm/
http://deliberate-software.com/safety-rank-part-2/
Coders at Work is a classic on the craft of software development. This article highlights some of the salient passages from the book about debugging, testing, and using assertions.
http://scraps.benkuhn.net/2015/08/08/caw-errors.html
The Economist profiles how some of the biggest companies in the world use bug bounties and other incentives to encourage freelancers to strengthen their web applications. Emily Stark even parlayed her bug hunting into a full-time job at Google.
I still (after 20+ years!) believe that a good test plan is the cornerstone of every good testing effort. The test plan really establishes the approach and scope of the testing effort and, accordingly, defines the way that all of the other activities in the testing project will be done. This comprehensive article goes through all of the aspects of the test plan and provides suggestions about what to include and what to leave out.
http://www.conductor.com/nightlight/anatomy-of-a-test-plan/
Here’s a discussion of an interesting bug in the Spotify music service that only occurred after the affected code was executed 100 trillion times over nearly 2 years. Gives you a good idea that even if you think executing code a large number times, there still may be latent problems.
https://labs.spotify.com/2015/08/27/underflow-bug/
Of all of the testing efforts that you may encounter, perhaps none is more challenging than testing a distributed system. Distributed systems have so many more factors to consider than “regular” applications. This comprehensive article introduces you to these components and describes an effective approach for such testing.
http://queue.acm.org/detail.cfm?id=2800697
The Domain Name System (DNS) is one of the key elements of the modern Internet. Essentially, it’s the piece that resolves the hostname (e.g., ‘www.google.com’) into the IP address your browser should connect to. But how it works under the covers is much more complex (and fascinating). This cute web comic explains all of the details in easy to understand language.
Using Bitcoin as the canonical implementation, this detailed, 5-part tutorial series explains the philosophy and concepts of the blockchain technology. It goes into great detail on how transactions are performed and managed and how the system ensures that records cannot be removed or changed. Likewise, it presents ideas about how to use the blockchain beyond just for digital currency.
http://blockstrap.com/en/a-complete-beginners-guide-to-blockchain-technology/
Technical interviews often strike fear in the hearts of even the most experienced developers. If you are just getting back into looking for a new development position, check out this excellent, comprehensive list of typical topics in data structures, algorithms, and more. The list is language-independent and rather than trying to answer each item, the author gives you an outline of the salient points, which can use to help ferret out more information on the Internet.
https://gist.github.com/TSiege/cbb0507082bb18ff7e4b
I’ve never used Shazam, but my kids use it a lot when we are in the car listening to the radio. In any case, it’s quite amazing that just a few notes of a song are enough to identify it. This tutorial examines the details of audio fingerprinting and how Shazam uses it.
http://coding-geek.com/how-shazam-works/
If you use the amazing Vagrant tool for building test and development environment, you are probably familiar with cobbling together shell scripts for provisioning or trying to build Puppet manifests. This brief article gives a great tip of building an inline Puppet manifest that you put right into your Vagrantfile, so that you get the benefits of a Puppet configuration with the simplicity of a shell script. Really a great option for setting up environments on the fly.
http://anthonysterling.com/posts/inline-puppet-manifest-with-vagrant.html
This interview (both video and transcript) with Johnanna Rothman, who is one of the leaders in software project management practice, discusses her perspectives on the importance of hiring developers who fit into the organization culture. She says that in many cases cultural fit is more important than sheer technical skill.
http://blog.fogcreek.com/technical-hiring-and-cultural-fit-interview-with-johanna-rothman/
Whether you are just starting out in your career or a seasoned veteran, everyone can use a little guidance now and then. These ten tips are practical regardless of the type of technology work that you do. And they can give you some good perspective on the career as a whole.
http://www.techrepublic.com/blog/10-things/10-of-the-best-pieces-of-it-advice-i-ever-heard/
Each person (and organization) adapts to disruptive or transformative changes in different ways. This article looks at how the pace of change has sometimes made it difficult to assess the value, validity, and viability, especially in the long run, of ideas. The author uses the example of using a test of an idea by leaving it overnight and then reconsidering it the next day. However, now, he says that it’s difficult to even spend a little time to evaluate ideas before you must move on to something else.
http://www.lindsredding.com/2012/03/11/a-overdue-lesson-in-perspective/
With the economy starting to perk up and unemployment down, as a long-time employee, you may start looking at whether your salary is up to par. This programmer gives a detailed plan for preparing your case and asking for a raise.
http://www.mgadams.com/2015/06/30/the-software-engineers-guide-to-negotiating-a-raise/
Most of us are thankful to have work in a growing profession with generally good pay and benefits. But a recent blog post by web designer Jeremy Kratz about discussing burn out as taboo seems to have struck a nerve in the development community. Do you think burn out is widespread? Is it swept under the rug instead of addressed openly?
http://jaxenter.com/burnout-amongst-developers-an-industry-disease-118357.html
Computerworld delivers their annual survey of the top employers for IT workers, based on reader feedback, including 16 companies on the list for the first time. The report is structured by small, medium, and large organizations and includes a variety of analytical tools, including maps.
http://www.computerworld.com/category/bestplaces2015/
The title of this article masks its subject, but it offers some interesting perspective on the technology hiring culture and some of the seemingly meaningless interviewing techniques like “whiteboard coding”. The author says that this gauntlet often seems less about finding a qualified candidate and more about current employees demonstrating superiority. What do you think we should change about this climate?
http://www.jasq.org/just-another-scala-quant/inverting-binary-trees-considered-harmful
The small city of Sandy, OR has run their own municipal broadband system for over 10 years and all without any taxpayer funding. And the service is generally cheaper than franchised broadband providers almost anywhere in the US.
Long-time technology pundit Esther Schindler gives a very thoughtful (and thought-provoking!) re-cap of the spectrum of perspectives at this year’s Defcon amid the consolidation among not only carriers, but also tightening down by policymakers.
http://www.druva.com/blog/at-opposite-ends-of-the-internet-consolidation-tightrope/
This little gem, which weighs in at less than 140 characters, may seem like a novelty in some ways, but it’s a really practical little tool. Just put it on your browser bookmark bar and it allows you to toggle the CSS styling on a page off and on. Great for when you need to copy some text from the page.
https://github.com/Hurtak/toggle-css-bookmarklet
This amazing little Node.JS-based utility allows you to redirect the output of your shell to a web browser. You can use it for log monitoring, sending notifications, etc. Even better, you can allow multiple users to redirect output to the same server and even specify a unique name for each stream. The output can be filtered using regex and supports highlighting.
I’m always on the lookout for a distinctive, well-designed monospaced font for use in text editors and IDEs. This new font really fits the bill. It’s easy to read, even at small point sizes and has good differentiation of easily confused characters. And it’s available as TrueType and OTF for desktop and as web font via CDN.
http://sourcefoundry.org/hack/
You might be thinking, “Do we really need another RSS aggregator?” But give this one a chance. It’s a tiny tool (<350 lines of Python code) that provides a minimal, appealing feed summary at the command prompt on any platform. It features filtering and even supports Twitter feeds, as well as RSS. And like Sam-I-Am said about things you’ve never tried, “Try them, try them, and you may!”
https://github.com/p-e-w/krill
This simple JavaScript library provides a way to generate random examples of any regular expression that you provide. It’s simple to use and a great tool for generating test data for your web applications.
http://fent.github.io/randexp.js/
I’ve never really thought about this before, but it’s an interesting question: How long until Google lives up to its namesake number? I won’t spoil the surprise here, but suffice it to say that it’s a lot longer than you probably think.
http://elumynt.com/when-will-google-index-a-googol-web-pages/
In my view, Blade Runner is still one of the best sci-fi films of all time, even though it’s over 30 years old. As with any film or story that stands the test of time, it’s the story that carries it. However, the sets and special effects are incredible too. Check out these pictures from the creators of the 2019 Los Angeles of their imagination.
After the Internet kerfuffle over the NY Times story about work culture at Amazon, you might be wondering what the impact will be. Make sure you take a look at this list of some of the problems you might face in technology companies.
Check out this blog of quirky, yet fun stories created entirely out of example sentences for entries in the New Oxford American Dictionary. If you don’t believe that language affects culture and vice versa, this site will almost certainly change your mind.
http://www.dictionarystories.com/
Want to leave a job in a way that your coworkers will never forget? If you’re a C++ programmer, just add one (or more!) of these #define statements to your code before you depart. As the first commenter said, “This file is pure evil.” And if PHP is a little more your speed, check out this one.
https://gist.github.com/aras-p/6224951
Remember the 1990s? Well, perhaps not, but you almost certainly recall the heady days of Geocities, one of the first free personal web hosting services. This site is a visual ode to Geocities made of dozens of common visual themes on the service.
You are probably familiar with Ambrose Bierce’s satire on culture: The Devil’s Dictionary. The folks at The Verge have created a new version for the 21st century, with a decided focus on the technology/startup sector.
http://www.theverge.com/a/new-devils-dictionary
Love it or hate it, Reddit is one of the most popular social media sites on the Internet, catering to tastes from the ridiculous to the sublime(text). But, remember that, on the Internet, nobody knows you’re a dog… Or in this case, simply an entire Subreddit created by a robot using Markov chains. Check out the source code here.
https://www.reddit.com/r/SubredditSimulator