Subscribe: Rockford Lhotka
Added By: Feedage Forager Feedage Grade B rated
Language: Malay
android  app  apps  cortana  csla  invoke  iphone  music  net core  net  open source  open  people  phone  surface  windows 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Rockford Lhotka

Rockford Lhotka

Creator of the CSLA .NET framework

Last Build Date: Mon, 18 Dec 2017 17:38:41 GMT

Copyright: Marimer LLC

Rocky on Android

Mon, 18 Dec 2017 17:38:41 GMT

A couple years ago I left the Windows phone ecosystem. It was a hard thing to do, because Windows 10 on the phone is pretty wonderful, but the lack of apps made the platform undesirable. In the end I switched to the iPhone 6s, after trying Android and being dissatisfied at the time. About a week ago I switched to Android. The price tag on the iPhone X, coupled with ongoing frustrations with iOS and the lack of control made me give Android another try. And the fact that a lot of people told me that Android has improved a lot over the past couple years. My new phone is a OnePlus 5T, and I'm on AT&T. After about 10 days with the new phone I wanted to capture my initial thoughts, before they fade. Pros: Cortana is my default assistant - oh the relief - Siri remains like Cortana's dumber older cousin, and it is really really nice to be back where I have a good assistant! The Microsoft apps (Office, Outlook, OneDrive, launcher, lock screen, Cortana, etc.) all play together so well on Android because they aren't trying to work around Apple's silly rules - the experience is more pleasant and integrated. All the apps I used on the iPhone are here on Android, so I lost no functionality by switching platforms. I can use Waze as my default navigation app finally - this makes me so very happy! The screen and performance and memory and battery life and charge speed of the OnePlus 5T are all excellent - a big step up from my iPhone. Cons: Bluetooth doesn't work "right" between Waze (or Cortana) and my Ford Sync system (specifically my Sync system has to be listening to the BT stereo device to get any audio from Waze or Cortana, so I can't use Waze and listen to Sirius Octane - arg!!) This was not a problem on Windows or iOS. Activity badges on app icons are far from reliable Not a problem with Windows live tiles or iOS. Some apps on Android are still not as good as their iPhone equivalents; iPhone is clearly the highest priority, followed by Android and so Android users are sometimes second class citizens. Contact management sucks on Android, just like on the iPhone. Nobody has figured out how to make contacts work seamlessly from Office 365, Google, and (well, except for Windows Phone 7, which nailed it - but then even Microsoft messed it up with Windows 10). For me the pros have already outweighed the cons. The Bluetooth behavior is a serious pain though, almost enough to offset the pros - how do Android people live with this crappy BT experience???? But as I say, the pros - Cortana as default assistant and the smooth integration of all the Microsoft launcher, lock screen, and apps make Android the superior experience. Cortana is a big thing for me. I limped by with Cortana on the iPhone, but the experience is much superior on Android. And I use Cortana on my Surface and desktop. And I have a HK Invoke, so I have Cortana in my home as well (so she can do all my home automation and play music mostly). I've had people ask if it was hard to leave the Apple ecosystem. But I wasn't in the Apple ecosystem, I consciously chose to stay in the Microsoft ecosystem while using my iPhone, because I didn't want the vendor lock-in from Apple. You might laugh at that, because I'm arguably locked in to Microsoft. But Microsoft has no "horse in the race" with mobile, so their ecosystem is the one place you can go to remain neutral between Apple and Google, and that's a powerful benefit. My OnePlus 5T is a flagship level phone for half the price of Samsung's flagship or an iPhone X. Avoiding vendor lock-in isn't a goal in and of itself (though people often think it is). The goal is to be able to switch to the best value hardware or OS or platform with minimal penalty because you aren't locked into some vendor's world. Having switched from one major mobile platform to the other, with virtually no pain, I now feel very comfortable saying that the way to avoid lock-in from Apple or Google is to live in the Microsoft ecosystem 😃 [...]

HK Invoke First Impressions

Wed, 29 Nov 2017 21:17:52 GMT

A while ago I got an Amazon Echo - the little hockey puck one. But I haven't been real pleased, for three primary reasons.

  1. It usually requires me to ask it the same thing twice
  2. It frequently gets disconnected from my network
  3. I'm a heavy Cortana user, and very few of the third party services supported by Cortana are also supported by Echo (no OpenTable, Wunderlist, cross-platform reminders, etc.)

So I took advantage of the recent holiday sales and ordered a Harmon Kardon Invoke, which is a Cortana based device.


As with most consumer devices post-Kindle, the Invoke comes in nice, friendly packaging.

(the pictures are rotated by MarkdownMonster - I don't know how or why, or how to fix it - sorry...)

(image) (image) (image)

The device itself feels solid, has some weight, and is attractive.


The swirling light on the top is pretty cool, and the physical ring at the top of the device turns to act as volume. The top of the device itself is touch sensitive, so you can tap it or tap-and-hold to interact. But really, most interaction is by voice.

Setting up the device was easy. When I plugged it in the blue light started swirling, and I used the Cortana app on my iPhone (which I already use all the time anyway) to initialize the Invoke. The whole process was pretty much automated, including connecting to my wifi network. The Invoke updated itself from the Internet once connected

Using Cortana with the Invoke is the same as with my Xbox or Surface. "Hey Cortana" and away you go! All the stuff I can do with Cortana on my iPhone or Surface seems to work the same on the Invoke.

What the Invoke does that seems special (as compared to Cortana via iPhone, Surface, or Xbox) include:

  1. Playing music via Spotify (one step during configuration is to identify your streaming music provider)
  2. Making voice calls to cell phones and land lines (the Invoke includes a year of free calling via Skype)
  3. Interacting with SmartThings based devices (and others too, but I have a ST hub, so that's what I'm using)

Unlike the Echo, Cortana has yet to need me to repeat anything, so that's a bonus right there!

Of course the Invoke sounds way better than the Echo Dot, but that's not a fair comparison. A friend of mine who has a full-sized Echo says that the Invoke sounds better than the Echo. That makes sense, given HK's reputation for audio.

The most important thing for me is that the Invoke, using Cortana, was instantly aware of, and integrated with, my existing reminders, to-do lists, calendars, package tracking, flight tracking, and everything else for which I already use Cortana.

Where really embracing the Amazon Echo would require me to use a whole other ecosystem, the Invoke just gave me access to the ecosystem I'm already using.

There's no question that the Echo has access to a lot more apps than Cortana. But it doesn't give me access to the apps I'm already using, and I guess that's the really thing for me - I don't want to migrate to a whole new to-do list app, stop using Foursquare and Yelp and OpenTable. I like those apps and services, and I'm used to them, and with Cortana I get to keep using them.


Batch processing makes a comeback

Tue, 07 Nov 2017 20:55:47 GMT

When I worked in bio-medical manufacturing batch processing was a core element of our overall IT strategy. Not on the mainframe, but on the VAX.

The OpenVMS operating system, combined with VAX Clusters, had an amazingly powerful and flexible batch processing model, on top of which I wrote a relatively sophisticated scheduling engine to manage our nightly, month-end, and year-end batch processing.

We'd run dozens of batch processes each night, and many more for month/year-end. There were dependencies, and some jobs could or couldn't run in parallel with other jobs. My scheduler managed all that automatically, allowing users to add/remove requests for processing jobs and ensuing they fit into the schedule appropriately.

That basic robust batch processing capability is something I've missed ever since coming to Windows (so for 20+ years now), and I'm really thrilled to see the feature available as a first-class offering in Azure.

The fact that Azure also provides low-priority/lower-cost batch hosts is a nice bonus.

Now people are going to have to dig back in their memories, or start from scratch, and learn how to fully leverage batch processing once again!


CSLA .NET 20 Year Anniversary

Tue, 10 Oct 2017 18:36:47 GMT

The CSLA framework is now officially 20 years old. Seriously, some version of CSLA has been out in the world for people to freely use since 1997 when my Professional VB5 Business Objects book came out with the code on a disc attached inside the back cover. Although I didn't technically call it "open source" back then, because the more common terms were "freeware" and "shareware", and I considered CSLA to be "freeware". Those terms eventually became subsumed by what we now know as Open Source Software (OSS), and of course that's the term I use today. I'm proud of the fact that I've been contributing to the OSS world for 20 years. Not too many open source projects last this long. And more importantly, I'm humbled and amazed by the emails and feedback I've received over the years - both in terms of people using CSLA, and also people who've benefited from reading my books. And of course by the amazing contributions by colleagues and community members, several of whom I'll call out later in this article. The following is a pretty long post, but I thought that it would be good to record the highlights of the past 20 years. Why Open Source? Lots of people have opinions and views and motivations about why they use and/or contribute to open source. Personally, my motivation to contribute flows from being an early user of the concept. I very much believe that my career wouldn't have gone where it did, except for me having access to freeware, shareware, and open source software. Back in 1989 (give or take) I was making my living being a DEC VAX programmer. And 1-2 times each year we'd get a couple big magnetic tapes (like in those very old movies) that contained tons and tons of freeware, shareware, and early open source (GNU and copyleft) stuff. I'd typically come in on a Saturday, download the index from the tapes and then selectively download and play with various tools. Things like awk (really gawk) that I used to transform how our company processed reporting data. Or like uupc, which was a UseNet protocol implementation for the VAX that allowed us to get store-and-forward email service to the world over our 1200 baud modems. I looked like a frickin' rockstar thanks to those tools! Similarly, at the time, I was an Amiga fanatic. And the Fred Fish collection of software was like a lifeline to all that was cool and fun in the world of ... everything! Yes, like everyone I've needed to make a living, support my family, save for the kids college and my retirement. But, and I know this sounds sappy, having built my career on the shoulders of some impressive people's contributions, I was on the lookout for a way to try and do the same for others. CSLA COM or "Classic" CSLA started out as the "Component-based, Scalable, Logical Architecture" in the world of COM. And I didn't originally intend for it to be a standalone framework. My original thought was that this code was an example of what people could do, and it fit into the bigger narrative of my book. By the time I wrote the Professional VB6 Business Objects and Professional VB6 Distributed Objects books though, it was already becoming clear that I was mistaken. I phrase it that way on purpose, because by that time I was receiving emails with bug reports, feature suggestions, and other comments - where people were clearly taking the code and using it as a framework, not as an example. Want to see that old code (and a picture of me from 20 years ago)? I put the old VB6 CSLA code in a GitHub repo for safe keeping. Kevin Ford and I worked together on a project in 1996-97, and the two of us argued extensively about how things should work. Without his input, CSLA would not have been what it was, and Kevin has been providing input and contributions from then through today. CSLA .NET 1.0 Toward the end of the 1990's I was seriously considering switching to the shiny new Java world. Primarily because I'd becom[...]

Is IPrincipal dead?

Fri, 08 Sep 2017 21:16:28 GMT

ASP.NET Core only works with ClaimsPrincipal. Specifically, the http context from ASP.NET Core only accepts a ClaimsPrincipal instance, not the more general IPrincipal type.

Confusingly, the rest of the .NET world (full .NET, Xamarin, .NET Core, and netstandard2.0) still support IPrincipal. This makes ASP.NET Core an outlier, but an important one.

As a library author, I’m wondering if the consensus is that IPrincipal is dead, and that all principal objects should now subclass ClaimsPrincipal? Is this a new universal truth?

Specifically, should I run through all of CSLA .NET and in the netstandard2.0 version only support ClaimsPrincipal?

This would ultimately affect people building for Xamarin, full .NET, UWP, .NET Core, mono, as well as ASP.NET Core.

This would be a major breaking change for anyone trying to get existing .NET code (using CSLA) to run in any netstandard2.0 environment. The thing is, if you want to use ASP.NET Core you are kind of forced into that major breaking change anyway right?

My first reaction is NO – I shouldn’t make such a big change, because all the platforms not running in ASP.NET Core shouldn’t be forced to accept this burden just because ASP.NET decided to make a low-level breaking change by not supporting the IPrincipal type.

But I’m interested in hearing other people’s thoughts on this. What is the right answer?


Password keepers and Windows 10

Fri, 08 Sep 2017 20:55:01 GMT


I was just reading this article about how to migrate from LastPass to 1Password.

I can't argue with what the author says in terms of LastPass having had some security issues. So I quickly checked to see if 1Password supported Windows 10.

It does not. No app in the store, no plug-in for the Edge browser.

Conversely, LastPass has an Edge browser plug-in and a (clunky-but-functional) app in the store.

Having a password vault and actually using a password vault aren't the same thing, and I'm pretty sure I wouldn't actually use one if it was a pain.

So at the moment LastPass wins, because they've put in the work to make it easy to use on my Win10 and iOS devices.

Their store app could be a lot better, but even a clunky app is infinitely better than no app at all.


Magenic at STPCon 2017

Thu, 07 Sep 2017 14:14:22 GMT


One of Magenic's largest business areas is QAT, and we have a serious focus on automated testing (including our open source MAQS testing framework).

The Software Test Professionals Conference (STPCon) is the leading event where test leadership, management and strategy converge.

I'm extremely pleased that this year's STPCon keynote speaker is Paul Grizzaffi) from Magenic.

Join us as Paul Grizzaffi explains responsible ways to approach automation, some of the knowledge we’ll need in order to be responsible, and shares insights about automation responsibility from his own career. Let’s allow history to remember our automation initiatives fondly instead of as Pyrrhic forays into irresponsibility.

Paul is also hosting a round table discussion on automation challenges.

Please join us in a round table discussion of attendee-provided automation challenges where we can share our thoughts and potential solutions to these challenges.

Troy Walsh, Magenic's practice lead for QAT, is also presenting at the conference. He'll talk about WinAppDriver vs Winium.

In this session, we will go hands on with WinAppDriver and Winum. We will dig into code and see how each tool works. We will also compare and contrast the tool features, usages and shortcomings.

Finally, Paul and Troy will team up to provide a demo of the open source MAQS framework.

We will demonstrate the Magenic Automation Quick Start framework, and its integration with CI/CD/CT workflows. MAQS is an open source package designed so that you can be running automated tests in minutes.

We are proud to be involved in STPCon, and hope you'll join us at the event!


Sync OneDrive music to Groove on iPhone

Wed, 30 Aug 2017 19:03:12 GMT


Long ago I switched from a Windows 10 phone to an iPhone. But I remained a Groove Music user, because I really like the service and its features.

  1. Offline sync of playlists so I can listen on the airplane
  2. Available on iPhone, Android, Windows, Xbox
  3. Plays music videos when available
  4. "Radio" (used to be Smart DJ or something) to help find new music

The only big issue I've struggled with on the iPhone is that the app doesn't have an easy way to sync all my music from OneDrive onto the phone for offline play. This was a simple option on Windows, but there's no support in the iPhone app.

I've got a few thousand songs in my library, all on OneDrive. They auto-sync to my Windows 10 devices for offline play, but the most important device for offline play is my phone, which I use when on airplanes and driving through northern Minnesota.

I tried syncing the music to the phone using iTunes, but that only makes the music available via the Apple Music app, not Groove, and I want my music in a single app across all my devices.

After trading some emails with a gentleman named Bob Spiker (I think the original email exchange was in response to a twitter rant of mine), it turns out there's a hack that sort of works.

These are the steps:

  1. Open the Groove app on Windows and create a set of playlists that contain only your OneDrive music
    1. Playlists can only have 1000 songs, so you may need to create several playlists
    2. It is probably easiest to add artists to the playlists, as you'll have fewer of them then albums or songs
    3. You can do this on your phone too, but the UI is tedious, so it is far easier on Win10
  2. Open the Groove app on your iPhone and you'll see the playlists; open each playlist and mark it available for offline use
  3. Make sure your phone has enough storage to handle your music; the sync will stall if the phone runs out of storage
  4. Groove will only download songs when the app is open and the phone's screen isn't locked
    1. Go to the iPhone settings, search for "Lock" and set the phone to never lock
    2. Plug in the phone so it is on AC power
    3. Leave the Groove app open as the active app
    4. Make sure your phone is on high speed wifi
    5. Wait patiently until the music has all synced onto the phone (which might take a long time)
  5. Go back into your phone's settings and set the auto-lock back to its original setting

This isn't a perfect solution. It does get all the music onto the phone, but I'm finding that artist/album indexing isn't always working as expected against the music synced from OneDrive. In other words, the music is there and you can see it in the playlists, but you can't always find it from the artist or album views (though it is usually there).

Maybe the "right" answer is to switch to another music service. But I'll only do that if I get the same cross-device support (including xbox), offline sync for my phone, and music videos.


Why I Support Diversity

Fri, 28 Jul 2017 17:13:48 GMT

People might wonder why I'm personally so pro-diversity when it comes to STEM (and pretty much everything else for that matter). Some perhaps assume I'm just a blind SJW gamma male or whatever.

My motivation certainly does flow, in part, from a broad sense of fairness and inclusion. But there are two key points that really drove me toward being active in this space.

First, diverse perspectives and ways of thinking through a problem are, frankly, a lot of what makes America great.

There are other countries out there with much larger populations, and rapidly expanding middle classes and educational systems. China, for example, has more children in their gifted and talented school programs than we have children total here in the US.

We have a substantial cultural advantage, at least in terms of the western style corporate world, because our culture is non-conformist. Americans generally feel comfortable expressing their viewpoints and "sticking their necks out" with their ideas. The result is that we often seem to come up with, and implement, new ideas at a comparatively fast pace.

That diversity of ideas, and the willingness to take that risk, is really key. This is backed up by research btw, here's an article from Scientific American for example.

Diversity of thought comes from diverse backgrounds, cultures (regional or global), educational experiences, and overall life experiences. The best way to get that diversity of thought is to have a diverse workforce in terms of gender, race, background, etc.

Or to put it another way: diversity is good for America.

Second, and perhaps somewhat related, it seems entirely unreasonable to me that mankind can be successful in the long term if we are only willing to accept contributions from a minority of humans - most notably straight white males.

It is true, I'm a SWM. But my life is full of non-white and/or non-male and/or non-straight people who are amazingly smart, talented, educated, and driven. Several of these folks have contributed directly or indirectly to my personal experience/success/whatever over the years - in work and life in general. Hopefully the reverse is true as well.

I guess my point is that, specifically from a US-centric perspective, we can't afford to treat any smart, educated, driven people as second class or unworthy if we are to compete on the global stage. Our absolute population is too small, and we need all our people to remain competitive.

Half the population is female. It is crazy to think we'd ignore half the brainpower in the world. Self-defeating actually.

Similarly, 37% of the US population is non-white. And that number is rapidly growing. Again, it would be self-defeating to ignore well over a third of our country's brainpower.

So yes, some of my motivation comes from my view that all people are created equal. A view that seems like an obvious part of being American.

Add to that the hard reality that to be against diversity in STEM is to intentionally shut out a majority of the brainpower in the US, much less the world at large. That's obviously ridiculous and irresponsible - as a professional and as a human.


Who hasn't made a major mistake?

Sun, 04 Jun 2017 19:39:38 GMT

I read this thread on reddit thanks to terrajobst - with some amazement, and empathy. Perhaps most people haven't made a major mistake in their careers, but I've made more than one. And my mistakes were probably more directly my fault than the mistake this poor person make - a mistake that was clearly caused by poor practices by the employer, not be the fresh-out-of-college employee. I'll summarize what I believe are the two worst mistakes I've made. Major mistake one was about eight months into my first real job out of university. This predated the concepts of source control like we know it now, so we all worked on a common directory structure that contained the source code for everything. And I deleted it all. Yup, thought I was deleting something else, but did a recursive delete of the entire source code directory structure, instantly bringing all our developers to a full stop and losing a day's work (or more if the backups weren't good). Fortunately the backups were good, thanks to a competent system administrator who not only performed the backups, but also regularly tested them. Yeah, just because you "have a backup" means nothing unless your regular IT process includes testing the restore process. My mistake essentially cost all developers at least two days of time. The day lost when I deleted their work, some hours for the restore, and then another day for everyone to redo their work. Still, I didn't get fired, though I did get a lot of crap from my colleagues and was on management's sh*t list for a while. And rightly so in my view. This is probably a bit arrogant, but I strongly suspect I got to keep my job because I was a young hot-shot with no kids, and really no life to speak of, so my productivity as a developer was the best on our entire team. Except probably for my boss, who was an amazing developer! Major mistake number two was about three years into my career (working at my second real job after university). I worked in IT and had (temporarily) left software development to become the system administrator and manager of the help desk. I thought our security policies were too lax, and I'd been researching how to tighten up the rules around who had which kind of network and system permissions. Unfortunately what I didn't know was that changing these policies would invalidate everyone's password. Nor did I have the wisdom to do this over a weekend or anything - so I made the change midday. Next thing you know, a few hundred people lost access to the entire computer system, basically bringing the entire bio-medical manufacturing company to a halt. Sweating profusely, with basically every manager in the company breathing down my neck, I wrote a script to reset all passwords to a known value so it was possible to get everyone back online. Basically I cost the company a half day's work, and I'm sure people had to work overtime to catch up and meet deadlines for products to be delivered to customers on time. Yet again, my f*ckup to be sure. Fortunately I'd been there for quite some time and had built up non-trivial personal capital - all of which was probably spent in that one brief moment when I pressed enter on the line that accidentally locked everyone out of the system. I read through that reddit post from the poor junior dev, apparently just following flawed onboarding instructions. I suppose the end result of that mistake is comparable to mine, and they had no personal capital to spend (this being day one on the job). Regardless, from the poster's account it is so clear that the mistake was absolutely the responsibility of the employer - flawed onboarding instructions, extremely shoddy separation between dev and prod environments, apparently no regular testing of backups to make sure they could restore. The sort of environm[...]

Windows 10 S

Tue, 02 May 2017 20:45:50 GMT

There seems to be some confusion around what Microsoft announced today around Windows 10 and the Surface Laptop.

These are two separate things.

Windows 10 S

This is a new flavor of the Windows 10 operating system. It has nothing to do with hardware. Numerous hardware vendors announced Intel-based devices that'll run this flavor of Windows - including Microsoft.


This version of Windows 10 is restricted to running apps deployed from the Windows store. That includes WinRT/UWP apps, and it includes Win32 apps. For some time now it has been possible for software developers to deploy Win32/.NET apps via the store - Slack is a good example.

Microsoft has said that they'll soon have the full Win32 version of Office in the store. Which makes sense, since they'll want Windows 10 S users to also use Office.

It is also the case that Windows 10 S is more locked down than standard Windows 10, both from a security and battery life perspective. Lower-level features/tools used by developers aren't available, improving security and battery life by eliminating things you don't want students (or most users) to do anyway.

Can a flavor of Windows survive if it only runs apps deployed from the store? I don't know, but given that it is pretty easy for software developers to deploy their existing apps via the store, plus there's quite a lot of nice UWP apps there too, I think it might have a shot.

Personally I wish more software vendors deployed via the store, as that radically reduces the chance that people will get a virus from some random website deploy.

Surface Laptop

This is a new member of the Surface hardware family. It is a laptop, not a tablet or convertible like the Surface Pro or Surface Book.


This is a nice looking and pretty high end laptop. It has Intel Core i5 or i7 chips, a beautiful touch screen like all the other Surface devices, works with the stylus, and comes with as much as 16gb memory and a 1tb SSD. Microsoft is claiming up to 12 hours battery life.

Personally I really enjoy my Surface Pro 4, and use it as a tablet quite often, so I'm not planning to switch to a laptop. So I'm holding out for a Surface Pro 5 😃

But I understand that a lot of people really like the laptop form factor, and this is like a super-powered Macbook Air with a touch screen and (imo) a better operating system.

Speaking of which, the Surface Laptop will ship with Windows 10 S, and can be upgraded to Windows 10 Pro. So for a lot of "regular users" they'll be able to use it as-is, and for power users or developers we can upgrade to Pro to unlock all the power (though Microsoft warns that this will reduce battery life, because Windows 10 S does a better job in that regard).


Hopefully this helps with some of the confusion. This is not another Surface RT sort of thing. Nor is it a return to ARM-based hardware.

It is a new flavor of Windows 10 focused on regular computer users, thus providing enhanced security and battery life, with a consistent way of deploying apps.

And it is a new member of the Surface hardware family. A high-end laptop for Windows 10 S or Windows 10 Pro.