What do you do in your spare time?

February 28, 2022 - Reading time: 2 minutes

The other day a work colleague asked me how I manage to do all my work as well as constantly find the time to read up on new topics (specifically Go, as I'm learning [and loving] the language!)

While I am happy to admit I am not afraid of doing work when there is work to be done, I think out of all of the people working at Intergreatme, I strive to have a somewhat healthy work-life (read: I do a lot of travel) stance.

But I also think part of this perceptional bias is because I perhaps am a bit out-of-the-ordinary when it comes to the things I do in my spare time that stimulate me. For instance, I rarely watch series, nor do I often watch a movie.

I do play a few games, but mostly this happens over the weekend. Though, as a dev team, we do sometimes have a sneaky afternoon where we play a few games together - but I see this as more of the "getting to engage with your team outside of working on things" interaction; especially with Intergreatme being a fully remote-work company.

More recently, we have been experimenting with Go and SvelteKit. I often try and spend some extra time on the project, as I believe it is within my nature to want to grow and expand what I know. I think, with someone with a hefty background in software development, that it's also crucial to keep your skills going, and often the only time for additional advancement in one's pursuit of knowledge requires a certain amount of down-time to be used up in order to accomplish this.

For some people (I believe I exclude myself here, as I am heavily involved in ideation, and new product development) it is sometimes hard to come up with novel ideas of things to code. So, from a practical stand point, working on idea's that I've come up with that also further the company's ambitions is win-win.

Does that then mean that the label of "workaholic" is apt? Or that of being a "hard worker"? I think, ultimately, it is more about passion, learning, growth and opportunity.


No coffee, no milk

February 8, 2022 - Reading time: ~1 minute

I'm trying to see if stopping coffee (and therefore milk and sugar!) is going to help me sleep better at night. While I have generally been a pretty avid coffee drinker - I mean, I do write code after all - I sometimes struggle with sleep at night. Though when I say struggle, I have no issues falling asleep, but after 2 AM (or more recently, 4 AM) my body seems to think it's time to rise and shine... when it really isn't.

So here's to my own little no coffee experiment.

So far, the only thing that's happened is caffiene and sugar withdrawal aka: being a grumpy person. I am sure the effects will only persist for a few more days.

I've also started to attempt to do some runs over the weekends and certain afternoons. I feel like I am making some progress, but I now fully aware that I cannot run after a big night out.

                             EDIT                             

I have since resumed my consumption of coffee, although I have managed to reduce the consumption and instead try to stick to only having some in the morning.


Bringing in some changes to Caelisco

December 23, 2021 - Reading time: 5 minutes

I have been mulling some UI changes to Caelisco over the last few weeks, starting with creating a new landing page and integrating posts. There isn't too much change that happens on the home page, and it could be better optimised to display content.

On the matter of content: I also need to get started working on that. From both a personal - ideation and creation perspective - as well from an Intergreatme space; I've been working with different products as I attempt to both keep my skills relevant, but also to learn something new.

Early on this year I built a solution that allows us to easily demo out our KYC product offering, allowing it to create transactions to show to our users. Fast track to the end of the year, and the small solution now helps Telkom (and it's vendors) run thousands of KYC transactions, sending out emails and SMS' and taking stock of delivery notes. It has shifted one of the use cases of the KYC technology.

Why I still prefer PHP over some other languages (aka Java/Dropwizard etc.) is around rapid prototyping. I find it is often fairly trivial to build a quick working proof of concept in PHP that ensures the core concepts work, prior to shifting the technology to a different platform... Though, in saying that, a lot of the technology still remains as it was written in my handy, almost-favorite language.

The latest of what I've been working through is using Go to build services, especially in areas where PHP doesn't necessarily operate nicely (I mean, you can get PHP to do a hell of a lot, but seriously long running processes can be a bit of a mission to orchestrate.) It isn't impossible though.

For now, the Go services reside on the server hosted with PHP. Of course, it's running on a different port, so all requests to this Go server are routed through PHP to the long-running services. I also created the proxy because it doesn't make sense to expose random ports to the Internet especially for secure services. JavaScript does periodic checks via the proxy to the Go server to check where it is in the process.

In hindsight, making use of SessionStorage along with JavaScript could have made the whole processing space a lot easier to contend with; at the time I just didn't think of it as a solution - and I wanted to get my hands dirty with Go along with getting something in the production environment. You learn by doing.

PS: I love the MDN docs.

I make a lot of use of CockroachDB - it runs in our prod environment, but I also use it for smaller sites and services. It is constantly evolving, which is great. 

I have also been playing around with TailwindCSS, and am in the process of building a new site for Intergreatme using it. I've also been working on a new project which I have already built a working beta.

When we went in to tech freeze, I gave the dev team a basic API to play with, and asked them to build some UI experiments with various frameworks. We already use Angular in a fair amount of our web-based products (though some are just JSP pages, which I want to phase out).

We looked at the latest version of Angular, Flutter (for Web specifically), and SvelteKit. So far, the team seems to be most happy with SvelteKit. We are going to run some additional proof of concepts and see how we fare. My biggest concern with SvelteKit is ensuring we have device compatibility - the Intergreatme KYC product handles thousands of identities on a daily basis, and over the last two years of the products existence we have built a solid solution. Introducing change, while scary, also needs to be tested to ensure maximum device compatibility.

To end off, I am hopeful that I'll be able to shift gears a bit with my writing. I have been rather lax - even though I do have content - and I need to ensure I set an objective to write and publish more content more frequently.


Internal tools at Intergreatme

June 24, 2021 - Reading time: 3 minutes

With POPIA looming on the 1st of July 2021, I thought I'd discuss some of the tools we make use of at Intergreatme.

Security has always been at the forefront of our thinking when it has come to the design and implementation of technology, and from the start I tried to ensure that employees made responsible choices to the use of software services.

My preference has been to make use of tools that are open source, and that can be installed on our own server infrastructure. We make use of Microsoft Azure for our hosting as they were the first to market within the South African region (largely because some of the corporate customers we have also do not necessarily understand the implications of data transfer in terms of POPIA - but that's another story for another day!)

One of the products we have used pretty much from inception is Nextcloud. Originally, we made use of ownCloud, but later shifted to using Nextcloud. You can think of these products as an open source, host-it-yourself version of Dropbox. I simply created a VM, installed PHP and Maria DB (a fork of MySQL), installed Redis and set up Nextcloud. The configuration is pretty easy to make use of. I used Let's Encrypt to add SSL to the site. Let's Encrypt is a life saver when it comes to adding HTTPS to your web resources - especially when you are a fledgling start-up and do not have access to huge amounts of capital.

Nextcloud is pretty cool in that it also has a variety of apps that can be installed along side it which are accessible from inside the Web UI. We typically make use of Deck for Kanban style boards, which allows us to keep track of tasks.

On a few occasions, we have also made use of Talk, which provides Teams/Zoom type functionality from inside the browser, although our mileage has varied in terms of its ultimate success.

I also previously had an instance of OnlyOffice running which provided some collaboration tooling online between Nextcloud and Office productivity. We use Collabora Online at the moment, though I honestly preferred OnlyOffice - if only because it seemed to understand our regional settings better, and so opening up spread sheets and Word documents seemed to provide better compatibility for our region.


Pettr has a new logo

November 19, 2020 - Reading time: 2 minutes
The new Pettr logo

The talented architect, artist and designer, Shaun Gaylard of Blank Ink Design took some time out of his 365 Buildings of South Africa project to help me with a much needed Pettr logo.

The logo draws on inspiration of the two animals from the survey - cats and dogs - and uses colours from the new brand palette he created for the project.

I have updated the favicon and added the logo to the website, and I am slowly working on some of the existing usability issues.


How you compare and breakdowns

October 22, 2020 - Reading time: 6 minutes

It has been an incredibly busy time for me for the past few weeks, and I have been trying to use my 'idle-time' in the evenings and on weekends to build some new functionality into Pettr.

There are three things I want to cover:

  • How things are calculated
  • Feature: Breakdown
  • Feature: How you compare

How things are calculated

I have had discussions around how the current costs are calculated, and how this information is presented by the Pettr calculator. The feedback is that people feel the averages do not accurately represent the cost of ownership.

And they are right, they don't. Why so?

The Pettr calculator works by grouping data from survey respondents that are allocated into particular bands, and then calculating averages from the various costs. It is not exactly difficult to calculate, although the primary calculator does come in at ~350+ lines of code. To optimise the process (and because it really isn't necessary), all calculations are pre-generated with the results being cached.

The current downfall of calculating pet affordability in this way is that the calculator does not differentiate a survey respondent that had three cats and two dogs, from a respondent that has two dogs that are both small, or any combination in-between. And because each individual will then have different costs because of the differences in how many animals they own, the averages can become skewed.

To cater for this, I have worked on a supplemental calculation that further breaks the current cost structure for bands of people where they only have a single pet (cat, small-sized dog, medium-sized dog, large-sized dog). It represents this data in the new feature: Breakdown.

Feature: Breakdown

The new breakdown feature is designed to make use of the new pre-calculated data where I have isolated survey respondents that responded where they own a single animal. The breakdown feature will allow users of the calculator to get a further break down based on the kind of animal they are interested in viewing the potential costs involved in owning that kind of animal.

Breakdown appears under the pie chart with Pet Choices, and allows you to select the type of animal that you want a breakdown for (assuming the data exists for that animal in that bracket).

Why results can differ

While working on the new Breakdown feature, I noticed that the affordability data represented as an average can sometimes be lower than the data shown in the new breakdown feature. And this was to be expected! In fact, it was deliberately catered for when the calculator is used where there is sufficient information available to provide information. 

As seen above, a warning is displayed when there really isn't enough data to show give users accurate information.

Pettr deals with different people with different pet dynamics. An example of this situation is that in one of the bands, there is only survey respondent that has a cat. This respondent is actually spending more money on their pet than the average of all pet owners in that band.

Why would someone want to do this? A further look into their individual profile highlighted to me that this survey respondent spends above average on their cat's dietary requirements, and other needs because they only have the one pet, so feel they can spoil the animal more.

This is why it is so important to share the word of Pettr, and to get more people to participate in the survey. It is also why I am going to delay the release of this particular feature until I get more survey responses in.

Feature: How you compare

When you complete a survey in Pettr, you are currently presented with a success page, along with the ability to send your transaction information to your email address (and opt in to any email messaging I might want to provide in the future).

How you compare was designed to be a bit of a 'reward' for completing the survey, allowing you to see how you compare against the average in that affordability bracket.

What's next?

I feel that Pettr has reached a point from a technological perspective where it has achieved my initial goal of being the world's first pet affordability calculator (that works off of crowd-sourced information).

And while there are plenty of websites that provide information about pet affordability, with my own research and initial survey design being oriented around publicly available information, I feel that they are either too US-oriented, or that they give bands of costs that do not really give people a clearer understanding of the costs they might spend when they get an animal.

The next few weeks will largely focus on getting the Pettr message out, and hopefully getting more survey responses in.

From a tech perspective, I am also going to be working on looking at individual pet breeds, and building data sets around each breed in order to help people make better choices about the animals they bring into their homes.

I am also acutely aware that the current iteration of Pettr has focused on 2020 within the bounds of both the survey, and the calculator. I want to do some strategic planning on how to either bring 2020's results into 2021, and also refocus on how I collect this information. Pettr might be a sideline project of mine, but I have a long list of things I want to learn, accomplish, and grow in this new venture.


About



My name is James Lawson, and I am one of the founders of IGM and its current Chief Information Officer.

I also have a consulting firm, Caelisco where I provide advisory services, predominately to startups that require technical advice.

Pettr is my social entrepreneurship project, which takes a global look at pet affordability.

I completed my MBA from the Gordon Institute of Business Science (GIBS), and a BTech in Software Development from the University of Johannesburg.