I recently had the opportunity to take a work trip to Europe and it was an amazing experience. It all started on Saturday when I flew from Philadelphia to Rome. I arrived the next morning and spent the day exploring Rome and taking in all its famous sights. From the Colosseum to the Trevi Fountain, there was no shortage of things to see and do. I even had the chance to sample some of the local cuisine and it was delicious.
On Monday and Tuesday, I met with my new team, and we spent the days discussing upcoming projects and getting to know each other. It was a fantastic opportunity to learn more about the different culture within this company and how to partner with them to achieve our common goals.
On Wednesday, I flew to London and spent the evening taking in the sights of the city. I had the opportunity to photograph some of London’s most famous landmarks, including Tower Bridge and the London Eye. It was a wonderful way to end the day.
On Thursday morning, I met up with an old friend from South Africa and we spent some time catching up at Nando’s and then coffee. In the afternoon, I traveled by train to Nottingham for the second part of our trip. There were six of us from the Executive there already and we went out to dinner.
On Friday, we spent the day with the team in Nottingham and it was an opportunity to get to know them better. We discussed our product initiatives with them, and they shared their experiences, good and bad, with us.
On Saturday, I had the chance to visit some of the city’s famous landmarks and even tried my hand at some traditional English cuisine.
Nottingham has plenty to offer, but the highlight was The National Justice Museum in Nottingham, a fascinating and educational institution that offers visitors a unique look at the history of justice and law in England. Located in the historic Shire Hall building, the museum features a variety of exhibits and displays that illustrate the evolution of the justice system in England, from medieval times to the present day. Visitors can see a real courtroom, learn about famous trials and criminals, and even try their hand at being a judge or jury member. The National Justice Museum is a must-see for anyone interested in the history of justice and law in England.
Finally, on Sunday, I flew back to Philadelphia. It was the end of an amazing trip, but I was exhausted. I’m grateful for the opportunity to have traveled to Europe for work and I can’t wait to do it again.
So, what about Europe then? Europe is a continent that is rich in history, culture, and natural beauty. The countries of Europe still enjoy lofty standards of living, with many countries offering free healthcare and education to their citizens. In addition, Europe is home to a diverse array of cultures and languages, making it a fascinating place to explore and learn about different traditions and ways of life.
Europe still has an undeniable commitment to liberty and personal freedom, with strong protections for individual rights enshrined in the law. Overall, Europe is a wonderful place to live, visit, and learn, offering a rich and fulfilling experience to all who come here.
I have recently begun to think that Disney’s shows are now exclusively for my kids’ generation and beyond. I’ve grown tired of the Marvel recipe and even though I’ll still watch the Star Wars movies it’s mostly because it’s a fun family thing.
But I have to say that Andor – the season finale was released this week – is outstanding. Of course, it’s still Fantasyland stuff that perpetuates America’s fascination with fantasy. But it’s a show with an extraordinarily strong storyline with superb character development. All set in the familiar Star Wars worlds. The kids aren’t even watching it, but I enjoyed every episode.
The casting in Andor is excellent with some great actors including Diego Luna, who plays the titular role, Stellan Skarsgard, Andy Serkis, and Forrest Whitaker playing their trade, but all the lesser-known other actors are also brilliant. I bet a few actors will go on to bigger things after this.
The whole season is chock full of story and action, but the season finale is as climactic as you can get.
In both business and personal capacity, I often get asked about my name. People also often think it’s mistyped and should be Artie, which is not the case. 😊 In South Africa, Attie is a shortened version of Adam. Like Eddie is for Edward or Edmund. Or Willie is for William.
So where does it all come from? First, the European connection. The first Heunis came to South Africa as a deserter from the Dutch East India company in the 1600s, a view years after the Dutch first annexed the Cape. The Cape was seen as a vital refreshing point for sailors suffering from scurvy on the spice route between Europe and India. The Cape was known as The Fairest Cape and it’s still that – stunningly beautiful!
There are gaps in record, but at some point, a pair of Heunis brothers settled in the George / Knysna area in the Southern Cape and worked as woodworkers, foresters, and builders. Those were my ancestors. I’m not sure when the first Adam “Attie” Heunis was named so, but my grandfather, his grandfather and his grandfather were all Adam “Attie” Heunis. So, it’s a family name that goes back many years. Curiously though it seems to only apply to every second generation.
I only have daughters so unless my daughters keep their last names (who knows nowadays) I will sadly be the last Attie Heunis of my line.
In a deeply troubling development, Vladimir Putin has invaded Ukraine again. So far, the Ukrainians have captured most of the world’s admiration with incredibly brave & effective defense of their land. They are not planning to give in to tyranny any time soon.
Tragically the US, NATO, and other Western countries can only help up to a point because no-one can afford direct conflict with Russia, a nuclear superpower. Putin has already threatened the use of nuclear weapons should other countries interfere with this war, so the stakes are high. However, the US, NATO, and Europe have brought the harshest sanctions against Russia that we’ve ever seen. Their economy will be crippled for years, if not decades.
I’ve been taking photos in one form or another for 30 years. I love wildlife photography, but accessibility to wild animals is obviously always a challenge and so most of my photos are of landscapes at wider angles. I’ve taken around 10 that I think are really top notch.
Photographing people though has never been my thing. I don’t think I’ very good and spontaneity is tricky nowadays. This image that I took today though is, in my opinion, one of my best of all time. I absolutely love it and it has nothing to do with the fact that I’m in it! I love the light on the face, the eye peering out, the frame around the face and the blurred background.
The thing though is that very little of this image isn’t pure luck! It was only a selfie with my Android phone! No fancy lens or camera, no planning of light or location. Just a point and shoot right before I left the park to go home to send around on social media. But everything just clicked (pun intended) and it came out being one of my best.
Photography remains a mysterious mistress after all this time and it’s awesome!
This post serves as a collaborative journal between the 4 of us (especially where food is concerned 😂), so may be a bit verbose in areas. Hopefully readers will find some of these details useful.
The Lead Up
After a crazy year, both from work & life perspective, the Heunis family needed a proper break to really recharge. We wanted to visit Central America especially after a “all-in” vacation to Mexico a few years ago. We had a great time in Mexico, but we wanted more of an authentic experience. However with Mexico’s drug & gang problems leaving the resorts are not recommended so we were on the lookout for an alternative.
When I then happened to see in a news feed that Costa Rica had re-opened their borders for visitors on 1 November, I thought this might be a great opportunity to go on this dream vacation, COVID-19 notwithstanding. And so, despite a minor complication with Cara’s passport, we booked the trip from Sunday, 20 Dec to Tuesday, 29 Dec. With regards to COVID-19, Costa Rica has eased restrictions to a large degree. Really you just require a Costa Rican Health Pass. To get the Health Pass takes 10 minutes but it requires you to have travel insurance.
Day 1 – Sunday
From a snowy New York, we flew with JetBlue from JFK’s Terminal 5 at 6pm. Our flight was delayed by about 40 minutes and the in-flight entertainment wasn’t working, but otherwise it was an uneventful 5-hour flight with everyone being very respectful and compliant with regards to the COVID-19 measures. We did have to show the Health Pass QR codes that are required before we were allowed to board the flight.
It’s so awesome when after 5 hours you leave the plane and it’s a warm 77F at 11pm! The San Jose Airport is small, but modern and clean. Going through immigrations and customs was a breeze. They did scan our QR codes though. I exchanged $50 for Colones (the Costa Rican currency), but honestly everyone takes the mighty Greenback (US Dollars for non-American readers).
We booked the Hampton Inn near the San Jose airport because it was such a late flight. Cara (11) felt it was “sketchy”, but it’s really just a place to catch up on some sleep before the adventure starts. It cost us a $110 for the 4 of us.
Day 2 – Monday
We took an Uber to Walmart. Uber operates just fine in San Jose but outside the capital is less predictable. Traffic in San Jose is W-I-L-D! The main reason for the Walmart trip was to purchase SIM cards (for cellphone service) and some groceries. The SIM card was $11 for 3GB and we got it mostly for Google Maps or Waze, which seems to be the preferred provider here mostly because of local community engagement. The staff were very friendly although not everyone could speak English.
We rented a very small car from Vamos Car Rental, across the street from the hotel, because they have better reviews than most car rental companies, but Car Rental in Costa Rica is not straightforward. See my Costa Rica car rental notes. We ended up paying $560 for the week with a $2,000 hold on my credit card!
Drive to Puerto Viejo
The drive down from the mountain and from Limon down the coast – the last part, are really beautiful. About an hour out from Puerto Viejo one begins to realize you’re entering a special part of the world. We left San Jose a bit later than we anticipated so we arrived at Puerto Viejo when it was already dark.
Driving in Costa Rica is quite challenging especially when you’ve rented a manual (stick), but you haven’t driven manual in 6 years! It’s a two-lane highway for most of the way with so many big trucks on the road. There are also disruptive roadworks for most of the journey not to mention pot holes that put even Pennsylvania to shame! Many traffic rules are also considered optional by much of the locals. Lene was a nervous wreck and took a few days to calm down after the 5-hour trip. Also Cara threw-up 🤮 from the windy road down the mountain! But despite the hair-raising moments and the threats of divorce🤭, it’s a very interesting drive.
Terrazas del Caribe
We checked in to Terrazas del Caribe at around 6pm. It’s a few miles outside of Puerto Viejo just behind Playa Cocles. (“Playa” means “Beach” in Spanish) and a ~3-minute drive up a steep gravel road away from the main road. Check-in was very easy and our room was great and the pool even better. There is a decent kitchen and a superb patio as well.
We were all tired from the day’s driving so we spent the rest of the evening at Terrazas.
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.
Yesterday we took a(nother) Philly sightseeing trip. This time we took the train with SEPTA’s Independence Pass. Friends informed us of this pass and for folks in the suburbs like us, it’s perfect for a day-trip to Philly. I always say this when we go in to Philly for fun, but it’s a great city. So much to see and do there at any time of the year. But between Christmas & New Year’s the city makes an extra effort.
We went to China Town, Macy’s (saw the Christmas show) & Dilworth Park where Elke – always up for a challenge – went ice skating. Then we had dinner at El Vez, an outstanding Mexican Restaurant.
It was such a nice day. And to top it all the Eagles won their game to reach the NFL playoffs so that added to the great vibe.
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.
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.
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.
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
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.
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.
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.
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.