Tag Archives: programming - Page 2

Technology Can Do That, So Let’s Not

I wonder what technology is coming to and at the same time, I wonder if I’m just getting old.  I look at things that were normal for me at the peak of my programming days and wonder if older developers thought I was an idiot for doing things that way.  For example, did the old procedural programmers of old see object-oriented design as ridiculous, slow, and inefficient?  Maybe.  But OO programming is pretty much the standard now.

But for some reason, I am confused as to why implicit typecasting is suddenly “awesome".  We had that way back when in VB and Classic ASP and we were hated for it.  Then .NET came along and strong-typing became the thing to do.  Now we’re back to implicit typecasting and scripted languages just like we had with ASP.

But the thing that’s really got me confused is cloud computing, why everyone thinks it great to rely on someone else instead of relying on yourself.  I guess the argument is “they can do it so much better than we can, so why not let them.”  There’s no more building yourself up?  You have to start at the top?  Talk about immediate gratification.  That’s bitter old man talk, there.

At my job, a co-worker (thankfully not me) has an integration project using Amazon Web Services (AWS).  As best I can tell, it’s a web service that sits in front of a message queue system.  To be slightly vague about the project, our client sends us a request with a questionnaire.  We collect the responses to the questions and send each individual answer back to the client as a message via AWS.  This infrastructure was forced on us; not our choice.  So, my old-timey brain is thinking, “why must a unit of work (a completed questionnaire), be transmitted in discrete pieces when it needs to be a single unit on their end?”  The answer to this is “don’t worry about it.”  The reason is a new crazy programming concept: eventual consistency.  Apparently our client is so hip and modern, they are using both “the cloud” and “eventual consistency” in their application design.

Eventual Consistency is nothing new.  Airlines have been using it forever.  Did you lose your luggage?  Is it now five states away?  It will eventually get to you and everything will be fine.  FedEx started using it with SmartPost.  If you ever had something shipped via SmartPost, you could watch the package get shipped all over the country, but eventually it would get to you.  With every real-world application of Eventual Consistency, you are guaranteed to get what you want, but never sure when it will happen.  Why, in any case, this became an acceptable solution is beyond me.

To wrap this up, but to leave it with some final, head-shaking, “why is this acceptable” thoughts, here’s some of the documented guidelines when using Amazon Web Services:

  • When you make a request for new messages, you may only request up to 10 new messages at a time.
  • If you request 10 messages, you may not get 10.  You may get less than 10, even if there are more than 10 messages in the queue.
  • If there are a very small number of messages in the queue, you may get zero.
  • Despite the inability for AWS to deliver the messages you request when you request them, all of the messages are available for viewing through their control panel.
  • When you send a message, you get no acknowledgement that it was sent successfully.  If you did not get an error during sending, you assume it was sent successfully.
  • You have no idea if the message was delivered to the destination queue successfully.  You will only know when the receiver picks up the message, and that is send as an acknowledgement on another queue.  You must query that queue and match up the acknowledgements with your initial sent messages.
  • The acknowledgement queue has all the limitations of the aforementioned message requests.

This is true progress.

Leaving the Best Behind

It’s with a heavy heart that I make the announcement that I’ve given up on the Opera browser.  I’ve used Opera for many years now and was a pretty ardent supporter and evangelist.  Things have changed recently and after much research, I’ve settled on a new browser.

Why did I give up on Opera?  The last release, 12.x, was a total disaster, and sent a lot of people, including me, running back to older versions.  It’s been getting more and more common that new major releases have serious problems and I kind of reached the point of saying “why am I dealing with this?”  Another reason is that I got tired of sites not working with Opera, usually financial websites.  When I have to switch browsers just to pay my bills, why not just switch altogether?

The other reason to leave came to me during a technical seminar on mobile application development.  The presenter showed a graphic with a 1:1 mapping of operating system to browser.  iOS=Safari, Android=Chrome, Windows/Windows Phone 8=IE.  There was no Opera there.  There is no chance that Opera is going to enjoy deep integration like these browsers.  It will always be an app, not a part of the operating system.

I was pretty entrenched with Opera.  It had some features I really enjoyed and some things I had to have.  I began my initial migration process by converting a lot of my specialized functions into bookmarklets.  This allowed them to work in any browser.  But there was a feature in Opera that kept me from moving: the ability to launch an application from a custom menu item.  I did tons of research and study of developing plug-ins for each browser.  In the end, I found a way to do what I needed.  And my new browser of choice?

Internet Explorer.

It’s surprising, even to me.  The browser mocked by the whole internet community is now my choice of browser.  And you know what?  It’s not all that bad.  It’s been quite a while that all browsers were acceptably fast and people began arguing about milliseconds of difference.  People would get involved with arguing over support of obscure protocols, which I never used. But what I did use, and IE supported, was the custom menu and the launching of external programs.

In retrospect, I guess I could have made that feature work with Firefox, but FF suffers from the same non-integration as Opera, it also has a significant reliance on 3rd-party plug-ins, which slow it down and require regular maintenance.

The biggest thing I’m missing from Opera right now?  Per-site settings, like custom CSS, JavaScript, and plug-in disabling.  And I’m finding that even IE isn’t invulnerable to poor website coding.  But on the other hand, no viruses.  You surf the Internet with a bit of intelligence and you’ll be fine.  Even in Internet Explorer.

Well, well, well.

image

A big fuck you to Pizza Hut’s web developers.  I’ve watched the PizzaHut website change on what seems like a weekly basis.  I  applaud their efforts, despite those efforts being in PHP and somewhat overbearing on the JQuery effects.

However, I get a little peeved when the Opera browser is intentionally excluded.  I mean, it’s not like you’re doing anything different to code for Opera, you just do it right and it works.  Code to the standards and things just work.

Distributed stupidity

I recently decided I would put my Zune tag on my Live Spaces page. I used the HTML Sandbox gadget to place the HTML on the page. In IE, all is good. In Opera, it wouldn’t show up.

First thing I checked was my Allow Plug-ins settings for the site. I leave it off by default because Flash is just too overused by ads anymore. It was off, so I turned it on. Still nothing.

Then I started looking at the HTML source of the page. The HTML sandbox uses an IFRAME. Hmmm. So I right click the place for my Zune tag and choose Frame>Open in new tab. Its address is not spaces.live.com, it’s start.com. I don’t have anything in Opera saying it’s ok to have plug-ins for start.com. So I add the entry for start.com and allow plug-ins. Now my tag shows up.

Because everything is so distributed anymore, it takes a lot of investigative work to discover why things don’t work. It’s no wonder that so many people can’t run in a more protected mode – like in my case, disabling all plug-ins by default – because to have any decent usability, you have to have so much technical understanding about how to troubleshoot isolated issues.