Subscribe: Rockford Lhotka
http://www.lhotka.net/WeBlog/SyndicationService.asmx/GetRss
Added By: Feedage Forager Feedage Grade B rated
Language: Malay
Tags:
basic  business  code  csla net  csla  don  job  magenic  mark  microsoft  msa  msdn  net  people  software  time  work 
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: Wed, 08 Feb 2017 18:51:54 GMT

Copyright: Marimer LLC
 



Microsoft identities - argh!

Wed, 08 Feb 2017 18:51:54 GMT

The concept of identity with Microsoft services is a mess, something I probably don't have to tell any Microsoft developer.

Some services can only be attached to a personal Microsoft Account (MSA), and other services can only be used from an AD account. For example, MSDN can only be directly associated with an MSA, while Office 365 can only be associated with an AD account. Some things, like VSTS, can be associated with either one depending on the scenario.

I used to have the following:

  • r___y@lhotka.net - MSA with my MSDN associated
  • r___y@magenic.com - Magenic AD account
  • r___y@magenic.com - MSA with nothing attached (I created this long ago and forgot about it)

That was a total pain when I started using O365 and an AD-linked VSTS site with my r___y@magenic.com AD account, because Microsoft couldn't automatically distinguish between my AD and MSA accounts; both named r___y@magenic.com. As a result, every time I tried to log into one of these sites they'd ask if this was a personal or work/school account.

Fortunately you can rename an MSA to a different email address. I renamed my (essentially unused) r___y@magenic.com account to a dummy email address so now I really just have two identities:

  • r___y@lhotka.net - MSA with my MSDN associated
  • r___y@magenic.com - Magenic AD account

This way Microsoft automatically knows that when I use my AD login that it is a work/school account and I don't have to mess with that confusion.

There's still the issue of having MSDN attached to an MSA, and also needing to have some connection from my AD account to my MSDN subscription. This is required because we have VSTS sites associated with Magenic's AD, so I need to log in with my AD account, but still need to ensure VSTS knows I'm a valid MSDN user.

Here's info on how to link your work account to your MSDN/MSA account.

At the end of the day, if I'd never created that r___y@magenic.com MSA account (many years ago) my life would have been much simpler to start. Fortunately the solution to that problem is to rename the MSA email to something else and remove the confusion between AD and MSA.

The MSDN linking makes sense, given that you need an MSA for MSDN, and many of us need corporate AD credentials for all our work sites.

(image)



Case study in unpreditability being bad

Thu, 05 Jan 2017 22:04:55 GMT

I was reading an HBR article about Why Being Unpredictable Is a Bad Strategy and all I could think about was the Windows 8 debacle.

Leading up to the development and release of Windows 8 Microsoft switched from an open and predictable model to a very closed and secretive model. Sure, they'd waffled back and forth in the years prior to Windows 8, but it wasn't until that point in their history that they went "entirely dark" about something as important as Windows itself.

Personally I think they were copying Apple, because at that point in time Apple was ascendant with the iPad and Microsoft was worried. The thing is, a secretive model works for Apple because nobody relies on their long-term vision for stability. Their target are consumers, who like fun stuff and care little if things break every couple years.

Microsoft's primary customer base are small, medium, and large enterprises who spend millions or billions on IT. They don't like fun, they like predictable roadmaps that minimize cost and risk. The last thing a business wants is a version of Windows that comes out of the blue and breaks all their software, or requires complete retraining of their entire user base.

Worse yet, Microsoft not only increased risk for all of its business customers with Windows 8, they totally cut off all avenues for feedback and improvement of the product until after it was released. After it was too late to address the numerous major issues with the new OS.

Fortunately Windows 10 has been a whole other story. Microsoft not only returned to their original open communication model, but they've actually became more open than they've ever been in their history. And it shows, in that the business world now has a predictable roadmap, and Windows has never been so closely shaped by real-world customer feedback.

The result is that Windows 10 adoption is proceeding at a rapid pace, and Microsoft is (very so) slowly rebuilding trust with its customers.

(image)



Frameworks have value

Tue, 03 Jan 2017 16:53:41 GMT

We're having a conversation on Magenic's internal forum where we're discussing the current JavaScript community reaction to all these frameworks. Some people in the industry are looking at the chaos of frameworks and libraries and deciding to just write everything in vanilla js - eschewing the use of external dependencies.

And I get that, I really do. However, I'm also an advocate of using frameworks - which shouldn't be surprising coming from the author of CSLA .NET.

Many years ago I spoke at a Java conference (they were trying to expand into the .NET space too).

At lunch I listened to a conversation between some other folks at the table; they were discussing the use of Spring (which was fairly new at the time).

Their conclusion was that although Spring did a ton of useful and powerful things, it was too big/complex and so they'd rather not use it and solve all those problems themselves (the problems solved by Spring).

I see the same thing all the time with CSLA .NET. People look at it and see something that is big and complex, and thing "those problems can't be that hard to solve", so they end up rewriting (usually poorly) large parts of CSLA.

I say "usually poorly" because their job isn't to create a well-tested and reusable framework. Their job is to solve some business problem. So they solve some subset of each problem that Spring or CSLA solves in-depth, and then wonder why their resulting app is unreliable, or performs badly, or whatever.

As the author of a widely used OSS framework, my job is to create a framework that solves and abstracts away key problems that business developers would otherwise encounter. Because of this, I'm able to solve those problems in a broader and deeper way than a business developer, who's goal is to put as little effort into solving the lower level problem, because it is just a distraction from solving the actual business problem.

So yeah, I do understand that some of these frameworks, like Angular, Spring, CSLA .NET, etc. are complex, and they have their own learning curve. But they exist because they solve a bunch of lower level non-business related problems that you will otherwise have to solve yourself. And the time you spend solving those problems provides zero business value, and does ultimately add to the long-term maintenance cost of your resulting business software.

There's not a perfect answer here to be sure. But for my part, I like to think that the massive amounts of time and energy spent by framework authors to truly understand solve those hard non-business problems is time well spent, allowing business developers to be more focused on solving the problems they are actually paid to address.

(image)



Coding Standards resolution (part 2)

Wed, 28 Dec 2016 20:05:51 GMT

In a previous blog post I related a coding standards horror story from early in my career. A couple commenters asked for part 2 of the story, mostly to see how my boss, Mark, dealt with the chaos we found in the company who acquired us.

There are two things I think are fortunate that relate to the story.

First, they bought our company because they wanted our software and because they wanted Mark. It is quite possible that nobody in the world understood the vertical industry and had the software dev chops that Mark provided, so he had a lot of personal value.

Second, before the acquisition I'd been tasked with writing tooling to enable globalization support for our software. Keep in mind that this was VT terminal style software, and all the human readable text shown anywhere on the screen came from text literals or strings generated by our code. The concept of a resx file like we have in Windows didn't (to our knowledge) exist, and certainly wasn't used in our code. Coming right out of university, the concept of lexical parsing and building compilers was fresh in my mind, so my solution was to write a relatively simplistic parser that found all the text in the code and externalized it into what today we'd call a resource file.

That project was one of the most fun things I've probably ever done. And one of the few times in my career where a university compiler design course directly applied to anything in the real world.

Because Mark was so well regarded by the new company, he ended up in charge of the entire new development team. As such, he had the authority to impose his coding standards on the whole group, including the team of chaos-embracing developers. Not that they were happy, but this was the late 1980s and jobs weren't plentiful, and my recollection is that they grumbled about it, and the fact that it was a "damn Yankee" imposing his will on the righteous people of The South. But they went along with the change.

However, that still left massive amounts of pre-existing code that was essentially unreadable and unmaintainable. To resolve that, Mark took my parser as a base and wrote tools (I don't remember if it was one tool, or one per coding "style") that automatically reformatted all that existing code into Mark's style. That was followed by a ton of manual work to fix edge cases and retest the code to make sure it worked. In total I think this process took around 2 months, certainly not longer.

I wasn't directly involved in any of that fix-up process, as I had been assigned to do the biggest project yet in my young career: building support for an entire new product line in a related vertical to the focus of our original software. Talk about a rush for someone just a year out of university!

(image)



Dealing with Automation

Tue, 27 Dec 2016 18:50:33 GMT

I've always been a fan of speculative fiction, and in particular the sub-genre of cyberpunk and what is often now called dark space opera (which usually has cyberpunk aspects). As most people have become aware over the past few decades, good science fiction explores possible futures that come about due to technological advancements. The focus is usually on the changes to society or mankind, with the technology being just a driver for the change. If you weren't aware that this is the core of good SF, then I'm happy to let you know that you should be reading this sort of fiction because it will help you be more prepared for changes as they occur. Among the key themes inherent in most of these speculative futures is the idea of automation. That computers, robots, and machines will automate away some (or nearly all) jobs that humans have done in the past, or that they do today. A couple decades ago this was true fiction; today we can see that this is an almost unavoidable future. Personally I find this interesting because my entire career has been in the software industry. Most software is all about automating away people's jobs. Not that we usually frame it that way, but the reality is that corporations used to have massive numbers of accountants, now they have a small handful because computers do the work of those many, many thousands of accountants from the past. And software drives robotics, and machines, and all kinds of automation. My career is all about driving toward a future of automation, and so I tend to think about what that means for society. For example, I was just reading that driverless cars will eliminate over 200 categories of jobs. We already know that nearly any factory work can be automated, it is just a matter of whether the automation is cheaper than offshore labor. There's essentially no way US labor can be cheap enough to avoid the work from being automated, so bringing jobs back from offshore is entirely unrealistic. This article from a Nobel economist sums up how robotics threatens jobs rather nicely. And explains why worries about outsourcing jobs, or thoughts of trying to "bring them back" are not really important. Capitalism and the free market drive companies to find the lowest cost way to provide the minimum viable product that makes the most profit. That's brutal, but it is true. Current US and European trends toward right-wing thinking tend to focus a lot on removing barriers so corporations can better pursue capitalistic and free market policies. So companies will either find super-cheap labor somewhere in the world, or if that's too hard or expensive then they'll automate those tasks so they don't require large numbers of humans at all. Whatever costs less in the long run will win, and that will not involve human labor. Assuming we're going to stick with capitalism, corporatism, and free market concepts (and I think that's a safe bet), the question isn't whether most people on the planet will become unemployed. The question is how humanity and society will deal with most people being unemployed. One common trope in speculative fiction, and in reality, is the idea of a basic income provided for unemployable people. This article against universal basic income (make sure to click through to the author's original article with details) makes some good points about the risks of a basic income. Sadly, even after you read the author's original (and often good) points, I think it is clear that he maintains unrealistic hopes about keeping most people employed in some manner. I don't have the answer. I don't know what society does look like when factories that required thousands of workers now require a few hundred technicians to keep the machines running. Can we retrain those thousands of unemployed piece workers for another factory? And what stops that other factory from becoming automated? When that happens, do we retrain those people for jobs that can't be[...]



Coding standards horror story

Thu, 22 Dec 2016 18:30:01 GMT

Early in my career, actually my first "real" job, I worked for a guy named Mark. Mark was an amazingly smart and driven programmer and I learned a lot from him. But he and I would butt heads constantly over coding standards and coding style. Our platform was the DEC VAX and our code was written using VAX Basic. For this story to make sense, you must realize that VAX Basic wasn't really BASIC the way you typically think about it. The DEC compiler team had started with Basic syntax and then merged in all the goodness of FORTRAN and Modula II and Pascal. For example, even back in the late 1980's the language had structured error/exception handling. It is also important to understand that in the late 1980's there weren't code editors like Visual Studio. We used something called TPU (Text Processing Utility) that was more powerful than Notepad by far, but nothing compared to modern editors of today. It competed with Emacs and vi. As a result, it was up to the developer to style their code, not the editing tool. Mark had defined a strict set of coding standards and a style guide, and he'd dial back into work from home at night to review our code (yes, via at 1200 baud modem at the time). It was not uncommon to come into work the next day and have a meeting in Mark's office where he'd go through the styling mistakes in my code so I could go fix them. He defined things like every line would start with a tab, then 2 spaces. Or two tabs, then 2 spaces. Why the 2 spaces? I still have no idea, but that was the standard. He had a list of language keywords that were off limits. Roughly half the keywords were forbidden in fact. He defined where the Then would go after an If; on the next line down, indented. I chafed at all of this. The 2 space thing was particularly stupid in my view, as was making all those fun keywords off limits. I can't say I cared about the Then statement one way or the other, except that it forced me to type yet another line with the stupid 2 space indent. But what are you going to do? Mark was the boss, and this was my first job out of university in the late 1980's Reagan-era recession. In a job environment where thousands of experienced computer programmers were being laid off in Minnesota I wasn't going to risk my job. Which isn't to say that I didn't argue - anyone who knows me knows that I can't keep my opinions to myself :) The thing is, after a period of time it seems like any standard becomes second nature. I just internalized Mark's rules and coded happily away. In fact, what I found is that my "artistic expression" wasn't really crippled by the guidelines, I just had to learn how to be artistic within them. Knowing a few artists, I'm now aware that putting boundaries around what you do is key to creating art. Artists pretty much always limit themselves (often artificially) so they have a context in which to work. Not that I think code is 100% art, but I do think that there's art in good code. Several months after starting to work with Mark, and absorbing this rigorous standards-based approach to coding, our company was purchased by another company. Mark, myself, and a couple other employees survived this process. And we all moved from Minnesota to Birmingham, AL; which is another story entirely. Let me just say here that regional culture differences within the US are easily comparable to the difference between the US and many European countries. The company that bought my employer was also a software company, with a dev team of comparable size to what we'd had. But they had no coding standard or guideline. They did use the DEC VAX, and they did use VAX Basic. But each developer did whatever they wanted without regard for anyone else. One of the developers cut his teeth on FORTRAN. It turns out that VAX Basic could be made to look exactly like FORTRAN. Remember that DEC merged most of the good features of FORTRAN into V[...]



Pride in Software Development

Wed, 14 Dec 2016 00:03:02 GMT

Every now and then politics crosses with software development, which makes it relevant to my blog, at least in my mind. And since it is my blog... :)

I was recently made aware of a public figure, Franklin Graham, a confidant of our next President, who directly implied that there's no pride in computer programming. Apparently only people involved in mind-numbing factory work or back-breaking physical labor can take pride in what they do or something?

(image)

Obviously this shows just how out of touch Franklin Graham is with the modern world. And that's fine - people who choose to live in the past need someone to keep them company. Personally, I have no desire to work a team of horses on a subsistence farm like my grandfather, but apparently people in Frank's world have that as a life goal.

And that's fine. I think there's room in our country for people who don't want to live in the modern world; as long as they don't try to impose their Luddite views on the rest of us. Take a cue from the Amish, people!

To think that software developers don't have pride in our work is absurd.

Many years ago I read The Hacker Ethic, and still highly recommend it. The book covers the basic drives of subsistence life, then the Protestant work ethic (drawn from the Lutheran and Methodist Christian sects), and then builds on it by discussing the kind of work ethic with which I can identify: what the author dubs the hacker ethic.

Another excellent book is Drive. Different people are motivated by different things, but many are driven, at least in part, by pride in their work.

In any job or profession there are people who take more pride in having a job than in actually working. This is true of some people who do back-breaking work, and some people who develop software. And they are generally the sort of people I try to avoid in life.

And there are people who take more pride in doing excellent work than in the formality of having a job. The software developers I know and have been surrounded with throughout my career have almost always been the sort of people who strive to do excellent work. And who take extreme pride in making other people's lives better through software.

Beyond that, I know a lot of such people (family, friends, and neighbors) who aren't in the computer field but still unknowingly live by the hacker ethic. Whether they work with their hands, their mind, or both, these people take great pride in their work.

Sorry Frank, but your worldview is hopelessly out of date.

(image)



Finding women tech speakers is really difficult

Fri, 02 Dec 2016 18:15:36 GMT

I consider myself a strong ally for diversity in technology in general, and women in technology more specifically. I work to improve matters through my role as CTO at Magenic, as a conference chair for VS Live and Modern Apps Live, through my social media channels, and in any other way I can.

Today this tweet came through my feed from @CallbackWomen:

(image)

The idea of a conference giving out Playboy magazines in their welcome pack is surreal, and clearly violates the spirit (and I think the letter) of their own code of conduct.

I do want to pick a nit with the tweet regarding the lack of diversity in the speaker lineup though. I agree there's a problem with a lack of diversity in their lineup - and the lineups of nearly every tech conference out there.

But as a conference chair I can say that finding women to speak at tech conferences is really hard. This is something I've been trying to overcome for years now, and have solicited help and input from female colleagues, other allies like myself (such as John Scalzi, friends, random people on twitter (like the @CallbackWomen community and others), and speakers at conferences specifically about diversity in tech (such as AlterConf where it is easy to find women speakers).

If I look at VS Live and Modern Apps Live in particular, we've done things like create and actively enforce an anti-harassment policy, and many attempts to reach out to various online communities focused on women speakers in tech. This is ongoing over the past several years, so not a recent thing or a one-time thing.

The result, over all this time, has been new submission from women to our CFP process. And we had her speak and she was excellent.

What I'd like from this post

What I'd like to see from this post is perhaps a broader conversation and input on ways to bring in more submissions from women speakers to tech conference call for presentations/speakers/papers. As conference chairs we can't increase diversity in our speaker lineups if no women even submit to speak.

If you are a woman in technology, do you speak? If so, how do we attract your attention?

If are a woman in tech and you don't speak (but would like to), how can we encourage you to speak? Or help you develop speaking skills? Are there gender-specific blockers that are preventing you from becoming part of the speaker community?

And there is a speaker community by the way. Well, I'm sure there are many different such communities. In the Microsoft app dev tech space there's a large and vibrant speaker community. And this community has some diversity, including some extremely accomplished women. But the number is so small that I believe I know all of them, and count most as friends. I don't know all the men in the community, because there are too many. That highlights the issue in a sense.

So again, what I'd love to see is a conversation about what it is that prevents accomplished women technologists who are public speakers from submitting to conferences like VS Live? And what prevents women technologists who want to become speakers from pursuing that avenue?

(image)



Test

Wed, 30 Nov 2016 16:21:51 GMT

This is a test using Markdown Monster to create a blog post.

If it works it will be awesome because I get to compose in markdown, and post directly to dasBlog.

public void foo() { // nice code entry like GitHub
} 

And code inline like you'd expect.

(image)



What happens to CSLA .NET support if Rocky is hit by a bus?

Tue, 01 Nov 2016 21:14:12 GMT

This (somewhat morbid) question comes up (in various forms) from time to time. And, as you might imagine given my health issues over the past few years, I put very real thought into this whole concept. Three different times it was quite possible that I wouldn’t make it.

The concern though, is the same with Angular, Java, Spring, or any other open source framework or tool. It is also the same with any commercial tool – anyone who’s been in this business for a while has surely dealt with commercial vendors going under, leaving them stranded with a component or technology that’s no longer supported.

In the commercial space the biggest offset to this is code escrow. In the OSS space the code is open, so it is “automatically” escrowed.

In the commercial space there’s really nothing beyond escrow either. You can’t bind a company to provide you support once they are gone. But in the OSS world things rest on community, so at least there’s some hope past escrow.

CSLA .NET has a broad community of contributors. There’s a site out there that collects metadata around OSS projects, including CSLA: https://www.openhub.net/p/cslanet

There’s a core leadership team for CSLA, including myself, Jonny Bekkum, Jason Bock, and Kevin Ford. So some Magenic, some non-Magenic. The framework is copyrighted (owned) by an independent LLC (that I own, but still, it is an entity that will outlive me).

Any platform, framework, or tool you use to build software deserves no more or less scrutiny than CSLA. People might dismiss ASP.NET because (a) it is OSS, or (b) because Microsoft owns the copyright. But Microsoft has abandoned technologies before (some quite recently: LightSwitch? Silverlight?). Were Microsoft to abandon ASP.NET, or perhaps Microsoft goes out of business (like DEC did in the 1990’s: they were the #2 computer maker one year, basically non-existent three years later), what would happen to ASP.NET? Well, it is OSS, so the community would hopefully pick it up.

Same thing with CSLA .NET.

(image)