Walking on water and developing software from a specification are easy if both are frozen. –Edward V. Berard, Essays On Object-Oriented Software Engineering (1992)
Very dynamic languages like Lisp, TCL, and Smalltalk are often used for prototyping. One of the reasons for their success at this is that they are very robust… Another reason is that they don’t require you to pin down decisions early on. Java has exactly the opposite property: it forces you to make choices explicitly. –James Gosling, Java: An Overview (1995)
A child can teach an adult three things: to be happy for no reason, to always be busy with something, and to know how to demand with all his might that which he desires. –Paulo Coelho
I can't really defeat it [terrorism], but I can prevent it from defeating me. After all the goal of shootings and explosions is not to physically destroy citizens, it is to scare them. So when people are not afraid, terrorists do not reach their goals. And if you succumb to fear, terrorists win. –Artemy Tregubenko, Use micromorts to fight terrorism
Friendship is born at that moment when one person says to another, “What! You too? I thought I was the only one!” –C.S. Lewis
Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure. It is our light, not our darkness, which frightens us most. We ask ourselves, 'Who am I to be brilliant, gorgeous, talented, and famous?' Actually, who are you not to be? You are a child of God. Your playing small does not serve the world. There is nothing enlightened about shrinking so that people won't feel insecure around you. We were born to make manifest the glory of God that is within us. It's not just in some of us; it's in all of us. And when we let our own light shine, we unconsciously give other people permission to do the same. As we are liberated from our own fear, our presence automatically liberates others. –Marianne Williamson, A Return to Love
Return to top
Let’s face it, programmers and project managers often have conflicts. Certainly, both roles are important to the success of a development project. This article examines the five key things that project managers can do to ensure that programmers are efficient and effective.
I don’t know what the appeal of anti-patterns is for me, but I do enjoy how they tend to make ideas more memorable. Since most development now focuses on building web services and APIs as an integral part of a project, here are several concepts to keep in mind to build a solid, extensible, and maintainable API.
Lisp has been around for ages and it pre-dates many of the other, more-popular programming paradigms, like imperative or object-oriented programming. Nevertheless, Lisp, other “flavors” of Lisp, like Clojure, and other functional programming languages are enjoying significant growth. This article suggests several reasons for this.
IT organizations continue to feel the pressure from business customers in the “buy-versus-build” debate. This essay offers some relevant factors to consider not only with respect to the initial implementation, but even more so on maintaining and enhancing your applications.
All of us are familiar with the concept of “technical debt” in software development projects. This author says that, often, what he calls “conceptual debt”, meaning lack of a clear understanding of what should be built or a vision for the system, is a bigger problem. He offers some good suggestions for ensuring that you are building the right thing, before you spend a lot of time on determining if you are building it right.
In agile methodologies, iteration is the norm and, as a consequence, architecture tends to get left behind on these projects. This article discusses a practical approach to software architecture in agile organizations, by changing the way that architects engage in the process.
Using a definition of “done” of “when all tickets are fixed”, this author says that the typical approach of linear burn down for defects is invalid. Instead, he suggests using an S-curve the focuses on prioritization of issues, including assessing the potential to for a fix to introduce other problems. It’s a very insightful and useful concept.
This article discusses how to avoid the success trap, which the author defines as unhealthy attachment to behaviors and processes that yielded success in the past. The characteristics or organizations that avoid this problem are rewarding innovation, developing strong champions to push through new ideas, and internal autonomy on teams.
Return to top
If you’ve worked in software testing or development for more than 10-15 years, you probably remember the “dark ages” where nary a mention of software problems appeared in the news. This research bears out that impression, showing that the “Y2K problem” (or non-problem!) brought the concept of software problems to popular attention. Likewise, this event also demonstrated just how integral and ubiquitous software had become.
This paper explores a rather counter-intuitive result that the value of a test suite has little to do with coverage. Instead, the effectiveness has more to do with the skill of the developer in testing areas of the application that are more prone to failure.
First, I’m a bit uneasy about including this article so soon after the devastating attacks in Paris. Nevertheless, this is an interesting reminder about the importance of software quality and reliability, because we never know how long our applications or systems will be in use. Of course, I don’t condone using “ancient” tools like Windows 3.1, but sometimes cost and complexity are significant factors to overcome in bringing systems up to date.
While this article doesn’t do a lot to resolve the age-old debate about manual versus automated testing, it does offer some good perspective on how to decide when to automate and what functions/features should be automated.
Microsoft doesn’t have the greatest reputation, historically, for quality and security in their products and systems. However, CEO Satya Nadella has made improved security a top priority during his first 18 months on the job. Microsoft sees security improvements mostly focused on improved communications and collaboration between the various groups and teams in the company.
Return to top
If you’ve heard about microservices, but don’t know much about them, then start with this tutorial. It explains the concepts using common terminology and relevant examples with a little bit of orientation toward .NET.
By now, you probably feel fairly comfortable with understand the RESTful architecture and paradigm. But what if someone asked you what the core principles were? This article gives a nice explanation, including detailed discussions about the “Fielding constraints” and how they apply.
I freely admit that I’m a database person. I’d much rather solve a problem using a SQL query than in application code, when it makes sense. Most of us make effective use of SQL UNIONs, but the other SQL set operations usually go wanting. This tutorial shows some relevant cases where INTERSECT and EXCEPT (or MINUS) can help.
The Linux/Unix shell is a powerful, but barren, landscape. Sometimes, using the shell commands and utilities can feel like reciting arcane medieval incantations. This utility (and associated online reference) gives you simplified, community-driven examples for nearly all of the commands and utilities that you can think of. And, if you run across one that’s missing, why not contribute yourself?
Web development is not easy, especially when it comes to UI and UX aspects. Even if you aren’t an experienced designer, this list of tips and best practices for using form elements will prove invaluable. The includes simple “good” and “bad” examples with clear explanations to help guide you.
Return to top
Probably at one time or other, you have feelings that you are way in over your head in your work. This is a natural phenomenon, but developers tend to avoid the subject. This programmer says that we need to embrace this situation and use it motivate ourselves to learn and improve.
While it might be your dream to abolish meetings outright, that’s probably an unlikely proposition for most organizations. This article looks at the meeting practices of several large organizations, including Amazon, Google, Yahoo, Apple, and others, to explain their approaches and why they are effective.
I guess I’m pretty old-fashioned when it comes to things like tattoos. I just don’t really get the appeal. But I’ve got a 17-year-old that keeps begging for one. Anyway, according to a recent survey, acceptance of tattoos at work is on the one rise, but still seen as a negative overall. Moreover, surprisingly, the prevalence of tattoos among technology workers is quite low compared to other industries.
As programmers, our jobs are to automate processes and other repetitive tasks. So how do you decide when to automate things in your workflow? This great reminder emphasizes that the purpose of automation in development is not to save time, but, rather to reduce mental overload.
Most of the time that we hear about working in cubicles or other open-plan office settings, the commenter shows great disdain for them. Here’s an alternative voice who points out some of the benefits, such as better collaboration and visibility and providing good boundaries between work and leisure.
A common myth in development circles is that perfectionism is always a positive trait, because it engenders greater quality and productivity. This article emphasizes that just like everything, we need to have moderation in perfectionism, because it can cause problems like poor prioritization and failure to look for innovative solutions.
Glassdoor has released their annual rankings of best employers and Airbnb, which didn’t even make the list last year, knocked Google out of the top spot. Out of the top 10 companies, seven of them are tech companies, including Google which dropped to 8th overall.
Productivity pundit Tony Schwartz makes an eloquent statement about how all of the high-tech gizmos that we have have resulted in a culture of distraction that almost everyone is blind to. He notes how these devices have driven us away from many of the activities that we enjoy, such as reading and, most importantly, human relationships. Perhaps taking a more balanced approach to technology would be an appropriate new year’s resolution for 2016.
We all know that no “one-size-fits-all” method for personal productivity exists and there are a dizzying array of such approaches. Nevertheless, it’s useful to look at various techniques from time to time, as you may pick up tidbits from each or, perhaps, an entirely new paradigm that fits your style. This article gives an overview of the Feynman technique pioneered early in his graduate studies by Nobel laureate physicist Richard Feynman, who among many things introduced the use of computers for physical simulation.
Return to top
Google is huge and has its hands in a lot of different things. But nothing is more important to Google than access. This article gives an overview of the Access business unit and its goals and objectives.
When it comes to infrastructure services, Google (or Alphabet) likes to fly under the radar, as much as a $500 billion company can. So, without a lot of fanfare, they have introduced a CDN service to compete with the likes of Akamai, Microsoft, and Amazon. Geographically availability is currently limited.
If you know much about the telecom business, much of this article won’t be news to you. But if not, it provides an interesting look at how old rail right-of-way is essentially the pattern for the telecom network, by examining how Council Bluffs, IA became a North American data center hub.
If you are old enough, you probably remember Sun Microsystems’ original slogan, coined by John Gage: The network is the computer. Certainly, Sun’s founders were prescient about how technology would evolve. This article from an executive at cloud provider Cloud Velox explores how most organizations are moving toward public-private hybrid cloud solutions.
Return to top
Diffd is a free (*for up to 100 uses per month) online tool that allows you to compare versions of your web site. It highlights the differences between the compared versions and does the comparison using 4 different web browsers and 5 different screen resolutions. Great option for A/B testing and ensuring that you don’t have any unexpected changes between releases.
Wox is a new open-source launcher for Windows inspired by the Alfred Mac OS X application and the now defunct Windows Launchy application. Wox is summoned by a configurable keyboard shortcut (“hotkey”) and includes all applications with a shortcut on the Start menu. You can add other folders to include in search. Wox also supports custom plugins, which can be written in Python on C#, with many “system” plugins included and more available on the Wox web site
This tiny (less than 100 lines of source code!) Python script will take a JPEG or PNG image file and convert it to pure CSS so that you can include the image in your CSS stylesheet or directly in an HTML file. Requires Python 3 and Pillow wrapper for Python Imaging Library (PIL).
If you work on several projects (or even several environments on the same project!) at a time, undoubtedly, you’ve gotten confused about which environment uses which TCP port. Devrouter is a simple NodeJS utility that allows to quickly and easily map the different ports to domain name aliases without messing around with your hosts file. Just add each environment alias and its TCP port to the configuration file and you’re all set.
There are plenty of free disk space utilities out there, but CorzSpaZio is different. It simply lists each of your drives and the capacity and free space on each, along with the file system type. That’s it! You can double-click on any of the drives to open that drive in Windows Explorer.
Return to top
So, sometimes you have to ask yourself where certain ideas come from. Anyway, check out these pictures. It’s kind of a mashup between 21st-century celebrity and 19th-century painting. Strange, yet hauntingly exquisite.
Apollo 17 was the last manned mission to the moon, over 40 years ago. This multimedia site, with more than 300 hours of audio, 22 hours of video, and 4200 photos, allows you to re-live the mission in real time. It’s a fantastic way to understand just how far technology has come in such a (relatively) short time.
One thing that seems like it hasn’t changed much in software development is the fact that initial vision and the reality of project implementation often diverge substantially. This document from more than 40 years ago (ca. the time of Apollo 17!) shows that usability of technology was an issue even then!
We missed this one in time for Halloween (and Thanksgiving!), but you’ll still find it interesting and spooky. Here are some physical phenomena that still can’t be proven and, yet, can’t be disproven either. The more we know, the more we don’t know.
Digital archeology has become an important discipline in the technical world. You can do a little bit yourself with this site, which gives you a link to the first commit of any project on GitHub. Check out the first commits of some well-known open-source projects like Vagrant and Laravel.
Return to top