Google Search – Australia no longer “Feeling Lucky”
Aussies using Google have noticed they are caught in the middle of a recent conflict between Google, and the Australian Government over the newly proposed News Media Bargaining Code. Aussie have...
Pull Request Approved – Using GitHub as a CMS
Video: Is GitHub a good choice for a CMS? Content Management Systems like WordPress, are often a popular choice when it comes to managing content, but have you ever considered...
I am on Cloud 9 – SSW has migrated to Dynamics 365 Sales cloud version 9
After months of planning, data trimming and delays (not helped by COVID-19!), I am happy to say that SSW has finally migrated our Dynamics from on-premises to the cloud. It...
Connecting Through Video – How To Engage Customers
Last month I talked about how easy it is to work from home, but to work from home effectively is hard. Likewise, making a video can be easy, but *really...
Hardcoding. Have your cake and eat it
2020-06-01CODING ·SOLID Principles One of the core principles of software that is drummed into new developers is 'Don't Hardcode anything'. What if I told you that it's OK to hardcode...
Working from home – romance or drama?
Wow. Hasn’t this been the world’s largest ‘working from home’ experiment? Developers working remotely or from home were quite common in our software industry even before the Covid-19 lockdown. At SSW, I’ve always...
Using AppSettings in Blazor WebAssembly
While client-side Blazor technically isn't yet stable, I love working with it more than other web front-end technologies. One significant hiccup I found while developing Cognitive Studio is having environment-sensitive...
Coronavirus – What we are doing at SSW
This weekend I saw Coogee Beach packed to the rafters with parties. I also saw that The Oaks Hotel in Neutral Bay and The Coogee Bay Hotel were full of...
Technology in a Pandemic – Helping Control Coronavirus
SSW China have been working closely with the District Government in China to develop an application that will help reduce the spread of Coronavirus. Split into two smaller apps, it...
EF Core Query Tags and Alternatives
When doing a performance review on client applications (and my friend's apps), I often see issues related to EF Core and most devs don't seem to notice them until they...
Upgrade the Angular .NET Core SPA Template to Angular 9
Angular 9 has just been released and includes a number of major improvements. Be sure to check the official announcement to learn more. If like me you build single page...
Getting started with Form Recognizer (preview)
When I first heard about Form Recognizer, I thought to myself, "Wow, there are so many forms in the real world that needs to be parsed and digitilized!". Once v2...
Introducing SSW People!
About a year ago, during SSW’s annual retreat in Brisbane, we started to imagine what the world would look like if the SSW Rules site was easier to use. Therefore,...
Clean Architecture with .NET Core: Getting Started
Over the past two years, I’ve travelled the world teaching programmers how to build enterprise applications using Clean Architecture with .NET Core. I started by providing a sample solution using...
Fires + Adam’s 2019 in Review
2019 ended in uncertainty for a lot of people across Australia. Our bush fire season started a lot earlier than usual, and this year the fires are insanely bigger, and...
Retrospective: 2019
Inspired by my friend's retrospective blog post, I have also decided to make a retrospective. For me, a retro isn't just about looking at the past and fixing old mistakes,...
8 Tips to Strengthen Your DevOps (Project KNOWnoise)
[embedded content].NET, NgRx and Angular – How We Developed ‘KNOWnoise’ with Hutchison Weller At SSW each year we are lucky to deliver a lot of cool projects. I want to...
Interview – Machine Learning that's ACTUALLY easy with Richard Campbell
Do you want to try machine learning, but don't want to invest too much time learning a new programming language or some other complicated API or complicated online tools? Richard...
SSW had fun at NDC – gotta catch ’em all!
The NDC conference gets better and better every year. I look forward to it, and the SSW devs say it’s awesome. It’s located at the Hilton in Sydney’s CBD, and...
Publish client-side Blazor to GitHub pages
Lately, I got fascinated by client-side Blazor, as I can build and host a .NET Core application with $0 cost! This is because Blazor only needs to be hosted somewhere...
I like big bots and I cannot lie… 5 simple ways bots should be answering questions for your business
Bots used to be very expensive to build. Now with Microsoft and Google offering nice bot development platforms, businesses are building bots in days. At SSW we have built bots...
Simplified Machine Learning for Developers with ML.NET
Recently I've been on a tour around Australia presenting about how .NET developers can start with their Machine Learning story in minutes. I presented at the SSW User Groups (Gold...
NDC Oslo 2019 Drones & AI – What's all the buzz about ?
Drones and AI are changing our world.In this session we will look at some of the real world solutions utilising these emerging technologies, you will get an understanding of the...
ASP.NET Core 3.0 + Serilog
UPDATED TO .NET Core 3.x I have been a great fan of Serilog and Seq for over 2 years and I delivered great value to many of my clients. After...
Simple Machine Learning classification with ML.NET (custom code without Model Builder)
TL;DR; check my GitHub project for bank transaction classification. https://github.com/jernejk/MLSample.SimpleTransactionTagging UPDATE: If you are looking to learn Machine Learning with minimum code and effort, check out Simplified Machine Learning for...
AI on Drones – Case Study Overview
It is a great time to be a technologist. I am spending lots of my time at the moment thinking about drones, AI & IOT, about where these technologies intersect,...
Azure DevOps Pipelines Workshop & Demo Scripts
I recently ran a hands-on workshop about how to build Azure Pipelines for ‘build’ and ‘release’.Pipelines are great as the allow you to automate your builds and deployments so you...
Understanding the Enterprise Bot Template
This is my version of the how bots work doco page, customised to explain the Enterprise Bot Template. The reason that I have done my own version is that for...
Enterprise Bot Workshop Agenda (draft)
This is a draft agenda for the bot workshops that Valeriia and I run with our customers. I intend to flesh this out and improve it as we run more...
Lessons from a successful project
2019-03-08PERSONAL ·Project Lessons Success Lessons learnt after recently completing a successful projectA colleague and I recently finished a short 3-week project with a client, the result of which is one...
GetHashCode() the easy way
2019-03-06CODING ·c# GetHashCode VS2017 VS2019 .Net Remembering the most appropriate way to calculate a hashcode was always difficult. But not anymoretl;dr Let Visual Studio generate your overrides for Equals() and...
New Jekyll Blog on Azure
I’ve left WordPress. Finally. WordPress isn’t bad. In fact for most people I think WordPress or Medium are probably the right choice - but for about 18 months I’ve wanted...
Real-time face recognition with Microsoft Cognitive Services
TL;DR; check my GitHub project for bank transaction classification. https://github.com/jernejk/MLSample.SimpleTransactionTagging UPDATE: If you are looking to learn Machine Learning with minimum code and effort, check out Simplified Jernej Kavka (JK)
New years goals
I've never been one to set myself new years resolutions, not for any particular reason, I just don't. However, last year I set myself several goals and/or challenges.I’ve never been...
NDC Sydney 2018 Bots – the Next UI Revolution
Bots are the new UI frontier. Siri, Google Assistant and Alexa started the trend, but no-UI is the future of UI. Users are going to expect to be able to...
Building Single Page Applications on ASP.NET Core 2.2
The recently released ASP.NET Core 2.2 includes many improvements such as updated SPA templates. The templates can be used to build single page apps with Angular 6 + Angular CLI...
Remote web debugging with Vorlon
In this post we'll cover how to debug applications running in browser and/or devices that don't have debugging abilities. We'll manipulate DOM tree, see console output and more. This post...
SignalR – Why? Because its easy
2018-08-21CODING ·angular signalr realtime asp-net-core SignalR has been around for a few years now (since 2013), offering real-time notifications to our .Net applications.SignalR has been around for a few years...
Building Single Page Applications on ASP.NET Core 2.1 with Angular 6 – Part 3: Implementing Open API
This is the third in a series of posts on Building Single Page Applications with ASP.NET Core 2.1 and Angular 6. The previous post provided instructions to upgrade to the...
Building Single Page Applications on ASP.NET Core 2.1 with Angular 6 – Part 2: Upgrading Bootstrap
This is the second in a series of posts on building Single Page Applications with ASP.NET Core 2.1 and Angular 6. The previous post covered numerous getting started topics such...
Building Single Page Applications on ASP.NET Core 2.1 with Angular 6 – Part 1: Getting Started
This is the first in a new series of posts on building Single Page Applications with ASP.NET Core 2.1 and Angular 6. There have been major improvements to both frameworks,...
RxJS refactor: BehaviourSubjects
2018-06-03CODING ·angular rxjs behavioursubject Using RxJS BehaviourSubjects to tidy up our code and remove tight coupling between the Template and the component, whilst also providing hooks to trigger data updates.In...
Handling EF Core migrations in a team
Entity Framework Core has a good migration story for the Database, however it's not perfect, especially in a large team where DB schema changes are frequent. All migrations are increamental...
Angular6 Runtime environment Variables
2018-05-31CODING ·angular environment-variables Setting environment variables in your Angular application is pretty straight forward. But, what about when you want to set those variables at runtime depending on the environment...
Ng directive Thought Experiment
ngLet directive to resolve an async observable binding without having to use ngIf to hide contentNot long after publishing my recent post on minimising Async bindings in Angular by using...
Angular: arrrgh… too many async bindings
2018-05-01CODING ·angular rxjs async Redundant async bindings will trigger excess invocations of your observable. This simple technique, lets you remove those excess subscriptionsIn my previous post I came across a...
How to get Angular logs to Seq
The Angular applications are starting to become and more complicated with more layers on the client side then ever before. This means we should treat client-side applications similarly as back-end...
Remote debugging on Android and iOS devices
Every year the market share of mobile devices is growing, which means that testing on a mobile device is becoming increasingly more important. While in easy cases we can open...
RxJS: Using CombineLatest() + StartWith() to remove code duplication
2018-03-26CODING ·angular rxjs Using CombineLatest and StartWith (and DebounceTime) RxJS operators to remove code complexity and duplication when fetching paged search results05 June 2018 Update: Follow up post with further...
.NET Core complex EF Core unit testing
When writing unit tests for EF Core we can use InMemoryDatabase so that we don't have to create mock repositories. But sometimes we need to test functionalities that are not...
SPA & ASP.NET Core – Part 2: Upgrading to Angular 5
This is the second in a series of posts about building Single Page Applications with ASP.NET Core 2.0. In this post, I’ll show you how to upgrade to Angular 5....
SPA & ASP.NET Core – Part 1: Create a SPA
This is the first in a series of posts about building Single Page Applications with ASP.NET Core. As a developer, keeping up with the latest technologies is not always easy!...
The 5 Technologies that Will Change Everything in the Next Decade
Here’s my take on the main technology areas that will make a massive difference to our lives in the next decade. Artificial Intelligence This is a huge one and encompasses...
Successfully Passing Microsoft Exams
Microsoft offers a large selection of professional certifications and exams focused on their core technologies. Often I have encountered developers who hold the opinion that these exams are not useful since they learn a lot more by using...
The Importance of Code Reviews
Code reviews, also known as peer reviews or code walkthroughs, are an effective way of identifying defects and sharing knowledge. A code review takes place when a programmer engages a...
The Sunk Cost Fallacy
The sunk cost fallacy is in action every time you: Sit through a long boring movie even if you decided after the first half an hour that is was terrible...
How to Delegate Effectively (Orders and Enrolment)
There are 2 ways that you can allocate work. You can give orders, or you can enrol people. Orders: This is most people’s default way of delegating work. To do...
Power BI – The Six Reports Every Consultancy Should Have
I’ve been at SSW, a medium sized custom software consultancy, for over 10 years, and in that time I’ve asked for a number of SQL Reporting Services reports to be...
Seven Tips to Being a Great Product Owner
Every software product in development has a Product Owner who is in charge of supplying the requirements, and it is often misunderstood how important this role is. You can have...
SSW Data Onion – Helping you Simplify your Data Layer
At SSW we build software for a large range of clients, from start ups to massive enterprises and even our own internal projects. We care that the software we build...
What’s new in Visual Studio 2015 and ALM 2015
I’m off to Europe for the Norwegian Developers Conference in Oslo and the Xamarin Hack Day in Slovenia. Of course I’ll be talking about Visual Studio 2015 and all things...