A tale of two phones

Introductory Blah Blah

A few months ago, just before the summer if memory serves, I bought myself a Samsung Galaxy S4. It has been an almost complete disappointment; overheating, plasticky, filled to the brim with crapware and rather small if you could ever believe it.

whitesmoke_35627724_05_610x436I sold the S4 a couple of months ago and in its place I bought another Samsung. A €20 dumbphone! It couldn’t even get the time from the networks; doesn’t even have a standard USB port and the other features are rudimentary at least. But it had a Bejeweled clone (and the sad fact is that the time I spent with the phone was spent mostly in that game), a battery that easily lasts a week and more, and finally, it has quite good reception and voice reproduction.

getProductBinaryBut this post is not a comparison between the S4 and the lowly dumbphone, because it would be a silly comparison of two very different phones (and not one that the S4 could easily win). This is actually a pre-purchase comparison between two other phones, the one meant to replace my S4.

»Read More

The problem with Pricey Guitars

Here’s another post about making music and once again it’s but a thin wrapper on a complaint regarding music gear. It will sound preachy, but what the hell. So, if you don’t know what you need in great detail and with lots and lots of research beforehand, don’t buy expensive or signature equipment just because you see a person’s or a company’s name on it.

That goes without saying right? Well, does it?

»Read More

Revisiting NDepend.

A few months ago I posted a review of NDepend, a nifty little tool that allows you to visualise your projects’ dependencies and spot potential issues. Version 5 is out and thought to take it out for a spin. I want to focus on the differences with the previous version and as such I won’t get into the same level of detail as with my original article.

ND1

One of the interesting new features is support for Visual Studio 2013 (RC). I like messing around with prerelease software and finding tools that can work with can be tough. I mostly use VS2012 for the present though, due to the number of 2010 & 2012 projects that I need to support. Ndepend features quite a lot of UI improvements and a general hint of inspiration from Visual Studio 2012; that much is evident in the whole application. »Read More

MySQL

Go to hell. Go to hell, you and your unreliable upgrades and password resets. Call me back when creating a new database user does not kill the goddamn server.

Oh, if only all the popular applications and WordPress supported PostGres or MSSQL; I’d uninstall you from our servers in a heartbeat. But no no no, you’ve managed to entrench yourself into being the open source database for some reason, having hacks (who create hacks) that don’t care about software engineering use you until they abuse you (or you abuse them; whatever comes first), only ditching you when they become big (call me Facebook).

You were a toy database, you are a toy database and you will be a toy database for years to come. And yet, I cannot get rid of you and that’s why I hate you for the hours I’ve lost administrating every little nuance of yours, due to idiotic bugs and idiosyncrasies.

“But James” a naysayer would say. “Database engines are not an easy thing to develop for and it being open source, it’s reasonable to have varying degrees of code quality as well as bugs”. Sure, every software has bugs yadda yadda yadda. Yet there are so many MUCH more complex pieces of software (RDBMSs included) that don’t have the absurdly stupidly unpredictable behaviour of that pile of horrifying crap that’s called MySQL. I don’t know why; I don’t care why. If MySQL (or whatever the latest fork is called) wants to be taken seriously and play with the big boys they should improve their QA performance first and by much. Plus, I don’t have a choice, since most platforms DEMAND it.

Oh, and it being open source is no excuse for such behaviour. Not after being alive for so long.

 

Go to hell,
MySQL (hey, it rhymes).

Fixing a cheap guitar – Marble effect

Well, I rarely ever find the need to write about anything, since, unless I do find anything that’s not already on the web (or at least it being hard to find) I usually don’t bother; secondly, while I’d like this blog to be mostly focused on software engineering, I couldn’t really specialise my personal blog to end up containg only a couple of posts, because the answers for most questions and problems in regards to software design and development that I face daily, are already somewhere out there, probably in Stack Overflow along with good to excellent and descriptive solutions.

Having said that, I wouldn’t care for the amount of visitors I get, since my purpose with these posts is the potential help they may provide to someone searching the web for a particular issue I may have commented on, not that I wouldn’t like to have more visitors, but as much as I’d wish to have a popular blog and even make money from it, I prefer spending my personal time on other things rather than writing (and admittedly, there are many better writers out there with far better skills).

Now that we’re done with the excuses about my non-software engineering posts, we can focus to a side project of mine that I’ve been doing for about one month now. So, on August I became the owner of an almost-new Jackson JS32T. Here’s a (stock) picture of it:

262904-1000x1000As a guitar, this is a cheap model; about €300-350 new (supposed you were able to find one), but I liked how well thought out the construction was. The neck is maple with a rosewood fretboard and feels great, almost greatest than all of my other guitars by being thin and “fast”. The body is Indian Cedar (not limited to that, but more on that later) and the rest is what you would expect in a cheap guitar: non-locking tuner, a no-name tune-o-matic bridge (but no tail-piece since it’s a string-through model) and Jackson humbucking pick-ups that are not the worst OEM pick-ups I’ve ever listened to. The only real downside apart from the cheap hardware, was that the previous owner had scratched the shorter pointy edge of the guitar and there was a lot of exposed bare wood. This had to be fixed. »Read More

Holy Tonewood

I have a problem with unsubstantiated claims that are based on “personal experience”, belief or statements “simple and/or obvious knowledge” which are in turn non-provable in the lab. This especially applies to musicians who seem to find all kinds of differences and using “experience” in order to convince everyone else about what’s the proper way to do things.

»Read More

LSR Guitar Machine Heads/Tuners

Last month I bought a few guitars to add to my collection. One in particular was a Jackson JS32T Rhoads, a cheap Flying-V style guitar. I decided to make this my project guitar and replace the cheap parts with better ones.
»Read More

Οι Αυθαίρετοι

Πριν από 23-24 χρόνια όταν ξεκίνησε η ιδιωτική τηλεόραση στην Ελλάδα, ένα από τα πρώτα ιδιωτικά κανάλια πρόβαλλε μία ανατρεπτική για τα δεδομένα τηλεοπτική σειρά. Τους Αυθαίρετους.

Οι Αυθαίρετοι λοιπόν ήταν μια σειρά με έναν πολύ απλό θέμα: Είναι δύο οικογένειες, του Αντρέα Χατζηγιώργη και του Κώστα Χατζηγιώργη (ουδεμία συγγένεια) οι οποίοι ζούνε στην ίδια πολυκατοικία και μισιούνται θανάσιμα. »Read More

The 4 Laws of Modern Mobile Games

There’s something about those iDevices (with Android ones following soon after) that signified a colossal change in how we used to deal with our phones: Embedded marketplaces.

A simple comparison between a, let’s say, a Windows Mobile 5/6 application and an iPhone one reveals the effect that the Marketplace had, not only in the distribution of said app(lication), but on its whole design as well. Instead of hunting around registration codes you now just click buy and that’s it. Same goes for the installation. These are infrastructural changes which make sense when combined with this new distribution model. But what about the apps themselves?
»Read More

Orwell was right after all. But Huxley was no more wrong.

privacy-erase

Have a look at this: http://ipcommission.org/report/IP_Commission_Report_052213.pdf

This is the report of a group of people with the pompous name of “Commission on the Theft of American Intellectual Property” in which they post such gems as
»Read More

Ensuring your code’s quality with NDepend.

Maintaining high code quality on your projects is always a noble goal and (unfortunately) one that is very easy to lose track off and start drifting from. Naturally, tools and automation help us stay on the right path.

NDepend is a tool and a Visual Studio add-in designed to provide insights on the quality of your code and help you identify potential problem areas. Its focus is on analysis and report generation rather than automagical fixing you can usually find in other products (which admittedly can’t go very far).
»Read More

Eurovision 2013

My feelings about eurovision are mixed. On one hand I always have the hope that will act as a means to unify people through the universal language of music (even if limited to european and neighbouring countries). On the other hand one needs to have a listen of the quality of the majority of participating songs and the comments on youtube to quickly dismiss any pretenses about people not acting like braindead media victims. But this is a topic for another time.

I also tend to not watch the contest because it drags on for way long but I tend to see who (and what) won each year. But this year, my old enemy, the flute made an unexpected counterattack.
»Read More

INTERMISSION: Top Gear Season 19 is awesome

Enough said. This season has surpassed almost everything else there’s to see in television. Find it and watch it. You won’t regret it.

The obsolete nature of Internet Explorer

Here’s a declaration I’m making regarding the nature of web projects I’m willing to undertake:

Support for the latest non-beta versions of every web browser occurs at no extra charge to the total development cost.

Support for inherently non-updatable browsers (such as Internet Explorer in Windows XP which goes up to 8) incurs an extra 66% to the final cost of development. The same charge applies for support for the Opera platform.

Support for arbitrarily older versions of a browser (such as Internet Explorer 6) or very old operating systems (such as Windows 2000) incurs an extra 150% charge to the final cost of development. The same charge applies for platforms that are not included in the following list at the moment of the writing: Internet Explorer 10, Chrome, Firefox, Safari 5+, embedded browsers in the Android, IOS, WP8+ platforms.

»Read More

New beginnings (again)

I’ve been with Interworks for almost a year now. It was an interesting ride, with its ups and downs, and people who were usually pleasant to work with (apart from some specific exceptions) and achieve results. I had a good time thanks to most of the people I was working with, but it’s time to end.

»Read More

The evolution of Forum Engines? Let’s hope so!

I’ve talked about Forum Engines in the past. My conclusion was that “we have to live with them”:

In the end, I am not sure what a proper replacement for a forum engine might be and so far it appears to be the prime method of supporting a community. Established social websites do help, but exchanging the whole of your on-site community for a Facebook one might be a mistake (depending on your site’s context).

It’s only good news then that Jeff Atwood announced his new company which specialises in releasing a forum engine that tries to do away with the bloat of the past: Civilized Discourse Construction Kit.
»Read More

What in the name of Santa Claus?

Despite the title, this has nothing to do with Santa Claus. This post is about an ASP.net quirk and its solution (kinda).

It’s a known fact that ASP.net WebMethods as provided by the ASP.net AJAX framework use what’s known as the path info of a url in order to map a request to a Web method. In other words, suppose you need to call a WebMethod called AWebMethod() in page APage.aspx. Suppose your application resides in http://anapplication.com (I really spent some time thinking about proper names about these. Really).

Now, in order to call that particular WebMethod in ASP.net you need to use the quirky path info method/trick/way (contrast that with the much more sense making controller-mapped actions of any MVC pattern), such as:

http://anapplication.com/APage.aspx/AWebMethod

See the /AWebMethod thingie there? The framework is smart enough to detect that APage.aspx segment before the /AWebMethod one and figure out that the first one is a file name, so the second one has to be an additional argument, in the way Querystring and URL fragment identifier are. I’m not sure if the URI’s formal specification actually supports this, since it’s been entirely possible to have a directory with a file extension in Microsoft’s OSes since the DOS era (it goes without saying in Unix-based OSes), the above path could easily have been a directory.

 

So, what’s the problem?

Just a moment, I need to add a little bit of exposition to the above. Now, in ASP.net, the HttpRequest object which represents the current request, has the following two properties (amongst others):

HttpRequest.FilePath,
HttpRequest.PathInfo

FilePath gives you the path of the file in a request, without the Querystring, the scheme or the host parts. In the example I used above, FilePath would give /APage.aspx. PathInfo should return AWebMethod. Well, imagine my surprise when FilePath returned /APage.aspx/AWebMethod and PathInfo returned an empty string.

Try as I might, I couldn’t find any useful information on the matter, apart from the fact that this behavior changed between betas of .net framework v4.0. We are using v4.0 indeed, but that still made no sense, as this certainly wasn’t the beta version.

Instinctively, I performed a Windows Update on the server. After the updates were completed and it did reboot, it started working properly. Naturally, I had a look on the list of the installed updates, but nothing really seemed to apply to my case.

 

I still have no idea why this worked. Basically, I have no idea why it didn’t work the first time, but there you go. Update your servers regularly.

StyleCop, the Destroyer of Productivity

There’s a Visual Studio add-on called StyleCop. StyleCop is a source code analyser, which, unlike FxCop (and Visual Studio’s Code Analysis function) operates on the source code of your projects rather than the final compiled assemblies. In other words, it focuses on the looks rather than the works.

The purpose of StyleCop is to ensure that everyone on your team uses the same style everywhere. You can of course use other tools and conventions to achieve that, but any assistance is welcome.

 

StyleCop looks good on paper, but I’m having a few issues with it. Here are some:

  1. It’s too developer resource demanding while not offering much on a productivity level. In other words, if you don’t at least try to keep a consistent code style as a singular developer or as a team, StyleCop won’t help; you’ll likely be overwhelmed by thousands of warnings which will probably discourage you from using it.
  2. Even if you decide to sit down and fix the spaces and the missing full stops from the documentation, it’s unlikely that your code will improve. You won’t get better resource management (as with some of FxCop’s fixes) nor you’ll have any kind of code pattern automatically implemented or even hinted for.
    StyleCop should be treated like a polish which must be applied on an already excellent product.
  3. Just because StyleCop says so, it doesn’t mean you have to have it as such. There are rules shipping with StyleCop, which, to a majority of people won’t make sense, be an already debatable decision or might simply not fit the company’s requirements. For example, I consider an absolute absurdity to use spaces for indentation, but I realise that other developers might disagree. You can (and should) of course disable certain rules but this only allows for that much customisation.
  4. Writing your own rules is a pain. Not only it’s nearly impossible to find any custom rules on the internet (that’s the only one I could think of actually), writing your own is no child’s play. Well that’s an overstatement, but still, you’ll have to dig down writing code and implementing some parser logic if you need to implement your own rules. In expense of your, you know, actual software development (unless of course you do it just for the heck of it, in which case I’d love to know about your work)?
Despite the above, I still use StyleCop. I make sure that my code remains maintained all the way though and even so, I can’t say that I’ve gained much by using it. In fact, unless you are obsessive compulsive with how your code looks, you might find it hard to justify the extra amount of time required by using StyleCop. However, if I were forced to choose between StyleCop and Code Analysis (FxCop), I’d go for the second one without a second thought.

PS. I just found out about this: http://stylecopplus.codeplex.com/ – Haven’t downloaded yet, but it looks promising.

var $=function(id){return document.getElementById(id);}

This. This is what ruined half of my day today. The person who wrote this was more clueless than a 9 year old who never had any computer experience at all. Dear person, I don’t know you, but I hate you.

The above abomination killed pretty much every single jQuery related statement in a page. I cannot imagine WHAT might have driven that particular person  to put something like that in code. Here area few possible explanations about The Person In Question:

1) TPIQ had no experience with jQuery, but was a bit adept with Javascript. “Geez Louise” TPIQ might have thought “all them scripts crashing like no tomorrow and me gots no idea why.” And he decides to fix it, probably ignoring the fact that ID based jQuery selectors follow the CSS syntax.

2) TPIQ was a Prototype user. Although, if that were the case for the above statement, someone’s mind performs some awfully big leaps of logic.

3) TPIQ just wanted to make “the god damn plugin I downloaded” to work. That would imply some knowledge of Firebug but I refuse to accept the complete absence of jQuery’s existence by anyone who knows what “a Firebug” is.

4) TPIQ was a complete newbie, he threw that fix in and suddenly, due to a f***load of scripts loading in the same page, due to some twist of nature and jQuery’s essentials (I’m guessing here, so cut me some slack) it actually worked.

 

Apart from the real cause for the existence of this bloody atrocious murdering “code-shiv’s”, this isn’t even the worst part. It also manages to be completely inelegant, since TPIQ could have simply written:

var $= document.getElementById;

 

Agreed, it would produce the same crap on the page, but at least it’d have shown some sophistication and might, perhaps, maybe a reason for its existence. Or you could simply pair it with a comment it you know and give me a wonderful ride in your mind’s distorted view of reality.

Yeah. You suck, person.

The downward spiral of the European “Union”

It’s a bit hard to ignore reality and focus on the screen of my monitor these days, especially since I live in Europe.

Oh Europe. A collective of countries, about the size of the U.S. Unlike the U.S. however, Europe’s members never really learnt how to put their differences aside, a couple of years now. E.U.’s roots barely count half a century, following two devastating wars, while over the other side of the Atlantic ocean, all member states achieved statehood way earlier.

What’s the point in all this? Simply put, with the Chinese factor attempting to embrace hard capitalism (rather successfully so far) and the US steadily losing its influence on the world, it’s up to the E.U. to attempt to become a balancing factor in the world’s affairs. And boy, do they fail miserably at that or what?

 

This post was authored from a computer in Greece. Yes, we still have communications, groceries and no martial law. Greece is under an economic turmoil, but even with the media exaggerating (things are bad, but this is no third world country… yet) this situation is not irredeemable. As a country, we’ve been forced to take very hard measures to compensate for our sinful past. Or so they say. You see, what most fanatics seem to forget, it’s that the majority of the population in any country in the world are not thieves. They want to make a dignified living, raise their family, open a business etc.

While one cannot deny the problematic mentality of a minority (Greece’s public sector attracted most these folks), it’s grossly unfair to doom a whole country into oblivion and undeniably insulting to tout the “it’s for your own good” mantra – especially when most economists argue about the effectiveness of the measures; hell, even members of organisations that advocated the measures in the first place don’t seem to agree about the route that was selected.

 

This post is not about doing an economic analysis; you can find far better authorities on the matter than I can ever hope to be. This is a plea of sorts to European citizens who resort on the media. Remember that you can and will be next. Waiting for your governments to act is ridiculous; they seem content with sending the cops to beat 13 year-olds. The future of the E.U. stands on your right to vote and unless we, as E.U. instead of separate dissonant member countries decide to take action (any action), you are all going the downward spiral route, along with those of us who are on the ride already.

Switch to our mobile site