You can google, you can research, read books and read the information again. This page is mainly a self-reference to me for these occasions where I found myself reading an excellent post or someone explaining a concept in such clarity that I couldn’t possibly do it better myself. The subjects behind these links will not likely find their counterparts on my blog, but I don’t want to withhold this excellent information from you either.
I assorted them on a single page for easy reference and to prevent the cluttering that occurs when I add them to the regular links-section of WordPress sites. This maybe not the perfect way of doing this, but it suits my needs.
- Get user information: browser version, operating system etc
Excellent clear information on a very simple technique (if I should call it that) of getting information about the user’s environment. Not mentioned on that page is navigator.cpuClass which is supported by some browsers.
On encoding, decoding, Unicode, base64
This utterly simple page is simple to navigate and shows how your browser displays Unicode text, while also showing the UTF8 encoding and the codepoint alongside. Reverse lookup (by UTF8 encoded string for instance) is not possible.
- From and to base64
Again a very simple and efficient page, transforming uploads or string to and from Base64. Got a partial email with unreadable Base64 section? Paste it in there. Quite likely it will return a partial image, giving you a hint of what was originally sent.
- Truly understanding ViewState
This is a must read for any serious self-respecting ASP.NET developer. It is vital for good ASP.NET website development to know the inner workings of ViewState, where it applies, when it applies and how it applies.
- ASP.NET memory usage and advice about presets
There’s loads of nonsense blogs around on the Net which give wrong advices about .NET memory management. This is a short and easy read and clearly explains the concept.
Classics: the GOTO statement
I often hoped it to disappear, but even with the most recent incarnation of .NET, both C#.NET and VB.NET still have the goto statement. Is it useful? No. Is it defying OO principles? Definitely. Is it helping young programmers? Not in the least! The opposite is true, if they do not learn in time to live without GOTO, then they may not want to live without it anymore and learn bad programming style and hard-to-maintain code. You all know this, of course. If you need some shotguns to fire at your co-workers that still seem to have an argument for using GOTO, show them some of these links or papers. They go all the way back to 1968….
- The original, one and only Edsger W. Dijkstra paper from 1968 (pdf)
This is the one, at the time of this writing 41 years old, “Letter to the Editor” that takes three pages to explain why GOTO is harmful and proofed to be one of major importance and influence to the IT world. You don’t need to read it to understand it, modern programmers and OO programmers especially, will never voluntarily use GOTO (unless you are on COBOL or Fortran). But it is a nice read and it shows how old the GOTO discussion actually is.
- A follow-up paper from 1972 about efficiency as an excuse
This paper made the following phrase immortal:
“More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason — including blind stupidity.”
- The phrase “Considered Harmful” has a live on its own now
A short WikiPedia article on the special meaning of this phrase, which all started with the Big Bang article of Dijkstra.
- A Visual Basic example why GOTO is dangerous
A simple example for the one language that still sees many programmers using the GOTO, because Microsoft didn’t want to abandon it (why they introduced OO after VB6, but maintained GOTO is beyond me).
- Rare cases where GOTO is allowed
Don’t show this, they will hold it against you! Only if you know the subject well, one should read that link. In high performance computing, GOTO is good and saves time, GOBACK is bad and is hard to optimize for the processor. This translates into assembler and in my opinion, should only be used when using low level languages.