Yammer was acquired by Microsoft in 2012 for US$1.2 billion and I think they had great expectations of it becoming a corporate social network. Equivalent to Facebook for companies.
But I doubt that this has realized for them. Yammer’s integration with Office 365 is confusing and flawed. For instance creating groups in Yammer has no correlation to Office 365 groups unless you specifically set it up that way. In this video Office Guru Darrell shows how to do this. But be very careful doing this, because once you’ve done this you can’t undo it (except by creating a Yammer ticket – and even that’s not straightforward).
Also you would think that once you’ve set this up, you should be able to join existing O365 groups. You’d be wrong! Enabling O365 connected groups allows you to create new O365 groups through Yammer which is then appropriately surfaced to SharePoint & Teams as well, but despite a popular UserVoice idea from 2018, you still can’t join existing O365 groups. For me and I suspect many others that’s a fundamental flaw.
I think there’s a lot of value in a fully integrated Yammer especially in light of the recent Facebook Workplace launch, but even after being part of Microsoft for 6+ years, Yammer just doesn’t have the maturity to realize the value. I also don’t see there being much momentum in terms of developing this product if one looks at the frequency of feature releases over the last 18 months.
I wonder if teams aren’t so enamored with the incredible integration, functionality and value of Teams, that Yammer’s use case isn’t immediately clear anymore and that for that reason it’s not being adopted anyway. Which means that Microsoft are hesitant to invest and develop this product. And as Teams continues to grow, I struggle to see a clear path forward for Yammer.
Having been in software for 20+ years, the one thing that remains consistent is change. As soon as you think you have a technological stack working perfectly something new is released and disrupts it all! New technology often provides significant value so developers & architects are eager to utilize it, but it’s not always clear where “things go”.
I also understand very well that technology preferences are like the proverbial religious wars. Azure vs AWS, Angular vs React, Java vs C#, Linux vs Windows and so forth. And that’s OK. However this post is for people like myself, who feel comfortable with Microsoft’s .NET stack. The .NET Framework has been around since 2002 and that has allowed it to gain a lot of maturity. With .NET Core, Microsoft have applied the many lessons from .NET Framework to build a new & better platform. Read more about why enterprises are turning to .NET Core. I have no hesitation in recommending .NET Core for your enterprise-level web application.
I do also think it’s worth mentioning that Azure is purposefully not positioning themselves as Microsoft only providers. In fact, there’s a recent stat that shows how Linux now dominates Azure – who would’ve predicted this only a few years ago!?
So, at this moment time, I would use these components to build a brand new enterprise-level web application.
Yes I know, what about containers? I love containers! Containers are great if you want to avoid maintaining an OS in the broad sense and you want to build for different OSes and providers. Docker has wonderful products and is fully supported in Azure with both Azure Kubernetes Services (AKS) and App Service.
However if you only require an application host and you know you’re going to stick with Windows OS and Azure, I would still recommend Azure Web App. It’s Infrastructure-as-a-Service, which makes it so simple. You can think of this as the same concept as a container, but it’s a little lower-level; so containerized IIS almost.
Azure Web Apps also provides everything you would need to run mission-critical web applications for the enterprise like scaling up and out, high availability, geo-replication and so forth across multiple slots (for dev, test & production environments for instance). It also has excellent insights (analysis) with almost zero setup. Not to mention real-time debugging with Visual Studio.
Although the .NET Framework (currently at version 4.7.2) has been a very successful framework for a very long time, but for any new applications I would strongly recommend .NET Core (currently at version 2.2, although version 3 is in Preview at the time of writing).
.NET Core is a vastly refactored framework that is open-source (a fact often lost on many people), more compliant with better performance. It also has a great CLI for folks who prefer CLI and text-based editors over the powerful, yet bulky Visual Studio. I talk about IDEs and tools below.
To code the on the server-side you should use C#. VB.NET is not worth a long-term investment; despite Microsoft’s assurances I see this as a declining language. C# is a wonderful, continually evolving language that is as good if not better than any of the others.
Data Store
Almost all web applications require a data store. A common use case for web applications is dashboards, reporting or Business Intelligence (BI) from big(ger) data sets (often in Data Warehouses Blob Storage, Data Lakes etc.), but those data sets are mostly unrelated the web application itself and therefore falls outside the scope of this post. I might talk more about that in a future post.
For web application data storage, I recommend Azure Cosmos DB especially if you’re comfortable with JSON and have an adequate understanding of document-based databases, also referred to as NoSQL. These databases are not relational like SQL Server or Oracle. But very often, especially for web applications, relational models don’t offer any extra value but add complexity and reduced performance.
If you’re already comfortable with relational databases and don’t want to invest in learning NoSQL then you can’t go wrong with Azure SQL Database. It’s not exactly the same as SQL Server, but very similar. However it has significant enterprise-level benefits like scaling, availability, backups etc.
Be careful with security though. Microsoft’s suggested access pattern has it’s critics. Just ensure you’re compliant within your industry. Azure SQL Managed Instance (MI) might be a better choice if you require a more conventional VNET/Subnet security model.
For the client-side implementation of your web application, I confidently recommend Google’s Angular (also known as Angular.io or Angular 2+). Avoid AngularJS (also known as Angular 1); it’s a relatively easy framework to learn, but has some issues around performance and challenges with maintainability. With Angular’s tight integration with TypeScript it’s easier to maintain and safer to code with. It does take a little longer to set up, but it’s worth it.
Facebook’s React is also very popular and if you’re comfortable with it, use it. I’ve used both and I prefer Angular because of it’s tight integration with TypeScript as well as its clean patterns. React also has a TypeScript implementation, but it’s as well-supported as Babel, it’s own type engine. And I don’t see Babel as being as having the industry adoption that TypeScript has.
But they’re both excellent, well-supported frameworks. Vue.js is also getting a lot of attention nowadays, but it’s not one I’ve used. There has been so much written on choosing one so I won’t go into that again. I prefer Angular, but they all work fine with ASP.NET Core. Pick the one you want as indicated in the screenshot below.
There is another experimental platform called Blazor that one should definitely be aware of for the future. It will build to a WebAssembly which is now supported by the mainstream browsers. This will mean you can code C# for the client-side! I think Blazor will be a major player in client-side development in the future. Very exciting indeed, but it’s too early at the time of this post.
Bootstrap 4.1 is a very powerful and extensible CSS framework developed originally by Twitter, specifically with Responsive web design (RWD) in mind. Version 4.1 has some great improvements over the very popular version 3 and version 4.
Unfortunately version 4.1 still relies on jQuery and other 3rd party JavaScript libraries, but the intention is to rid the framework of these in version 5. So do look out for that.
With ASP.NET Core the client-side libraries have to be installed and updated with NPM packages. That’s a big topic on it’s own, so I won’t cover that in this post.
Real-time communication
SignalR
For real-time communication (chat, tickers etc.) use SignalR either in the application or better yet SignalR on Azure. It is a very specific use-case, but this is very cool technology that I’m very fond of.
Editors and other Tools
Code Editor
For folks who have been on the Microsoft stack for a while, Visual Studio is the go-to IDE. It’s a very powerful, rich & full-featured IDE that comes in 3 editions; Community, Professional & Enterprise. Community is free and fine for most cases. Visual Studio is now available on Mac, but it’s not open-source. The Enterprise edition is very expensive.
However unlike the old days, you don’t need Visual Studio to develop .NET applications any more. Because .NET Core was developed with a CLI, you can use any text-based editor to code for it. Notepad++, Sublime Text or, my favorite, Visual Studio Code all do the trick.
VS Code is also open-source and can run on all the OSes. It’s extensibility platform is quickly making it a developer favorite across tech stacks. It really is a great product. I’ll do a follow-up post on it at some point.
Data Access
If you’re using Azure SQL Database (or any other SQL Server-based data store) most people use SQL Server Management Studio (SSMS). It’s a very powerful, but bulky application that does all one needs. It’s free, but not open-source and only runs on Windows.
More recently Microsoft has released Azure Data Studio. I really like this tool. It’s a much lighter open-source multi-OS application that is also free. See if you can spot the trend here! 🙂
If you’re targeting Cosmos DB, you can use the Cosmos DB emulator for local development.
DevOps
Over the years, we’ve all seen these buzzwords. Web 2.0, Big Data, Machine Learning and so forth. It feels like DevOps is the trending buzzword currently! For those of us who have been using this for years (who remembers CruiseControl.NET?) it is encouraging.
I very strongly recommend DevOps and particularly the CI/CD part of it, but this is also a very big topic that I may post about in the future. For now though, look to Azure DevOps for all your needs.
Overview
Using these services, tools & frameworks you can develop web applications that can scale up and out to whatever you’re likely to need. With the knowledge that you’ll have the support of industry leaders like Microsoft, Google (or Facebook for React) and Twitter.
My team has implemented the excellent IdentityServer3 for our Single Sign-On provider but we kept running into a very irritating and intermittent issue for some of our users:
IDX10311: RequireNonce is 'true' (default) but validationContext.Nonce is null.
The error occurred when our users were navigating to the https version of the site but they were being redirected by IdentityServer back to the http version of the site. They did this because some of them had the browser caching the https url and so they selected that instead of typing/selecting the http url.
The fix was simply to have them initially browse to the same url and protocol (http/https) that IdentityServer redirects to after log in.
I needed a laptop and so after doing some online research decided on Microsoft’s Surface Book. Touted as a laptop first and a tablet second, it seemed perfectly aligned for my requirements. The model I picked had good specs (although a little light on the hard drive) and good reviews and I didn’t pick up on any of the Surface Pro 4’s well documented power issues. So it was with much expectation that I went ahead and bought one at a Microsoft Store.
It’s no secret that I am and have been somewhat of a Microsoft fan boy for a number of years, but it took me 3 weeks to realize that the Surface Book as a final product is not yet mature enough to replace a laptop of equal specs. It certainly has many very impressive features and some of the engineering is really impressive (power cord, detaching of the screen, the pen etc.). But it is not stable at all. It crashed often. When using Adobe Lightroom I was never able to work for more than an hour without a crash. I also had inconsistent battery issues, the screen would become unresponsive (similar to the Surface Pro’s issues maybe?) and the power button wouldn’t function requiring hard resets. I realize completely that some of these may be software related (the OS is predictably Windows 10), but I bought the whole system and as that it doesn’t imbue confidence.
There were also other reasons that the concept didn’t work for me and I realize this is personal preference. One of these being the pen. It is super cool when one first plays round with it, but it soon becomes a gimmick and for me didn’t add the value that I had hoped. The keyboard layout also didn’t impress me. I use PageUp and PageDown a lot but these keys have inconveniently now moved to function keys at the top. Other people may feel differently about these preferences I acknowledge.
I’m not one to easily return goods in this way, but I really regretted the purchase and so felt obliged tot return it. I did need a laptop though and, after more online research, swapped the Surface Book for the new Dell XPS 15. And I have to say that after a week’s use this was a very good swap. For slightly less ($2,099.00 for the Surface Book vs $1,999.00 for the XPS) I get significantly better specs (a 512GB SSD hard drive, 16GB RAM), an absolutely exquisite screen (the Surface Book’s was also very good) and it’s a very stable product. With all the same software, I have had zero issues. It obviously doesn’t have the tablet component, but for me this had less value on the Surface Book than I anticipated after the initial coolness factor wore off. So far, I’m very impressed with the Dell XPS 15.
It’s a pity because I can completely see where Microsoft are going and I definitely support it, but it turns out that to build a quality system takes a few iterations. I have no doubt that my guys (Microsoft) will get there in the end, but for now it’s not it.
Just a quick word about Microsoft Store. I used the King of Prussia store. I had a GREAT experience with them. The surface and their return policy is exceptional. I would without a doubt use them again and recommend them to anyone. They should continue to push forward on this concept.
A great article on “Cards”. I have believed for a while now that they are a next step in the evolution of web architecture, but there is one huge caveat and that is that Google Search (and the others) have not yet found a way to deal with them gracefully. When the search engines can firstly agree on a standard and secondly implement search for “cards” I believe the web will inevitably move this way. As a pattern it makes huge sense and with all the easy AJAX functionality now available implementing cards is quite easy.
I have been struggling to get a ASP.NET MVC 4 project with Entity Framework using Code First & Migrations and making the UserProfile class part of the migrations process. I Googled hi and low, but couldn’t get a great answer. Eventually through a lot of messing about I found a way that works.
Here are the steps:
Create your MVC 4 project.
Add a Data project
Install EntityFramework in Data project
Reference System.Data.Entity from Data project
Reference Data project from Web project
Add Models and Context to Data project as per Code First instructions
Add a temp controller using the context and a model from the Data project
Run the app
Create a record using the temp controller above. Success will indicate EF is doing its thing
Deploy to Azure.
Repeat steps 8 and 9 on Azure.
Enable Migrations on the Data project. If the migrations folder etc gets created in the Web project you’re on the wrong track.
Move UserProfile class in AccountModel in Web project to your Models in the Data project.
Remove the UserContext context class & try and build.
This will throw a lot of errors. Update the references to refer to your context (as defined in the Data project) and to your UserProfile class (that you’ve just moved).
Add more fields to the UserProfile class like Fullname.
Run Add-Migration.
This will create a bad migration so you will manually have to override this. The migration will initially recraeate the whle table. Overwrite this to only add the new column(s). Don’t forget to delete the new columns in the Drop part
Run Update-Database
Deploy to Azure again (with migrations) to see your data structure the way you want.
Now you can use the power of Entity Framework migrations from a separate project (good), with the User Profile included (better) and in Azure (awesomeness!)
I’m not a Microsoft basher, in fact quite the opposite. I am an official Microsoft Partner and as a .NET developer I am massively indebted to the Redmond Software giants for providing me with a career.
As a partner I typically get most of Microsoft’s software before the general market. This and the fact that I’m naturally inquisitive of applications make me and my company, Vectorsoft, a Early Adopter of especially Microsoft products and services.
With this in mind I installed Windows 8 a couple of months ago. I am quite forgiving of new software and I have a notoriously low RT (Resistance to Change) factor and so I expected to the Windows 8 experience not to be completely smooth in the beginning.
However now 8 weeks later, I am now longing back for the stability & predictably of good ol’e Windows 7. Don’t get me wrong; there is lots that I love about Windows 8. I actually really like the Metro design. The right-click functionality allows much more use of screen real estate and I love that. Some of the Microsoft Metro apps are brilliant – the email client is the best designed email client I have EVER used. I also like the Apps (or Store) model with easy-updates etc – quite similar to the Android Play model. I think they are onto a winner here eventually, but right now it is not ready.
Why I’m bitching:
The primary problem is that for a power user like me that spends at least 8 hours a day using Windows design familiarity is very important. Presently the switching between the new and the “old” look-and-feel is a very confusing experience.
Many of the great looking Metro apps aren’t as fully functional as their “old” versions. Teamviewer and the Mail App are two prime examples of this. This means I have both versions installed or only the “old” one.
The navigation between old and new applications is still buggy. Clicking on the top-left “charm” only iterates through the new apps and not the old ones. This is very irritating.
So for me I regret installing Windows 8. Eventually I do believe the reasons for it not being that good will become less – mostly because the apps will mature into Windows 8 to harness the new functionality and design elements, but until then I would hold off on Windows 8.
I had just started at Dimension Data in 2010 when Marius Vorster, a colleague at the time, introduced to me to the Sony Ericsson X10 Xperia Mini. It was my first experience with an Android phone and I have to say that I was very impressed. So much so that I immediately got myself one.
At that point in time Android had been around for a while, but I don’t think it was quite mainstream yet. The biggest smartphone players were Apple & especially Blackberry in South Africa. For instance, most of my friends had Blackberries and scoffed at the idea of Android (aka Google) phones. But having seen where Android was headed I thought that Blackberry and even Apple would struggle to hold off the Google OS.
While there were certain things that I loved about the Xperia Mini, it soon became apparent that it was underpowered and the screen was too small to really be able to use comfortably. So for me the Android OS was a definite yes, but the phone I got was not quite as good.
With this in mind and the fact that I am a technically inclined person I keenly followed the Android evolution that was occurring and indeed taking over the smartphone world. I must say that I didn’t expect Samsung to be the hardware manufacturer to steal the Android market in a manner of speaking in the way that they did. But they did; big time. Their Samsung Galaxy S2 was released and became the best selling phone model of all time; selling 27 million units in one quarter (compared to 17 million iPhone 4s units in the same period)! I advised everyone that was in the market for a new phone to get the Galaxy S2 – although frustratingly many people still ignored my advice and got Blackberries.
Is the newly released Samsung Galaxy S3 the best phone yet?
And now, very timeously, Samsung has released the next version of the Galaxy – the S3. I say “very timeously” because my contract has just expired and fortunately for me it gave me the opportunity to upgrade to this phone without having to “manipulate” my contract at all.
I have now had the phone for 5 days and I have to say that this phone is phenomenal! It just blows me away. Broadly speaking, the phone impresses as follows:
The phone is very powerful. In 5 days of trying everything on the phone, I have yet to encounter any type of lag whatsoever. Even HD video plays instantly.
The screen is a thing of beauty. It looks very crisp and sharp and the colours are well saturated (but not too much as I’ve heard the previous model was). The touch-screen functionality is miles better than the previous phone I had.
The cameras. I am a wannabe serious photographer (I photograph with a Nikon DSLR) and phone cameras have never impressed me simply because they can’t really compete with a real camera. However this camera (the primary one) exceeds my expectations. Photos or videos taken with this camera are brilliant. The one question I have is that especially the videos look much better on the S3 than on a laptop. Hardware-wise the quality of photos and especially videos are the best thing to show off on this phone! The quality of the camera for the first time now makes me feel that I don’t always have to have my DSLR with me. For a wannabe photographer like me this is a big deal!
Battery Life is still an issue, but this is a sector-wide problem. And it is not a problem if one manages it. But the days of not having to charge your phone for 6 days are over for the foreseeable future.
Storage. For me this is a big win over Apple’s iPhone’s non-transparent pricing model. Apple’s pricing just pisses me off in the same way that Windows’s pricing does. With this phone you decide on the storage space you need by simply using a bigger or smaller SD card. Although having said that, the phone comes standard with a 32GB drive which is plenty.
Now Android 4 aka Ice Cream Sandwich aka ICS:
A lot of reviewers complain about Samsung’s TouchWiz undermining Android ICS on this phone. I hear what they’re saying but to me it isn’t much of an issue. I honestly don’t notice it; although in principle I dislike the principle.
ICS is a massive improvement over the previous versions of Android. It is just a much more rounded product. Usability is much better on all fronts. It is to be expected as an OS evolves and user requirements are better understood.
Resource Management on ICS. I have to mention this specifically. On my previous it was a tedious process to manage Wifi, Mobile Data usage and GPS usage. On this OS it is so easy.
Google/Android photo management. The instant upload is brilliant. It sometimes still catches me unawares. I would like to see a differentiation between photos and videos though. I love the instant upload on photos but on videos the bandwidth is a problem. For instance I took a 60 second HD video of a kids birthday party ad the size; 210MB!
Google+. To make full use of Android you really must have a Google+ account. Google+ is Google social networking platform and it isn’t quite Facebook (yet), but it is very good. In fact, I like the underlying architecture of Google+ more than Facebook and with its Android integration I think it will be as big as Facebook one day.
Apps, the fun part. Some of the Apps available will simply blow your mind. Many (probably most) are just for fun. Plenty of games. Social networking and much much more. One of the apps that I would say one really must install (even more so if you use more than one language like I do – Afrikaans and English) is the SwiftKey X keyboard app. It is a much better keyboard than the default keyboard. In fact, I won’t be surprised if Google (or someone else like Apple) buy the developers of this software.
So in conclusion, I think this phone is the best Smartphone up to date. It easily beats the iPhone 4s. Although I’m pretty certain that the next version of the iPhone (due for release in October) will catch-up and quite possibly surpass this phone. For me the Google integration – in terms of Android, but their services like Maps and the rest as well – make Android devices more of an option than an Apple device.
I can’t recommend this remarkable bundle of technology enough – even despite the cost.
This week I bought an Android powered Sony Ericsson XPERIA mini smart phone. A colleague of mine introduced me this beacon of technology so I had an idea of what to expect. But after now having used for a couple of days I have to admit that I’m completely bowled over!
Before using this phone I didn’t think that Google’s Android (or any other mobile OS for that matter) really came close to beating firstly Apple’s iPhone and secondly RIM’s Blackberry, but now I’m of a different opinion. Personally I already prefer Android to Blackberry. Yes they have been designed for slightly different audiences and both have their pros & cons, but the Android’s user interface is very good (because of the touch screen this can be almost completely driven by software).
Add to that the extensibility of Android (through its 70,000+ apps) and most importantly the cost and the Android becomes a more sensible option for me. Android is a hardware independent phone which means you can get the full power of Android on a relatively cheap phone – as is the case with the XPERIA mini.
I still think that right now the iPhone is the ultimate, but I just cannot justify the price. Although that being said I’m quite certain that the architecture of Android and the commitment of Google will see Android eventually catching and finally passing Apple certainly in terms of units running the OS.
(because of the touch screen this can be almost completely driven by infinitely programmable software)
Because of the economic downturn Lené and I decided to send me back. Back to the evil dungeons of corporate life. In other words; a real 9 to 5 job. I haven’t worked in corporate since leaving the UK in August 2006. Everyone knows corporate has its bad aspects, but by-and-large I enjoyed the environment. Some people hate it, but I seem to do well in it.
Once the decision had been made, I was expecting to wait a while to actually start working. Not so, luckily. Lené’s cousin’s husband referred me to someone at Dimension Data, probably South Africa’s biggest IT company in Port Elizabeth. After a few to-and-fro emails I managed to secure an interview. I have done many many interviews and am very comfortable doing them. In the UK I was so good I would go for 4 interviews on one day and get offered them all by 5pm! Anyway after the interview they said they liked my skills but they had nothing right then. Fair enough I thought. But about 2 hours later I got a call asking when I could start! The rate was obviously not as high as I would expect in the UK – where I made serious money. But I am pleased with what I got.
My first job was to jointly build 83 Infopath (for Sharepoint deployment) forms for Sabco, a major Coca-Cola bottling company. It was something I hadn’t done before, so there was quite a learning curve. I was nervous about impressing my new slave masters (so to speak; they’re actually dead-nice), but in the end I think I did OK and I expanded my skill set. It seems DiData was happy as well as they’ve offered me another contract; this time with Volkswagen. And best of all this time it will be in C#, which has been my bread and butter for many years. I can honestly say I think I’m not a bad C#/ASP.NET developer. Time will tell I guess!