Jan 01

Have I told you lately: that I hate C++ programmers… I tried to convert a C++ gadget that I liked to convert to  C#. Ge’wez, people, was that a task. I have never ever seen this much of clutter in program code before. There was no distiction between the .h and the -cpp file. Everything was cluttered all over, and there was no difference between the header or the code file. I mean, what is that? Hej, C++ programmers: if you want your code obfuscated use a tool that is readily available. But, please, please. do never call your code Open Source, unless it is understandable, capisco?

Aug 30

Hi all!

I have something totally different from my normal (?) stuff: The telephone bills that my children generate are almost a quadratic function of their age. Since Papa pays and most of the calls are from the mobiles to some landline number I thought I try to revive my old ISDN-telephone Exchange and supply the kids with their individual (landline) numbers and telephone apparatus. Trouble is, the ISDN box is at least 10 years old (when 64k bits/s were awesome) and I couldn’t really find much on it on the web. Also, in those days I used to program it over an RS-232 using a small utility on Windows (98?). Now the box next to it is the Family-Server, and that is based on a Linux distro. No utility to run under Linux. Ok, no problem, all programming can be done with the internal phone No 1. So, get the manual, type in the codes and the MSNs (the way I did it when ISDN was hot), and: Yes, I can dial out, but incoming calls run dead. Mmmh. Says some smart arse on a forum that you have to put in the MSN without the local dialling prefix: tried that, didn’t work. Didnt’ work with local prefix either. Until I studied the DSL routers box menus (O2 Surf & Call, with VOIP) and came across a tiny note saying that the VOIP SIP numbers are only passed to the ISDN equipment as MSNs (so in other words: Pseudo MSNs), and from that information I deduced that all old rules regarding the formatting of MSNs don’t apply. Now, here is the way to make it work (from internal phone No 1):

1. Assign any one of your 4 SIP numbers to any one of five memories in the ISDN box like this:
*02149301234567# – *02 is the code to assign MSNs, the following 1 is the memory location, where to store it, and now type in the country code (49) followed by the regional code WITHOUT the leading 0 (30), followed by any one of the numbers from the list of assigned SIPs, followed by the hash (#). Put the receiver down, when you hear the internal bleep.

2. Assign any of the stored Pseudo-MSNs to the internal phones like this:
*0311# – Here, the code for assigning MSNs to real phones is *03, followed by the number of the internal phone (1), followed by the memory location of the desired MSN (1), followed by the hash (#). Put the receiver down, when you hear the internal bleep.

Hej, presto, there you go. Now, if somebody dials any of your assigned SIP numbers, it will ring on those phone(s), that you had assigned to that Pseudo-MSN. So, in short: Country code + area code + landline number make up the MSN that is required by the ISDN box.

One word of caution: The ISDN implementation in the O2 box does not entail the complete ISDN feature set. I have not really tested what works and what doesn’t, but all I needed DOES work, the telephone bills are lower (Germany flatrate for landlines), and the kids can talk until the cows come home, and there is still a way in…

Jul 17

From http://www.marcclifton.com/DbTheFutureIsComing/tabid/134/Default.aspx

Now, I think this is absolutely brilliant. So, to test your comprehension of satire English, read the following...

Db – The Future Is Coming

Download Full Demonstration Application – 1 byte
Download Full Documentation And Examples – 4.01 Terabytes
Introduction

This article describes the next generation object oriented programming language, called Db (pronounced D-flat), which is a minor but key improvement to the C# (pronounced C-sharp) language. I’m not going to cover all of Db’s improvements, just a few to get you started thinking about what’s down the road.
Classes

First off, classes have always been confusing with all those pubic, protected, and private fields, properties, and methods. To make it easier for simple-minded programmers, and to make it more visual (since we use visual tools), the creators of the Db language have decided to create three different kinds of classes: lower, middle, and upper classes.
LowerClass

The LowerClass is differentiated from all other classes in that they have no property and all their interaction is done in fields. Another differentiation is that a LowerClass has no methods. Other classes interact with a LowerClass only through its fields, which of course are publicly accessible to the UpperClass instances. A typical LowerClass would look like this:

LowerClass SomeDemocrat
{
int rent;
int debt;
int[] children;
bool education=false;
}

MiddleClass

A MiddleClass has some methods and some private property. The distinguishing feature here though is that a MiddleClass doesn’t have any fields. A MiddleClass however can own a LowerClass, providing the necessary access to fields. For example:
MiddleClass Libertarian
{
Apartment rentals[100];

void ManageRentals();
}

UpperClass

An UpperClass has completely private property and methods. In fact, an UpperClass is so private that its property and methods are completely inaccessible to other class types. All property is not only private but also secured and insured. An UpperClass only interacts with other UpperClass instances, usually through design patterns such as CountryClub and BoardRoom. For example:
UpperClass BigShotRepublican
{
Investments portfolio;
Yacht coasts[6];
Lobby inPocket;
}

In C++, classes could be “friends”. Db has a similar concept, automatically applied to UpperClass instances, called the “Lobby”, allowing UpperClass instances to communicate with each other.
Exception Handling

In C#, exception handling is used to unroll the stack with the “throw” keyword. In Db, this is again made more visually intuitive with the following keywords:

* throwUp
* upChuck
* puke
* ralph
* hurl

These convey different levels of exception severity and can be used by your application to determine the size of the bucket needed to catch the exception.
System Exceptions

Db includes two exceptions that are used by the .TEN framework to convey exceptional severity:

* drivingThePorcelainBus
* technicolorYawn

You will need a very big bucket for these exceptions, as they generally connote a total system failure of the .TEN framework. Sometimes the bucket can overflow, so you’ll need to stack buckets so they catch the overflow.
Delegates And Events

A LowerClass object never has any delegates, but usually has many events. For example:
LowerClass JoeShmoe
{
event CarBrokeDown;
event LostJob;
event CheckBounced;
event BillCollectorCalled;
}

whereas an UpperClass object never has any public events, but many delegates. For example:
UpperClass JosephHenryDickensTheThird
{
delegate Maid;
delegate Butler;
delegate Driver;
delegate Cook;
anonymous delegate Wife; // mistress
}

Generics

Db gives you access to generic Hash, Pot, Coke, Crystal, and other useful collections. These are cheaper implementations than those found in C#, reducing (if not actually eliminating) memory requirements, and in fact, the new generics actually accelerate the performance of your application. All the generics are handled in the StreetCorner.Pharmacy namespace. Another benefit to the new generics is that they automatically spawn additional threads. The programmer should be careful that these other threads do not result in schizophrenic or psychotic behavior of the application. However, used in moderation, they can definitely enhance your end-user experience.
Value Types

The creators of Db took the advice of “Nine Reasons Not To Use Int” to heart, and have therefore omitted the integer value type. All numbers are expressed as rational factorials, in the form of n! + m! … / a! + b! … This approach handles real, imaginary, rational, and irrational expressions. It seems those monks were right. By the way, generics are useful when working with these value types. It makes the concept a lot more understandable.
Serialization

The creators of Db also took the advice of “Nine Reasons Not To Use Serialization” to heart, by omitting all ability to actually save any of your data in any format whatsoever. There is absolutely no serialization support in the .TEN framework, and in fact, it actively ensures that you do not write your own. This completely eliminates any issues with versioning, mysterious operations, etc., and should be welcomed by all programmers. No more serialization hell!
Other Keywords

The following keywords, found in C#, have been replaced with better ones.
Abstract

All classes in Db are automatically abstract. If you really need to do something real, you have to use the “concrete” or “cement” keywords.
As

In C#, the “as” keyword is way of casting, and will return null if the object cannot be cast to the desired type. In Db, the “like, you know” keyword is used instead. This keyword will only fail if you are actually working with concrete classes.
Catch

The catch keyword has been replaced with “bucket”, so that throwUp can be properly handled.
Lock

C#’s lock keyword has been replaced with lockdown. This immediately prevents any I/O from occurring, safely ensuring that nothing can come in or out of your application until the security administrator removes the lockdown. This also prevents non-concurrent threads from simultaneously accessing the same fields and creating mass confusion and hysteria among the LowerClass instances.
Try

The C# try keyword has been replaced with “hope” (alternatively, “pray”), as in (see below for brace syntax):
hope
{}
// this works
{}
bucket
{}
// ewwww.
{}

Syntax

All the “C” languages have been plagued with confusion regarding brace style. Db completely and forever resolves this problem by enforcing different brace styles depending on what the code is doing. For example, there are three kinds of loop expressions, “for”, “do”, and “while”. In Db, these require different brace styles:
For
for (something)
{
}

Do

do
{{
// something
}}

While

while (foo)
{{{
// something
}}}

This has the wonderful advantage of not needing to put those stupid // end “for” comments at the end of a loop, because know you know what kind of loop is being used by the brace format! This format is enforced by the compiler and will generate a syntax error if you do not comply.

To differentiate with other code blocks, like “if” and and “hope-bucket”, the following brace styles are used:
If
if (something)
}
// do something
{

Bucket

hope
{}
// something
{}
bucket
{}
// eww.
{}

As you can see, the bracing style now conveys useful information.
Lamb-huh?

This extension should only be used if you, and everyone on your team, speaks with a lisp. Otherwise, mixing Lamb-huh and Db will simply result in a lot of confused looks.
Linq

Linq stands for Language INtegrated Query. We prefer that you simply don’t ask. That way, we don’t have to tell you. Ignorance is bliss, as they say. What do you want to query anyways that you don’t already know if you just meditated?
Refactoring

Refactoring–sounds like a remake of a B-rated movie. OK, so maybe your code is a B-rated movie. But do you really want to just remake your code with some MaxFactor lip gloss? The Integrated Everything Environment! (IEE!) provided with Db comes with a revolutionary new technology called NEUROFACTOR (trademarked, patented, copyrighted, we’ll sue your unborn child before he’s a bulge in your pants. Some restrictions may apply. Works only on the male brain. The male rodent brain to be precise. No animals were harmed in testing). With NeuroFactor, simply type what you mean, and the IEE! will automatically translate it into beautiful, fully functional, no need to test, code. Throw away your unit tests, improve productivity by 10000%! Warning. Entering Visual Basic code with NeuroFactor enabled will permanently damage the heuristic AI algorithms.
Conclusion

We hope this has given you a taste of the advancements coming your way in computing languages! And as a final note to the Db language, we’d like to thank the language creators for writing this article in time for the April Fools Day deadline.

Jul 15

I notice that blogging takes some time. After all, I do not want to relay any odd thought to the world, but a little of any substance. During the week my head is full of work items, which I am not allowed to blog about. The weekend takes some time to calm down, but towards the end of Sunday the thoughts are beginning to assemble. So bear with me, if you are expecting frequent uploads. It is like painting, I guess, one day it flows, next days you just cannot get an brush stroke the way you want it to.

Now, does that mean, us internet bloggers are artists? I think, in a way we are. It is a bit like writing prosa or poems, just that blogging is kind of immediate. That is why blogs seldom rhyme. To create rhymes you need to sit down and assemble carfully, what your thoughts are, and squeeze them into the corso of what is a scheme for a rhyme. I used to be pretty good in producing Sonnets, even in English. In fact, I pride myself in passing a university exams for a Kiwi doing remote studies from Berlin. She was rather lazy (pro-crastinating – is that the proper word?), so I went ahead and did much of her homework and exams stuff for her. Was she annoyed that I ( as a German) got better marks for English stuff than her…

Well, do not expect me to blog in Sonnets in the near future. I don’t think in Sonnets, but I like the fact that my thoughts can just flow.

Another area I got myself invloved with was the translation of German recipes into English. Was that funny: Schokoladen-Knusper-Kuchen. I cannot remember what I translated that into, but it was hilarious and got the candidate in question an ‘A’.

Have you ever thought of writing software in Sonnets? Wouldn’t that be a challenge? I have to sleep over that and come up with an idea. I think Sonneting software would revolutionise the industry…

Maybe I am just a little mad….

Jul 12

Just on a side note: I tend to use British English for my write-ups. So an organization on my site will be an organisation, and I will also be colourful, rather than colorful.

However, I admit, being a non-native speaker, there might be (will be) the odd oddity in my writing. Rather than being annoyed please remember that generations of American movie makers have tried to make the baddies sound German, sometimes with rather hilarious results. And, those of you who frequent Fawlty Towers: “Don’t mention the war…”, He, you just mentioned the war / No I didn’t… ;-) .

I remember the only ever programming language (of which I know!) that was truly British, was AMOS Basic for the AMIGA. I loved that programming language and used it a lot for TV-overlays for our Amateur Television Repeaters in and around Berlin.

Jun 16

This is to become my web presence, informing you about my own projects: software, hardware, social/integration projects. Feel free to join and contribute to the contents.

preload preload preload