Food skimming app that failed

My business failed a few years ago. (It is raining and thunder is rolling as I’m writing this, which is ominous and eerily fitting at the same time)

My business partners were not helpful. I did most of the work and they expected to reap the benefits. And that’s all I’m going to say about that.

Anyway, it was an app/software that we would try to sell to food sellers. Anything from mom-and-pop cafes to restaurants. What it does is list the available food items. Features include picture of the food item, the price, nutritional information.

I pointed out to my business partners that while the app helped the customers, it didn’t do much for the food business owners. In fact, it would probably add more work load to them.

The most glaring omission is the ability to integrate with their payment systems. And boy that was a big one. But my business partners apparently thought that was a small issue.

The ideal app had to coordinate things like, allowing the customer to order, have the order sent to the kitchen, and process payment. And the app couldn’t do any of that. Which makes the app kind of pointless.

I struggled with keeping the development up for about a year. Without sufficient help from my business partners, I couldn’t keep it going anymore, financially and creatively. So I shut the company down (and even that was a rollercoaster of a ride)

I’ve written a little of my company’s product before, but I thought maybe I’d talk a little bit more about it. If only to bring closure.

So I bought a domain for it. I had to think up a name for it (I came up with FoodSkim. I know it’s not creative or hip but I was out of juice back then). But I had to eventually let them disappear into the past. What’s sad is I’m probably the only one who will remember them.

So when I see the new apps and services catering to food businesses, I have to wonder what would have happened had I actually managed to pull it off. I mean there’s GrabFood, FoodPanda and a whole host of other food delivery service apps. There are also many software services that do digital ordering of food, either for delivery or within the restaurant or cafe itself (one of them is Waitr app I think).

It was a painful experience, but also an enlightening one. I’m just not sure of the man I have become since then.

Find the real problem

Complicated systems require deeper questionsA while ago, I was asked to add some new features to an existing software system. The request seems straightforward, but my developer senses were tingling.

The user wanted to track if a student had taken a particular course. Which would have been simple but because I know students, people fail courses. So I asked if a failed course should still be noted down.

“Yes!” she said.

Well then, it’s no longer a simple single instance. The system had to track the student’s progress until the student passes. I mean if a student takes more than one attempt to pass the course, there are bigger problems. But they’re not the software system’s problem *grin*

In general, when I’m presented with a problem, I try to understand if there’s a bigger and more fundamental problem lying underneath. I don’t mean that you have to question every single question or problem once or thrice.

Sometimes your buddy asking you what you’d like to eat is simply that. And not that your buddy is insinuating that you are indecisive and is still angry the last time he picked out a place.

But you know, complicated systems like software or climate or this current pandemic require more thought into both questions and answers.

Physical and mental stress

I’ve been writing code for a long time.

I wasn’t a computer science student. When I was in university, I studied applied maths, because that was what I was good at and luckily, interested in as well. Then there was this side module that taught the C language. And that’s how I learnt my first proper programming language over 20 years ago.

(I self taught myself BASIC with a toy computer in my early teens, but that’s another story)

Over time, the incredible bursts and protracted periods of programming energy morphed into shorter chunks of methodical thinking and planning. Life as a teenager and young adult is also simpler than the 30’s and 40’s.

Life takes its toll. Few programmers talk about it, but there’s a mental strain, especially with you know, life happening. I’ve had my fair share of mental stress, so let me tell what worked for me.

Magnesium supplementation helped. As had this herb called ashwagandha. I also do meditation and breathing exercises when I get to do them. Continuing the food angle, I used to take weight gainer powders. I’m a skinny guy and found it hard to put on mass. Later in life, I realised I wanted to put on muscle, not just meat on my body.

So I started working out. Being the shy guy, I bought dumb bells and exercised at home. Some progress but that’s probably beginner gains.

Fast forward to now, and I’m doing mostly body weight exercises. My current regime is 100 pushups as the base. I have a very loosely defined set of workout exercises, mostly for convenience and ease. If it takes too much to set up for the exercise, I’m just not gonna do it…

I found the physical exertion to be necessary. My body needs to expend energy to be somewhat fatigued or I’ll feel cranky. This ties in to the stress release, both physical and mental.

I’ve been writing code for a long time. Which also means I’ve been living for a fair bit. If you’re a young person, by all means ride that exhilaration of energy. Just also know that it’s ok if you run out of steam and needs to recharge.

Messy and chaotic changes

So I never thought Singapore would be in lockdown mode for several months this year.

The year started well enough. I was transferred from the artificial intelligence department to the cyber security department. New technologies to learn. New people to befriend.

Then this pandemic thing happened.

Within a couple of months, the virus raged across the world. And Singapore took decisive action and locked the whole country down. Everyone was to stay home except for essential services or emergency situations.

The panic buying and queues were laughable if the situation weren’t so dire.

Professionally, I had to switch from the .NET world to the Ubuntu/Linux world. The C# and .NET libraries gave way to Python and vi (yes I do know how to exit from vi, thank goodness). Visual Studio autocompletion and SQL Server gave way to command line grep and PostGreSql/MySql.

I’d be lying if I said I was ok mentally speaking. These past few months had been psychologically and mentally taxing for everyone.

To climb out of this mental hole, I put in more effort into two specific activities: Russian language acquisition and physical fitness.

Hello comrade!

I had been learning Russian for a couple of years now. Mostly with the app Duolingo. But I discovered I wasn’t making a lot of progress. The lockdown both highlighted my inadequacy and gave me the opportunity to push myself.

So I switched over to the app Lingvist for new vocabulary and spaced repetition. I created a separate YouTube account with just Russian content. The idea is to see, hear and read as much Russian content as possible, and in as comprehensible a manner as possible (aka comprehensible input).

I made more progress in two months than in two years.

Body recomposition

I also changed my workout routine. I’ve never gone to the gym to exercise. I trained with dumbbells at home. I’ve done so since my early 20’s.

So I’ve been “training” for a long time. And I’m still not jacked! I blame myself. What the blyat have I been doing?

So I switched over to body weight exercises. And the muscle growth finally came and shattered my plateau. My biceps and triceps are more pronounced. I’m filling up my shirts with my pectorals. And my back pain is mostly gone after I focus on shoulder and lower back exercises.

New stress relievers

I used to go to the library to read. To unwind.

I used to go to the cinema to watch movies. To imagine.

Not anymore.

Now I better appreciate the times I do spend with my family and friends, ever since the lockdown eased up.

I hope you’re well wherever you are, whenever you are.

Learning Russian and Python

Russian grammar makes me want to throw my hands up in frustration and anger.

I’ve been learning Russian for over two years now.

I started by using Duolingo. I thought I was progressing quite nicely. But the gamified way of learning soon wore me down. And after a year and a half, I still could not come up with sentences of more than 5 words.

So I searched for a better way of learning. I found the apps Busuu and Lingvist to be helpful, especially Lingvist since it’s a spaced repetition app without me having to input my own words (like Anki. I’m lazy). I’ve started to actively read Russian articles (blogs or news) and watch Russian YouTube videos. And I’m using more time on the learning process, and my progress finally moved forward over the last few months.

In the midst of all that linguistic frustration, my work also involved reading and writing Python code. I had to deal with machine learning and AI and the new fangled new thing these days is Python and the powerful libraries that support it.

Let me tell you, the lack of an ending semicolon took me a while to get over.

And Python was just the tip of the iceberg. The latest technological tools and languages appear to move away from the “traditional” programming structures such as if statements and for loops. They still have them, but somehow presented in a different manner.

Python has the list comprehension thing (which looks like an SQL select statement to me). Scratch from MIT uses visual blocks to construct programming logic. And Tensorflow is … tense (tensors are hyperdimensional matrices?).

So my struggle with Russian is mostly with the 6 cases. The language makes differences for “for you” and “to you” as in <<??? ????>> and <<? ?????>>. The gender attachment to all objects didn’t help (I mean other languages such as German has it too but still).

And the newer programming languages or technologies seem to be encapsulating more and more constructs to work on a higher and more abstract level. It might even seem that programming languages are trying to approach how humans talk to each other.

And that might be the actual point. Communication.

We speak to each other and convey our ideas through natural languages. And we do the same “speaking” to computers through programming languages. The difference is that humans are more capable of picking up nuances and self-correct mistakes in communication.

Calming down

About 3 years ago, the stress was slowly killing me.

So back then I was working on my own business, using some of the money I earned as a software consultant, and running a company as the CEO/director. The consultancy job required me to travel an obscene distance taking an absurd amount of time to the tune of 4 to 4.5 hours every single day.

I slept an average of 4.5 hours a night. 6 if I’m lucky (such as weekends). My last thought before sleep was typically the injustice inflicted on me by my Troublesome Business Partner (TBP). My first thought upon waking up was that of TBP. My blood boiled continually throughout the day whenever the thought of TBP flits past my brain.

My health was a wreck. I could see my muscles wasted away. My breath was usually ragged and shallow. My back hurt and my shoulders ached.

Sometimes just standing still and doing nothing was the best thing I could do for myself. Because moving or even the thought of moving was too mentally painful.

I was continually worried about money. My company wasn’t making profits and I had to make payroll using my own personal money (because my business partners seemed to think it was unheard of for them to continue investing their money and time beyond the initial company setup).

The wakeup call

So one night I was walking home after work. It was near midnight when I alighted the train. The night was cool and I wanted to save money by not taking the bus.

I was enjoying the slight breeze and the solitude of the quiet night when I felt something. More precisely it was what I didn’t feel.

Because for a few moments I felt the absence of my heart beating.

I stood shivering on the walk path beside the road. Tears welled up. I was just so tired. I took long deep breaths as I watched the occasional car pass by. Then I continued my journey home.

You might think I imagined that. I thought so too. Until my heart “gave out” on a couple of occasions after the initial one. It was then that I finally came to terms that I had to do something drastic to turn my life around.

Because whatever I was doing was clearly not working.

The frantic search for relaxation

Prior to my heart incident, I was already trying my darndest to relax. I’m not stupid you know. So I followed the typical advice.

Such as long walks, preferably in nature. I took long walks in the nearby park. But the presence of humans agitated me more than the relaxation benefits. Yes people stress me out, like way more than was normal.

I wasn’t unfriendly nor anti-social. But after dealing with TBP, I became much more cynical and distrustful of people.

I did deep breathing, forcing my breaths into long drawn out streams of air flow. It sort of helped. But I was so wired up that the moment I stopped consciously breathing, my breathing adjusted to simulate a chihuahua panting. It was like two giant hands squeezing my chest and back together, holding with enough space that I could just barely breathe.

I also tried visualisation and meditation. Years ago I would have found it easy to maintain a light meditative state. That stressed out Vincent? Oh he was bombarded with a constant flow of anger, sadness, money worries, future worries, frustration, moments of small joy. I had a nervous tick in my left eyelid.

“What about pets?” Have I mention my cat died? A small part of me died too. I’ll leave it there…

“Well what about exercise?” I also did that. The thing was, you need to be able to recover from that exercise to reap the benefits. I was so stressed out that some pushups or jumping jacks took me days, maybe even a couple of weeks for me to recover. I was so worn out.

“Uh massage?” I couldn’t afford it.

“Talk to friends?” They’re not the business kind of people. And even if it’s just to talk it out, they’re guys. It’s not a manly thing to talk about such woes. So I just hang out with my friends but I kept my troubles to myself.

I was at my wit’s end. But what I’ve told you were what I actively did for relaxing. Mentally with meditation. Physically with exercise. Emotionally and socially with friends.

Those helped, but not significantly enough to turn things around for me. I needed something more drastic. Something that is done to me. Something that is passive for me once I start the initial process.

Next time I’ll tell you about my research into health and fitness and the ridiculous amount of health supplements I tried.

Academic self-publishing

As of this writing, I’ve worked in the academic industry for slightly over 3 months. More on this later.

Claire Morgan sent me this article on academic self-publishing. There are good points and bad points regarding self-publishing, which are exaggerated particularly so for the academic industry. I should know, since I’m making a web application for internal use in a university.

As part of my work, I learnt a lot about how the Ph.D. degree students go through their academic years, and what are the processes they go through. Yeah my web application is going to be used by staff and future doctors (albeit Ph.D.’s). Go me.

One of the more important parts of being a Ph.D. student is publications. It’s not necessary to publish any papers but they help increase your credibility. Perhaps in helping with raising the impressions of examiners who attend your thesis defence. Every little bit helps, I guess.

But you can’t just publish your work anywhere. The publisher has to be of repute and your work must be peer reviewed.

This means self-publishing is looked down upon even more by the academic industry.

But wait!

There are 2 points I found interesting in Claire’s article.

The 1st point is that you don’t have to publish your entire work. Maybe a non-vital piece of your research but is still informative and useful. “Non-vital” is of course relative to your entire research work as a whole.

The 2nd point is that you can publish mistakes or research results that didn’t go anywhere. These don’t help you and your final research publication, but they might help some other poor fellow from wasting resources going down that route.

So what’s happening lately for me?

As I said, I’m working in a university now. Well, technically they outsourced the work to me so I’m still considered self-employed. We’ll see…

I’m stationed in a research lab. I’m surrounded by Ph.D. students. My manager is a Ph.D. student. Or at least he’s the project officer who’s my liaison between the IT support department and me. But psshht, semantics.

As part of my work, I’m using ASP.NET MVC (model-view-controller) and jQuery. Both of which I’m not familiar with at the start of my contract. Fun times… I was more of a back-end kind of guy.

Speaking of back-end, my spreadsheet library is doing well. Go check out SpreadsheetLight if you haven’t, and it’s also on NuGet (which I just learnt about, even though I’ve been using Visual Studio for like donkey years. Like I said, I’m more of a back-end guy. How do you pronounce “NuGet”? Like “nugget”?).

So yeah, if you haven’t, go read that article. Tell me what you think.

In The Mirror (cover)

This is one of my favourite piano pieces by Yanni.

I’m not a pianist. I’ve never taken piano lessons. I’m like grade -1 or something. This took me over a dozen tries…

Credits and permission granted from:

Music by Yanni
23rd Street publishing Inc/Yanni Music Publishing (ASCAP)
Used by Permission. All Rights Reserved

Passion problems

It was a fluke. I just fell into the spreadsheet business.

My main products currently, both in writing and in code, revolve around spreadsheets. Specifically around Excel workbooks or spreadsheets or files or whatever you call them.

I like programming and writing code. I’m great at it. I just didn’t specifically choose making spreadsheet libraries.

There’s a say out there about following your passion and “then the money will follow”. The problem is that you might just wait for that passion of yours to appear.

People pay for skill. They pay for convenience, pain relief, time saving, effort saving, money saving, revenue generation. They pay for what’s important to them. They don’t pay for your passion.

When it all started, I was working in the billing support department. Lots of financial numbers flying around. Lots of spreadsheets needed.

So I was forced to figure out a way to create Excel files with a minimum of fuss. I started with just XML files which Excel accepted.

Then more complexity was needed. Slowly I honed my skills at deciphering what users want, what Excel does behind the scenes and how to create Excel files.

By making my spreadsheet library as easy to use as using Excel, I am now an expert at using Excel.

A user unchecks a checkbox. I do the same thing and see what changes in the spreadsheet.

I may not be one of those Excel gurus who write 500 page Excel user guides, but I’m close enough. My spreadsheet library may not have all the features of commercial libraries that cost thousands of dollars, but it bloody well does the job in the most accessible manner possible.

This is skill honed over hours of study and practice and experimentation.

The funny thing is, I kinda have a passion for it developed over time. Oh I still hate Excel sometimes for being weird or incomprehensible in behaviour, but it’s mostly in jest. Ok I have an unseemly hatred for how Excel calculates column widths…

Develop a skill worth paying for. You may have a passion for playing video games but only a few people manage to be paid doing so. (if you’re interested, check out the gameplay videos on YouTube. That’s one way of being paid. Advertising or even sponsorship)

What are your marketable skills? How can you become so good that people have to pay attention to you, and thus pay you to help them?

Software is everywhere

Coming soon to toasters and refrigerators. YouTube hates me, or WMV files, because the rendered video has visual static…

And celebrate whatever holiday is meaningful to you. Happy holidays!