Of all ridiculous things the most ridiculous seems to me, to be busy — to be a man who is brisk about his food and his work. –Soren Kierkegaard
He who has a why to live for can bear almost any how. –Friedrich Nietzsche
Without requirements or design, programming is the art of adding bugs to an empty text file. –Louis Srygley
Chess is like looking out over a vast open ocean; checkers is like looking into a bottomless well. –Marion Tinsley
Talking can be done at scale, but befriending can’t. –Per Harald Borgen, “Don’t just talk to your users, befriend them”
The high value put upon every minute of time, the idea of hurry-hurry as the most important objective of living, is unquestionably the most dangerous enemy of joy. –Herman Hesse, “On Little Joys” (1905)
Return to top
You’ve probably see the #NoEstimates or #NoBugs hash tags on the Internet. This author claims that TDD, as currently practices, doesn’t meet the needs of the development community. His main objection is that the unit tests developed are often too brittle to provide much use. He recommends that instead of writing tests, developers should use that time to refactor code for consistency, improved readability and so forth.
In this very well-reasoned article, an experienced developer says that technology is the not the “hard part” of programming, but instead building the right product/system is. He further states that the most important skill for developers is understanding the business domain sufficiently to ensure that what gets built meets the needs of the customer.
In this year’s IEEE Spectrum programming language popularity survey, Python leapt over perennial front-runners Java and C into the top spot, although positions 1, 2, and 3 are in a virtual dead heat. Much of Python’s growth appears to have come at the expense of C in the embedded applications space. And Swift makes its first appearance in the list. Regardless, it’s also important to consider the value of programming language popularity lists.
Most of developers know that they read much more code than they actually write. In view of that, this article recommends a very useful practice for improving readability and quality of your code. The author calls it "line of sight" and says that looking vertically down a single column of a function should give you a good idea about the flow of logic. He goes on to offer some suggestions for how to apply this in practice using an example in Go.
As each of us gets more distant from the start of our careers, sometimes it’s useful and important to consider how the IT world has changed, especially from the perspective of new developers coming in. Probably the most interesting fact from this article is the number of workers coming in with the title/job description of “data scientist”. Obviously, “big data” and analytics are here to stay and everyone needs to develop skills in this area, such as machine learning.
In enterprise development, when we need to expose our application services, particularly across (business) domain boundaries, a question often arises about whether or not we should create/use a “value object” for this scenario. This article delves deeply into the pros and cons and the architectural principles that we should use in making this decision.
In my experience, with the rise of agile methodologies, software architecture is rarely discussed. That doesn’t mean it’s not important, of course. This excellent article offers some guidance about how to fold architecture practices into your regular development process, regardless of methodology.
“Uncle Bob” Martin discusses the hype and reality about functional programming (FP). He starts by noting that the initial motivation for functional programming to better support concurrency hasn’t materialized. However, he says that the value of FP is really in how it improves the quality of the code produced. He suggests that, if you want to start learning FP, Clojure (essentially Lisp on the JVM) is the best choice.
Return to top
I guess I had never considered that someone might run into legal trouble simply for reporting a defect. As this story relates, that’s exactly what happened when a young man just wanted to help improve the security of a system. Perhaps we should reward such actions instead of punishing those who take them.
Hopefully, security testing and validation is front and center in your test approach. Even so, much of what we focus on with security hearkens back to the early days of system development. This security expert outlines the best practice principles for security and authentication in the contemporary age. Lots of great fodder for improving your tests and application design and architecture.
Return to top
Everyone knows that code reviews are good at finding/preventing defects and, accordingly, that we should do them. However, there seems to be a dearth of information about just what we should check in a code review. This excellent checklist will help you with preparation, doing the code review, and following up.
Clearly, blockchain technologies like Bitcoin and the plethora of other cryptocurrencies are the wave of the future for secure transactions. This step-by-step tutorial breaks down a simple blockchain program in pure Python (no external libraries) of less than 50 lines to help you understand various pieces of such a tool and the basic implementation.
Whether you are just getting started with building REST APIs or you’re a seasoned veteran, you are sure to pick up some good ideas from this comprehensive reference to best practices for building APIs. Right up front, the article summarizes the concepts and then goes on to explain them, including some good contextual points.
If you are developer steeped in OOP principles and on the journey toward functional programming, you likely will come to point where you need to decide whether to use classes in certain instances. This excellent tutorial gives some practical advice on concepts that can help you with this conundrum.
The release of the new version of Java is imminent (less than 2 months!), so it’s time to really dig into some of the upcoming changes. This article provides some tips for potential problems that you may run into, especially with respect to some of your existing code.
The Unix/Linux man pages are indispensable for looking up the options and parameters of commands. But what if you aren’t sure which command you need? Or if you aren’t at the shell prompt? ManKier to the rescue! Its simple interface emulates the shell and allows you to search on most any criteria as well as showing you relevant examples of various commands. Likewise, it includes man pages for thousands of tools that you may want to use, but don’t have installed.
Return to top
At one time or another, you will get stuck when working on some development task. This article helps you classify the kind of “stuckness” and then discusses useful strategies and tactics for breaking through the mire.
Most of the time, we ask others (or perhaps ourselves, rhetorically): How do I get better at programming? This author looks at how we can honestly evaluate and assess our technical skills and work to improve those areas where we find deficiencies.
Certainly, technology is one of the major disruptive forces in today’s world. However, perhaps we didn’t necessarily foresee this impact in terms of the “normal” workday. Interestingly, in a new survey from Careerbuilder, almost 2/3 of workers 55 and over agreed that the 9-to-5 workday is a thing of the past, a higher proportion than millennials!
Reporting from this year’s Black Hat and Def Con security conferences, this article says that developers with strong security skills are in high demand. One consultant estimates that in the US alone by 2022 there will be a shortage of 1.8 million workers in security.
Not long ago, technology workers had to main options when looking for high-paying jobs: Silicon Valley and Boston. This article demonstrates that several other regional hubs are strong competitors for tech talent and Seattle is poised to unseat Silicon Valley for supremacy.
Return to top
Pushing further into the Internet infrastructure is nothing new for Google. However, this latest foray goes right to the heart of the platform. In a project called Espresso, Google plans to deploy a custom network routing platform that works over the public Internet to speed traffic to and from its data centers.
Return to top
One of the very handy features in Mac OS X is “Quick Look”, which allows a preview of any file or folder by highlighting it and pressing <Space>. This utility brings essentially the same functionality to Windows.
Postage is a very usable, cross-platform DB management tool for PostgreSQL database. It provides all of the functions you need to program and manage your DB and it’s intuitive and fast.
If you ever need to view or edit data, such as CSV-formatted files, on a remote server, then VisiData is a very handy tool to have. Its name pays homage to the granddaddy of all spreadsheets, VisiCalc. And like its ancestor, it’s a console/shell-based tabular data editor that uses only Python. You can edit cells, add/remove rows/columns, sort the data and much more.
Tad is a very handy tool for doing on-the-fly analysis of data. You simply load your CSV-formatted data into Tad and the main grid provides pivot table functionality for summarizing/aggregating data and performing various calculations. Tad uses SQLite database, so it’s very fast and reliable.
Return to top
If you ever need to take a snapshot of the entire web page, including the part that is outside of the currently displayed area, Google Chrome has a handy built-in tool to do this. However, it’s pretty well hidden. To use it, enter these two keyboard shortcuts: <Ctrl>+<Shift>+I (opens Developer Tools panel) then <Ctrl>+<Shift>+P. In the type-ahead list enter screenshot and then select the Capture full size screenshot option. Chrome will save the current page as a PNG file in your default Downloads folder.
Return to top
If you’ve seen the recent episodes of Silicon Valley, you probably remember the “Not Hotdog” app that Jian-Yang built. Well, the technical folks behind the show built the real thing: a machine-learning tool that learns to identify hot dogs. Read about how they did it; it’s quite interesting and educational.
Hmmm… Aren’t 8-bit computers beyond passé at this point? Well, of course, but that doesn’t mean that it’s not fun to build one from standard TTL chips as a learning experience. This site is a step-by-step guide from start all the way to programming it in assembly language.
If you use the awesome Hyper terminal (not to be confused with HyperTerminal!), then check out this Star Wars themed eye candy. You can dress up your terminal with two-dozen characters from Star Wars.
Return to top