Weekly Random: #102

Excellent

Miscellaneous

Favorite Twitter Feeds Recently

Good Music Videos Recently

Technical

Posted in Random | Leave a comment

Weekly Random: #101

Miscellaneous

Technical

Posted in Random | Leave a comment

Weekly Random: #100

Excellent …if you like robotics

Misc

Technical

Posted in Random | Leave a comment

Weekly Random: #99

Excellent

Misc

Music Videos

Technical

Posted in Random | Leave a comment

Weekly Random: #98

Misc

Technical

Posted in Random | Leave a comment

Weekly Random: #97

Misc

Music Videos

Semi-Technical

Quotes

  • Money doesn’t solve all your problems, but it solves your money problems. – James Altucher
  • The question can easily be turned around. I don’t think I’ve ever met a believer in a creator god who had much interest in answering the question, “If your god created the universe, then who created your god?” – Mike Laursen (source)
Posted in Random | Leave a comment

Weekly Random: #96

Misc

Technical

Posted in Random | Leave a comment

Weekly Random: #95

Miscellaneous

Technical

Quotes

“The more I study religions the more I am convinced that man never worshiped anything but himself.” – Sir Richard Francis Burton (1821 – 1890)

“To see with fresh eyes, see to learn something new, not confirm something old; see with a rage to understand, not a rage to conclude.” – Edward Tufte

Posted in Random | Leave a comment

Weekly Random: #94

Miscellaneous

Excellent Music Videos

Technical

  • There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.” -Phil Karlton + Martin Fowler
Posted in Random | Leave a comment

Weekly Random: #93

Miscelleanous

Music Videos, Recent Favorites

Technical

Posted in Random | Leave a comment

Java vs .NET, I am no longer ambivalent

I’m not one to take part in flame wars. Luckily very few read this blog, because I feel compelled to go on record with the following statement:

“No developer that is proficient in both modern Java and Microsoft .NET, would choose to use Microsoft .NET for building new backend type systems.”  – Me

So it’s perplexing to me why there seem to be so many .NET based companies, at least in the local area.  I understand that using what the development team already knows and has experience with will trump most other aspects, especially in an environment that has already standardized on the Microsoft platform.  However, I don’t understand why more .NET developers don’t even try looking outside-the-box. I think they’d be amazed.

Not that long ago when interviewing and trying to win new consulting work, I would say that I was ambivalent to actual platform.  That was of course key to finding work since most environments already had chosen their platform, but I was truly proud of that way of thinking. I really didn’t care. I just wanted to build cool things and either platform made that possible to the same extent.

That is no longer the case. In fact, now if a team tells me they are using .NET, I will likely try to avoid working there.  .NET gets in the way of building cool things.  It’s not that it can’t be done.  (See stackoverflow for example.)  It just can not be done as quickly or as efficiently or to the same degree of excellence when using more modern techniques and tools.

It’s difficult to have a real discussion on this because very few developers have worked on both platforms in any real capacity (much less the alternatives like RoR, Grails, Node.js, etc).  It is also developer nature to have a strong bias towards whatever it is that was learned first and/or known best.  I consider myself one of the lucky(?) few to have toggled back and forth on these platforms a few times over the past 10 years, but I know I am biased as well no matter how hard I’ve tried to evaluate .NET objectively lately.

Here are just few of the reasons that I’ve become more set in my ways:

  • Visual Studio is not nearly as productive as Eclipse, IntelliJ, or Netbeans.
    • I’ve been using VS 2012. From a pure UI performance perspective, 2010 and 2012 seemed like a step back.
    • With VS, it’s basically required to also purchase ReSharper. Even with ReSharper, the refactoring support doesn’t compare to that in the major Java IDEs.
    • VS is simply slow. This still surprises me because Java GUIs are not known for their responsiveness, and yet they are more responsive than VS for many operations, especially when using contextual navigation.
    • It really irks me when the VS UI becomes unresponsive (which happens often) while it does some other task. Some other task that should’ve been a background task not blocking the UI.
    • Coming from Eclipse especially, with it’s constant compiler, having to constantly save and build in VS is painful.
    • The VS continue-and-edit capability is weak when debugging ASP.NET apps. It provides a fraction of the features available with the standard JDT.  And much, much, less capability and efficiency if used to using JRebel with Java …especially on larger web type systems that take a while to start.
  • All of the useful .NET development utility type libraries feel rough, incomplete, and generally just way behind the Java equivalents.  Some examples include NuGet vs. Maven, Hibernate vs. Entity Framework, and Spring IoC vs. Ninject.
  • The .NET development community as a whole (and I’m generalizing heavily here), does not seem to have enough experience or sufficient background in building robust systems.  While there are bad developers everywhere (and probably even more in the Java camp due to larger community size, age of the platform, and a bias towards stagnant enterprise environments), what I’m referring to is the difficulty in finding good information and best practices online.
    • As just one example, it is very difficult to find definitive information on how to use transactions correctly in Entity Framework on ASP.NET MVC project.  Most .NET developers I’ve come across seem to assume that everything works out-of-the-box.  And in the case of not knowing your actual database transaction boundaries, it does work …most of the time.

Looking over this list so far, I’m not sure it’s really indicative of why it is I no longer enjoy using .NET personally though.  Maybe it’s the  little things. Like being able to attach a remote debugger to a runtime instance and profile with jVisualVM, or that there’s access to all sorts of excellent libraries like Apache HttpClient and Google’s Guava. Or that the Java concurrency package is light years ahead of anything in the .NET framework.

I’m not an Oracle fan.  I actually despise the company and their database. And I’m no Microsoft hater.  I have a significant interest and likes for many things coming out of Microsoft.  Also, note that I really have no concern for costs. (Though why, given all the above, companies choose to pay large amounts to Microsoft without at least a long-term objective intending to move off that development platform is beyond my intellect.)

If the developer horde did read this blog, then I’m sure I’d gets lots of comments of the sort “java sucks almost as bad as .NET you old timer. use <new-awesome-platform> instead”.  I’d refer those people to the excellent post by Zef, “Pick your battles“.

I simply want to build cool things that get used by real people who probably don’t care about the underlying technology. Better. Faster. Reliably.  For that reason, I no longer want to work with Microsoft .NET.

Alas, on Monday, I will once again head in to an office to do, you guessed it, work using .NET.

Posted in Miscellaneous, Technical | 6 Comments

Weekly Random: #92

Miscellaneous

Semi-Technical

Posted in Random | Leave a comment

Weekly Random: #91

Excellent

Miscellaneous

Technical

Quotes

Posted in Random | Leave a comment

Weekly Random: #90

Miscellaneous

Interesting, but technical

Technical

Posted in Random | Leave a comment

Using com0com and RealTerm on Windows 8 (x64) & 8.1

Every new version of Windows seems to make this harder. (See updates below for windows 8.1 x64) Continue reading

Posted in Technical | 5 Comments

Weekly Random: #89

Misc

Technical

Posted in Random | Leave a comment

TED Talk Roundup: #1

A summary of some of my favorite TED talks (and a couple of interesting related links) that I’ve watched. I’m fairly certain any one of these will be more interesting than whatever is on TV.

Excellent

Very interesting, but might be controversial for some

Not TED, but still very interesting

Posted in Miscellaneous, Random | Leave a comment

Weekly Random: #88

Misc

Technical

  • Visualization can surprise you, but it doesn’t scale well.
    Modelling scales well, but it can’t surprise you. ~ from talk by Hadley Wickham

Quotes

  • I have as much authority as the Pope, I just don’t have as many people who believe it.   – George Carlin
  • There are 200 countries in the world now. Do these people honestly think that God is sitting around picking out his favorites? Why would he do that? Why would God have a favorite country? And why would it be America out of all the countries? Because you have the most money? Because he likes our National Anthem? Maybe it’s because he heard we have 18 delicious flavors of Classic Rice-A-Roni! It’s delusional thinking! And America is not alone with this sort of delusions. Military cemeteries around the world are packed with brainwashed dead soldiers who were convinced God was on their side. America prays for God to destroy our enemies. Our enemies pray for God to destroy us. Somebody’s gonna be disappointed. Somebody’s wasting their fucking time. Could it be everyone? – George Carlin
Posted in Random | Leave a comment

Posting compressed JSON Content to ASP.NET Web API Controller

I had a requirement to POST gzipped JSON content to a .NET web api controller. It turns out the technique for doing this is not easy, or at least not common knowledge. This is the solution I came up with that works:

Continue reading

Posted in Technical | Tagged , | 7 Comments

Matlab Integration and Alternatives, such as SciPy

This post contains informal notes collected while researching options and techniques for using Matlab to do complex numerical programming work while integrating with existing code bases. Also includes notes and links on alternatives. I used a trial version of MATLAB R2012B to build a proof-of-concept against an existing Java based project.

Continue reading

Posted in Technical | Leave a comment