- Even less readable!
- No more syntax checks with proper schemas!
- Go crazy fixing stupid indentation mistakes!
- ...
Showing posts with label general. Show all posts
Showing posts with label general. Show all posts
Friday, June 12, 2020
YAML vs XML
Remember how everybody used to complain about "programming in XML", for instance in Spring bean definition files? Luckily we've moved beyond that and are now in the brave new world of "programming in YAML", where we can spend (waste) hours in the cloud writing Kubernetes YAML manifests, Terraform YAML templates, and so on.
Monday, September 17, 2018
Software maturity
While reading a news article on Domain Driven Design over at
InfoQ, I came across an interesting metaphor attributed to Eric Evans (i.e. the father
of DDD):
I've found that I also get a great deal of satisfaction from this phase: shepherding a system to maturity, seeing it come to fruition and hopefully realizing it's full potential! It as this time users are most happy with what has been delivered: the software is well understood and quality is still high, making changes predictable and quick. Over time quality slowly deteriorates and accidental complexity grows. Changes become more difficult and risky, with more regressions slipping in. Ultimately the system is replaced with something new and better, bringing everything full circle, just like in a garden.
A new metaphor Evans introduced was comparing a large software system to a community garden. Looking past the obvious bounded contexts of people sharing space in the garden, he sees positive analogies to legacy systems, looking at the "abundance of maturity." Gardens are most valuable in late summer, when they are most productive. However, that is long past the stage when you can easily make changes to the garden, in early spring. Similarly, the most malleable phase for software is not when it is the most productive.This puts an interesting perspective on something I've noticed in my own career. Just like all developers, I love getting started on a new greenfield project: things are new and exciting and together with the team you're constantly inventing new ways of tackling problems and (re)factoring the system accordingly. Some time after the first go-live, which typically comes with a host of teething problems, the application stabilizes and slowly evolves into a mature system over the next several releases. You can no longer reinvent the wheel at this time: you're building on the foundations you established earlier.
I've found that I also get a great deal of satisfaction from this phase: shepherding a system to maturity, seeing it come to fruition and hopefully realizing it's full potential! It as this time users are most happy with what has been delivered: the software is well understood and quality is still high, making changes predictable and quick. Over time quality slowly deteriorates and accidental complexity grows. Changes become more difficult and risky, with more regressions slipping in. Ultimately the system is replaced with something new and better, bringing everything full circle, just like in a garden.
Monday, December 17, 2012
Watching digital HD TV without a Telenet decoder
And now for something completely different. If you live in Flanders and use Telenet as cable TV provider, it might be interesting to know that you can watch quite a few digital HD channels without using a Telenet decoder (either an HD Digibox or HD Digicorder; Telenet also has a FAQ article documenting this). All you need is:
- A Telenet cable TV subscription
- A television set with DVB-C tuner
- één HD
- Canvas HD
- Ketnet/OP12
- France 3
- Arte Belgique
- TV5 Monde
- Actua TV
- CNBC Europe
- BBC World
- CNN
Sunday, September 4, 2011
Surprise of the day
Well what do you know! It turns out Microsoft was a bigger contributor to Linux kernel version 3.0 than Canonical, as LWN reports. Probably a bit of a fluke but an interesting statistic nonetheless!
Saturday, July 23, 2011
Q_rsqrt
I still remember encountering the following piece of code while browsing through the Quake 3 source code back in 2005:
I again ran across this piece of code while browsing an amuzing list of the best comments in source code you've encountered, over on Stackoverflow.It turns out the original author of this illustrious piece of code is still unknown (it's not John Carmack as you might have assumed). A nice write-up of the likely history of this hack can be found on Beyond3D. Interesting reading for sure!
UPDATE: The original author is actually known and it is Greg Walsh. Wikipedia also has a lot of background.
Talking about funny comments in code, my personal favorite from the Stackoverflow list must be the following:
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
#ifndef Q3_VM
#ifdef __linux__
assert( !isnan(y) ); // bk010122 - FPE?
#endif
#endif
return y;
}
That comment on line 10 pretty much sums it up: WTF!?!?I again ran across this piece of code while browsing an amuzing list of the best comments in source code you've encountered, over on Stackoverflow.
UPDATE: The original author is actually known and it is Greg Walsh. Wikipedia also has a lot of background.
Talking about funny comments in code, my personal favorite from the Stackoverflow list must be the following:
stop(); // Hammertime!Not so much the comment, but the german version really cracked me up!
Saturday, July 2, 2011
Tech support interference
It's a well known fact that developers and tech support people typically don't get along. The developers want freedom to do as they like with their machines, while the tech support guys want to close everything down, mainly for security reasons.
Sometimes this can get quite ridiculous. I recently heard a story about a development team building a web app that required Firefox compatibility, yet they were not allowed to install Firefox on their machines! Another typical example which recently came up at TSS, is developers going to great lengths to disable virus scanning software because it makes their IDEs unbearably slow.
As always, solving this conflict requires a middle-of-the-road solution. I agree that giving developers unlimited privileges on machines that are connected to production networks is an unwanted security violation. Similarly it's unacceptable to bog down a development machine to the point where the developer can no longer properly do his job. One of the better solutions I have encountered is a separate development network. This development network is an isolated sandbox where the developers reign supreme without putting other parts of the network or organization at risk.
Sometimes this can get quite ridiculous. I recently heard a story about a development team building a web app that required Firefox compatibility, yet they were not allowed to install Firefox on their machines! Another typical example which recently came up at TSS, is developers going to great lengths to disable virus scanning software because it makes their IDEs unbearably slow.
As always, solving this conflict requires a middle-of-the-road solution. I agree that giving developers unlimited privileges on machines that are connected to production networks is an unwanted security violation. Similarly it's unacceptable to bog down a development machine to the point where the developer can no longer properly do his job. One of the better solutions I have encountered is a separate development network. This development network is an isolated sandbox where the developers reign supreme without putting other parts of the network or organization at risk.
Saturday, October 30, 2010
Installing ING Home'Bank and Belgian eID on Ubuntu
I spend some time today upgrading my laptop from Ubuntu 9.04 (Jaunty Jackalope) to 10.04 LTS (Lucid Lynx) since 9.04 reached it's end of life earlier this month. Overall this was a very smooth process except for two specific apps that I require: ING Home'Bank and Belgian eID.
In an attempt to help people who also need to install one of these apps on a recent Ubuntu version, here is how I did it:
Home'Bank
ING is phasing out it's Home'Bank security module so the download is ages old and references a bunch of old libraries.
Start by downloading the HomeBank333.deb and simply install it as you would any other .deb. Next thing to do is pin the Home'Bank version in Synaptec to avoid this bug: 380511. To do that, start Synaptec, find the homebank package and select Package>Lock Version.
If you try to run /opt/HomeBank/HBSecurity, it will complain about 3 missing libraries:
Belgian eID
This is actually straightforward. A .deb package is provided for recent Ubuntu versions that installs and runs without any problems. The only problem on my machine was that my smart card reader was not being recognized (an Alcor Micro Corp. EMV Certified Smart Card Reader in my case -- do a lsusb in a terminal to find out what type of smart card reader you have). To rectify that, I had to install the libccid package:
In an attempt to help people who also need to install one of these apps on a recent Ubuntu version, here is how I did it:
Home'Bank
ING is phasing out it's Home'Bank security module so the download is ages old and references a bunch of old libraries.
Start by downloading the HomeBank333.deb and simply install it as you would any other .deb. Next thing to do is pin the Home'Bank version in Synaptec to avoid this bug: 380511. To do that, start Synaptec, find the homebank package and select Package>Lock Version.
If you try to run /opt/HomeBank/HBSecurity, it will complain about 3 missing libraries:
- libtiff.so.3 is missing -- simply sym-link it:
cd /usr/lib sudo ln -s libtiff.so.4 libtiff.so.3
- libexpat.so.0 is missing -- install and sym-link it:
sudo apt-get install libexpat1 cd /usr/lib sudo ln -s /lib/libexpat.so.1 libexpat.so.0
- libstdc++libc6.2-2.so.3 is missing -- this is an old Dapper Drake package that you can still download and install
Belgian eID
This is actually straightforward. A .deb package is provided for recent Ubuntu versions that installs and runs without any problems. The only problem on my machine was that my smart card reader was not being recognized (an Alcor Micro Corp. EMV Certified Smart Card Reader in my case -- do a lsusb in a terminal to find out what type of smart card reader you have). To rectify that, I had to install the libccid package:
sudo apt-get install libccidOnce that is done you can simply follow the install instructions provided in a PDF to configure your Firefox to use the new certificates and you should be up-and-running!
Tuesday, February 2, 2010
OSGI Dependency Resolution is NP-Complete
Apparently, the resolution problem in OSGI is NP-Complete, as are similar dependency resolution problems like apt package installation on Debian Linux systems. If you think about it it makes sense, but who would have thought!
I still remember learning about P and NP problems, and the famous P = NP question at university, and being really intrigued by all of it. Lance Fortnow provides an excellent overview of the P = NP problem in Communications of the ACM. It turns out that this is no longer a computer science problem, but one of the fundamental questions in all of science. Fascinating stuff! If only I could find a simple proof :-).
I still remember learning about P and NP problems, and the famous P = NP question at university, and being really intrigued by all of it. Lance Fortnow provides an excellent overview of the P = NP problem in Communications of the ACM. It turns out that this is no longer a computer science problem, but one of the fundamental questions in all of science. Fascinating stuff! If only I could find a simple proof :-).
Sunday, November 1, 2009
Welcome!
I've been thinking about this for quite a while but I've finally decided to start blogging! Hopefully this will prove interesting, useful or entertaining to at least a few people.
Welcome and enjoy!
Welcome and enjoy!
Subscribe to:
Posts (Atom)
