Kilobites by Sanico

a blog by humans, for humans.

We write opinionated articles on software, learning lessons from running our business, and personal reflections - Written by Sav Tripodi, Dom Tripodi, Bryan Susanto, and friends.

RSS Feed
Profile photo of Dom Tripodi

Improving User Experience on Product Page - Be Careful Messing with History!

Improving User Experience on Product Page - Be Careful Messing with History! cover image

This will be a very quick and brief post about messing with window.history.pushState compared to window.history.replaceState. Both functions have their use case and I want to share a quick reason why you should use one compared to the other and why it matters.

Quick Explanation

As you navigate a website, URL and history management is handled for you but sometimes you may want to update the history stack manually.

As stated directly from its source on mdn web docs, window.history.pushState does as follows:

The pushState() method of the History interface adds an entry to the browser’s session history stack.

A common use case for wanting to update the history stack manually is to update the URL bar without refreshing the page.

For example, if you are on an online shopfront (ecommerce store) and are viewing products, each product may have a variant.

Let’s imagine here at Sanico Software we are selling leather hats (we aren’t but maybe we should?), the general product URL may be:

Base Product URL
https://www.sanico.com.au/products/leather-hat

However, we actually offer hats in brown, black and red (this is sounding better and better). Therefore, the individual links of each variant may be:

Brown
https://www.sanico.com.au/products/leather-hat?variant=1

Black
https://www.sanico.com.au/products/leather-hat?variant=2

Red …

Keep Reading...

Profile photo of Sav Tripodi

Working with People and Clients You Dislike

Many moons ago (that makes me sound old) a business owner gave me inaccurate advice that I must work with people and clients I dislike. Folly. I shall tell the tale of how I received this poor advice and provide a critical amendment, a one word change that fixes everything.

Let us begin.

In my first years of running a business we landed a software job with a large firm here in Adelaide, for anonymity I shall refer to them as SkySafe Lifts. The managing director of SkySafe Lifts, I shall call him Bob, found us online and reached out to contract our services.

For more context, Bob built the business from the ground up over a 20 year period into a successful company that works with firms across Australia. He was charismatic, kind, approachable, and excellent to deal with as a client.

They required help with an inventory system and hired us as software consultants to help them find the best software for their sized business. Bob requested that I must speak with their accountant because he knows the financials of the company back to front. I booked in a time and called him.

Me: “Hi this is Sav from…”

Sudden Interruption

Accountant: “Yeah yeah this is that software guy, right?”

Me: “Yes I was told to…”

Sudden Interruption

Accountant: “yeah yeah yeah I wanted them to hire my software guy but they chose you.”

Sav: “Well…”

Third Annoying Interruption

Accountant: …

Keep Reading...

Profile photo of Sav Tripodi

How We Land Software Contracts Internationally

From Germany to America, from Perth to Melbourne, people keep asking me how we land software contracts with companies all around the world. My answer: Because we are that F****** good.

Let me explain.

A long time ago I read a fantastic book called “So Good They Can’t Ignore You” by Cal Newport. As obvious within the title of the book, it discusses the premise that when one focuses on skills and ability then other people, whether businesses or clients, will find it hard to ignore them.

Let me give an example, I ask 1000 local league soccer players to line up shoulder to shoulder. I turn to my friend Matt and ask him to pick one player to captain his team. Before he picks I ask one more player to join the line, Cristiano Ronaldo, one of the best players in modern era soccer.

Who will my friend pick out of the 1001 players? One of the best players known to mankind, or 1 of the 1000 average local league players?

Cristiano Ronaldo. Full stop.

Who the heck is Sanico?

They say you can’t sell a secret, and I agree. But how do you build a reputation for yourself with a remote company founded in Adelaide? How do you build a reputation for yourself not only in your local neighbourhood but the whole online world?

Number 1: We show our face EVERYWHERE online to build authenticity.

We post our face on,

Keep Reading...

Profile photo of Sav Tripodi

Flaking, Flaking, Flaker: Never Flake in Business or Personal Life

No one likes a Flaker. You know the type, a person that commits to something 100% and then cancels a touch before the commitment. Or worse, they fail to show up at all and let nobody know.

Yes yes yes, we all know the type. Let me dig in here.

When we built Sanico Software we started with a few inner core principles. Principles we never stated out aloud but instead knew subconsciously. One major one, NEVER EVER FLAKE ON CLIENTS.

Why? Because, as I stated at the start, no one likes a flaker. It works the same in business. When you flake on a client, in particular when you COMMIT to a specific date 100% and fail to follow through you will tarnish your reputation. Like sinking sand, the more you flake, the worse your reputation sinks.

From personal flaking to flaking in business, it all ends the same, in disappointment.

Frequency Matters

“Right right right, Sav I get it, but what if they have a super valid reason?”

Valid reasons exist, for example, the other day an engineer on our team said to me that a family member of theirs passed away. They asked for a day off work and without a second thought I granted it. They asked if I required a certificate to show proof. I scoffed to myself, I required no certificate.

“But Sav, what if they are a flaker and they are lying?”

Ahhhhh let me explain further. This engineer never ever flakes. The total opposite, they show up on time to …

Keep Reading...

Profile photo of Sav Tripodi

Please Sign this Document: Legally Unprepared Businesses

A friend of mine recently contracted for a company that asked them to sign a non-compete agreement a few days after they concluded their employment.

What on Earth? For any business owners, lawyers, or anyone with street smarts, I am sure you would react straight away and say: “Don’t sign that”.

The company of my friend failed to sign a proper sub-contractor agreement at the commencement of their employment and wanted to sign agreements after the fact. I call this amateur and unprepared.

To serve a non-compete agreement to a sub-contractor after the termination of their employment with no prior agreement in place undermines the intelligence of the sub-contractor. Do they take them for a fool?

For future sub-contract work, sure, create a formal legal agreement. However, and a huuuugggeee however, for work in the past that commenced without a formal legal agreement, no.

Not only that, the business persisted to pester my friend to sign the document even after they said a firm “no”. Another amateur move which demonstrated the evident unpreparedness of the small business.

No Seatbelts

I compare a lack of legal preparedness to not wearing a seatbelt in a car. Someone might drive without a seatbelt for over 10 years and evade the misfortune of a car accident. However, if the misfortune ever occurs they risk a preventable fatality.

The same with law. Sound legal advice and agreements …

Keep Reading...

Profile photo of Dom Tripodi

Why UI Colors is a Game-Changing Tool Every Developer should use

Why UI Colors is a Game-Changing Tool Every Developer should use cover image

The phrase “less is more” comes to mind when I use this tool. Improving accessibility for users who suffer from colour blindness has become paramount. Beyond accessibility problems, utilising colours that contrast correctly is a general must when it comes to design. The title mentions developers but I do believe anyone developing graphics could utilise this tool.

What is so good about this tool?

UI Colors has been built to work in unison with Tailwind CSS. The creator @erikdevries_nl has labeled the tool as a Tailwind CSS Color Generator.

Starting designs from a single colour can make it difficult to visualise an entire palette. If I were to use a colour dropper to view the hex value of the Sanico Software purple, I would be left with #6d2cd4. Now I have a primary colour.

Before attempting to find a secondary colour, I can first go to UI Colors and paste this hex into the primary input field.

Bam! Now I have 11 shades of my primary colour with example components. I can export these shades as a palette in Hex codes that will be utilised in my Tailwind CSS project.

If desired, I can then add a secondary and tertiary colour and view more example components.

Everything I have mentioned is on the Free Tier. Additional features are available for a reasonable price of $50USD/year. I now pay for the yearly fee, however, I have zero affiliation with the tool - I just …

Keep Reading...

Profile photo of Dom Tripodi

Why you should advertise when you are busy - don't stink of desperation!

Why you should advertise when you are busy - don't stink of desperation! cover image

I have dealt with many clients in the past who have said they don’t need to advertise since they are too busy.

I have also witnessed several of those clients hit unexpected dry spells that resulted in a frantic search for more business.

In my opinion, there is rarely a bad reason to prepare for the near future, especially in a world that changes from day to day.

How can you prepare for the near future?

My statement above may seem difficult to digest given the future is not predictable. However, in this case, I see preparations as preventative measures that help minimise exposure to a downturn in business.

There is no guarantee that advertising means your business will avoid a downturn. However, inaction to promote your business guarantees no new channels besides word-of-mouth.

Don’t forget, competitors to your business actively search for ways to be seen. If they are consistent in their efforts while you take zero action, their business may start securing your prospective clients.

What type of advertising do I mean?

Advertising is far deeper than the modern thinking of Google Ads and Social Media Marketing. Yes, the aforementioned channels are positive for advertisement but there are many different ways to seek business.

You could walk directly into a business to meet the owner, invest in a website, invest in billboards, attend local events, wrap your car, …

Keep Reading...

Profile photo of Sav Tripodi

Always Show Your Real Face Online

When a new employee starts I ask them to upload a portrait shot of their faces for every account they use internally at my company. Not a picture of their dog, not a picture of the beach, and not a picture of their favourite anime character. A picture of them.

I request them to add a portrait shot of their face because of the wise words that my professor in America said to me long ago:

If you do not author any document with your full name then I will refuse to read it.

Why would he refuse to read a document without an author? He reasoned that if someone fails to author a document with their name they must lack a sense of pride for what they wrote and want to hide from accountability. Therefore, he refuses to waste his precious time to read it.

When a person writes their full name it holds them accountable to the material they wrote. A dog tag of sorts. I wholeheartedly agree with my professor and utilise the same logic with profile pictures.

In the online world I see many people write horrible things authored by fake aliases and accompanied with profile pictures of dogs, cats, famous people, and other nonsensical images.

Anyone that uses a social media platform will understand what I intend. Sure, people write terrible things with their full name and a profile picture of their face, but at least they assume full responsibility and accountable for what they wrote.

I call …

Keep Reading...

Profile photo of Dom Tripodi

How to Get More Google Reviews from Clients

Google reviews are critical for establishing credibility and demonstrating past client/customer satisfaction. Below is a quick and simple guide showing the easiest way to request more Google reviews for your business listing.

1. Find your Google My Business Profile

You must be logged-in to the Google account that owns or is a manager of the Google business listing. Click the top right icon and either login or check which account is currently active. As seen in the image below, my Sanico Software account is currently logged in.

You will know if you have the correct access if you see a screen similar to below. You will have options to Edit Profile, Read Reviews, Add Photos etc. which is not shown if your account is not the owner or manager.

If you do not see these settings and you are the owner of the business, you may not have ownership of the business listing. You can head over to Google’s support article where Google explains how to request ownership of a listing.

2. Navigate to Read Reviews

Assuming that you have the correct permissions to edit the business listing, click Read Reviews which will open a modal window.

3. Click Get More Reviews

You will now be viewing a modal window that displays past customer reviews. As a side note, ensure you respond to any previous customer reviews. An appreciative response shows authenticity from the owner.

Next to the previous …

Keep Reading...

Profile photo of Rhytech Gomez

Working in a Remote Software Team: My Journey as a Software Engineer Intern

Imagine starting your very first job as a software engineering intern and finding yourself not in those bustling tech offices or recreating those ‘day in a life as a software engineer’ videos you see online but in the comfort of your own home. The realm of remote work has become your reality. 

As a working student who transitioned from a traditional office environment to a remote software engineering role, this shift felt like exploring unknown waters, bringing in new knowledge, processes and challenges. In this post, I’ll share my personal journey of adapting to remote work and how practical strategies helped me grow, not just professionally but as an individual.

Expectations vs. Reality of Remote Work: Before starting my remote internship, I had certain expectations about what it would be like, from online videos, articles, and blog posts about remote work. Some of these expectations were met but some took me by surprise.

Flexible schedule: I expected remote work to give me complete control over my schedule. However, there is some flexibility, but I still need to follow team schedules, deadlines and meetings.

Challenges in Communication: Expecting that communication is all online, I anticipated potential delays in communication. Although delayed responses are part of the remote experience, I’ve been fortunate to have great support from my mentor, Sav who has always been quick …

Keep Reading...

Subscribe for future posts by Sav, Dom, Bryan and friends. This is a once-a-month blog wrap-up only.