The Tao of Programming

I’ve found a document on the web titled “The Tao of Programming” that contains IT wisdom. It was copied and translated by Geoffrey James who found it on a NASA website with URL “http://misspiggy.gsfc.nasa.gov/tao.html" (not responding anymore). Below you find my three favorite IT wisdoms from the document. 1. Development team wisdom A manager went to the Master Programmer and showed him the requirements document for a new application. The manager asked the Master: “How long will it take to design this system if I assign five programmers to it?” ...

August 29, 2016 · Maurits van der Schee

Developer Anarchy or Extreme Agile

Agile development is all about reducing “waste” (bureaucracy) and optimizing the percentage of development effort in the process. This makes sense, even for larger organizations to improve the effectiveness of their software development. Startups on the other hand need even less process as value creation is really all that matters. For these organizations Extreme Agile (or ‘Developer Anarchy’ as Fred George calls it) may be a good fit. Bureaucracy is a good thing Larger organizations want to have process that ensures consistent quality and reduces risk of failure. Certifications like ISO 9001 and 27001 require that you have written down your process and that you follow this closely. They may not be helped with an Agile process that steers towards a flatter, more efficient organization where roles are combined to ensure minimal procedural overhead (hand-overs). ...

August 22, 2016 · Maurits van der Schee

Ad block detection

More and more people use ad blockers and more and more sites try detect them. Sites say that their visitors are stealing their content, by not “paying” by viewing ads, while visitors claim that sites do not comply with the law and blocking third party contents is the only way to protect their privacy when using the Internet. Nothing against ads I have nothing against ads, but the practices of the “ad tech” industry are appalling. The “ad tech” industry mainly consists of ad “brokers”. The most well-known player in that market is “Google ads”. Some of these brokers (if not all) allow their clients to run scripts on the sites the site owners request ads for. ...

August 19, 2016 · Maurits van der Schee

Using torrents to give back

The use of torrents is controversial, unless you download Linux (disk/install) images. I have recently been trying many Linux distributions (distros) related to the 16.04 release of Ubuntu. For downloading them I have used torrents and I’m proud that my ratio is above 1. This means that I have uploaded more than I downloaded. Below is a list of some of the best Linux distributions that I tried out and my first impression of them. This is my top 10: ...

August 16, 2016 · Maurits van der Schee

Blackhat 2016: videos online

Computerworld released 13 videos (interviews) of the Black Hat USA 2016 conference. The first one (featuring Dan Kaminsky) was so good that I posted the entire list of videos below: Developers need secure coding environments How to pick a lock Risk management: Picking the right tool for the job Black Hat 2016 wrap-up: Same stuff, different year? Why some risk assessments fail Social engineering tricks and why CEO fraud emails work How to wade through the flood of security buzzwords and hype The changing economics of cybercrime Threat actors: Who you should really worry about The advanced security techniques of criminal hackers How much do developers really care about security? Could this hacker’s tool slow down phishing? Why compliance is a necessary evil Blackhat USA 2016 conference in Las Vegas Black Hat is a yearly conference “built by and for the global InfoSec community” as they say on their website. The conference was held in Las Vegas on August 3 and 4. It was the 19th Blackhat USA conference. ...

August 13, 2016 · Maurits van der Schee

Creating a bootable Windows 10 USB on Ubuntu

Whenever I have to help somebody with Windows 10 I find myself making a bootable Windows 10 USB drive. If you are on Windows this is provided via a menu option, but on Ubuntu Linux this requires some commands. This post will explain in detail how to do this. GPT partition table with FAT32 partition Modern systems support UEFI booting and this differs from traditional BIOS in that it does not read the boot sector. Instead it will look in the /efi/ directory in a FAT32 partition of a drive with GPT partitioning. There are no partition flags (like ‘boot’) necessary either. ...

August 10, 2016 · Maurits van der Schee

LibreOffice 5.2 released

On August 3rd, 2016 the Document Foundation released LibreOffice 5.2, “a feature-rich major release of the best free office suite ever created” as they say on their website. I think they are very humble, because it is not only the best free office suite ever created. No commercial office suite (not even Microsoft Office) comes close to the UI consistency and speed of this office suite. 3 notable new features in LibrOffice 5.2: Google Drive’s Two-Factor Authentication (2FA) now supported. Pressing Shift + Return in the multi-line input will now insert a new line in Calc. Calc now has a set of forecasting functions that use triple and double exponential smoothing and handle seasonal effects. See: release notes ...

August 7, 2016 · Maurits van der Schee

Features are an asset, code a liability

Lines of code shouldn’t be used to measure productivity, but it is a very good metric that tells you a lot about the state of the project. Especially when separated into testing and non-testing code and combined with number of features. I think that if you manage to add a requested/desired (!) feature without adding too many lines of code you are doing a good job. A project should also have a decent amount of code dedicated to automatic testing. Next to that active monitoring and automatic bug reporting are required to run a smooth web application. ...

August 4, 2016 · Maurits van der Schee

High performance JavaScript web service using Cluster

You can’t start a discussion nowadays about high traffic web services or somebody will bring up NodeJS and it marvelous performance. Skeptic as I am I test these claims before I believe them. The following code runs pretty fast on my machine, but only uses one core of my CPU: const http = require("http"); http.createServer(function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8000); I ran the following Apache Bench command to test the performance: ab -n 200000 -c 100 http://localhost:8000/ It actually performs pretty good at 15k rps using one CPU core at 100%. This is half the rps compared to Go, mod_php or Jetty, but those all use multiple cores and for one core this measurement is pretty impressive. So much of the claim is true (on one core). ...

August 1, 2016 · Maurits van der Schee

Active cache invalidation is an anti-pattern

I strongly believe that active cache invalidation is an anti-pattern, a symptom of bad software architecture. In this post I will sum up the reasons people give for explicit cache purging and explain what’s wrong with them. It is not wrong to allow purging of the cache manually and by exception, but it is wrong when cache invalidating is part of the algorithm. The rule of thumb is: your software should not delete from the cache during normal operation. ...

July 29, 2016 · Maurits van der Schee