Recently in Rants Category

MathML is aweful!

| | Comments (1)

I knew about MathML for some time now, but I never thought it was this bad. See, MathML is an XML based markup language used to describe in a standards compliant manner mathematical notations. In principle this is a cool thing, until I saw a real world example from Wolfram Research:

<math xmlns='http://www.w3.org/1998/Math/MathML' mathematica:form='TraditionalForm' xmlns:mathematica='http://www.wolfram.com/XML/'> <semantics> <mrow> <mrow> <msqrt> <mi> z </mi> </msqrt> <mo> &#10869; </mo> <mrow> <munderover> <mo> &#8721; </mo> <mrow> <mi> k </mi> <mo> = </mo> <mn> 0 </mn> </mrow> <mi> &#8734; </mi> </munderover> <mrow> <semantics> <msub> <mrow> <mo> ( </mo> <mrow> <mo> - </mo> <mfrac> <mn> 1 </mn> <mn> 2 </mn> </mfrac> </mrow> <mo> ) </mo> </mrow> <mi> k </mi> </msub> <annotation encoding='Mathematica'> TagBox[SubscriptBox[RowBox[List[&quot;(&quot;, RowBox[List[&quot;-&quot;, FractionBox[&quot;1&quot;, &quot;2&quot;]]], &quot;)&quot;]], &quot;k&quot;], Pochhammer] </annotation> </semantics> <mo> &#8290; </mo> <mfrac> <msup> <mrow> <mo> ( </mo> <mrow> <mn> 1 </mn> <mo> - </mo> <mi> z </mi> </mrow> <mo> ) </mo> </mrow> <mi> k </mi> </msup> <mrow> <mi> k </mi> <mo> ! </mo> </mrow> </mfrac> </mrow> </mrow> </mrow> <mo> /; </mo> <mrow> <mrow> <semantics> <mo> &#10072; </mo> <annotation encoding='Mathematica'> &quot;\[LeftBracketingBar]&quot; </annotation> </semantics> <mrow> <mi> z </mi> <mo> - </mo> <mn> 1 </mn> </mrow> <semantics> <mo> &#10072; </mo> <annotation encoding='Mathematica'> &quot;\[RightBracketingBar]&quot; </annotation> </semantics> </mrow> <mo> &lt; </mo> <mn> 1 </mn> </mrow> </mrow> <annotation-xml encoding='MathML-Content'> <apply> <ci> Condition </ci> <apply> <eq /> <apply> <power /> <ci> z </ci> <cn type='rational'> 1 <sep /> 2 </cn> </apply> <apply> <sum /> <bvar> <ci> k </ci> </bvar> <lowlimit> <cn type='integer'> 0 </cn> </lowlimit> <uplimit> <infinity /> </uplimit> <apply> <times /> <apply> <ci> Pochhammer </ci> <apply> <times /> <cn type='integer'> -1 </cn> <cn type='rational'> 1 <sep /> 2 </cn> </apply> <ci> k </ci> </apply> <apply> <times /> <apply> <power /> <apply> <plus /> <cn type='integer'> 1 </cn> <apply> <times /> <cn type='integer'> -1 </cn> <ci> z </ci> </apply> </apply> <ci> k </ci> </apply> <apply> <power /> <apply> <factorial /> <ci> k </ci> </apply> <cn type='integer'> -1 </cn> </apply> </apply> </apply> </apply> </apply> <apply> <lt /> <apply> <abs /> <apply> <plus /> <ci> z </ci> <cn type='integer'> -1 </cn> </apply> </apply> <cn type='integer'> 1 </cn> </apply> </apply> </annotation-xml> </semantics> </math>

It is awfully complex and verbose! This just reiterates what I held to be true for a long time now - XML is being abused. It is great for moving hierarchical data between disparate systems - even non-hierarchical data if you focus on the interoperability and compatibility it facilitates, however using it as RDBMS storage solutions or this kind of hyper verbose markup is down right a waste of space and time. When will people learn that efficiency is important?

Look at this well known equation (all from the Wikipedia entry):


In LaTeX it looks like this:

x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

Terse, huh?

Look at MathML:

<math xmlns="http://www.w3.org/1998/Math/MathML">
 <mi>x</mi>
 <mo>=</mo>
 <mfrac>
  <mrow>
   <mrow>
    <mo>-</mo>
    <mi>b</mi>
   </mrow>
   <mo>&PlusMinus;</mo>
   <msqrt>
    <msup>
     <mi>b</mi>
     <mn>2</mn>
    </msup>
    <mo>-</mo>
    <mrow>
     <mn>4</mn>
     <mo>&InvisibleTimes;</mo>
     <mi>a</mi>
     <mo>&InvisibleTimes;</mo>
     <mi>c</mi>
    </mrow>
   </msqrt>
  </mrow>
  <mrow>
   <mn>2</mn>
   <mo>&InvisibleTimes;</mo>
   <mi>a</mi>
  </mrow>
 </mfrac>
</math>

It is disgusting...

Dork Awards - Take 1

| | Comments (0)

During the course of my life as independent software engineer I come across many different kinds of people. Or lets rather call them clients. Sometimes I get stupid requests. Sometimes the requests are so stupid they are Dork Award nominees. Such as this one I got today:

Would you be able to send me a test file so that XXX can test.

The context of this request was for a project which I have quoted on 3 months ago, have not yet received any kind of approval to start the development, yet now they want a test file to illustrate the typical transaction volume they can expect.

Go figure.

Whilst implementing a .NET application for one of my clients, I recently ran into a problem where a long running task would just suddenly stop working after about 30 minutes. No error, no exception - nothing.

I had been troubleshooting this for 3 days now, and that is a very long time for someone with my experience (if I may say so myself). The difficulty with this problem is that there are no - and I mean absolutely NO errors. The only thing I could gather is that the long running task stops because the IIS worker process dies.

I even added detailed trace statements - none of which helped. The output stopped dead at one my of audit entries:

Workflow.Audit.AddAuditEntry(new XXXAudit.XXXAuditEntry(this,
   "Some message"));

A couple of minutes ago I decided to put trace statements in the getters I am using here:

 protected IWorkflow Workflow
    {
        get
        {
            return workflow;
        }
    }

public IAudit Audit
{
get
{
return Audit;
}
}

Now if you have a sharp eye you might have spotted the bug already. It is trivial, though extremely hard to spot in a 40 000 line application.

Only when I saw a runaway amount of debug output entries in the getter for the IAudit interface did I immediately realise what was happening.

A stupid thing like a recursive call caused me 3 lost days on a project - that is unacceptable. I guess it is all my fault - I could have used different naming conventions, could have spotted the little recursive icon next to that line in my IDE - but none of that is relevant. Coding conventions certainly help with this problem - and in my own projects I do use a different naming scheme, but in this case I had to follow the client's naming scheme which is based on Microsoft's recommendations.

The root problem is that Microsoft should have implemented a check in their compiler to catch this extremely easy to make mistake in your code, and at least let it fail with an error in the trivil case where recursion is infinite. The problem is that getters' syntax makes this kind of mistake extremely easy to make.

Another root problem here is the fact that Windows choose to kill the IIS worker process silently and not do like Java does on an infinitely recursive call - abort the call with a StackOverflowException. That would have helped too. Instead there are no exceptions, no (helpful) EventLog entries and just silent death of a process...

I urge anyone who reads this and understands the reason why, to please post a comment and enlighten me too. Why are all imported books in South Africa always at least 15 * the dollar amount? Currently the exchange rate is $1 = R6.66. For the past year the R-$ had been between R5.50 to R6.90 to the $.

Why on earth does a book that cost $19.77 on Amazon, cost R303 in South Africa? $19.77 = R131. Even adding shipping and customs etc. should not add up to R303!!! It is a small book - not heavy, not large. How much can shipping costs be?

Full Circle

| | Comments (1)

When I was in Std. 8 many centuries ago, I swore on my own grave that I would never touch a computer since I hated it. Somewhere during that year I started breaking that promise and became more and more involved with computers. Today I realized I am back at that day - the day I swore I'll never touch a computer...

Ever thought it is possible that anything worse than the tax man exists? I found out yesterday that there is one thing lower than lobster excretions, worse than the tax man...

Everybody knows that SPAM caused the IT industry to respond with content filtering techniques and SPAM blocking techniques to help control this useless waste of bandwidth and irritation factor.

Same with large files. Bored employees are sending lots of 1MB+ mails containing the latest movie or powerpoint presentation of some joke. This obviously does not help the IT budget. So they either block certain content such as MPEG files or park them for late delivery.

What about employees visiting non-work related web sites? Surfing non-business related web sites wastes available bandwidth for important business related work. So IT departments block access to sites not deemed work related. And here I started discovering the first encounter what I now call "IT paranoia". At a large company I sometimes consult for, which houses easily a hundered developers - many of which write code in Java, I once tried to browse for information on one of the well known java sites. Their proxy server denied me access because it was non-business related. This impeded quite a bit on my productivity.

Then on another occasion I tried to send an email to one of their employees - whose surname is de Jesus. I said something to the lines of:

Dear Mr. De Jesus,

...

I got a mail from their Mail Marshall telling me that the email was blocked due to bad language. And the word was "Jesus".

Then today, I sent an email to an employee of another company. My mail contained this:

... or something more kinky, at least ...

I got this response:

Blind marketing

| | Comments (0)

I have just now received an SMS from Chas Everitt - the estate agency. But first some background. I recently (2 months ago) sold my old home and bought a new one. The old one I sold through Chass Everitt, the new one I bought directly from Urban Constructions - the developers.

Anyways, the SMS promoted a new townhouse for sale - as if I am interested!!!!! I mean - I just spend the most money I have ever spent on a new house - barely 2 months old, and now they want to sell another house to me? This is down right stupid, blind and irritating.

Sounds like a paradox? Nope - I don't think so. What does it really matter if you are brilliant at your work in the IT industry, specifically?

Warning and Disclaimer: If you are a sensitive reader or easily offended, do NOT read any further.

About this Archive

This page is a archive of recent entries in the Rants category.

Product Reviews is the previous category.

Security is the next category.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.12