From eqqon

Jump to: navigation, search

Other articles by Henon

Henon's Blog

I love WPF

I love WPF because ...

  • ... WPF doesn't restrict my creativity as much as other toolkits do.
  • ... WPF makes me feel powerful.
  • ... I am a WPF guru and others are respecting me ;)

I hate WinForms because ...

  • ... Form's class design is nuts,
  • ... every programmer could easily hack together standard GUIs, nobody needs a GUI-guru like me ;)
  • ... it is frustratingly complex to achieve visually rich displays.

Hommage à _why

A man only known by his nick name Why_the_lucky_stiff or just _why was one of the most productive and creative members of the Ruby community and I admired him. He wrote several libraries and a delicately illustrated book on the Ruby Language [1]. Then suddenly, _why dissappeared, all his accounts had been deleted.

Many theories have been issued as to what happened. My theory is, that the person behind Why_the_lucky_stiff couldn't bear to maintain the online presence he'd created any more. I think, he found himself another goal in life that stands in concurrence with his online activities. Without doubt being a person who puts all his energy into his goals, he had to choose between the one and the other. He made a clean cut, made his decision final by destroying his alter ego. I wouldn't be surprised if it was for love after all.

To express my appreciation for Why_the_lucky_stiff, I made one last episode of his legendary foxes

Hommage a why the lucky stiff.png

You want some tsingtao stout small.jpg

"Want some TSINGTAO Stout?". Me chewing on something good, with chop sticks, drinking the best Chinese beer there is.

Thoughts on Circular Dependencies in Software Design


A Circular Dependency in a software design is a mutual dependency between two modules which either directly or indirectly depend on each other to function properly. In many cases circular dependencies are perfectly sensible such as a dependency between an Employee class and a Company class where the employing company has a list of employees and each employee has a back-reference to its employer. This circular dependency models a mutual dependency of the domain. Circular dependencies between unrelated modules are considered a bad software design praxis, though. An example for a bad circular dependency would be to have a general Person class instead of an Employee class which inherits from Person and the Company class has references to Persons (which is ok) and the Person has a back-reference to its employing Company (not ok!).


Circular dependencies should be avoided if possible in software design because of their negative effects. Some of these effects are:

  • a circular dependency can be a "breach of encapsulation" (see Encapsulation)
  • a circular dependency tightly couples two or more modules making each of them unable to be reused in other places without dragging in dependencies on the others.
  • circular dependencies can be the cause of a so called "domino effect" which describes what happens when a small change in software that is supposed to be a local change spreads into other modules and has unwanted global effects (i.e. program errors, compile errors).
  • a circular dependency might result in infinite recursions or in failures in software programs
  • a circular dependency is a "refactoring smell" which may indicate a bad software design

Browse Ad Free with Google Chrome

Everyone agrees that Google's new browser called Chrome is really innovative, fast and cool. But as soon as you try it out, you will hate it for happily displaying all the banners, ads, overlays etc. Not blocking ads is, of course, the full intent of Google and possibly one of the main reasons for introducing a new browser instead of further supporting Firefox because they may have noticed that their ads don't reach firefox users who almost all are using the popular Mozilla extension AdBlock (Plus).

Loving the new concepts of Chrome and also being stunned by its well designed user interface, I have looked around for adblocking support. Here is what I found out:

  • Google does not deliver an adblocking plugin for Chrome.
  • forget AdMuncher it's not free.
  • forget Privoxy it's way too complicated
  • forget HostsMan it doesn't work anyway

I strongly suggest you to use ----> BFilter <------ . It's totally painless to install, no setup required and it works instantly (after adjusting the browser's proxy settings). Knows a lot of adservers and works like a charm even for german ads. Adding rules is straight forward, as we are used to with AdblockPlus.

OK, here is what to do:

  • install BFilter
  • set Chrome's proxy settings to port 8080 (via Options -> Under the Hood -> Change Proxy Settings -> LAN Settings -> Check "Use a proxy server for your LAN")
  • enjoy Chrome adfree!

--Henon 11:48, 11 September 2008 (CEST)