Rockford Lhotka's Blog

Home | Lhotka.net | CSLA .NET

 Tuesday, July 01, 2014

There’s been a lot of exciting change in cross-platform development for C# developers over the past few months. Microsoft introduced the Universal Apps concept for WinRT (Windows 8 and Windows Phone 8.1), and Xamarin introduced Xamarin.Forms (Windows Phone 8, Android, and iOS).

Beneath the Universal App support in Visual Studio 2013 is a broader concept called a Shared Project. With the Shared Project Reference Manager add-in for VS13 you can reference these shared projects from any project, not just Universal App projects.

As a result, you can build a solution like this one:

SharedCodeSolution

This solution includes a Xamarin.Forms MobileApp, a Microsoft Universal App (based on the Hub control), a Windows Forms app, and a WPF app. All of these apps use non-UI code from the NonUICode.Shared project.

In fact, the Android, iOS, WinPhone, Windows, and WindowsPhone UI projects have basically no code at all. In the MobileApp all the UI code is in the MobileApp1.Shared project. In the WinRTApp all the UI code is in the HubApp1.Shared project.

The Windows Forms and WPF apps each have their own UI code. Windows Forms is its own thing, and although WPF uses XAML, it is an older dialect that doesn’t share enough in common with WinRT or Xamarin.Forms for sharing.

None of the UI projects contain any business logic or logic to call services. All that code is in the NonUICode.Shared project so it can be maintained just one time. The service calls use HttpClient, which is reasonably common across all the UI platforms, and for the few differences I’m using #if statements to accommodate the per-platform code. For example, here’s a bit of code from a shared viewmodel class: 

    public async Task SaveData()
    {
      if (this.IsDataLoaded)
      {
        var webClient = new HttpClient();
        var data = JsonConvert.SerializeObject(this.Speaker);
#if ANDROID || __ANDROID__ || __IOS__
        var content = new StringContent(data, System.Text.Encoding.UTF8, "application/json");
#else
        var content = new HttpStringContent(data);
#endif
        var urlString = apiSpeakerUrl + @"/" + this.Speaker.Id.ToString();
        var response = await webClient.PutAsync(new Uri(urlString), content);
        if (!response.IsSuccessStatusCode)
          throw new Exception("SaveData failed");
      }
    }

The overall result is that with reasonable effort you can create an app that spans every type of smart client technology available today; from Windows Forms up to iOS. These apps can share all your business and service client code, and can often share a lot of UI code.

(fwiw, if you build your business logic with CSLA .NET it is a lot easier to create and maintain the shared business and service client code than if you try to build that code by hand)

CSLA .NET | WinRT | WP8 | Xamarin
Tuesday, July 01, 2014 3:32:53 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  | 
 Wednesday, June 18, 2014

csla win8_full This release adds the following key features:

  1. Support for iOS
  2. Support for WinRT on Windows Phone 8.1
  3. Support for Universal Apps that target WinRT on Windows 8.1 and Windows Phone 8.1
  4. A new HttpProxy/Host data portal channel that doesn't rely on WCF
  5. A new BrokeredProxy/Host data portal channel that allows a WinRT (Win8) app to call a local data portal running in full .NET

Here is the version 4.5.600 change log.

You can download the msi installer from the release page, or better yet add references to the framework via NuGet.

Version 4.5.600 includes support for iOS (via Xamarin) and for WinRT on Windows Phone 8.1 in the WinRT.Phone project. This also means you can use the new Universal solution/project type to build WinRT apps for Windows 8.1 and Windows Phone 8.1.

This prerelease also includes the new HttpProxy/Host and BrokeredProxy/Host data portal channels.

The Http data portal channel allows you to host the data portal server directly in ASP.NET MVC 4 or MVC 5 without the need for WCF. It relies only on the HttpClient library to invoke the server, so the client has no dependency on WCF - important for the new Windows Phone 8.1 programming model where WCF doesn't exist.

The Brokered data portal channel allows you to host the data portal server in .NET as a brokered assembly, thus available to a WinRT client app. This means you can build a WinRT app that makes data portal calls, where the "server-side" code is also running on the client device, but has access to full .NET. This will only work on Intel-based devices where full .NET assemblies can be deployed. It will only work with side-loaded apps, not apps from the Windows Store.

CSLA .NET | WinRT | WP8 | Xamarin
Wednesday, June 18, 2014 2:34:52 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, February 26, 2014

New Skitch I thought I’d post a list of the top Windows 8 WinRT (windows store) apps that I use all the time.

I know a lot of people who are running Win8 and treating it like Win7 – never leaving the legacy Desktop if at all possible. I think those people are doing themselves a disservice, and in the long run if they are developers then they are doing their users a disservice. I say this because I view the Desktop today in the same light I viewed green screen terminals in the early 1990s – a necessary evil that will ultimately fade into the mists of time (except for those poor users who will forever be stuck using legacy apps).

So these are the apps that, if they didn’t run on Win8, would probably drive me to get an iPad or Android tablet (except that because they are on Win8 I can use them on my tablet AND on my desktop, which is extremely nice). For the most part these are pinned on my start screen on my tablet and desktop. I’ve bolded the WinRT apps and left the legacy Desktop apps unbolded so it is clear just how much I use WinRT.

Productivity:

  • Mail, Calendar, People – the standard apps/hubs that come with Win8 – they started out bad, but have become quite good
  • Outlook (desktop) – I only use this to schedule Lync meetings anymore, but can’t live without it until there’s an alternative way to schedule a Lync meeting
  • Yahoo Mail – I use yahoo as my spam dump, but occasionally scan through to see if anything real creeps into that mail box
  • OneNote – they’ve really made this app nice for keyboard/mouse and touch and pen users – indispensible!
  • Skitch Touch – nice, easy to use graphic editor – I use it to crop/annotate quick screen grabs for the most part
  • Healthvault – keep track of my blood pressure and weight, important given my recent health issues, and it works on WP8 too
  • qool – a very simple to-do tracker, which works for me because it is low-friction, but I wish it worked on WP8 too
  • MyTrips – I travel a lot and rely on Tripit.com to keep me sane; MyTrips is on Win8 and WP8 and is better than the “official” Tripit app
  • Office (desktop) – I so wish there was a WinRT version of Office, but in the meantime I can’t live without the legacy Desktop version
  • Live Writer (desktop) – still the best way I know to author blog posts

News, weather, etc:

  • Nextgen Reader – RSS reader that also runs (and syncs) to my WP8 phone
  • Bing News, Bing Weather – nice apps, consistent on WP8 (finally), and keep me up to date with the world
  • MyRadar – consistent with WP8 and the fastest way to get weather radar on any device – I love this app!
  • Reading List – keeps a list of articles/posts/URLs that I want to review or use later
  • Flipboard – I use this only on my tablet because it is only fun with touch, but it presents a visually pleasing way to browse facebook/twitter/other web info

Finance:

  • Bing Finance – keep track of the market and business news
  • Mint – keep track of family finances – mostly just trying it out (and it is really nice), because I’m already a Quicken user
  • Quicken (desktop) – keep track of family and business finances, but I wish there was a WinRT version more like Mint – my problem is that Mint can’t do small business stuff, so I need Quicken

Social:

  • Lync (desktop) – I mostly use the Desktop version, though the WinRT app is slowly catching up and I do look forward to being able to use it
  • Twitter – the official twitter app, I’m sure there are better ones, but I’m not a heavy twitter user so this is fine
  • Skype – I use the WinRT app, but sometimes I also use the Desktop app – but the WinRT app is catching up fast, which makes me happy
  • Facebook – sure I can get there via the web, but I do like the app
  • Yammer – I mostly use the web because the yammer app is pretty poor, but it works as a share target; the WP8 app is better
  • Reddit by samrad – I’m not a big reddit user, but this is a nicely designed app that is fun to use
  • IE11 – for LinkedIn, because they don’t have an app yet; and for yammer because the WinRT yammer app is too limited

Media:

  • Xbox Music – I have a subscription to the service, and love the access to so much music on my tablet/PC/phone
  • Xbox Video – I’ve purchased a few movies to watch on the airplane on my Surface, and we also watch them on the TV through the Xbox
  • Netflix – we cut the cable a couple years ago and rely on Netflix/Hulu/Amazon for almost all media, so this app is indispensible
  • Hulu Plus – see my notes on Netflix – indispensible
  • IE11 – I wish, oh do I wish, that Amazon had streaming video app, but as it is I’m stuck using IE to watch Amazon video
  • MetroTube – very nice youtube app; another is MegaTube, but personally I prefer MetroTube
  • Zune (desktop) – my Xbox Music subscription provides me with 10 free songs each month, and the old Zune app is the only way to use those 10 credits to ‘purchase’ the tracks
  • Comics – the Comixology app is really nice; I know, as an adult I shouldn’t read comics, but I’m an uber-geek so I do, and this app is a really nice way to read them
  • Kindle – I mostly use a real Kindle because I don’t like reading on a glossy screen, but if I’m caught without my Kindle I’ll read on my Surface or phone
  • VEVO – I remember the days when MTV used to be about music videos, and VEVO is much like MTV from 1985 – happiness!

Utilities:

  • Clipboard – this is an app that allows you to Share from any app into the Windows clipboard, and I use it constantly – couldn’t live without it
  • File Manager HD – the best file manager app I’ve found so far – local and remote file access, quite nice
  • OneDrive/SkyDrive – slightly faster than File Manager HD for OneDrive access, but otherwise a duplicate
  • Dropbox – gives access to shared folders and other advanced features not in File Manager HD
  • Box – really a duplicate of File Manager HD
  • Remote Desktop – the WinRT Microsoft RDP client is nice, and I use it daily
  • TeamViewer – I sometimes use TeamViewer to connect to my desktop when I’m on the road; not as fast/smooth as RDP, but it gets through firewalls and NAT routers better

Photos:

  • Photos – I do use this app, but it was far better in Win8 than it is in 8.1 – they really crippled it…
  • Live Photo Gallery (desktop) – The only way to get at the thousands of photos on my server, and remains far, far more powerful than the built-in Photos app

Gaming:

  • Steam (desktop) – so I can get at all the games I’ve purchased via Steam
  • Origin (desktop) – so I can play Battlefield 4 and (soon) TitanFall
  • Wordament – my favorite casual game
  • Halo Spartan Assault – so nicely done, and fun to play

Shopping:

  • Amazon – of course! I do more shopping on Amazon than pretty much anywhere else
  • Zappos.com – I’m not a small man, and zappos always has shoes that fit, and their service is excellent
  • NewEgg – I go back and forth between their app and their web site, but the app is pretty decent

Development:

  • Visual Studio (desktop) – of course
  • Blend (desktop) – of course
  • Xamarin Tools (desktop) – build iOS and Android apps with C#, what more could you want???
  • GitHub for Windows (desktop) – nice way to interact with github and Visual Studio Online repositories
  • TortoiseGit (desktop) – I used TortoiseCvs, then TortoiseSvn, so it is natural that I’d use TortoiseGit more than any other git client
  • Windows 8 Dev Icons – provides useful icons with code snippets to access them
  • Xaml Candy – provides useful code snippets for common XAML elements
  • Samples Browser – browse Microsoft samples
  • Code Writer – a nice WinRT text/code editor for numerous file formats
  • Project Spark – so much fun to build WinRT and Xbox games
  • Project Siena – has the potential to be the “VB” of WinRT if they continue to evolve this tool – there’s no faster way to build simple WinRT business apps
  • Chrome (desktop) – for when IE11 doesn’t meet my needs
Windows 8 | WinRT | WP8
Wednesday, February 26, 2014 11:28:46 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Monday, February 03, 2014

I’ve had my Nokia Lumia 1520 “phablet” for around 6 hours now and thought I’d record my earliest thoughts.

(phablet is a term used to describe a huge phone, big enough to be a small tablet – hence “phablet”)

Good:

  1. The phone is as solid and well built as other Lumia devices
  2. Even though it is bigger than my 920 I don’t think it weighs much more; not what I expected from such a large device
  3. From what I’ve seen thus far, the battery doesn’t go down unless I run the Waze app (which drains batteries even if your phone is plugged into a charger)
  4. Reading email, browsing, and other data consumption activities are a lot of fun on the bigger screen
  5. Not only is the screen bigger, it is 1080p so it is so clear and sharp! Watching Hulu Plus and NetFlix on this thing is nice!!
  6. Moving from one WP8 device to another is a breeze; all my data and apps are in the cloud so the new phone just spent a while downloading everything and it just worked!

Neutral:

  1. The GDR3 “Black” update auto-installed on startup, and of course it has nice features all by itself, but I had that on my 920 already
  2. Though the device is quite large, I mostly talk via BlueTooth headsets or Microsoft Sync in my truck, so I haven’t yet encountered any awkward moments of holding a phablet up to my ear

Bad:

  1. Stupid AT&T prevents the Data Sense app from installing to the device; my 920 was a developer device and so it wasn’t blocked (even on ATT), and I really, really, really miss having Data Sense already (yes, they say I should use the myATT app, but I’m on a corporate plan so that app is total junk, and even if it did work it wouldn’t show the useful info shown by Data Sense)
  2. The screen is so big that even with my massive hands I can’t really use the device with one hand
  3. A small number of apps from the 920 apparently can’t run on the 1520, though that could be related to me moving from an unlocked dev phone to an AT&T branded device where they appear to cripple some things
  4. Though the battery life seems to be excellent, charging the battery takes _forever_ – or I’ve got a bad device, because it has been charging for a really long time and isn’t fully charged yet (and no, the Waze app isn’t running in the background :) )
  5. The device is big enough to be somewhat uncomfortable in the front pocket of my jeans, so I’m trying the back pocket; hopefully I don’t accidentally sit on it and break the phone…

On Waze:

Twice I mentioned the Waze app. It is a wonderful app if you need to get somewhere through traffic, snowstorms, etc. The user-driven data sourcing for traffic and related events is all in realtime, and I’ve found that Waze gets me around traffic that other GPS apps (even with traffic data) wouldn’t avoid.

BUT, the Waze app does literally drain the battery on phones even when plugged into a charger, so it is something you can _only_ use when the phone is plugged into a charger, and even then only for a relatively short period of time (such as on your commute to/from work). Even then, I suspect it would totally drain a battery with a longer commute like people have in some cities…

Monday, February 03, 2014 9:30:47 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  | 
 Friday, January 17, 2014

Update:

Thanks to this post I learned something useful that addresses some of my concerns. Specifically that there is an “Xbox Music” app in the Windows Phone store that you can download for free. Rather than updating the built-in music app in the phone, they created a new one and nobody told me :)

This new Xbox Music app is pretty much comparable to the Windows 8 app, including the following:

  1. You can view music in the cloud, on the device, or both
  2. Playlists sync between WP8 and Win8

This addresses several of my complaints (around lack of playlists and playing every song twice).

It still doesn’t explain why the Xbox Music app on Win8 often mutes when it isn’t in the foreground (but sometimes works as expected). Nor does it alleviate the lack of music videos on the Xbox One compared to the 360.

But at least I can now use my phone to listen to music while at cardio rehab, and that was my single biggest desire.

Original:

I really like (or used to like) the Zune client and zune.net service, which were sort of renamed Xbox Music.

And even after the rename and changes the Xbox Music service is pretty good in some ways.

But there are some key things that are just plain broken – to the point I’m thinking about dropping the service. These are my complaints:

  1. On the Xbox 360 the Xbox Music app had something called “Smart VJ” that played music videos; this is gone on the Xbox One, thus eliminating the primary reason I used Xbox Music on the actual Xbox (there’s no VEVO app for Xbox One either, so basically no music videos available at all – good thing I still have my 360!)
  2. On Windows Phone 7 I could sync my music to the phone; on WP8 I can copy my music to the phone via the file system, but all my “cloud music” shows as duplicated on the phone, so I hear almost every song twice (or if there’s no data signal every other song errors out when the phone tries to play it) – basically the experience makes the phone virtually useless for music (some more info about the broken cloud music feature is here: http://winsupersite.com/article/windows-phone-8/windows-phone-8-tip-xbox-cloud-collection-144703)
  3. I have to create playlists for my phone on my phone, which is tedious at best, especially compared to creating a playlist on a computer; this problem didn’t exist in WP7 And thanks to the nasty cloud collection behavior, creating a playlist automatically is kind of useless for when I want to listen offline (like on an airplane, or when I’m at physical therapy in the basement of the hospital where there’s no cell service)
  4. There’s no “Smart DJ” feature on Windows 8 if you are offline – even if you have a couple thousand songs physically on your computer; the lowly Zune HD device didn’t have this problem, but my super-powerful and much more modern Surface Pro can’t pick its own music when offline?
  5. About half the time the Xbox Music app on Windows 8 mutes the sound when the app is in the background – sometimes it works, sometimes it doesn’t – seems pretty buggy to me

Basically, compared to the original Zune and zune.net behaviors the Xbox Music clients and service are a major step backwards.

Is anyone using some online/offline music service or player that does work on Windows Phone 8 and Windows 8? Something that:

  1. Creates smart playlists using music that’s on the device
  2. Doesn’t duplicate music that’s on the phone and is in the cloud (so doesn’t play every song twice)
  3. Doesn’t attempt to play cloud-based music while offline
  4. When online does give streaming access to a huge song library
  5. Plays music on Windows 8 without muting when the app is in the background (Pandora is broken like this, and Xbox Music is unreliable in this regard)
  6. Allows me to download otherwise-streaming music for a playlist if I want that music offline (one of the things Xbox Music does well)

I know I might be an outlier, wanting to listen to music when I have no data service (or when I don’t want to burn my cell data plan down). And maybe I should just get an iPod and be done with it – but then I’d have to install iTunes on my computer, and last time I did that I was far from satisfied either…

Windows 8 | WP8 | Xbox | Zune
Friday, January 17, 2014 10:06:33 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [5]  | 
 Wednesday, February 06, 2013

I have released a beta of CSLA .NET: version 4.5.11, working toward a final release in a few weeks.

CSLA .NET is an open source software development framework that helps you build a reusable, scalable, and maintainable object-oriented business layer for your applications.

This update includes a few interesting features/changes.

  1. Adds support for Windows Phone 8 (WP8) development on the Windows Phone Runtime (WinPRT) platform
  2. Simplifies support for ASP.NET MVC 3 and ASP.NET MVC 4, as well as ADO.NET EF 4 and 5 by splitting functionality into separate assemblies and nuget packages
  3. Changes the local data portal to have the same behavior as a remote data portal for async calls; specifically this means that the local data portal automatically shifts all async requests onto a background thread from the thread pool
  4. Transactional attribute now allows you to set the isolation level
  5. Various bug fixes

You can get this prerelease version from nuget in Visual Studio, or you can download the new Wix-based installer from the CSLA download page.

Wednesday, February 06, 2013 5:36:07 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Friday, August 03, 2012

With all the new terminology and conceptual surface area that comes with Windows 8, I think it is important to have some clarity and consistency around the terms and concepts.

Here are some of the basic terms:

  • Windows 8 – the new operating system that runs in a “dual mode”: Desktop (Win32) and WinRT (Windows Runtime)
  • Desktop – the Win32 OS API that supports today’s applications in Win8 (basically Windows 7)
  • WinRT – Windows Runtime: the new OS API that supports “modern” applications
  • Windows RT – Windows 8 on ARM devices (note: Windows RT and WinRT are not the same thing)
  • Windows 8 UI style – a user experience design language often used when building WinRT applications

Windows 8 basically includes two different operating systems.

One is the “old” Win32 OS we think of today as Windows 7. This is now called Windows 8 Desktop, and is available on Windows 8 Intel tablets, laptops, and desktops. This is only partially available on ARM devices, and you should not expect to build or deploy Win32 Desktop apps to ARM devices.

The other is the new Windows Runtime (WinRT) “operating system”. This is a whole new platform for apps, and is available on all Windows 8 machines (ARM, Intel, tablet, laptop, desktop). If you want the widest reach for your apps going forward, you should be building your apps for WinRT.

Confusingly enough, “Windows 8” runs on Intel devices/computers. “Windows RT” is Windows 8 for ARM devices. The only real difference is that Windows RT won’t allow you to deploy Win32 Desktop apps. Windows RT does have a Desktop mode, but only Microsoft apps can run there. Again, if you want to build a Windows 8 app that works on all devices/computers, build the app for WinRT, because it is consistently available.

Windows 8 UI style describes a user experience design language for the look and feel of WinRT apps. This isn’t a technology, it is a set of design principles, concepts, and guidelines.

Another source of confusion is that to build a WinRT app in Visual Studio you need to create a “Windows 8 UI style” app. What makes this odd, is that this type of app is targeting WinRT, and it is entirely up to you to conform to the Windows 8 UI style guidelines as you build the app.

“Windows 8 UI style” was called “Metro style”, but Microsoft has dropped the use of the term “Metro”. I am skeptical that this new “Windows 8 UI style” term will last long-term, because it obviously makes little sense for Windows Phone 8, Xbox, Windows 9, and other future platforms that may use the same UI style. But for now, this appears to be the term Microsoft is using.

Thinking about app development now, there are several options on the Microsoft platforms.

  Technologies Platforms
Full .NET 4.5 ASP.NET, WPF, Windows Forms, WCF, WF Windows 7, Windows 8 Desktop, Windows Server 2008, Windows Server 2012
WinRT .NET 4.5 Windows 8 UI style apps Windows 8 WinRT, Windows Phone 8, rumored for next-gen Xbox
Full .NET 4 ASP.NET, WPF, Windows Forms, WCF, WF Windows 7, Windows Server 2008, Azure PaaS
Silverlight Silverlight Windows 7, Windows 8 Desktop, Windows Phone 7, Windows Phone 8
Friday, August 03, 2012 10:03:20 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  | 
On this page....
Search
Archives
Feed your aggregator (RSS 2.0)
July, 2014 (3)
June, 2014 (4)
May, 2014 (2)
April, 2014 (6)
March, 2014 (4)
February, 2014 (4)
January, 2014 (2)
December, 2013 (3)
October, 2013 (3)
August, 2013 (5)
July, 2013 (2)
May, 2013 (3)
April, 2013 (2)
March, 2013 (3)
February, 2013 (7)
January, 2013 (4)
December, 2012 (3)
November, 2012 (3)
October, 2012 (7)
September, 2012 (1)
August, 2012 (4)
July, 2012 (3)
June, 2012 (5)
May, 2012 (4)
April, 2012 (6)
March, 2012 (10)
February, 2012 (2)
January, 2012 (2)
December, 2011 (4)
November, 2011 (6)
October, 2011 (14)
September, 2011 (5)
August, 2011 (3)
June, 2011 (2)
May, 2011 (1)
April, 2011 (3)
March, 2011 (6)
February, 2011 (3)
January, 2011 (6)
December, 2010 (3)
November, 2010 (8)
October, 2010 (6)
September, 2010 (6)
August, 2010 (7)
July, 2010 (8)
June, 2010 (6)
May, 2010 (8)
April, 2010 (13)
March, 2010 (7)
February, 2010 (5)
January, 2010 (9)
December, 2009 (6)
November, 2009 (8)
October, 2009 (11)
September, 2009 (5)
August, 2009 (5)
July, 2009 (10)
June, 2009 (5)
May, 2009 (7)
April, 2009 (7)
March, 2009 (11)
February, 2009 (6)
January, 2009 (9)
December, 2008 (5)
November, 2008 (4)
October, 2008 (7)
September, 2008 (8)
August, 2008 (11)
July, 2008 (11)
June, 2008 (10)
May, 2008 (6)
April, 2008 (8)
March, 2008 (9)
February, 2008 (6)
January, 2008 (6)
December, 2007 (6)
November, 2007 (9)
October, 2007 (7)
September, 2007 (5)
August, 2007 (8)
July, 2007 (6)
June, 2007 (8)
May, 2007 (7)
April, 2007 (9)
March, 2007 (8)
February, 2007 (5)
January, 2007 (9)
December, 2006 (4)
November, 2006 (3)
October, 2006 (4)
September, 2006 (9)
August, 2006 (4)
July, 2006 (9)
June, 2006 (4)
May, 2006 (10)
April, 2006 (4)
March, 2006 (11)
February, 2006 (3)
January, 2006 (13)
December, 2005 (6)
November, 2005 (7)
October, 2005 (4)
September, 2005 (9)
August, 2005 (6)
July, 2005 (7)
June, 2005 (5)
May, 2005 (4)
April, 2005 (7)
March, 2005 (16)
February, 2005 (17)
January, 2005 (17)
December, 2004 (13)
November, 2004 (7)
October, 2004 (14)
September, 2004 (11)
August, 2004 (7)
July, 2004 (3)
June, 2004 (6)
May, 2004 (3)
April, 2004 (2)
March, 2004 (1)
February, 2004 (5)
Categories
About

Powered by: newtelligence dasBlog 2.0.7226.0

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2014, Marimer LLC

Send mail to the author(s) E-mail



Sign In