Amazon.com Widgets Nick Hodges | A man's got to know his limitations

Some Food for Thought About AppWave

By Nick at March 30, 2011 01:40
Filed Under: Delphi, TechBiz

Here are some facts, thoughts, and a conclusion concerning AppWave.

  • Embarcadero has announced their latest thing called AppWave
    • Marco has a pretty good article about it on his blog. 
    • It appears to be sort of a “AppStore for Windows”.  You can sign up for the AppWave store and publish your wares.  It looks like Embarcadero will provide the tools to virtualize your application, as well as to provide sales support.  You just write the app, post it, and watch the cash meter go up.
  • Amazon has an interesting announcement this morning,
    • They are creating a “CloudDrive” for storing your music out in the cloud.  You’ll be able to play your music from any computer, as well as from your Android phone.
    • You can get 5GB for free (I signed up already).  You can get more storage by buying songs and music from them, and the storing of Amazon-purchased MP3’s doesn’t count against you.
    • This follows closely on their announcement last week of their own Android marketplace.

amazon

Amazon started out as bookstore online, but they have expanded to selling almost anything that can actually be shipped  via UPS or Fedex, and more importantly – electronically.

And in the last few years they’ve moved beyond even that to being a leading player in the cloud space.  They have their own digital book platform in the Kindle. They are knocking on Netflix's door with their own Instant Video offering. Their EC2 platforms are pretty cool – you can basically own a computer out on the cloud for a very reasonable price – probably less than you would spend on purchasing and maintaining a physical box.  You can remote into the machine and manage it like it was your very own.  You can clone the machines with a click of a button.  Pretty powerful stuff.  And a pretty compelling, forward thinking business. 

I think it is safe to say that Amazon is not fooling around.

Apple and Google both should be looking over their shoulders.  Apple should be concerned about Amazon cutting into the iTunes arena, and Google should be feeling the pinch on the cloud computing side of things.  Amazon is coming strong into their space. 

Okay, so here is the conclusion I promised:  One of Embarcadero’s end-game plans for AppWave is to get bought by Amazon. 

Amazon is the only one of the players in this space not tied to their own OS, and thus can be the one that provides an AppStore for Windows.  (Google is OS neutral at best, but obviously interested in promoting Android and ChromeOS, and Apple, well, they are Apple, aren’t they.)  AppWave theoretically could be something that launches Embarcadero into the big-time, but it’s also something that the big-time players could very well want to buy.

And of course, one has to believe that Microsoft won’t be silent in all of this.

Thoughts?

The First Thing You Should Do

By Nick at March 28, 2011 12:47
Filed Under: Delphi, Software Development

We’ve all done it:  File|New|VCL Forms Application.  Then we drop a button and a memo, double click on the button, and write some code that prints out to the TMemo. You start out just “testing something out”, but then you end up working on a routine, or maybe even a class or a collection of classes.   Your “tests” are runs of the app, pushes of the button, and then looking at the output in the TMemo on your form.

TestApp

Sometimes you were just trying something out, but sometimes the result actually ended up being useful. 

At some point, though, you probably realized that this was a bit “amateurish” – not what “realy developers” do.   Pretty soon you discovered that all the cool kids did their horsing around in Console Applications, using WriteLn to output “SUCCESS” or “FAIL” or other data, depending on how things went for testing.  This worked out well – you could even set up a basic test harness to track the output by diverting the output somewhere it can be tracked.

Console applications are sexy and lean and mean.  You were cool.   You would eventually work what you were testing out up into a class and writing a bunch of sample code to make things work.   You probably ended up with a separate unit that had a class in it and a console application that called into that unit.  Way cooler that  your app with the button and the TMemo.

Okay, so that is all well and good.  But I’m going to argue that there is even a more sophisticated thing that we should be doing when we need to build something new – something that is designed specifically for proving that something works:  DUnit.  That’s what the really cool kids are doing. 

If you are creating something new, and there is even the slightest chance that it will end up being real and used in production, the first thing that you should be doing is not a simple form or a console application, but a DUnit based application.  This way, you can easily write tests to define how the thing you are writing should behave.  You  almost certainly end up writing a class (and you do put your functionality in classes right?).  You can then play around with that class, add tests, and see how things work.  You’ll get that beautiful green bar sliding across the DUnit Runner app, and you can continue to work up your class, add tests, and make changes with confidence as you work on stuff. Eventually you’ll end up with a tested class that you have confidence in.

It’s the ultimate way to “test something out”.  (Yes, I’m trying to sneak in the back door to get you to do Test Driven Development.)

DUnit ships with Delphi, and Delphi provides a nice wizard for creating a new DUnit application.  So there’s really nothing stopping you from doing DUnit first.

Flotsam and Jetsam #27

By Nick at March 01, 2011 14:07
Filed Under: Flotsam and Jetsam
  • Cary Jensen and Marco Cantu are getting ready to put on four of their Delphi Developer Days events.  I’ll be returning to my place of birth to speak at the one in the Baltimore.  I’ll be talking about Unit Testing with Delphi and DUnit.  I’m really looking forward to it, and if you are on the East Coast, I hope you can make it. Otherwise, I hope you can make it to another one of the three events. 
  • Blog of the Week:  If you guys aren’t reading The Delphi Hater’s Blog, then you are missing out.  This guy is a championship calibre ranter.  Great stuff.
  • Inspired by RADPlates, I’ve put my Live Templates Scripting Engine on BitBucket.  It is not real clean code right now – it allows you to insert the current date, time, and datetime into a script.  It includes example templates that replace “date” with the current date, for instance.  You can specify the Delphi formatting string for the date as well. (Same for ‘time’ and ‘datetime’).  I can see this being used for defining comments, TODO items, etc.  I think I’ll be turning my attention to this for a while now that THTMLWriter has reached a good stopping point.
  • As I’m sure you know, ChristChurch, New Zealand was recently hit with a devastating earthquake – much of the city has been destroyed.  There are a lot of developers in New Zealand – many of them Delphi developers – and they are banding together to help.  Dave Clegg is from New Zealand, and he’s posted about how you can do that – by buying a cool application! You can go to http://www.appappeal.co.nz/ and purchase an app, and 100% of the proceeds will go to Earthquake relief.  Many of you were so generous after the Haitian Earthquake (that was a lot of fun for a good cause) and so I hope we can be equally as generous to the folks in New Zealand.

Flotsam and Jetsam #26

By Nick at February 25, 2011 08:39
Filed Under: Delphi, Flotsam and Jetsam, Personal
  • Reader Paul Vandermyd kindly pointed out something that I had missed – that the individual downloads on GoogleCode download pages have download counts – and it seems 102 of you have kindly downloaded THTMLWriter 1,0 release.  But come on, people – don’t download it – pull it from the repository using Mercurial!  Anyway, now I have to figure out how to automate the uploading of the ZIP files with a 1.0 or 2.0 label on them, depending.
  • If you have Delphi XE then you have Version Insight – the feature that integrates Subversion (and potentially other SCM systems) right into the IDE.  I did a lot of work on that feature when I was at EMBT (well, actually, I did a lot of listening and suggesting; Dave Wilhelm did all the work….). The feature itself is derived from the MPL-based DelphiSVN project, and thus is itself an open source project.  As such , Uwe Schuster (who was actually involved in the pre-release development) has been updating the project, including starting in on support for git and Mercurial.  Sweet.  You can follow Uwe’s progress on his blog.
  • Sadly, if you go to my old Embarcadero blog you see this message: “This user has elected to delete their account and the content is no longer available.”  There was (if I do say so myself) a lot of good content there, and suffice it to say that despite the message, I didn’t choose to delete my blog.  Happily, much of the content lives on in the Google cache.  I’ll be trying to capture and republish as much of the good stuff as I can.
  • I’m beginning to wonder whether Simon Stuart is really a human being and not some sort of super-alien sent here from the planet Code-a-thon.  They guy is amazing -- “prolific” comes to mind.   If he’s not making Kinect work with Delphi he’s wrapping up the Twitter API in a Delphi component.   His latest project is one after my own heart – RADPlates.  I’m a strong believer that the Live Templates feature of the IDE is easily the most underappreciated and underutilized of the many features in RAD Studio.  Live Templates are really XML files, and RADPlates makes it easy to create Live Templates without the hassle of the XML stuff.  Highly recommended. 

THTMLWriter 1.0 Released

By Nick at February 21, 2011 05:33
Filed Under: Delphi
  • Okay – THMTLWriter is now an officially 1.0 product.  That means the following:
    • The default branch will now contain all updates to the 1.0 release – that is, bug fixes and doc updates.
    • The develop branch will the place where new development takes place – that is, any new features, developments, and updates.
    • I think that I’ve implemented the entire HTML 4.01 spec
    • Everything that can have a unit test does have a unit test.
    • I won’t change the interface until I release a 2.0 version.
    • I think there aren’t any more bugs or more things to do
    • The docs are not complete – I will continue to update the docs on the default branch.
  • Where is THTMLWriter 2.0 headed?  I’ll implement the HTML5 features as well as overload some additional methods with some of the commonly used default parameters.  That is, I’ll add more methods with the “typical” attributes as parameters so that you don’t have to do parameters yourself as much.
  • If you are actually using this thing, I’d love to hear from you. Google code doesn’t provide any way for me to tell if even one of you has pulled the code.  Winking smile

Flotsam and Jetsam #25

By Nick at February 19, 2011 06:25
Filed Under: Delphi, Flotsam and Jetsam

Flotsam and Jetsam #24

By Nick at February 11, 2011 07:36
Filed Under: Flotsam and Jetsam

Flotsam and Jetsam #23

By Nick at February 01, 2011 08:15
Filed Under: Delphi, Flotsam and Jetsam
  • Do you have TestComplete skills?  Do you know someone who has TestComplete skills? If so, we want to hire you. (Well, we don't necessarily want to hire you if you merely know someone with TestComplete skills, but you get the idea.  Money mouth)
  • StackOverflow Question of the Week:  What are the pros and cons of using interfaces in Delphi? Lot’s of good discussion and some nice answers.
  • THTMLWriter Update: I have finished and checked changes to fully support the <table> tag and its subordinate tags, including ensuring that they aren’t used out of order.  I have but three tags left (<dd>, <dl>, <dt>), and then I think I will be “done” in that I’ll declare it to be a “1.0” release.  At that point I’ll “freeze” the interface and won’t make any more changes to it.  Any subsequent additions will require a new interface at that point.  Your feedback gratefully accepted.  In addition, the IHTMLWriter interface now descends from ILoadSave to remove the duplication.
  • I hereby officially declare Hodges’ Law: “The first person in an argument to compare the software development process to building automobiles loses that argument.”
  • Danny Thorpe pointed me to this interesting article talking about using existing Wi-Fi connections to expand the coverage of a given network.  I’ve often wondered about this – that is, why don’t cell networks make it easy for people to expand their networks?  I’d be willing to bet that if you go to the mall, the Sprint Store (or the Verizon store, or the AT&T Store or the T-Mobile store) all have some sort of repeater or other type of device that ensure that their store has a five-bar signal.  (Who would buy a phone at the store where there is a weak phone signal?)   Why not put those all over the place?  Why not install them in office buildings, malls, airports, etc., where people are? Why not sell them (give them) to people to install in their homes?  Or why not make the phone able to call over any given WiFi network, allowing the phone to work even where there is no cell tower at all?  It seems to me that this is an unexplored and unexploited feature for cell network providers, and something that could drastically increase the already high value of a cell phone. Heck, I’d be willing to share some of my bandwidth with my neighbors to increase and improve the coverage in my neighborhood.
  • Another great argument about why unit-testing is so cool and powerful from Uncle Bob.

Book Review: Fall of Giants by Ken Follett

By Nick at January 29, 2011 11:37
Filed Under: Book Review

I haven’t done a quick review on a book for a while, but it hasn’t been because I wasn’t reading.  I’ve actually been re-reading two of my favorite books by Ken Follett, The Pillars of the Earth and World Without End .  I’m a big historical fiction guy, and historical fiction doesn’t get much better than these two.  They are excellent and educational reading – the latter begin one of the main reasons I like historical fiction.  I know more about medieval life and building cathedrals than I ever thought I would after reading these two.

But that’s not the book I’m reviewing now.  I mention them because the response of the literary community to Follett’s release of the above books was “shock and surprise”.  I guess that is because they quite different from the spy/thrillers that he had written before.  The response couldn’t have been because they didn’t think Follett had it in him, because clearly he does.

So Fall of Giants should come as no surprise.  It’s a great read and masterfully done -- exactly the kind of book I love to read – sweeping epic tales of five different families from five very different places and backgrounds that interrelate with each other as they are “swept up” in the tumultuous events in Europe before, during and after the First World War.  Along the way you see familiar events unfold – the Russian Revolution, the Battles at Marne and Somme, and something I wasn’t really aware of, the direct military support of the Russian White army after the end of the “Great War”.  The characters are richly drawn and the cross paths with real historical characters like Woodrow Wilson, Lenin, Trotsky, and David Lloyd George.  Along the way we see coal miners struggle for better working conditions, women fight for the vote, and the Russians overthrow the Tsar. 

Follett clearly has moved beyond being a “mere” suspense novelist, and I for one am very happy about that.  Fall of Giants is the first in a trilogy, with the second book covering the Depression and The Second World War, and the third dealing with the Cold War.  I for one am anxiously awaiting the next book in the series, due in 2012.

Flotsam and Jetsam #22

By Nick at January 28, 2011 04:35
Filed Under: Flotsam and Jetsam, Delphi, Tech Stuff
  • SDTimes has an interesting article about a “Delphi Starter Edition”.  It appears that the Starter version will limit the revenue of a user to $1000 in overall revenue, as well as limiting all database access.  They are going to be priced at $199.  It also seems like there can only be five of them in any given organization.  Folks in the community are discovering that the Starter Edition will be available February 1.  And now Tim Del Chiaro has confirmed it in his blog.
  • We recently changed the name of our “Inside Sales Representatives” to be “Account Relationship Managers”.   This lead to the following statement in our weekly Manager’s Meeting: “Well, that’s really in the hands of the ARMs”.  Heh Heh.
  • I want a Rovio.
  • I just realized that I have a Windows key on my keyboard and that I don’t think I’ve ever used it once. Now, I know that the key has been there for a long time, but I just now realized that I simply never press it. Maybe I should be.  Do you guys actually ever hit the Windows key?
  • Today marks the the 25th year after the Challenger explosion, and I heard them on the Radio talking about it, saying “Do you remember where you were"?”   I remember it as clear as day. I was standing in the front office at Pasadena High School, where I was a Latin and English teacher.  Our principal, Tom Hancock, came out of his office with an ashen look on his face and said “Challenger just exploded”.  It hit our area particularly hard, as Pasadena is a suburb of Houston, with a major NASA facility nearby (The famous “Houston Control”), and the astronauts had lived and trained in the area.  That moment is a very start memory for me.

Flotsam and Jetsam #21

By Nick at January 21, 2011 08:58
Filed Under: Flotsam and Jetsam, Delphi

What is the Next Layer?

By Nick at January 18, 2011 22:44
Filed Under: Delphi, Software Development, TechBiz

The software of today is really made up of a rather long series of layers, with each layer reducing the complexity and increasing the capabilities of software developers.

The first developers literally programmed in ones and zeros.  They had nothing more than that – pure binary. Heck, in the beginning, the notion of “programming” didn’t even really involve software, but rather the manipulation of hardware – actually flipping switches to physically alter the bit settings on the device. 

But soon enough, along came an assembler, which is basically a layer of abstraction over binary code.  Then Grace Murray Hopper invented the notion of a compiler, and this brought about human readable languages. (Some argue that assembly is human readable – I guess I mean “readable my mere mortals”). 

But of course, every language has to have an operating system to code against.  Once we had that idea down – that of writing a human-readable language against the operating system (OS) - we wrote Application Programming Interfaces (APIs) to make calling into the OS easier.  Instead of coding against interrupts in DOS, we had a neat, fairly easy to use thing like the Windows API. 

But naturally, we weren’t happy there.  We needed another layer!  So along came things like the VCL and MFC.  They were layers on top of the OS’s Windows API making it easier to write Windows programs.  (Of course, if MFC makes it easier, I’m not sure what word to use to describe what the VCL does for Windows programming.  Winking smile)

But that wasn’t good enough for us, now, was it.  We needed yet another layer.  So along came things like Java as a cross-platform layer, and for Windows, we now have .Net.  At its base level, .Net is another level of abstraction on top of the Windows API.

So (crudely put) we have .Net on top of the Win32 API on top of the OS on top of Assembler on top of binary code on top of physical switches.  Layer after layer. As a result, we have managed to tame the immense complexity of the computers that we have today.  Without all these layers, we’d never be able to write the software that we use today.

So the question that pops into my mind is this:  What is the layer that we are going to put over things like .Net and the VCL?

I myself have no idea, despite having thought about it quite a bit.  I’m guessing that it will be something that we haven’t even really conceived of yet – or something that only people way smarter than you and I are thinking about today.

Nevertheless, I bet you have an idea.  What is it?

1000 Tweets

By Nick at January 15, 2011 20:45
Filed Under: Delphi, General, Personal

Hard to believe that it has been 1000 tweets for me.  Here’s my first one.

1000tweets

Flotsam and Jetsam #20

By Nick at January 13, 2011 20:25
Filed Under: Delphi, Flotsam and Jetsam, Unit Testing
  • My Dad got me this clock for Christmas and I now have it hanging on my wall at the office here at the World-wide Headquarters of Gateway Ticketing.  It is definitely an eye catcher and a conversation starter.  I was able to figure out some of the numbers (12, 6, 7, 8, and 11), but the rest I had to get from a blog post that explains them all. 
  • I happy and honored to say that the Delphi Feed for my blog is now part of DelphiFeeds. Hopefully this will mean that these amazing pearls of wisdom will benefit a broader audience than just you fine people.
  • We here at Gateway are in the process of migrating to Mercurial for our source control (I’ve probably mentioned that before….) and we are considering using bitbucket.org to host our repository.  Thus, I’ve created a small Delphi project there called DelphiClean. It’s not much right now, but it is serving the purpose of letting me see how things work on BitBucket.  I will update it in the future, particularly with the ability to provide a custom list of extensions to be “cleaned”.
  • Now that Delphi has cool language features like Generics and Anonymous Methods, there is a lot of very cool code being written. Combine that with the ease of sharing code on places like GoogleCode, BitBucket, SourceForge, etc., and it ‘s a pretty cool time to be a developer.  The indefatigable Alex Ciobanu is a guy who is producing some amazing code.  Alex create the DeHL project, and now he’s created out of that a project called Collections.  Well worth a look.  The fun part is that Alex creates a full suite of unit tests for his code, so you can use it with confidence, and if you find a bug, you can write a failing unit test for him, and he can fix it, incorporate the now passing test, and we’ll all know if that bug appears again.  (There’s my daily pitch for unit testing….) In any event, Alex’s code is quite remarkable, and he’s a valuable member of the Delphi RTL team.  Here’s hoping some of this great code finds its way into the RTL.
  • Danny Magin posts about the Developer Solutions Conference.  I wish I could go – alas, duty calls – but you can. (I’m particularly interested in the Android development stuff.  Alas)  Plus, it’s in Vegas, baby!

Flotsam and Jetsam #19

By Nick at January 11, 2011 03:58
Filed Under: Flotsam and Jetsam

My Book

A Pithy Quote for You

"Golf is a game of luck. The more I practice, the luckier I get."    –  Ben Hogan

Amazon Gift Cards

General Disclaimer

The views I express here are entirely my own and not necessarily those of any other rational person or organization.  However, I strongly recommend that you agree with pretty much everything I say because, well, I'm right.  Most of the time. Except when I'm not, in which case, you shouldn't agree with me.