Showing posts with label internet. Show all posts
Showing posts with label internet. Show all posts

Thursday, August 22, 2013

Software Development: Old School or New School?

Since I started writing software when I was 5, I’ve been doing it a long time.  I’ve seen a lot of changes in the technology – from the BASIC language all the way to assembly, desktop to server, fat client to thin client, you name it.  But the trend I’ve seen over the last 10-15 years is troubling.

There is absolutely no question that the Internet has changed things radically.  Much of that change is good.  There is, however, an aspect of the Internet and the way that software is written that is disturbing.  Many of the time-tested, well-thought-out, efficient ways of coding are disappearing and are being replaced by junky, ill-conceived, incredibly inefficient substitutes.  People that are learning to code now are mostly coding for the web, and it is very upsetting how little they understand of the actual science behind computing, mostly because the software development tools in use today don’t even support the best, time-tested concepts.

As part of my job I do software development in both Delphi (a modern-day variant of Pascal, very similar to Microsoft’s C#) and PHP.  Delphi is extremely efficient, and has adopted most of the best ideas that have ever come along in computing.  PHP is at the opposite end of the spectrum – extremely inefficient, lacking support for many of the most basic tools that real high level languages offer.  If you start to talk about JavaScript (the programming language that powers web browsers) the situation is even more dire – it is far more basic than even PHP.  Yet nearly all of the hype you hear in development is around HTML 5, JavaScript, Java, and PHP.  All of which are, frankly, very immature, and are evolving at glacial pace.

One of the technologies that is falling by the wayside is object-oriented programming.  It allows developers to create virtual objects that you can copy, manipulate, and act upon extremely easily and efficiently.  Java is object oriented, but it has other problems of its own (efficiency and security being the main two) that are causing it to fall out of favor quite rapidly.  PHP has some support for objects, but frankly it’s pretty terrible.  HTML and JavaScript don’t even attempt to support it at all.  People that are learning to program now don’t seem to have any kind of understanding of how much easier their lives would be if they had access to object-oriented development tools.  And the situation is actually getting worse, not better.

Another concept that is lost on the web is code compilation.  Pretty much ever since the dawn of computing, developers take code and run it through a compiler to produce the set of instructions that are native to their computer so that they don’t have to be translated at the time the software is run.  Consider how much more efficient you are at speaking your own language than you would be at trying to converse in Korean by using a dictionary, having never heard or seen a word of Korean before.  Compiling does the translation ahead of time (just once) so that software runs as quickly as possible.  Yet again, web technologies don’t do compilation – they do the “translation” at the time that code is executed, making things incredibly slow in comparison.  In addition to that, since the translation is done at run-time, that means you have to distribute the actual source code (the original code you’ve written) to your software in order to run it… so anybody who wants to could take your code and modify and redistribute it… or in cases where you’ve got content you want to protect, like music, or a movie, everybody can see exactly how it is protected so that protection can be removed.  Java has the ability to do a sort of rudimentary compilation just before code is executed, but it is still far from true native code, and it still slows you down considerably.

It’s almost like about 15 years ago people said, “We don’t care about all of the research and learning that has occurred over the last 50 years.  We’re going to come up with a new way of doing things, no matter how good some of your ideas may be.”

As someone who works in both worlds it is incredibly frustrating.  Especially when I have to interact with people who have only ever spent time in the newer web technologies, because they don’t even have a remote concept of what they are missing out on.

There are a ton of other great technologies that seem to be falling by the wayside.  True code debugging (the ability to see what is happening internally inside of software as it is running, making testing much, much easier) is extremely rare.  RAD (Rapid Application Development), once considered the epitome of efficient design and coding, is almost unheard of today.  True integration with databases is pretty much gone too, and in its place are incredibly difficult-to-program, very bloated communication methods that making coding difficult, especially if it is to be done securely.  Forgive me if fname.value=’Frank’ is easier (and conceptually much more sound) than “UPDATE users SET fname=’Frank’ WHERE userid=56”, but this is exactly the sort of difference I’m talking about.  For the most part web developers aren’t even remotely aware that the tools we had for doing things were much better than the best of what they have access to today.  It’s really quite sad.

I’m not saying for a minute that these newer tools don’t have a place.  They do.  But very little, if anything, is being done to improve the tools and incorporate the lessons that 70 years of computing science have taught us.  There’s almost a wall there where anyone who works in the newer tools will automatically dismiss ideas from the old school just because they are old school, not because there is any real reason to do so.

So I have to admit that I don’t really having to work with HTML and JavaScript and PHP.  They all seem incredibly antiquated to me.  Almost like I’m stepping back in time 30 years.  In many cases it is much harder to do things in the “modern” tools than it was in the contemporary tools of the early 1980s.  Things that I’ve taken for granted in what I would call a “real” development environment just don’t even exist when working with their “modern” counterparts. 

Would you enjoy having your Ferrari swapped out for a Model T?  And somehow I’m expected to like it.

The result of all of the backwards ways of doing things with “modern” tools is that it takes forever to get anything done.  I can easily write “equivalent” code in Delphi five times faster than it can be done in PHP even though at this point I probably know PHP as well as anyone could.  And, on average, it takes about half of the lines of code in Delphi to accomplish something as it does to do the same thing in PHP.  And yet the Delphi code literally executes more than a hundred times faster, and provides a better user experience.  Yet somehow people are critical of my decision to continue to use such a tool.  Only because they don’t understand it, and in most cases refuse to even try.

Much of the stagnation in web technologies is due to the bickering and in-fighting that happens between companies that build tools for the web.  HTML 5 is, in reality, very poorly suited for what we are asking it to do today.  And everybody involved wants their own ideas for improving it to become the standard, but nobody else is willing to adopt those ideas because they aren’t their own and they can’t profit from it.  In the 1990s and early 2000s, for example, Microsoft tried to extend HTML 5 with new features in Internet Explorer and they got shot down by everyone else, because they weren’t “following the standard.”  Well, yeah, they didn’t… because there wasn’t a way of doing the things they wanted to in the standard.  Yet when people do actually get together to try to improve the standard, nobody can agree on anything so nothing gets done.  We’ve been talking about HTML 5 for nearly ten years, and it is still so poorly supported across different browsers that you almost can’t use it.

Trying to creating interactive web pages is a an absolute disaster – programmers have to take care of every low-level event (click button, move mouse, release), and those events differ from browser to browser.  Want to play music or show video on a web page?  Nobody can even agree on how to do that so you have to produce three separate versions of every file, then figure out which version to use when you view the page.  HTML wasn’t ever even designed to handle any multimedia other than graphics, either, which is why so many web pages use Adobe Flash, despite the fact that everybody hates it.  Want to do things like drag-and-drop?  Good luck.  It’s really hard to do, and usually has to be coded multiple different ways to work in all popular browsers.  But in my ‘old school’ Delphi drag and drop doesn’t even require writing a single line of code.  Just set an object property saying ‘yes, you can be dragged’ and ‘you can accept dragged objects.’

Adding database interactivity to a web page is an exercise in patience and frustration.  There still isn’t an official way for a web page to pull data from (or insert data into) a database.  It’s still a very tedious and time consuming thing to do.  Don’t even get me started on how nobody does it securely because that’s even harder to do.  But we’ve had databases for 50 years so basic interactions like this should be a cakewalk.  In Delphi, all I have to do to retrieve record 56 from the users table of the database is users.FindKey([56]).  The same thing in PHP is at a minimum of 4 lines of code – much more if you do proper error checking.  And in JavaScript?  Well, don’t plan on working on anything else that afternoon.

It goes on and on.  Want a web page to interact with a Joystick on the web?  Not happening.  Or generating output for a printer with full control over how it looks?  Again, not really possible.  How about photo editing?  Not very plausible in HTML.  How about a page that uploads a picture to your cell phone over USB?  Nope, HTML doesn’t allow it.  And it will likely be at least a decade before such things are actually possible and usable.

All of the above problems had already been pretty much solved by traditional development tools long ago. 

And somehow many of the companies that have produced the strongest tools and environments for software development in the past are abandoning the more mature technologies.  Microsoft is trying to force everybody to the write Windows 8 apps, despite the fact that this environment, too, is missing some of the best things from their traditional desktop environment.  Apple invests very little in desktop technologies.  And Linux stagnated years ago.

It’s really pretty sad.  If people were smart they’d take the best ideas from wherever they come from instead of trying to reinvent the wheel over and over.  And as it stands today, the technologies that power the web – HTML, JavaScript, etc. – are more of a wooden, square wheel than most developers realize.  The traditional ways of doing things don’t have to be left behind – they could easily handle the same tasks that the newer technologies are doing, and in most cases do a far better job of it.  Or, some of the concepts from traditional development could be added to the newer tools.  But, for some reason, never the twain shall meet.  It’s frustrating having to choose between high functionality, quick development, and high performance, and working on the Internet.  It would be really nice to be able to do both.

Thursday, August 13, 2009

Cool setup for taking pictures

I have started using a set of 3 devices that really make the process of taking pictures very cool.

  • Canon PowerShot SD960 IS (really, any camera that uses SD memory cards would work here

image

  • Eye-Fi SD/WiFi card

  • Verizon MiFi2200

This combination lets me do some cool things. 

Using the Eye-Fi card in combination with the Verizon MiFi is pretty slick.  The Eye-Fi card has a Wi-Fi radio and it can be configured to connect to the Internet via the Verizon MiFi.  This means that I can:

  • Automatically transfer pictures to my computer without removing the memory card from the camera, or plugging it in via a USB cable, even when my computer is not nearby.
  • Automatically upload pictures to a photo sharing site on the Internet from anywhere Verizon has coverage.
  • Geotag photos to record the location they are taken.

The Eye-Fi card transfers pictures automatically whenever it has a WiFi connection, so if I carry my Verizon MiFi with me in my back pocket as I take pictures, those pictures are totally automatically and silently uploaded to the internet and down to my computer as I am taking them.  I don’t have to do anything to make it happen; it all happens in the background.  I can be anywhere that Verizon has coverage and my pictures will be waiting for me on my computer even before I get home.

The Eye-Fi also supports the major photo sharing sites out there.  So when I want to I can log into my account and tell the Eye-Fi servers which site I want use for storing pictures, and the pictures are automatically uploaded to that site in real time.  I don’t have to transfer them to a computer first; as long as I’m in Verizon’s coverage area the photos will automagically appear on my choice of web site.

The Eye-Fi card also supports Geotagging, so the physical location of each picture is recorded automatically. 

Besides all of this cool functionality, I like saying that I connect my Eye-Fi to MiFi over Wi-Fi. 

Now if only I had the Eye-Fi Pro card, which supports the RAW images that I take on my DSLR camera...  Add one more thing to the wish list.

Wednesday, August 5, 2009

Verizon MiFi = Freaking Awesome

I have been in Lubbock, TX this last week troubleshooting some computer problems in a pizza restaurant there.  It went very smoothly overall, and a lot of that has to do with a new toy/tool I picked up at the beginning of my trip… the Verizon MiFi2200 3G router.

I’m going to assume that anyone reading this isn’t already familiar with the device.  It is not only new, but a new kind of product we hadn’t even seen at all prior to about May of this year, so I can’t expect that anyone outside the most tech savvy people will be familiar with this type of device.  Essentially it is a wireless Wi-Fi router that uses Verizon’s 3G network to provide Internet access for up to 5 devices simultaneously.  Since it uses Wi-Fi it doesn’t require that any software be installed on the computers that connect.  It just shows up as a wireless network.  Any device that has Wi-Fi, whether it be a laptop computer, cell phone, Zune or other WiFi-enabled MP3 player like an iPod Touch can get on the Internet quickly by connecting to the MiFi’s Wi-Fi network.  With the ability to connect any 5 devices simultaneously, sharing Internet with family or friends becomes possible as well.

The device itself is very small.  Tiny, in fact.  It is exactly the same size as a stack of 8 credit cards, so it easily fits in a pocket.  Or easily left in a backpack without even noticing that it is there.  It’s quite light as well, weighing just a few ounces.

More than half of the volume of the device is for its battery.  And since it is battery powered, it doesn’t have to be plugged into anything at all for operation.  Just press the (only) button to turn it on, and it automatically connects to Verizon’s 3G network and enables its built-in access point.  From there, all you have to do from a computer is connect to its WiFi network and you’re online. If that computer is setup to automatically use the MiFi’s network it all happens without any additional button clcking. Very easy, very slick.

The Wi-Fi router has WPA/TKIP security turned on by default, and the SSID (access point name) and security key are printed on the bottom of the MiFi for easy access.  It also supports WEP (yuck) and WPA2/AES, so all flavors of 802.11b and 802.11g are supported.  The SSID and security key are both customizable.  It also offers many of the other options you expect to find in modern Wi-Fi routers.

This is not my first mobile Internet access device.  I have had several over the years.  In addition to tethering from my cell phone for the last 3 years, I have also purchased a T-Mobile EDGE PC Card and Cricket USB modem.  T-Mobile’s EDGE has worked well aside from the relatively slow speeds compared to those of 3G networks, but I have been on a plan that allows unlimited data for just $20 per month, so I haven’t cared much.  In most areas T-Mobile’s EDGE is a lot faster than AT&T’s (220-250 kbps downstream has been typical), so it has been quite usable.  In the right geographical areas it actually feels fairly snappy.  But tethering is a little inconvenient compared to a USB device, so I picked up the Cricket USB 3G modem a few months ago.  It has worked pretty well, but Cricket’s network covers a pretty small area compared to other carriers.  When I arrived in Lubbock this last week I knew that Cricket would not be available so I borrowed an AT&T 3G card, but its reliability and performance were disappointing at best.  So I picked up the Verizon MiFi about a week ago and I have loved it. 

Setup would have been a breeze if the first one I got actually worked.  It powered on, but didn’t show up at all in my Device Manager when connected to my laptop.  A quick phone call to Verizon’s tech support confirmed my suspicions that I had gotten a bad one, but one more trip to the Verizon store and a swap with another resolved that problem.  Once I plugged in the second one it showed up as a CD-ROM drive on my computer with the setup software.  Once installed and launched, a click on the Activate option got it up and running.  It only took a few minutes from start to finish.  It would have been nice to not have to go through the activation process, but considering how easy it was, it isn’t much of a hurdle.

It has been so incredibly easy to use and reliable that during the 2nd half of my trip I gave up using my hotel’s Internet access entirely in favor of access via the MiFi.  The connection in my hotel was fast, but went down fairly consistently.  I happily gave up the higher speed in favor of something that just worked reliably, and the MiFi and Verizon’s 3G network did not disappoint.  It just worked everywhere I went.

So far performance has been excellent.  Below is an actual speed test for the device I performed just prior to starting this blog post.  The download speed is actually faster than my Internet connection at home, though the higher latency (ping time) makes general web browsing feel noticeably slower.  Upload speeds are quite good for a mobile device (cable modems, for example, usually max out around 0.38 Mbps), though much slower than my connection at home.  Upload speeds really aren’t very important in a mobile environment, though, so I can’t knock it too much.  I don’t believe that this should be considered as someone’s sole Internet connection, but it sure makes a great mobile alternative.

I haven’t really tested its Wi-Fi signal range, but I have read online that it is good to about 30 feet.  Plenty for its intended purpose.  In most cases it will probably be sitting just a few feet away.

The device, as great as it is, isn’t quite perfect.  Because of its small size the battery isn’t very large, and as a result about 5 hours is the maximum anyone can ever expect to get out of it before needing to plug in.  Fortunately, though, it can be charged using an included USB cable.  I found the battery to drain faster than the quoted rate, but a lot of that is due to the fact that I’m a heavier user than most will be.  The more data transferred the shorter the battery life will be, so I expect shorter run times.  As always, YMMV.

It takes around 12 hours to charge via USB, but that same USB connection also provides Internet access for the connected computer while plugged in.  Unfortunately, plugging into a computer via USB also disables the Wi-Fi radio so ONLY the connected device will have access to the Internet.  This is not true of the AC power adapter, however, which both charges the device and allows the Wi-Fi router to remain active.  Charge time is reduced to 7-8 hours via the AC adapter, but that is still a long time.  (One down side is that while being charged the device is always powered on.)  It would be nice if the charge time was less than (or at least the same as) its battery life, but I guess I won’t complain too much.  How often will I need 5 hours of Internet access in one sitting while mobile anyway?  And being able to use the device via USB makes the battery life limitation seem a lot less confining.  It also has a mode that emulates a USB network adapter, so unlike many mobile devices I don’t have to manually dial a connection to get online when plugged into USB; just plugging it in gets me connected to not only the Internet but also my home network via VPN all automatically.

The other big complaint is with the wireless access plan that Verizon offers. At $60/month it is the same as the other major wireless carriers, but it still seems a bit too high for just 5 GB of data.  I would be a much happier customer if that rate were cut in half.  Verizon offers less expensive plans (a monthly plan offering 250MB for $40, or an on-demand plan at $15 per day), but neither of these is really very useful unless a device like this is going to be used very rarely.  (Unlike AT&T, streaming video from the Internet is not prohibited by the Verizon contract, making the need for 5 GB all that more significant.)  I think that anyone willing to invest in this thing is probably going to fall into the crowd where need of 5GB of transfer is more likely than either of the other options.

So far I have not been able to get my phone to connect to it either.  For some reason it doesn’t even see the MiFi’s wireless network at all, and even when I manually enter the information necessary to connect it still won’t make a connection.  Not a huge deal since my phone already has its own Internet access, but it is confusing nonetheless.  I’m going to have to investigate that one a little further.

The purchase price was $150, less a $50 mail-in-rebate with 2-year contract.  Not great, but not terrible either.  The 2-year contract has a $175 early termination fee (which goes down by $5 per month of active service).

Overall I highly recommend the MiFi2200 to anyone who needs mobile Internet.  It offers so much more functionality than other mobile broadband devices, and does so without much of a price premium. It just doesn’t make a lot of sense to get anything else right now.

Sunday, September 14, 2008

Recent Goings On

You've probably noticed that the number of personal posts has been kind of low from me for some time now. Well, I've been kind of busy working. A typical day for me is 14-16 hours of programming, interspersed with a couple breaks for snacks, to run errands, then sleep for 6-7 hours per night to start it all over again the next day. Not exactly the most exciting thing to write about, so I've kind of kept my keyboard quiet.

But I haven't spent every waking minute in front of my computer; I flew up to Spokane last week to work up there for three days. The trip was a complete success, and I was able to add a feature to our POS system that a huge potential customer has been clamoring for for quite some time.

And prior to my trip to Spokane I spent several days prepping for last Sunday's regional stake conference broadcast by rebuilding the wireless network I setup between three local church buildings and rewiring the satellite room. Lots more time on the roof, with only a little bit of time in the attic. But this time I did got to play in the tunnels. Unfortunately I paid the price the next few days with jello legs from having to walk hunched over.

Speaking of conference, it was a pretty great meeting. And I actually got to watch almost all of it this time instead of running around between buildings fixing problems to make sure the video could be seen in all three.

TV Upgrade

One of the highlights of the last few weeks was the acquisition of a new TV for my living room. I have been using a 34" Sony CRT (tube) TV for the last two years, and it has been absolutely amazing (CRTs still have a MUCH better picture than LCDs), but I've been running into a compatibility issue between the TV and the projector I got in May. Plus I've been wanting something a little bigger anyway. While I was at Circuit City 10 days ago (looking for a projector for the regional conference, actually; not TV shopping) I noticed that the Sony 52" XBR4 LCD TV that I've been keeping my eye on for the last year was on sale, at the best price I've ever seen. It has typically been around $3500-$4000, but it was on sale for $2900. I asked the salesperson if they had any in stock, and they didn't, but they were willing to sell the floor model for $2540, which actually rang up at $2440. It was near closing and Brent and I went in his new So now I have an absolutely massive TV in my living room, and an amazing smaller 34" HDTV looking for a new home. So if you know someone who wants an amazing deal on an amazing High Definition TV, let me know.

For the techies reading this blog, the new model is Full 1080p resolution at 120Hz, and it supports true 24p, for an absolutely jawdropping picture for watching movies. If you're in the neighborhood drop by and I'll give you a demo.

Ike Hits Home

My sister Suzanne and friend Brian decided to evacuate Houston to get out of the way of Ike. Suzanne decided to visit my parents for a week to wait it out, while Brian threw his family in his RV and headed for northern Louisiana. From what I've heard, Suzanne's apartment survived unscathed, but I haven't heard the status of Brian's house yet. I can't say the same for Suzanne's employer's building; it had at least a few windows blown out by the storm. Because of the storm I'm also running some of the services that Brian provides for his customers on a computer here at my place to make sure that his customers continue to have access to their email.

Rock Band 2

Rock Band 2 is out now. Brent picked up a copy at midnight last night, and we played for a while before going to bed. It is essentially the same as Rock Band 1, with a few features added here and there. They didn't fix a couple issues I had with the first, though. You still have to play the same songs multiple times in order to get through the Tour, and it gets discouraging. Overall the guitar parts still just aren't hard enough. Brent and I 5-starred every song we played on Expert the first time through, and even had perfect scores on two songs. Shouldn't Expert be at least a little bit of a challenge?

The cool thing about RB2 though is that you can import/export almost all of the songs from RB1, and the songs you paid for with RB1 automatically show up in RB2 as well. Overall I think I like the songs that come with RB2 better than the first; but I'm still hoping that some day one of these games will focus on some of the bands I liked to listen to in high school, during the peak of the hair band era. Somehow I just don't think of Beck when I think of great guitar parts.

Nostalgia Lane

On Thursday Phyl came over and we were both hungry so we went to Pizza Factory in Provo. I had a Calzone, and it was yummy. But during dinner we were talking about TV shows coming out this fall, and I briefly mentioned that I was going to give the remake of Knight Rider a shot even though my expectations weren't that high. She gave me a blank stare, and I could tell that she hadn't ever heard of Knight Rider, not even when I mentioned David Hasselhoff. Anyway, so she would know what I was talking about we watched an episode of the show. It was the one where KITT's prototype, KARR, escapes from the laboratory. Now that's classic television. Do you know Knight Rider? And have you seen the show?

The Internet Has Changed the World

Two posts ago I ranted about a TV show I saw on Discovery Channel, and its pseudo-science being passed off as legit. Then Brad replied to my post and talked about another episode of the show that he saw on that same night. Then two posts later, someone who was actually involved in the episode that Brad saw posted a reply on my blog. If you had told me 15 years ago that someone involved in the creation of a TV show would contact me about my opinion (ok, it was Brad's opinion in this case, but that doesn't change the point) I would have never believed it. Back then you wouldn't even get a response if you asked for one, and here we got a response that we didn't even go looking for. The Internet has truly changed everything.

Excited For...

I'm excited that Heroes season 3 is starting up here in 10 days. I still think it's one of the best shows on television, even though they had to ruin season 2 because of the writer's strike.

I'm also excited for the new Zune software that is coming out on Tuesday. There are some pretty cool features coming with this update.

Don't Like Working on Sunday

I really don't enjoy having to work on Sunday; it is normally the only day I take off. But we had two Little Caesars stores with significant problems today that had to be addressed. So I had to spend three hours diagnosing problems with one store (their phone line had been cut, which caused problems with our system), then the next 3 hours fixing problems with the other store. That deserves 6 hours of not working sometime during this next week, right?

There is One More Thing

I almost forgot one of the biggest things that has happened recently. Brent bought a brand new Honda Civic a couple weeks ago. It's black, two door. But the black has a mild blue metalic flake to it that's really cool.

That's All, Folks!

I suppose I've rambled on long enough. But thanks for bearing with me through my techie posts to get to the good stuff.

Tuesday, June 3, 2008

Google Search