A crash course in modern hardware
If you have not reviewed lately how modern CPUs operate and how they differs from CPUs that you grew up with, you may want to watch this video. It is quite long but certainly instructive.
You will learn about what impacts performance today and how Donald Knuth was right all along. :-)
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil" — Donald Knuth
James Bach is offering free testing lessons over Skype
James Bach is proposing to tutor testers via Skype for free. This is a very interesting concept and this is the first time I hear about such an experiment. I wish him success and I am looking forward to see how this develops.
As it should be, he has high expectations of his students.
Frequently Forgotten Fundamental Facts about Software Engineering
In this article, Robert L. Glass, list principles, facts related to software engineering. The list is organized onto the following categories:
- Complexity
- People
- Tools and Techniques
- Quality
- Reliability
- Efficiency
- Maintenance
- Requirements and design
- Reviews and inspections
- Reuse
- Estimation
- Research
I encourage you to read this article regardless if you are new to the field of software engineering or a long timer. Sometimes it is nice to be reminded of the "law of physics' regimenting our discipline.
[via IEEE]
Secret Perl Operators
I don't know about you, but I feel that Perl is a great scripting language. I have used it quite a bit in the past and it always helped me accomplish what I wanted to accomplish. I must also admit that Python now has my favor and one of the reason is the simpler syntax and object manipulation.
To illustrate my point regarding Perl syntax idiosyncrasies, here is an article describing some "secret" Perl operators that I have never heard of before:
- The Spaceship Operator
- The Eskimo Greeting Operator
- The Goatse Operator
- The Turtle Operator
- The Inchworm Operator
- The Inchworm-On-A-Stick Operator
- The Spacestation Operator
- The Venus Operator
Have you used those operators? What is your favorite scripting language? Leave a note in the comments.
Programming Puzzle
Tonight, I found a programming puzzle while reading the blog "It's common sense, stupid". I solved the puzzle, but I don't know what to do next. Do you know what I am supposed to do once the puzzle is solved?
Here is the puzzle for your enjoyment:
ofqgz Wqlnru;gtqwljnkx
tvy{vfnal tvyl{mgimbg kmlvvz tvy =
"ZHFF PFOQ UUOE IBIKE UNUU MLHBDICYF";
wltnvk lmvaga nzzs="y"+ "fbngmlm";wltnvk
ohmv Fuvv(itvsfm fbkbry[ ]tlta){by(ejzm.Ymgzxz
==0)Fuvv(tkk,skam);meli {ay(ueol[0]=="")kilnla
;qy(tvyl[1]=="")ueol[ 1]=tvys;pnz tkkm=tlta[
0][0];otv skat=65;qgm ejzj=nzzn-ejza; vvm
tvylm=nzzl[1][0]-97; mx(Vbnz.BlPwmnrz(tkkm
))tltx=(tkkh-tltal+26) %26;Vsfliym.Pkmlx((wuik
)(tvyi+ueoz));Feag(ueol[0].Lytlneqgz(1),
ejzm[1].Fculxjbht(1));}}}}
The solution to the puzzle is the following C# program. The puzzle is a simple cryptogram where the jey is 'unittest'.
using System;
namespace arg
{
class args
{
static string arg = "GNSX WMKY BABW PIESL AAMB THPIJVUFM";
static string argz = "u" + "nittest";
static void Main(params string[] args)
{
if (args.Length == 0) Main(arg, argz);
else
{
if (args[0] == "") return;
if (args[1] == "") args[1] = argz;
var argu = args[0][0];
var argg = 65;
int argp = argu - argg;
int argss = args[1][0] - 97;
if (Char.IsLetter(argu)) argp = (argp - argss + 26) % 26;
Console.Write((char)(argp + argg));
Main(args[0].Substring(1),args[1].Substring(1));
}
}
}
}
When you run this program with no arguments, you get the following string: "MAKE SURE THIS WORKS WITH LOWERCASE". Ironically, the program does not process strings contains lowercase.
I used cryptanalysis and a bit of python script to solve the puzzle. This was entertaining.