Oh the joy of coding with German Office

So I’m maintaining an Access database, with lots of VBA code, which serves as an internal management tool.

Changing a report should be, and usually is, pretty straight forward. But there I am today, after all changes are done, stuck trying to understand WHY THE FREAKING F*** a format string doesn’t work.

The offender is a text box with a date, and I’m trying to get it to be displayed like Nov-2015. So, according to Microsoft’s documentation, the format string is mmm-yyyy. Needless to say, didn’t work.

After an hour or so of banging my head on the wall, enlightenment comes: Year in German is Jahr !!! So mmm-jjjj, and, pronto, it worked like a charm.

By the way, Microsoft’s german doc is wrong (seems like a copy-paste error): it mentions jj and yyyy, instead of jj and jjjj which work (giving 15 and 2015 respectively).

GRRRRRRRRRRRRRRRRRRR *#@$%

How to overload static methods in C#

Let’s say I have an abstract generic class and a descendant:

public abstract class AuditObject<T> : ActiveRecordBase<T>

(yes I’m using ActiveRecord) and

public class Employee : AuditObject<Employee>

In both of them I define some static Methods, e.g.

public static DataTable GetLookupTable(String where, Int32 topRows)
{
  return doExtremelyCleverStuffToFetchData(where, topRows);
}

(in the Employee class you need public **new** static or else you get a compiler warning)
As the code is, when I call e.g.

DataTable myList = AuditObject<T>.GetLookupTable("inactive = 0", 100);

…and T is Employee, the static method is not “overriden” i.e. the one that is executed is the method in AuditObject, not Employee.

So in AuditObject I modified the static methods (in this example, GetLookupTable) like this :

public static DataTable GetLookupTable(String where, Int32 topRows)
{
  DataTable tbl = null;
  Boolean hasOverride = hasMethodOverride("GetLookupTable");
  if (hasOverride)
  {
    tbl = invokeStaticMethod<T>("GetLookupTable", new Object[2] { where, topRows }) as DataTable;
  }
  else
  {
    tbl = doExtremelyCleverStuffToFetchData(where, topRows);
  }
  return tbl;
}

Here’s how I find out if the static method exists :

private static Boolean hasMethodOverride(String methodName)
{
  var methodQuery =
    from method in typeof(T).GetMethods(
    BindingFlags.Static | BindingFlags.Public | BindingFlags.InvokeMethod)
    where method.Name == methodName
    select method;
  return methodQuery.Count() > 0;
}

And here’s how the “override” method is called :

public static Object invokeStaticMethod<T>(String MethodName, Object[] Args)
{
  return typeof(T).InvokeMember(MethodName,
    BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod,
    null, null, Args);
}

Voila ! When I call DataTable myList = AuditObject<T>.GetLookupTable(“inactive = 0”, 100); and T is Employee, I get results from the static method defined in the Employee class.

Η πολιτική του φθόνου

Αυτό το κείμενο, στη Ναυτεμπορική, “χτύπησε” ευαίσθητη χορδή:

Η διάκριση «εχθρού-φίλου» είναι ωφέλιμη πριν και κατά τη διάρκεια μιας εκλογικής μάχης […]

Οδηγεί, όμως, στην πολιτική και κοινωνική καταστροφή εάν παραμένει και μετά την επίτευξη του πολιτικο-εκλογικού στόχου […]

Ο κοινωνικός φθόνος είναι ο καρκίνος μιας κοινωνίας.

Δεν είναι τίποτα νέο: μπλε και πράσινα καφενεία υπάρχουν σε κάθε χωριό εδώ και δεκαετίες. Αλλά η τρέχουσα κυβέρνηση έχει σπάσει όλα τα ρεκόρ –και ο κατήφορος σταματημό δεν έχει.

http://www.naftemporiki.gr/story/1021578/i-politiki-tou-fthonou

Wise words

My favourite financial blog, Alphaville (link), reiterates some simple and sound financial advice:

“In his 2002 treatise, Dilbert and the Way of the Weasel, [Scott Adams] laid out one of the most sensible and succinct approaches to financial planning:

  • Make a will.
  • Pay off your credit cards.
  • Get term life insurance if you have a family to support.
  • (*)Fund your Pillar 3 account to the maximum
  • Buy a house if you want to live in a house and you can afford it.
  • Put six months’ expenses in a money market fund.
  • Take whatever money is left over and invest 70% in a stock index fund and 30% in a bond fund through any discount broker and never touch it until retirement.”

(*) Note that the original advice here was “Fund your 401(k) to the maximum” and “Fund your IRA to the maximum”, but these are valid for the US; Pillar 3 is, more or less, the Swiss equivalent.

On the road to crisis

Από τους Financial Times, διαβάζω τα παρασκήνια πριν την κρίση (Φεβρουάριος 2010) από τον Geithner, τον υπουργό οικονομικών των ΗΠΑ.

Αυτά που αναφέρει ότι ειπώθηκαν από τους Ευρωπαίους για την Ελλάδα είναι αποτρόπαια. Η πρώτη μου σκέψη μόλις τα διάβασα ήταν “ωραία αλληλεγγύη από τους Ευρωπαίους !!!”.

Όμως η αμέσως επόμενη, η οποία έρχεται αβίαστα, ήταν “πόσο σκ*** τα κάναμε για να έχουν τέτοια μανία ώστε να θέλουν να τιμωρήσουν όλη τη χώρα ;;;”.

Ο κύριος λόγος που ήταν έξαλλοι ήταν η “διόρθωση” του ελλείμματος που έκανε η κυβέρνηση, η οποία τουλάχιστον εν μέρει έγινε για εσωτερικούς πολιτικούς λόγους –βασικά για να δικαιολογήσει ότι δεν μπορούσε να μοιράσει τα λεφτά που είχε υποσχεθεί προεκλογικά. Και μην ξεχνάμε ότι αυτό ήταν η δεύτερη φορά που συνέβαινε, η προηγούμενη κυβέρνηση όταν ανέλαβε είχε κάνει το ίδιο !!!

Μ’ άλλα λόγια, για εσωτερικούς πολιτικούς λόγους κάναμε την εξωτερική μας εικόνα μαντάρα ! Τόσο χάλια ήταν η γνώμη των Ευρωπαίων για μας, που ειπώθηκαν πράγματα όπως αυτά που θυμάται ο Geithner :

“I said at that dinner, that meeting, you know, because the Europeans came into that meeting basically saying: “We’re going to teach the Greeks a lesson. They are really terrible. They lied to us. They suck and they were profligate and took advantage of the whole basic thing and we’re going to crush them,” was their basic attitude, all of them….”

“But the early premonitions of that were in that initial debate. They were lied to by the Greeks. It was embarrassing to them because the Greeks had ended up like borrowing all this money and they were mad and angry and they were like: “Definitely get out the bats.” They just wanted to take a bat to them.”

Πλήρες άρθρο: http://blogs.ft.com/brusselsblog/2014/11/11/draghis-ecb-management-the-leaked-geithner-files/