A MEAN Pivot

There are inflection points in life.  It would appear that I am at another.  IT “Management” has decreed no new .Net starts.  For the last decade I have been a .Net developer.  So…???  Shrug.  Whatever.

Let’s rewind a bit.

When I got out of college, I was a LAMP guy.  I ended up making a fair amount of money doing perl programming.  I built websites, CD-ROMs, and lots of automation scripting.  I was pretty solid with *nix platforms (Debian and Solaris were my favorites).   In short, I was doing OK in the Open Source world back then.

Why did I change from open source to, what was then, closed source?

Opportunities.

I attended meetings with Microsoft where they showed what could be done with their technology.  From C# v1 to Azure v1.  Each time, Microsoft provided a clear line of thought and succession.  They created order where the open source world only provided chaos.  (Not that they haven’t had several epic missteps too.)  Too many times, I saw customers left in the lurch because a given open source community faded then died.  Ruby?  Perl 5.X?  JQuery?  Compare that to C#.  How long has it been around and still growing?

So why take the risk to pin the hopes (and profits) of the Enterprise on JavaScript?  This makes no sense when you look at the history of Open Source projects.  They never last.  Never.  They either stop dead in their tracks like Perl did or they lose market share because something new shiny comes out.  Think Ruby and JQuery.  In both instances, the community simply evaporated.  The business is left with code no one wants to support (because the skillset left the building) and no one wants to risk a feature enhancement because it might break the existing code.  So why are we doing this?  I do not understand the thought process.  No one has been able to explain it to me.  Java I can almost understand (but not really).  JavaScript?  I’m can only scratch my head.

Make no mistake.  I have no opposition to Open Source software.  I am opposed to risking a multibillion dollar business on a technology stack that has a track record of chaos and premature implosion.

But…  I am here to serve the business.  If these are the new rules of engagement, I will do my part to ram MEAN down everyone’s throat until they choke on it.  Hopefully, the business will see the writing on  the wall early in this new development technology and force a little “regime change.”  And if I’m wrong, I can still be at the tip of the spear by adopting the new models and ramming them home with brutal efficiency.   I guess it’s time to spin up on the MEAN stack.

Anyone know any good, Enterprise-grade MEAN tutorials?  I haven’t found any…

 

RegEx for LDAP

I have been working on a POC for injecting bulk entitlements into our Access Management System.  I guess you could think of our system as a big loop.  Entitlements are created in the AMS.  Users request an entitlement, which kicks off a workflow.  Once the entitlement is approved, it flows into AD.  The part I have been noodling around with is reading the permission out of AD.

I’ve been playing with this for years, literally.  I wrote some simple code a few years back.  For this POC, I dusted it off and showed it around.  I still had to migrate the code into the POC solution, so I had a chance to clean it up a bit.  No problem.  My old code uses UserPrincipals to pull the data out of AD.

var ctx = new PrincipalContext(ContextType.Domain);

var userPrincipal = await Task<UserPrincipal>.Factory.StartNew(() => UserPrincipal.FindByIdentity(ctx, request.UserId)) ?? new UserPrincipal(ctx);
response.User = userPrincipal.Convert();

It can be a bit slow.  At least the first query is slow.  It gets faster after the spin up.  Still…  I think I can make it better.

After poking around for a bit, I found the information I needed to access the AD container via LDAP.  Amazingly enough, the security team posted all of the needed info on the internal Wiki.  I’m not going to go into too much detail because I don’t really want to share any details about our network.

Anyway, once I pulled the data, I needed to parse the data into something I could use for my POC.  I looked around online and I could not find a single reference that showed a complete RegEx sample.  I saw some fragments, but nothing complete.  So here is what I came up with…

var regex = new Regex($@”CN=(?<CN>[\w]+)(,OU=(?<OU>\w+( \w+)*))+(,DC=(?<DC>\w+))+);

That’s it.  I only need the “CN” portion of the string but I thought I’d parse everything for future use.

Enjoy.

PS: I’ll fix the broken images when I have a chance.

Migrating from ClearDB to Azure MySQL

ClearDB is no longer included as part of my MSDN subscription.  I could either pay extra or migrate to the new Azure database for MySQL server.  I chose to migrate.   Continue reading Migrating from ClearDB to Azure MySQL

Azure Pass

Finally!!!

I got my Azure Pass approved yesterday.

The corporate firewall is so locked down that I can’t connect to any Azure SQL instance and the proxy setup won’t allow certificates to flow from a SF cluster into my browser.  Argh!

So, I had to find a work around.  Queue the begging.  😉

Continue reading Azure Pass

Updates: Cloud Development

I know it’s been a while.  This afternoon is the first in weeks that I’m had a few moments to reset my brain.

I’m neck deep in an Azure POC for my business unit.  I’m demoing a scalable, globally deployed microservice enabled system.  (I know too many buzzwords).  Think Excel client with a full cloud backend with everything that implies and it’s available worldwide.

There has been a lot to learn for this POC.  But it’s all coming together.   Along the way we did a full DevOps pipeline on VisualStudio.com.  I learned some of the ins and out for release a service fabric app to secured cluster; added more PowerShell skills to my toolbox; extended my understanding of Docker and Azure Function; etc, etc, etc.

It’s been an interesting quarter.

But why?

Continue reading Updates: Cloud Development

Updates

I’ve been developing a path to get us out of our tendency of developing separate apps to solve each business problem into a service-based solution where we get true reuse our of our components.

I was part of the problem that created our status quo.  I spent years writing custom apps for so-called one-off solutions.  I have finally learned that is the wrong way to develop apps in an enterprise environment.

So…
Continue reading Updates

Daily Reading

Every morning, I spend a bit of time reading articles. This morning, I saw a couple good ones.

Ten Commandments of Object-Oriented Design

What’s In Your Code

Professionalism requires discipline.