“100 days with the Nokia N900” and other links…


AG: “So, I thought it was time to begin talking about the migration from the very dated Treo650. In truth, I held hope that Palm would eventually get its act together and develop a platform that would rival all of the current Linux based smart phone offerings (ie Nokia N900, Android, WebOS). Unfortunately, Palm was acquired by HP and a number of executive folks got fired. Perhaps the most interesting trend was that during the time I owned my trusty Treo, social networking became a normal past time for me.”

Windows Phone Secrets “Tip: Tap and hold on the virtual keyboard”

Paul Thurrott: “Most Windows Phone users are familiar with the fact that the “tap and hold” gesture is akin to the right mouse click in desktop versions of Windows, often resulting in a pop-up menu of commands related to the selected object. This gesture is used throughout Windows Phone, including, oddly enough, on the virtual, software-based keyboard.”

“Sony Creative Software on Vimeo”

Vimeo.com: “Sony Creative Software inspires artistic expression with its award-winning line of products for digital video, audio, and music production, as well as industry-leading technology for DVD production and Blu-ray Disc™ authoring. Sound Forge™ Pro, ACID™ Pro, and Vegas™ Pro software have defined digital content creation for a generation of creative professionals.” So far: two videos.

“A Secure Network Drive for Windows Azure Blob Storage”

Jerry Huang: “First you will need to install the Gladinet Cloud Desktop and map a network drive to Windows Azure Blob Storage. …Without further setup, you can drag and drop files to transfer files in and out of Azure Blob Storage. The transfer is under SSL but not encrypted yet once it reaches Azure Blob Storage.”

“Important Info for WP7 Application Developers”

Chris Koenig: “Do you have a Pivot Control stacked inside a Panorama Control?  That would be bad.  Are you using the Windows Phone 7 built-in styles to display text and highlights? If not, it could raise some additional questions. PLEASE read this first one thoroughly (it’s a long read) to make sure you understand what METRO is all about, and what the design checkers will be looking for.”

“HP Showcases World’s First High-speed, 30-inch Digital Color Press”

2009: “HP today announced developments for its HP Inkjet Web Press platform to help print service providers (PSPs) become more profitable and accelerate their transition from analog to digital printing. …On show at an open house event at Los Angeles-based O’Neil Data Systems—site of the first HP Inkjet Web Press beta installation—the press demonstrates how customers can benefit from market-leading total cost of ownership, excellent productivity and a high level of quality.” I heard about this machine while I was working at William O’Neil.

Wikipedia.org Moment: “Colnago”

“In 1960, Colnago saw fame as Luigi Arienti rode to a gold medal at the Rome Olympics on a Colnago bicycle. From the late 1960s through the 1970s, Colnago was generally regarded as one of the builders of the world’s best custom road race frames.”

“Gosling blows lid off Jobs Java nonsense” and other Google Starred Items

 Cade Metz: “Steve Jobs has apparently weighed into the debate over Apple’s decision to deprecate Java on the Mac, and his terse explanation was promptly deprecated by Java founder James Gosling. According to MacRumors.com, a concerned Java developer emailed the Apple cult leader on Thursday to ask about Apple’s plans for the platform, and as he’s been known to do from time to time, Jobs responded.”

“Ubuntu moves away from GNOME”

Joe Brockmeier: “The big news at the Ubuntu Developer Summit? Moving to Unity as the default interface for Ubuntu Desktop with Natty Narwhal (11.04), rather than GNOME Shell. Earlier this year, Canonical representatives had to deny that they were forking GNOME with the work on the Unity interface.”

“F# Goes Open Source”

Miguel de Icaza: “F# is a fascinating language, but I had not really spent much time with it as we could not really distribute it as an open source compiler limiting its usefulness in the Linux and Mac worlds. Now F# can become just another language that developers can use.”

Today’s Google-Starred Items: “33 Developers Leave OpenOffice.org”

Slashdot: “We all knew it would come to this, and it has finally happened — 33 developers have left OpenOffice.org to join The Document Foundation, with more expected to leave in the next few days. After Oracle acquired Sun Microsystems, OpenOffice.org fell into the hands of Oracle, as did a lot of other products. So, last month a few very prominent members of the OpenOffice.org community decided to form The Document Foundation and fork OpenOffice.org as LibreOffice, possibly fearing that it could go the OpenSolaris way.”

“Silverlight *versus* HTML5? Really?”

Mike Taulty: “My tower of blocks above are meant to indicate that an HTML client gives you very little access to the underlying platform. There’s some things you can do but not so much. HTML5 does add a bit more into the mix which is only to be welcomed. …This means that an HTML client won’t always get you to where you need and if you need more access to the underlying platform then you might consider something like Silverlight.”

“XHTML in IE9”

ieblog: “One of the most notable differences between XHTML and HTML is how parsing errors are handled. Any parsing error in an XHTML document will cause parsing to stop; no fix-up rules are applied. IE9 displays content parsed up until the point at which the error occurred. This is useful during development to catch errors quickly. You can find parsing error details in the ‘Console’ tab of the developer toolbar (note you’ll need to refresh the page to see the error if you opened the developer toolbar after the page loaded).”

“Why I hate implementing Linq”

Ayende Rahien via Chris Alcock: “The other side is the one that is shown only to the few brave souls who dare contemplate the task of actually writing a Linq provider. The real problem is that the sort of data structure that a Linq query generates has very little to the actual code that was written. That means that there are multiple steps that needs to be taken in order to actually do something useful in a real world Linq provider.”

“HTML5 Audio and Video: What you Must Know”

Bruce Lawson and Remy Sharp: “Copy protection is one area not dealt with by HTML5—unsurprisingly, given that it’s a standard based on openness. So people who need DRM are probably not going to want to use HTML5 video or audio…”

“Mono 2.8 is  out”

Miguel de Icaza: “We have just released Mono 2.8 a major upgrade to the Mono developer platform. This release contains ten months worth of new features, stability fixes, performance work and bug fixes.” Mono is C#4.0 compliant!

“The Future of Silverlight”

Silverlight Show: “There’s been a lot of discussion lately around web standards and HTML 5 in particular. People have been asking us how Silverlight fits into a future world where the <video> tag is available to developers. It’s a fair question—and I’ll provide a detailed answer—but I think it’s predicated upon an oversimplification of the role of standards that I’d like to clear up first. I’d also like to delineate why premium media experiences and ‘apps’ are better with Silverlight and reveal how Silverlight is going beyond the browser to the desktop and devices.”

Some Simple Scrum Words

Scrum Cycle

So, after drifting on a life raft of unemployment for over five months, I’m set adrift in a scrum lagoon. I have a few scrum vocabulary words to remember—those learned so far:

Sprint

“A time period (typically 2–4 weeks) in which development occurs on a set of backlog items that the Team has committed to.”

Story

Evidently “story” refers to a use story or user story. “In Scrum, work is expressed in the backlog as user stories. A team may write its user stories in a number of ways as long as they are written from the perspective of the end user. Put another way, team members are encouraged to think of their work from the perspective of who will use it (hence ‘user’ story). A team can express a story as a noun (i.e. ‘text message’ on a cell phone project) or a sentence or phrase (i.e. ‘debug GPS tracking system’).”—scrummethodology.com

Iteration

I was perhaps more biased toward Iterative Waterfall Development… “This approach carries less risk than a traditional Waterfall approach but is still far more risky and less efficient than a more Agile approaches. The focus is on delivering a sprint of work as opposed to a series of valuable/shippable features. The most commonly occurring issue in this type of scenario (in my experience) is bottle necking.” —agile101.net

Sadly, I strongly suspect that my current gainful employment is based on confusion between “delivering a sprint of work as opposed to a series of valuable/shippable features.” I’m paid right now to remove bottle necks—I can only hope that I’m not working in a bottle neck factory.

Flippant Remarks about Wrapping Entity Framework with a WCF Service

I should know by now that MVVM is the theory that allows a developer to approach WPF with a decent plan. Sadly, the current release of Microsoft’s Entity Framework is full of great theories but the one that is most needed (for me and a few thousand others), Persistence Ignorance, is not supported. Here in the rasx() context, persistence ignorance, means that plain-old .NET objects can represent data from a database (a persistent store) while being completely ignorant of it. This is ideal for test coverage, loose coupling, simplicity and elegance.

I found out that Entity Framework was lacking so much elegance when I used it to back a WCF façade—while WCF met my meager expectations. My notes:

  • NHibernate does not have Persistence Ignorance problems. But avoid XML configuration hell with Fluent NHibernate—an idea started by C# MVP and StuctureMap architect, Jeremy Miller.
  • This post, “Persistence Ignorance in the Entity Framework,” in the Data Platform Development Forums represents a great historical moment (from two years ago) when the developers complain directly to attentive folks at Microsoft.
  • ADO.NET team blog : Sneak Preview: Persistence Ignorance and POCO in Entity Framework 4.0”—the title speaks for itself…
  • Aleem Bawany: “The Entity Object violates the Single Responsibility Principle because other than representing a Person it takes on the additional responsibility of managing data persistence.”
  • Persistence Ignorance (POCO) Adapter for Entity Framework is available for the current release of Entities Framework. This project came to me from stackoverflow.com.
  • Frans Bouma, via Paul Gielens (rightfully) defends the technical achievements in Java when confined to this specific issue: “Be aware that the .NET world isn’t comparable with the java world. In the java world, there are standards like EJB-CMP, so having POJO objects is key. In .NET it’s not, you need non-POCO objects to get decent databinding, remoting and xml serialization (cyclic references, interface types etc.)…” This defends comes to us from year 2005…
  • I got a System.ServiceModel.CommunicationException, “The underlying connection was closed: The connection was closed unexpectedly.” It appeared to be related to attempting to emit a composite object without [DataContract] attributes.
  • I found hard, clear limitations in LINQ to Entities. A guy named Moses who really lives in Egypt, Muhammad Mosa, found the same limitation over a year ago: “By design, LINQ to Entities requires the whole LINQ query expression to be translated to a server query. Only a few uncorrelated subexpressions (expressions in the query that do not depend on the results from the server) are evaluated on the client before the query is translated. Arbitrary method invocations that do not have a known translation, like GetProducts() in this case, are not supported…”
  • While writing LINQ queries, I was tempted for a few seconds to attempt to implicitly cast an anonymous object to an interface. Did not work out because anonymous types “…cannot be cast to any type except for object.”

It turns out that my previous use of the concepts I call output definitions, input definitions and data transfer contracts apply to this WCF solution. I tend to think that my .NET 2.0 approaches are either obsolete or auto-magical in the .NET 3.5 world. Not all the time…