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 a dependency on Google 93% of our online experiences begin with search engines. According to The Australian Bureau of Statistics, Google is by far the most […]

Read More

Pull Request Approved – Using GitHub as a CMS

Content Management Systems like WordPress, are often a popular choice when it comes to managing content, but have you ever considered using GitHub for the back-end? At SSW we are fans of GitHub, not just for source code but for web content too. I’ve discussed how we recently migrated our staff profiles from SharePoint to […]

Read More

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 has been well-received by all and the UX is much nicer. In addition, this is not the end of the journey – it is the start of a brave new world of awesome integrations leveraging Microsoft’s Common Data Service (CDS) along with a cornucopia of extra features and improvements over the on-premises Dynamics CRM that has held us in good stead since version 3 back in 2005.One of the biggest pains of not being in the cloud was that any CRM related work would need to be performed by one of our Dynamics developers…who are usually in very high demand by our clients, leaving little time to work on our internal systems. This slowed down development of some of our ground-breaking projects like SSW SophieBot™ and SSW TimePro™.
Happy SysAdmins
Now that we are online, thanks to CDS, we are already seeing quick adoption of Flow Power Automate and  Logic Apps by non-developers to automate processes. I loved seeing our SysAdmins using it in many scenarios from automating developer requests to automating their Domain Registrations – there was no need to involve a developer thanks to the low-code/no-code designer experience! ⭐(Note: Our SysAdmins do great work, and I will be thanking them next Friday on International SysAdmin Appreciation Day – will you be thanking yours?)
Speaking of our SysAdmins, the upgrade takes some load off their shoulders too.  Maintaining an on-premises solution requires more effort than you would expect. They were often doing something with the SQL, CRM and ADFS servers… not to mention having to manage the regular little updates.  In the cloud, updates are automatically rolled out for you on a frequent release cadence (on premises hasn’t had a major update for over a year!). 
If something does go wrong, it is much easier to get help from Microsoft support using Dynamics Online.  You can raise tickets via the web portal and in my (anecdotal) experience they often get back to you within a day.  Since all the servers are managed by Microsoft you do not need to worry about debugging any hardware issues, giving access to support people, etc.
One thorn!
One obvious change that comes with the fact that the server management is out of your hands is the restricted access to the SQL database that sits behind CRM. Of course this shouldn’t be an issue because you should *not* be doing any direct access. However at SSW we were quite naughty and had many reports coming from the database directly. Oooops – of course, this was only for reporting. We would never directly write to the database!  When you are running CRM on premises you have complete access to this database to read, write, or whatever else you want. 
There is good news regarding SQL! In the old days this meant that if you wanted a SQL database for reporting with CRM online, you would need to create a replica database sitting outside of CRM which is kept in sync with the CRM data.  Microsoft have recently opened up direct SQL reporting, which gives a live ‘read only’ SQL view of the data, and it works great!More info:
Actually a 2nd thorn!
In terms of licencing, many of our clients noticed a change. Microsoft changed the Team Member licence by adding a 15 custom entity limit.  The Team Member licence has always been limited in its edit rights to standard Dynamics entities, however previously you could use it to edit an unlimited number of custom entities per Dynamics app.  Furthermore, previously the Account entity was editable with the Team Member licence, but this is no longer the case.  Changes in licencing like this, forced us to rework solutions for our customers to meet the new requirements. Although it ended up fine in almost all cases, there were a couple of customers that required the purchase of additional full Dynamics licences… which can really add up.
But wait… the final thorn!
One more thing to be aware of with CDS is the space!  I didn’t initially understand that the space you get, is consumed by the default CDS environment entities.  When you purchase Dynamics, you get 10GB of database capacity plus an additional 250MB per user licence – seems like heaps. Right?What I didn’t factor in is that each environment (test, staging and production) can consume several GB of this database capacity before you even put any data in! Furthermore it is impossible to delete since it is ‘behind the scenes’.  The additional storage is also extremely expensive at $55 AUD per GB/month ($660 AUD per GB/year). 
Figure: After creating a new environment you notice that your database usage is 3.5 GB and you haven’t even put in any data yet! Looking at the top 8 storage hogs by size, I see not one is a user table, like account, contact, activity etc. Each one of those GB is $55 AUD per month 
In conclusion
Overall I am super happy to be on the cloud. It’s a big step forward and we should have done it sooner, but I didn’t want to delete anything! Our CRM journey continues as there are several features only available online which we can now take advantage of:
the Unified Interface changes
the marketing module, field service module and more
the ability to embed Canvas PowerApps and Power BI reports into CRM forms and
a much improved email template editor
I’m looking forward to using it all!

Read More

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 connecting* with your audience via video is hard. This is especially true for business videos. There is so much content that it is easy for people to glaze over your video and click away!At SSW we put a lot of effort into working out the best way to make business and technical videos. It’s been a super enjoyable journey and I’ve been learning and growing SSW TV for 11 years.
So how do you *really connect* with your viewers?
#1. Quality: since the whole world is making videos now, not just the professionals, the only way to counter this massive increase in quantity, is to make *quality*. Today there is a tremendous range, from very poor, up to excellent quality. It is incredible to see some awesome quality unboxing videos, verses some shockingly poor business videos which can do a disservice to a company.
#2. Keep it light & consumable: many of us are reading news via social media, than from traditional sources. This means that unless you make a video that your friends are likely to share, no one will see it. BTW Australia is particularly susceptible to this problem, as we are one of the ‘leading’ countries in the world who consume their news mostly via social media.
Figure: Look at Australia, almost half (48%) of Australians read their news via light sources e.g. social media, so you can conclude that it is pretty important to make a video that is engaging and therefore shareable… and don’t make it too heavy obviously!Source: Digital News Report: Australia 2019
#3. Size matters: we are seeing the growth of multiple versions of each video – the 1 min version + the 10 min version for different contexts. You can use the 1 minute version for Twitter, and the 10 minute version for Facebook. See the example below of how an SSW TV NDC presentation that is 10 minutes long, can be trimmed to a 1 minute version that is more Twitter friendly.

#4. The script: it’s the same as building software, if you don’t plan, you plan to fail. Good storytelling comes from a good script. Once you have a good script, you can then focus on giving an excellent delivery.
#5. The editing: again it’s the same as software, if it’s a busy UI, it feels unfriendly. If it’s a complicated video, it is non engaging. Editors can help with this by following Richard Mayer’s “Multimedia principles,” and tighten up the video to make it more effective. E.g. People learn better when extraneous words, pictures and sounds are excluded rather than included.
#6. The cinematography: the importance of good lighting, framing, composition and sound cannot be overstated. The camera and the crew should disappear so that the only thing the viewers are focused on is the content.
#7. The Intro: getting the first 7 seconds right is critical, and the person who says it best is Geoff Anderson…

If you want to capture the attention of your audience with your video, you need to do it in the first fifteen seconds or less. People will visit a website for up to 7 seconds before deciding if they’ll hang around to find out more. Video can hold them for a bit longer – but not much longer. There’s a click happy finger out there looking for a reason to find a new video to watch. All of your video needs to be engaging but the first few seconds are critical. It needs to set the tone, show the style and cut to the chase. 
Chapter 1, Geoff Anderson “Shoot me now: making videos to boost business”
To see the above tips in action:
[embedded content]
Video: An example of a corporate video showing the team members in a great light. These team members are not actors, but with good direction, they come across as authentic and captivating. This video gets a lot of information across in a small amount of time. Most successful corporate videos are made by sitting down with the stakeholders and crafting a good script.

Our SSW TV team make awesome videos so get in touch if you’d like some help. We have guys on the ground in Sydney, Melbourne and Brisbane:
Ulysses Maclaren
Bonus – Interviewing Experts
Figure: Connecting with the interviewee and moving into the interview content without stating the interview has started – have a giggle.
#8. Warm up your subject: one type of video we really like to do at SSW is interviews, in person or remote. Even before lock-down we were recording people from all over that world. The lessons learnt there have been valuable, and apply to the current situation we all find ourselves in.Just like real life we analyse and understand people’s feelings and emotions through their body language. The aim of a good interviewer should be to make the interviewee feel as comfortable as possible; any signs of discomfort are visible through facial expressions and a person’s engagement (or lack of engagement).To make someone comfortable, have a light-hearted conversation with the interviewee and really connect with them. To do this, do not state the start point of an interview. Discuss normal conversational topics with the interviewee, and naturally start asking questions that relate to the interview. The aim is for the interviewee to not notice that the interview has even started. You’ll be amazed at how much of a difference this makes!
#9. Introduce the interviewee yourself: it’s more thoughtful to introduce someone yourself, and not to rely on the interviewee to explain who they are. You should know your subject, and give them a nice warm welcome. It’s not natural for someone to sprout their own biography (outside of a presentation), see Joe Rogan’s introduction for his guests.Bad Example:Interviewer: “Hello and welcome to the show, I have here Jason. Jason, please tell me about yourself.”Good Example:Interviewer: “Hello and welcome to the show, today we have Jason Taylor. Jason is one of the people who basically wrote the book on Clean Architecture and is currently doing many rounds of presenting all over the world, most recently at NDC. He is soon to release a new book which I have here, and it is awesome. Hello Jason welcome to the show.”
[embedded content]
Video: Here is an example of Marlon doing a nice intro of John Sonmez (from 0:20).
I hope these tips help you make better videos, and if you would like to know more you can read SSW’s Rules to Better Videos:

Read More

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 been reluctant to do more than minimal work from home, for a few reasons;   I believe co-located Scrum Teams are better
It’s a lot harder to give your clients consistency and continuity: 
I put a lot of energy goes into improving people’s presentation skills, and that is much easier to do in person
I’ve put a lot of time and effort into creating a cool stimulating working environment, and a culture that encourages cumulative brain power
Figure: Working together is always better, we have a great workplace with a lot of cool tech, sit-down stand-up workstations and a great vibe! The feedback from the developers about our office is really awesome (we have about 50 at SSW) Figure: The SSW Chapel is set up for recording presentations, our User Group, and training. Capacity has been paired down from 100 before Coronavirus, to about 10 for social distancing
Due to this lock-down, we’ve discovered that you can remotely simulate some of these things, with a little work.The most important thing, is to have good equipment and a good set up, with good quality sound, front lighting, dressed for work and video positioning at eye level… you know all of the basic stuff. It all helps to kick off a good meeting with your team/client. If you’re interested in how we do it, you can see our recommendations at SSW’s Rules to Better Remote Work. 

Most people at SSW have really enjoyed working from home. There’s no commute, or forgetting your lunch! Out of 50 developers, 44 answered my Microsoft Forms survey on their Coronavirus work from home experience so far. See some of the results below:
Figure: Some of the more interesting stats from my Microsoft Forms survey
Warning: Any ‘work from home’ study done during Cornonavirus times, when you can’t visit your friends and the pubs and restaurants are closed, is *not* going to be representative of a normal work form home survey, done during normal times when you have all of the normal social competition.Working from home should be giving people a better work-life balance, but if anything, it appears people have been working harder and doing a lot of extra hours. Twitter is full of people with stories of long hours, crazy homeschooling experiences, and Zoom/Teams fatigue.

If you’re working from home, and not enjoying it not, are any of these your reasons?
An increased number of video calls that require a lot of concentration  
Bad quality video calls
Unprepared people who start with ‘can you hear me?,’ ‘is this video clear?,’ who then forget to mute and then incredibly… start talking whilst still muted!
Distracted people due to many things, e.g. children, texts, other calls, dogs barking etc.
Your workday blending into your home life – blurred boundaries between home and work 
Not having a very good set-up. How I miss my 3 screens….  
Burnt out – feeling less and less productive 
Doing less exercise and eating worse
The Solution
Whether you’re in it for the long hall, or just having to do it for the next few weeks, SSW’s Jason Taylor has put together some practical ways to avoid the Work from Home burnout 🔥Jason talks about how to keep healthy and productive and how to give your clients a great experience! He’s been doing this for 10 years and has some great tips, watch his video below. 
[embedded content]
Important Takeaways from Jason
1. Stay connected – touch base every day, whether it be a Daily Scrum, or a daily catch up if your team doesn’t use Scrum.

2. Set a routine and be sure to stick to it, that includes getting dressed for work, and taking regular breaks.  
3. Communication – make sure you are always available in some way, this doesn’t mean dropping everything you are doing, it can be as simple as sending a message to say you’ll be with them as soon as you’re free. Then add this task to your TODO list while you remember.  
4. Stick to a routine – if you don’t get dressed for work, or prepare for your day, your work hours and personal hours are more likely to blend, which can lead to burn out. 
5. Take regular breaks! It will improve your productivity and general health 
6. Have a TODO list, it will make you feel more productive and help keep you focused!  
7. Have a dedicated workspace, it will help reduce distractions and try to set it up as ergonomically as possible. 
8. Do a Test Please on your equipment and environment – don’t be the person that starts a video call with “can you hear me/see me?” It will help give your team and clients a nice consistent experience, first time every time. 👀 ✔
Following these steps should help your WFH relationship be less drama and more romance. Check out SSW’s Rules to Better Remote Work for more awesome tips to help you keep you productive, professional and sane! 
Are you enjoying working from home? Fill out a copy of my Microsoft Form, I’d love to hear from you.

Read More

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 people who are either oblivious or stupid.
Note: Sadly, the Australian numbers are now much worse than below explained by this .gif:

2 weeks ago I spoke to each SSW office individually via Microsoft Teams and gave the following advice to all SSW employees to navigate Coronavirus. I am sharing this – I hope it helps:

From: Adam Cogan
Hi SSWAll,
The COVID-19 numbers are increasing every day – it is time to be worried and make some changes. Today NSW is the worst state at 171 cases (more numbers below).
Let’s focus on staying healthy for now. We can navigate the upcoming business challenges after that.
Stay home!
Over the next 8 weeks stay at home as your first option.  The incubation period for COVID-19 is around 2-8 days. The next 8 weeks are the most critical time for people to stay at home. Note: The average incubation period is 5.2 days. (Source: Prevention and control plan of new coronavirus pneumonia (fourth edition) issued by the National Health Commission of China).
Be safe!
There are going to be asymptomatic carriers – people who are infected, contagious, and don’t know it.
Practice social distancing over the next 8 weeks – by then you will know most of the people who became infected because they will be sick. (However, some people will have it, but show no or little symptoms). At this time, it will be easier to avoid infected people. Wait for them to get better and we can neutralize the spread of the virus. 
We won’t be as lucky as SSW China!
No-one in SSW China got the disease. And I think we can say it is under control in Hangzhou. Only 2 cases in the last 24 days in Hangzhou (pop. 13 million). But they were hardcore at their isolation. In Australia, the govt is softer and Aussies are more cavalier. She’ll be right mate!
This is going to be rough. Don’t go on public transport, drink at bars, eat at restaurants, work out at gyms, etc. You likely will contract the virus and the number of oblivious asymptomatic carriers will grow at a nasty rate. The best thing you can do is wash your hands regularly and especially before eating… Oh and don’t touch your face.
I don’t believe we will be able to contain the disease in Australia. It will wreak havoc on everyone’s lives. Our medical system will not be able to keep up with the onslaught of cases. The economic catastrophe will grow as we have never seen.
Work from home!
If you have a home office with internet, and a good mic and camera then you can and should work from home. Check your background and do a test with a colleague that you look and sound great. Clients still come first and for some, this will be a tricky balance. I don’t think we have too many clients that do not understand the situation. If the clients are not cool about remote meetings, then talk to your SSW State Manager.
Stay home and you will help doctors!
My neighbor is a doctor… he has been working long hours testing 150 patients each day for Coronavirus…. for the last 3 weeks! Not one positive yet for him. However, he says he has been ignoring all his normal sick patients. He is exhausted and sad.
Think about what you can do to help others!
SSW is experienced and set up for remote working – not every business is. Technology can help people. Keep your eyes and ears open to businesses who have unproductive staff and let them know how you work and what software we use eg. Azure DevOps, Microsoft Teams, SugarLearning, etc.
Call any friends you know who have just started Work From Home. Test their mic and camera placement. On so many of my calls, I am discovering not many people are equipped well to WFH, nor know basic mic/camera placement tips. Help everyone you can.
Have fun too – E.g. I love the Wuhan Shake:
[embedded content]
The numbers
Last Friday, I send you the free lunch email with:

Today the updated data is:
NSW: 171 (2 deaths)
Victoria: 71
Queensland: 68
Hangzhou: 170 total cases 167 recovered 
And sadly the Economic Pandemic is just getting started:
Australian dollar dropped to a 12-year low of 61.1 US cents.
Australian Stock market plunged 9 percent to record the heaviest loss since the 1987 crashOuch!
-aAdam Cogan

Coronavirus protocol at SSW – Help us avoid any spread of the coronavirus at SSW
Before SSW
Working from home is preferred at this time.
If you are using public transport please avoid coming to SSW.
If you (or your partner) are sick, stay at home. Seek medical attention.
Avoid Public transport – it is one of the worst places to be during an epidemic as diseases can spread easily on planes, buses, and trains. Again Work From Home #WFH.
If you have been overseas, self-isolate for 14 days.
The new Coronavirus remains on plastics and stainless steel (surviving for up to 72 hours). If you have to go public, try to avoid directly touching the metallic surfaces e.g. elevator buttons, bus handrails, etc. More info 
Be a watchdog and say something when people ignoring the pandemic situation we are facing eg. “Want to go to the pub?” Say “No let’s be responsible and have a beer over skype tomorrow”
If you have been in contact with someone with the virus please do not come to SSW. Email your SSW State Manager and Cc Adam
If you must come to the office, please wash your hands for 20 seconds with soap + clean your phone. It is filthy.
Wash your hands before eating.
Dry your hands properly – it is just as important as washing them properly. Read Not Drying Hands Thoroughly After Washing Could Aid Bacterial Transfer
Avoid touching your face
No handshakes, hugging, etc. Go for the Wuhan Shake.
Face mask where you can – In China they are required to wear a face mask in public and in the office – seems to help them.
Turn off the central air-conditioning – again a Chinese recommendation
If you use the toilet in the bathroom please only flush with the seat down.
Please cough or sneeze only in your elbows, shirt or a tissue.
Ensure that after a cough or sneeze clean and disinfect the desk surface.
Please maintain a social distancing of 1.5 meters.
Thank you for your help and cooperation in this difficult time 😀
Hygiene Enhancements
I have already spoken to the Sydney, Melbourne, and Brisbane cleaners and they are all doing extra cleaning and disinfecting all knobs, etc.I forgot to include the fingerprint scanner until it was pointed out to me 🙂
Figure: 8 Steps of washing your hands ✔
COVID-19 (Coronavirus) is going to have big implications for all of us. For now please focus on the tips for hygiene + the social distancing rules. The next few months will be tough and scary. However, there will be good that comes of this too. Working from home will become more acceptable to our clients. This is going to be the largest work from home experiment the world has ever seen.
For March and April and likely beyond we are only going do SSW events online. Losing our in-person Superpowers training is painful. My daughter has just started university and as it now closed, her first 2 weeks already have been via online classes. SSW TV becomes even more important to us.
I think we have plenty of new data – a great A / B test if you will – and we will see what good the reduction of travel has done for our environment. I think we will lose some clients and gain others.
I know this is going to be a disruption to SSW and our customers. Stay strong and learn a lot!
-aAdam Cogan

Read More

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 has revolutionised reporting during this deadly outbreak.The Government called us during the Lunar New Year, and commissioned SSW to build this with absolute urgency. The 1st application, is a Quarantine Reporting System. Built in React and .NET Core, the application helps residents report their symptoms, apply for leave passes and gain government help and resources when they need it, without having to leave home. It means that they can self quarantine without being assessed and do not need to worry about going outside for supplies, which should drastically reduce the risk of others being infected.The 2nd application is a Government Service System that allows people who are returning to work to do so easily. There are many construction sites facing the scary task of re-opening as the pressure to return to work gets bigger. The construction industry is labour-intensive, and the workers are almost all migrants. In order to help control the epidemic and prevent the potential spread of the virus, the government has introduced strict regulations for the returning work population.
Figure: The Coronavirus App in action
In the past, the process has required individuals to submit paperwork, a *lot* of paperwork. It was labour-intensive, slow and frustrating for operators and staff. Now they can do everything in one place, online, with no paperwork to do. It has revolutionised the return to work system, making it so much easier for both employees and business owners.
The SSW China team have put in some crazy overtime (hundreds of hours in the last month) building this application but they are so proud of the results!
Lessons from China – Controlling the spread of Coronavirus
[embedded content]
Like many other offices in China, many of the SSW guys went back to their hometown to visit family for the Lunar New Year. When they returned back to SSW Hangzhou, they all had to go through a mandatory quarantine period, where they had to stay home and not go out for 14 days (some of them more depending on where they had been).
To make sure our team were protected, we gave them an extra week off, and a week to work from home. Developers are so lucky, these days we can work from anywhere! It meant we could continue to work for our main clients, even when many staff members were still in quarantine.
Some of the team have now been allowed to return to work at the SSW China office, but they have a crazy routine to follow in order to comply with the government rules and to help protect themselves from the virus. Check out their daily routine in this fun video by SSW Admin Sharon Du.
How is it affecting Australia?
Just as Australia started to recover from the devastating bushfires, we were hit by floods, and now, like 60 other countries around the world, we are dealing with the threat of Novel Coronavirus (COVID19).

People have been behaving very strangely, and it’s not because they have the virus. The panic of a potential quarantine has driven people to start stock piling long-life goods like pasta, canned veggies, hand sanitizer and toilet paper. Images from the great toilet paper shortage (there is no real shortage) has been trending on Twitter for weeks #ToiletPaperApocalypse.

Closure of Large Tech Events
Due to the rapid spread of Coronavirus, companies are becoming more and more nervous about running large events where huge numbers of people will congregate. It has already caused the cancellation of popular industry conferences, like Google’s Cloud Next in San Francisco, and Microsoft’s MVP Summit in the Seattle.Organisers have chosen to reduce the risk of infection by turning them into virtual events instead.

Microsoft cancels MVP Summit due to COVID-19 virus fears. The mid-March event will be a virtual-only one now:
— Mary Jo Foley (@maryjofoley) March 2, 2020

What you can do to protect yourself
You can choose to be as cautious as our SSW China team, (who are in the epicentre of the virus), or do more basic things to prevent infection. According to the World Heath Organisation, Coronaviruses typically cause respiratory symptoms, so they recommend that you adhere to:
normal basic hand hygiene practices, like hand washing with soap and water
respiratory hygiene such as covering your mouth with your elbow when you sneeze
wearing a face mask if unwell.
They break it down for you in this cool informative video:
[embedded content]
Stay safe everyone and remember to wash your hands and don’t hoard toilet paper!

Read More

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, we had to find an alternative to SharePoint’s content management features.The first tech we evaluated was an Angular application. Even though we love building complicated applications on Angular, we discounted it as it didn’t suit simple content pages. Next we investigated static site generators and realized this was going to be much better.
Going JAMStack
There are a lot of static site generators such as Jekyll, NextJS, and Gatsby all with strengths and weaknesses. Collectively they are known as the JAMStack

The Jamstack is not about specific technologies. It’s a new way of building websites and apps that delivers better performance, higher security, lower cost of scaling, and a better developer experience.
Pre-rendered sites can be enhanced with JavaScript and the growing capabilities of browsers and services available via APIs.
Dipping our toe in something smaller
We also quickly realized that the old SSW Employee pages (was were very similar to our SSW Rules pages, being:
Static content
Hosted on SharePoint
Publicly accessible
So we built the Employee Pages first – basically a prototype for Rules V2. By that time we were approaching NDC 2019 and got busy on various other projects, such as the SSW Rewards App… however on SSW bench time Matt W. and Jean T. were able to continue it and released it January 2020. 
Of course, things got a bit more complicated than initially planned, and we had to deal with a few hiccups – such as changing our preferred JAMStack and migrating SharePoint history into GitHub history. Thank you also to Tiago, Harry, Sebastien, and David.
Figure: Index – Old site on SharePoint Figure: Profile – Old site on SharePoint
Announcing SSW People
I am happy to announce the release of our SSW Employee Pages V2, now re-branded as SSW People –
Figure: The new Flow (without SharePoint) Figure: Index – New site powered by GitHub and JAMStack Figure: Profile – New site powered by GitHub and JAMStack
A month ago we released it internally
Everyone’s old profile (i.e. SharePoint) was locked and put in a read-only state. Then the data was migrated from SharePoint to GitHub… and soon there’ll be one less SharePoint server.
The changed workflow was well received.
Employees now have their instructions out in the open to edit their profile:
Every time they edit their GitHub profile page the site pages are re-generated.
Every time they edit their GitHub profile, they’re getting more dots on their GitHub stats page
Let’s look at Jean’s page as an example: – the “edit” link takes you to:
Then we got feedback on Microsoft Forms
TODO: [Include stats from the MS Form]
The Tech Stack
Frontend – JAMStack, Gatsby – 
Note: We evaluated a number of frameworks, including Jekyll (it was great, but too simple) and Next.js (we had reliability problems with page generation), and then settled on Gatsby (works natively with GitHub as a data source and you can query via GraphQL based on tags and branches).
Data format – Markdown –
Data – GitHub 
Data – Dynamics 365 skills
Source Code – GitHub 
Pipelines – Azure DevOps
The GitHub repo is available here for those who want to have a closer look:
This is a Gatsby generated website, leveraging data from SSW Profiles (now on GitHub!) and our CRM (thanks to William for the integration). Pages are automatically re-generated and published to our SSW website when a profile markdown page is updated. 
Performance – SharePoint vs Static Pages
Moving to static pages generated with Gatsby provided a significant performance boost. Specifically from 68% to 100%
Figure: Before – Adam’s page performance – No throttling Figure: After – Adam’s page performance – No throttling Figure: Before – Index page performance Figure: After – Index page performance
Not only do the pages load heaps faster, they *feel* much more responsive.
As we changed all profile URLs, we added 301 redirects from all the old pages to the new ones (see Do you use “301” code to redirect renamed or moved pages?). This ensures we don’t lose our Google juice and users wont see 404’s.
What we don’t have
Location – subdomains vs subdirectories
Which one do you like better? A subdomain (​ or a subdirectory ( decided to use subdirectories because of the nice URL. I was worried about SEO impacts, but after a fair bit of research we discovered that from a purely SEO ranking perspective, the ‘sub folder versus sub domain’ debate is a bit of a myth – it doesn’t really matter. Google is smart enough to work it out. So it really comes down to personal preference.
As usual, I am very keen to get your feedback. Please have a look and click around. Send any changes to me, or even better be modern and use GitHub Issues (via the edit button in the top right-hand corner).
Now that SSW.People is live, we will likely attack the big monster that is SSW Rules V2. We may follow the exact same process that we used for SSW.People and hopefully it will go much quicker this time, thanks to the lessons learnt. New challenges ahead! Stay tuned

Read More

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 burning more land than ever before. It’s been devastating, and there is no end in sight for some areas that have been affected. What has stood out, is the incredible leadership from Shane Fitzsimmons, the Commissioner of the New South Wales Rural Fire Service – he has been compassionate and leading from the front and a good communicator. He’s been the face of the fires.It’s the main topic of conversation here, and all Aussies are grateful for the commitment and dedication from our poor tired Rural Fire Service volunteers. Some of them have been fighting fires now for over 100 days – an incredible feat. It’s purely their love for their communities keeping them going through the exhaustion and financial stress. I don’t think we’ve ever wished more for rain.
Like many Aussies, I have received so many concerned emails from people around the world. I do hope the rest of the world sees this event as the canary in the coal mine, and what’s going to happen elsewhere.
So many families have lost homes – around 2,000 houses have been lost, and when you see people’s reactions to that news, it’s really heartbreaking.  It affected many people I know, and our quality of life is quite a bit lower – smog, filth, ash in the water supply, even black water at the beach!
The amount of current financial devastation Australians are going through today, will pale in comparison to when we see the long-term impacts.
[embedded content]
Video: Look at the water at my local Maroubra Beach!
Figure: City slickers are a little removed, other than the ash that is in the air and filthy cars. Look at my car a day after having it washed – this is a visual image of what we are currently breathing everyday
Figure: In remote areas, it is a lot more serious. This is Jennifer Haley’s property in Batlow, NSW. Her family lost everything on their property except the house. There is no washing this car!
I think it’s important in times like this, to remember the things that we are thankful for. Like many, for me it’s my family. My beautiful girls and my team at SSW. My eldest daughter Eve just finished her HSC with some awesome results, Ruby continues to be outgoing and headstrong and she’s about to start driving, which will give me a heart attack.
I’m also really proud of everything that my team at SSW have accomplished this year. We have increased in size as a company, and we have produced some quality web applications for our clients.
Here is an overview of our year:
Figure: SSW’s 2019 in Review – 2020 here we come!
SSW’s 2019 Projects
I love all of my Power BI Reports, I see facts and sexy visualisations for just about everything SSW does.
According to Power BI, in 2019 SSW completed and deployed 152 client projects, which is huge as each one of those was successfully deployed (some hundreds of times).
Figure: The big green slice represents 70%, showing that JavaScript frameworks remain king! Interestingly we also had an increase in Dynamics and CRM work (the black slice), keeping our resident Dynamics 365 gurus very happy (and busy)! Figure: Breaking down that 70%, we see of all the web work (JS Frameworks, .NET Core and CMS). In the last year SSW’s biggest slice of the pie was Angular development, and for the first time, .NET Core has overtaken our MVC work.
Standout Projects:
The projects that I’m most proud of this year are:
Hutchison Weller – see video for KNOWnoise was re-developed as a web application and deployed within 3 months. It allows Hutchison Weller’s clients to accurately plan the noise outputs for upcoming construction projects. This application was built using Angular and NgRx in the frontend. The backend was developed using .Net Core, hosted on Azure, and following the Clean Architecture principles.
Sydney Uni – see video for BREAST is a web application that allows radiologists to continuously practice their cancer diagnosis in a safe environment using real case studies. It was built in .NET Core for the backend and Angular for the front-end and the whole application was hosted in Azure.
SSW’s Reward App – this is a mobile app we built for the community to use that we launched at NDC Sydney. It is now our main way of engaging with the dev community, using it for communication, user group prizes and more!
Each year our video team does better and better work. Our YouTube channel is a real success. We’ve added some great team members to the SSW TV team this year so that our Multimedia expert Raj Dhatt has the support he needs to make great content.
There’s a bunch of great technical video resources including our user group events, the conferences we’re involved with, interviews with experts, and more. I’m really proud of it.
The analytics for SSW TV on YouTube, show that 2019 was our strongest year yet! In the past 12 months, SSW TV:
Released 44 new videos to the public
Acquired 6,087 new subscribers
Received more than 0.5 million views
Was watched for 3,344,580 minutes (that’s 6 years and 132 days!)
Our most popular video released in 2019 was ‘Clean Code with Entity Framework Core’ by Brendan Richards, which accounted for 8% of new views in 2019. And our most popular video of all time is now ‘Clean Architecture with ASP.NET Core 2.1’ by Jason Taylor, which was released in October 2018. It now has 246,887 views and it’s over an hour long!
All up, we’re at:
547 videos
28,184 subscribers
Almost 3 million views – wow!
19,338,480 minutes watched (that’s 36 years and 134 days!)
Figure: Our subscribers are slowly growing every year
Conferences and community engagement
Presenting is one of the favourite parts of what many SSW developers do, and I’m always on the lookout to work out what stuff we should share to make us, and the industry better.
Figure: My ‘Rockstar’ moment at my favourite conference NDC Oslo.
For me, my top 10 events in 2019 were:
My favourite talks were:
A couple of other really fun community activities I was involved with included:
Microsoft Ignite & meeting Satya Nadella who was the keynote speaker
HostingTroy Hunt at the Reactor in Sydney, where I got to introduce him to a crowd of 300 keen devs interested in security
SSW’s Angular and Xamarin Hack Days. These events are always great for meeting new devs and working with them to learn new tech.
SSW TV’s ‘Tech Tips’ at NDC Sydney, where I got to interview a few of the other conference speakers and got them to do a tech demo with me.
SSW Training
The event stats for 2019 were:
34 paid events (many sold out!)
45 free events
Figure: SSW’s New Course on Clean Architecture with Jason Taylor
In 2020 we’re going to be running updated 1-day and 2-day developer training courses in areas such as Azure, Angular, React and .NET Core. In addition, with the growing importance of clean development, we have launched a new course on Clean Architecture due to run in February 2020. It’s led by SSW’s Jason Taylor, who’s video Clean Architecture with ASP.NET Core 2.1 has attracted close to 250,000 views on YouTube. That will be an exciting event.

Read More

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 call out one project that solved a complex business challenge, and was fun to deliver. It had the usual, modern web technologies and cloud, and the project really benefited from great DevOps practices. The lead developer was SSW Solution Architect, Matt Wicks. Matt is also a Microsoft DevOps FastTrack Partner Consultant, and he runs a great team, as well as being passionate about great DevOps. 
The Client was Hutchison Weller and they had a vibrant Product Owner, plus a cool project name. Project KNOWnoise is an application that enables them to know in advance, the construction noise that machinery will generate.
Hutchison Weller had a unique requirement, they needed something that could help manage the environmental impacts their clients face when planning and delivering construction projects. If their client had a construction project that was going to create a lot of noise, they were going to have to pay a lot of $ for accommodation. If the app could predict who was going to be affected and how badly, then it could help to save a lot of $ for that client. 
The major part of the project was to help manage the noise outputs created by machinery and construction, and the effect they have on the nearby public. The developed application, KNOWnoise™ enables a DIY form of noise assessment.
Like too many applications, the client’s initial modelling for this was developed in Excel using a series of very complicated Lookups to do the calculations. While it worked on smaller projects, it couldn’t handle large construction projects as these could have large construction areas and potentially thousands of buildings where the construction noise would be heard – this would multiply out into millions of rows in Excel (which it couldn’t handle).  
Poor old Excel was getting a bad rap as they were encountering many other technical issues including: 
Excel would freeze regularly because of the way it was doing calculations 
If you were using a different version of Excel the macros might not work 
Excel had size limitations so they couldn’t use it on the large projects 
The new web app was built using: 
Angular, NgRx, and .NET Core  
Hosted in Azure 
Architecture – Built using Clean Architecture principals – watch Jason Taylor’s awesome video: Clean Architecture on the topic and SSW’s Rules to Better Clean Architecture.  
Automation – with Azure DevOps build and release pipelines. Regular automatic deployments to dev, test and production environments 
Quality – Extensive unit and integration testing 
Quality – Every pull request automatically ran the tests (great DevOps)
An awesome software team! 
This gave the team the confidence to do fear free refactoring when moving to the scary “large” projects 
Figure:  On the left of the screenshot it shows the different machinery and the project noise levels. On the right it shows the affected properties. Red is very bad, yellow is noisy, green is good.
Figure:  In this screenshot the red indicates a large cluster of houses that will be seriously affected by noise. If there is night time work, then the occupants would need accommodation.
I’m a fan of “if you’re going to fail, then fail fast”. So before launch, the first project we tested, was one that was much larger than the client had ever previously worked on and it performed great.Before each new project, a data import step needs to be undertaken. This posed an issue as there would be a lot of data (in some cases 2+ million rows) to import and validate before a project can be used by end users. Inserting that into Azure SQL requires a lot of $ DTUs (the Azure charge unit for memory and CPU). We didn’t want to put in any manual steps, e.g to dial it up to improve performance. The problem would be, if they forgot to dial it back down, that could lead to a $25k Azure bill for the month. WOOOOAH!
Note: Cosmos DB would have been faster, but would have cost a lot more. So it wasn’t really an option due to the volume of data. The data imports are not a frequent activity so Azure SQL database was chosen.
There were a few ways SSW managed to revolutionise the app. They pulled all of the lookup data and calculated results out of the SQL database and stored them as JSON files in Azure Blob Storage. This eliminated the need to hit up Azure SQL for thousands of reads, updates and deletes every time that a user would make changes to their construction plans; this sped up user operations and reduced the number of DTUs that the database required for normal daily use. Azure Blob storage is a fraction of a cent per GB, so from a data volume perspective it is much cheaper. Importing data into database and reading and saving results was faster, it had a more predictable response time, and avoided worrying about noisy neighbours in a database, and since a lot of data was no longer in the database – it shrank drastically. More importantly, its cost to run reduced drastically. 
In order to make this happen, we did a big refactor of the code, but since we were using the Clean Architecture pattern we knew where to make the changes, and we had all of the unit tests and integration tests in place meaning we had a high level of confidence that we could make those changes. Great DevOps pays for itself!  
Investing in good DevOps practices from the beginning pays for itself very quickly. Having your unit and integration tests in place means you can make sure that you are reducing the risk of introducing regressions. Running your tests with every Pull Request means you can move forward faster and with more confidence as your master branch will only contain a stream of clean commits. If someone needs to take over the project, or picks up a new piece of work, they will start from a clean starting point. The process picks up bugs early.  
While we wouldn’t always recommend failing, it had its place in this project. We decided to use hypothesis driven development to see if we could discover the best architecture model to solve our data import issue. We had logs and stats from Application Insights to discover the root cause of our problem. We had a few ideas on how to solve it, so we developed and tested a few options to solve the problem, for example, we tried Azure Functions, then we tried Cosmos DB, before finally testing Azure Blob Storage. We had the stats for each of the runs and were able to empirically compare the results to determine that Azure Blob Storage was the best solution for this problem – it was the simplest, it provided the best performance and turned out to also be the cheapest. It just goes to show how important it is to keep an open mind in terms of storage; not everything needs to be in a SQL database. 
We were able to do some cool things in Google Maps. Half of the interface uses Google Maps and we were able to overlay some cool visualisations to help people do their job. We were really happy that Hutchison Weller was able to use the extensible system we developed and changed the way users select where construction was taking place – they were able to change the overlays on the map from squares to hexagons without our involvement. This meant that they can choose where construction work is being done with greater accuracy. Visually it’s a lot cooler.  
Regarding the Azure cost, we were blown away with how cheap it is to run to this app, considering where it started from, and where it is now. We’ve improved performance, past the spec. The cost of running the app is a drop in the ocean, which is a huge win for Hutchison Weller. This app has allowed them to land some very large projects, like West Connex and other large infrastructure projects affecting millions of people. A huge win for a smaller company.  
8 Tips to Strengthen Your DevOps
Testing – automate your tests and run them before you start work and when you finish your work – if there is a problem, fix it straight away 
Pull Requests – they should trigger builds that run all your tests. Remember tests that aren’t executed, atrophy quickly
Deploy – use Azure and deploy to it regularly. Run your integrations tests against it. Running your application on Azure is very different to running it on your local machine. The earlier you discover these differences the better
Automate – have a release pipeline in place with environment promotion, don’t deploy to production unless you have successful deployments to your staging environment.  
Monitoring – use Application Insights and logging, this will help with postmortems and debugging production 
Source Code – merge your code frequently, this will reduce your merge and integration debt 
Deploy – release each PBIs as completed. This can be part of your definition of done. It will help you discover issues very quickly – rollback is easier and it’s easy to isolate the problem area
Deploy – keep your configuration settings and secrets out of code. Use KeyVault in your ARM templates
Having trouble with Clean Architecture? We have some great resources here: 
Some projects feel like cross country skiing – hard work! This project felt more like down hill skiing – the pull requests, the clean architecture and the good DevOps helped heaps. SSW solved the client’s complex business problem and moved their business from a fragile Excel solution (with GOTO statements) to a long term solution running on modern web technology and Azure. They now have a solution that will grow with them over the years.
I’m so proud of this project and I hope you enjoy the case study.

Read More