March 2005 - Posts

h6315 update - at last
Filed under: ,
PostedThursday, March 31, 2005 11:08 AM by Nino

h6315 owners – rejoice!  T-Mobile’s dropping the hammer on HP has paid off.   Get the update from T-Mobile.

-Nino

 

Update:  At least one user says the update is goodness

Carmack on J2ME (MIDP) development
Filed under: ,
PostedWednesday, March 30, 2005 10:09 AM by Nino

John Carmack, of id Software fame has been muddling with J2ME; here are his initial thoughts.  

Two quotes from his post:

  • “Write-once-run-anywhere. Ha. Hahahahaha.”  (Amen.)
  • . . . there is something deeply wrong when text editing on a 3.6 ghz processor is anything but instantaneous.”   (oh yeah. . .)

Kind of curious, me thinks, that I ran across this as I was getting my Java <gasp!> environment setup again.  I re-imaged my laptop last month, but didn’t get my Java development environment back in place until this week.  Just what, exactly, am I doing with a Java dev setup on my box? Well, I believe in the whole “…keep your enemies closer..” thing, not to mention that I [feel that I] cannot have an effective .NET CF vs J2ME discussion without some time in the trenches on the other side.  I’m no J2ME expert (yet), but I definitely think that Microsoft took the ‘better’ approach to mobile device development.

-Nino

The Office
Filed under: ,
PostedWednesday, March 30, 2005 12:21 AM by Nino

Much ado has been made about NBC’s new series “the office”.   I think that the original BBC series “the office” is a must-see (and much better); check it out. 

-Nino

The Mobile Minute 89
PostedMonday, March 28, 2005 11:47 PM by Nino

Some of you may notice that I have added a favorite icon (favicon.ico) to my site (oh, the excitement!)  I created this piece of, um, artwork with VS.NET ( File > New > File > Icon File).  I also happened to find this site which will convert a picture into a FavIcon.  

Oh, and a colleague of mine from the UK is blogging; here is Steve’s feed

Software / Hardware 

 Development

Information / Services

swizzay!
Filed under:
PostedThursday, March 24, 2005 8:00 PM by Nino

[sigh]  I gave in.  I translated my blog site (http://nino.net/blog) at Gizoogle.  Results here.

Enjoyable was seeing it turn my subtitle of “Mobility stuff that’s swell!” into “Mobility shiznit that's swizzay!”.  There were better ones, but I’m not going to reproduce them here; I don’t want my blog blocked by anyone’s content filter.    A good laugh nonetheless.  For further definitions of tranzilated words, check the Urban Dictionary.

-Nino

Digital Audio stuff
Filed under: ,
PostedThursday, March 24, 2005 2:25 PM by Nino

Omar Shahine has some great posts about digital audio.  I particularly enjoy his posts on his search for an iPod replacement (as I’m looking, too).  FWIW, I do like my iPod but very strongly dislike the fact that I cannot sync it with WMP 10 (not to mention the whole iTunes debacle).  Instead of installing a piece of software that is a gigantic POS (yes, iTunes), I use Anapod Explorer.   If you have another digital audio player (Creative, Dell, iRiver, Rio) you may want to check out their other offerings

...and for those wondering, I’m currently leaning towards the Creative Zen Micro.

-Nino

CableCARD - your new friend
Filed under:
PostedSaturday, March 19, 2005 2:04 AM by Nino

I’m looking into building myself a Media Center Edition box (MCE), and I came across this really cool (and quite overdue) technology – CableCARD.  Read on..

Ed Bott gives us an example of why CableCARD is good - and why we, as consumers, should fight for it.  Check out this eHomeUpgrade post

Fellow Cincinnati Time-Warner customers check this out  I’m not yet certain if they are available here; I will inquire and report back.

Additionally, here’s part of an interview with some MCE folks about CableCARD support, and a New York Times piece on the subject (I recommend reading this piece).   From what I gather it looks like the update to MCE 2005 will support CableCARD.

-Nino

Never write a bad SQL Server query?
Filed under:
PostedTuesday, March 15, 2005 11:20 PM by Nino

.. so says, Tom Rizzo, director of SQL Server project management.

We have optimized the hell out of it, and you will never write a bad SQL Server query” 

I think he meant  to say “… you will never write a poorly performing SQL Server query”; I certainly can see people writing bad (i.e. grossly inefficient) queries.  Tom says that these won’t be a problem...hmm.   Thoughts?

-Nino

CINNUG meeting tonight!
PostedTuesday, March 15, 2005 1:25 PM by Nino

See you at 6:00pm!   

Steve Caravajal will be talking about The Importance and Implementation of Client-Side Scripting in ASP.NET

http://www.cinnug.org

-Nino

The Mobile Minute 88
PostedTuesday, March 15, 2005 1:18 PM by Nino

 I’ll start this issue of TMM with some friendly reminders:

1) The November CTP of Visual Studio 2005 for is still the best release so far for device development. Check out these words of wisdom from Amit Chopra  ..and don’t forget the patch

2) Early registration for MEDC 2005 ends on March 29, 2005  I’m still not certain if I’m going to make it.. :-/

Software / Hardware 

 Development

Information / Services

Yet another reminder that context matters...
Filed under: ,
PostedTuesday, March 08, 2005 3:56 PM by Nino

I found this story funny.

-Nino

The Mobile Minute 87
PostedSaturday, March 05, 2005 12:19 AM by Nino

..and in other news, I caught a link to this article about VSTO 2005 from TSS..  and from Steve M comes HoHo Pie (can you say stomach ache?)

Software / Hardware 

 Development

Information / Services

-Nino

3d desktops and Windows logo compliancy
Filed under:
PostedFriday, March 04, 2005 6:16 PM by Nino

Rory gives ‘em heck   For my two bits, I’ll concur with several of the reasons Rory has laid out; it has also been my experience that things like SphereXP and Object Desktop just don’t bloody work right.  Mostly it is just little glitches here and there, but sometimes it is larger items (someone at my last project ran SphereXP; he experienced a BSOD every time his screen saver kicked in).  To this day I still have not found a solid replacement for explorer.exe as the shell on a Windows box.  Anyone?  

Aside from faults with the products themselves,  I think that one of the reasons that alternative desktops / shells fail to be a satisfactory experience is because the [unfortunate] majority of applications fail to follow simple guidelines.

One of my biggest complaints revolves around applications that write to their installation directory. [sigh…]  I have found myself particularly aware of this in the last four months since committing to run as non-admin, and several programs I have installed come to mind.  I am definitely sensitive to this now when I write Windows apps. For those of you looking into this, Keith Brown illustrates (search for the section ‘Writing Code That Can Be Used by a Non-Admin’) how-to in .NETIt is but a few lines of code to make the life of the user of your application more pleasant.. c’mon, do it!

-Nino

 

 

 

my recent project
PostedFriday, March 04, 2005 1:41 PM by Nino

Some time ago I blogged that I was going to post about my last project.. and now, after three re-writes (*sigh*), here’s the post..

The location and schedule:

Started off in New Jersey in June 2004; after a few months we moved down to D.C. to be with the server team.  The schedule was, um, challenging (to say the least). 

The business:

Uh… government stuff (can’t say any more than that)

My role:

Architect / Technical Lead / Mobile Fix Team Lead (so it says on my PCF )

The technology:

Custom device running Windows CE .NET  (WinCE 4.2); the device featured a 320x240 screen, Bluetooth, and 802.11b.  The application is written in C# on the .NET Compact Framework 1.0 [1].  The OEM provided us with native APIs for all the radios (802.11b, BT), keyboard, screen, cradle, and scanning.  Yep, native APIs.  When we first met with the technical folks from the OEM in July, they were surprised to hear that we were developing with .NET CF (they were expecting us to use eVC++).   

Most of the APIs we could P/Invoke to; however, for the special cases, we handled the native bits using two methods: 1) we wrote a thunking layer in eVC++ [that we hit via P/Invoke] and 2) we used unsafe code.   We also leveraged a native DLL (via P/Invoke) to handle pinging.  Speaking of libraries (and third party items), we used OpenNETCF’s Smart Device Framework v1.2 and Resco’s AdvancedList .NET.  OpenNETCF == Goodness.

SQL CE 2.0 was leveraged as a local data store. To get around some concurrency issues with SQL CE, we looked at using message queueing on the device, but due the complexities involved here[2], we chose another route (whilst remembering the K.I.S.S. principle).

Data was brought to the device on a regular basis (i.e. outside of normal app usage) via the synchronization engine[3] I wrote.  It consumed web services hosted in WAS (IBM Web Sphere) (eek!) for not only the initial data synchronization, but all communications to and from the server.  The web services, of course, were called over a secure connection.  To make matters worse (joke), WAS went to Oracle to get it’s data (interestingly enough, both of these products were running on Windows Server 2003).  We also had a nifty thing called a notification service, but that would be difficult to explain (aside from what you can glean by the name) without going into a [legally] questionable amount of detail.

Development Infrastructure:

VS.NET 2003 / VSS 6.0d (ugh!).  In my many years, I have used VSS more often than not [4], and it proves (with proper care and maintenance) to be an OK source control system.  This engagement found us on a very s l o w network, which made using VSS (and pulling things down from the Internet) a rather large frustration.   For example, opening a seven project solution (350+ files) took eight minutes (VS.NET/VSS integration); performing a GetLatest on the solution from within the IDE – twenty-eight minutes.   During my tenure on the project, and upon my departure, I suggested that they explore an alternative source control system. I suggested SourceGear’s Vault

Well, they listened to me – after I left.  Instead of the eight and twenty-eight minutes we experienced before, they are now seeing thirty-five seconds and ninety seconds respectively!!!  To quote [the initial reaction of] the developer who stepped into my role when I left: “Vault f-ing rocks!”.  I asked him again this week, it being a few weeks into the switch to Vault, and his response was “Life is a dream [with Vault]”.  I will note that they have experienced a minor issue with date/time stamps on keyword expansion – SourceGear support has said that this will be fixed in Vault 4.0.

I wrote a build process from scratch which leveraged NAnt (and NAntContrib) [5].  It not only build our .NET CF app, but also our helper eVC++ DLLs, the setup DLLs for the CABs, and the CABs themselves.  For deployment, I built three CABs: CAB1 contained our app, CAB2 was the OpenNETCF SDF, and CAB3 was a ‘master’ CAB that contained them both (for debug builds, I also included the SQL CE Query Analyzer CAB)

A one CAB solution was needed because of desire to, well, only have a one CAB to deploy.  Note: Microsoft does not officially support nested CABs (someone correct me here if need be..), so the docs would be no help here; with some assistance I got this working how I needed. (Thank you again, Reed!)   Some of you may be asking what about the SQL CE engine CAB?  No need for that; the OEM has SQL CE embedded in the ROM.   I’m sure some of you are also wondering why I needed to rebuild the OpenNETCF SDF CAB (personal thanks to Neil C).  The customer required that the device have a Trusted Environment…so, I had to execute signfile.exe against every assembly [prior to building the CABs].  After the CAB was built, I would transfer it to the SMS server (using an FTP Task) to be pushed to the product testers.  SMS what? Enter the SMS 2003 Device Management Feature Pack.  Goodness.

I need to give thanks to Neil Cowburn for his excellent NAnt CabWiz task and to the guy that wrote the FTP task (can’t remember where I got it from and he didn’t put his name in the code).

Almost forgot..deployment numbers.  A secret again, but suffice to say it is the largest mobile app deployment I have worked on. Ever.

Hmm… and that’s all I can say about that.  I certainly learned a lot on this project (and not just in the technical domain).  It was my first WinCE project (all others have been PPC / Smartphone / WM), and we had a ton  of interesting technical challenges to address…so all in all, mobile goodness! :-)  I’m guessing that some folks are thinking “WTF?” about a few things I have said, or are curious about more detail.  I am sorry to say that I cannot oblige your requests unless I wish be on the pointy end of legal action.

-Nino

 [1] Yes, it is .NET Compact Framework 1.0, *not* 1.1 as many people think.  The version of the .NET Compact Framework is only 1.0, despite it shipping along with the .NET Framework 1.1.

[2] We explored some options in creating our own System.Messaging (that namespace does not exist in CF v1.0), but some of the marshaling was not possible without a lot of work, and, quite frankly, we did not have time for that in our schedule. Additionally, we looked at writing a thunking layer and hitting the COM interfaces into message queueing, but decided against that as well.

[3] This customer not being a “Microsoft shop”, there were no SQL Servers to be found; SQL Server <> SQL CE replication is out of the question.  So we looked at Oracle Lite <> Oracle replication.  This option was rejected as well, although I got a chance to work with Oracle 9i Lite for the first time.

[4] My experiences have been with VSS, Vault, StarTeam (pre-Borland), CVS, and PVCS (pre-Serena)

[5] I had to punt (damn!) and exec devenv.exe instead of being ‘pure’ and using csc.exe (which is where Neil is getting to).   Given that I had a limited timeframe to create the build scripts and some issues with web services, this was the way to go – unfortuantely.

Now playing: Jeff Buckley - Dream Brother