Lemiffe Music, Software, Stories & AI

The epic voyage of Stijn Van Loo, Matthias the Engineer, and Bruno the St. Bernard

New EP is out today! Available this week on Spotify, Apple Music, and most other popular streaming services. It’s a bit experimental so I don’t expect you too like it very much if you aren’t into both electro-funk and death metal.

The preparation & inspiration

  • Inspired by EDM, metal, psychedelic rock like Pink Floyd, Frank Zappa, Snarky Puppy
  • Took over half a year of fiddling around with ideas and then discarding them
  • The main part of the music ended up being written in less than 6 hours
  • Afterwards, about 4 weeks of work consisted of lyrics, mixing and post-production
  • Ended up discarding 6 songs, and using just 3 for this EP (2 intros and 1 main one)
  • There is no chorus, why would there be?

What is the story behind it?

Album Cover

It’s a story about an inter-dimensional space-time travel of an engineer (Matthias), a metal-head (Stijn Van Loo), and a St. Bernard named Bruno.

Stijn Van Loo happens to be one of the best captains in the airforce, Matthias has proved himself as one of the most creative aerospace engineers in the world, whilst Bruno is an exceptionally smart dog.

Over the course of several years several space agencies have detected a rift ocurring near a known black hole, very far away; they determine the happening is caused by an entity, and this being’s actions are causing a dramatic expansion of the blackhole. So a multinational effort is put into play to gather funds to create the best, fastest warship ever created. Stijn and Matthias are selected from a large pool of recruits; but Matthias declines to go without Bruno, who would keep them company during the long voyage.

The battleship has the ability to create wormholes which enable bending of space-time which will allow them to reach their destination in less than a year.

They name the being Dr. Simmons, whom they presume to be an evil chemist mastermind from another race. Stijn, Matthias and Bruno shortly after set out on a voyage to destroy him and potentially collapse the blackhole by detonating fission bombs near the event horizon.

This album is dedicated to Bruno, may he rest in peace.

Listen to the album

Or watch the video here

Note: The video has nothing to do with the story, and is basically just me and a good friend playing GTA V over the course of 2-3 hours. Intro scene filmed in Belgium under a bridge.

414749

After three months of work I’ve finally released #414749, my 12th album. The album is a jamboree of genres, albeit not intentionally so. I just let each song take it’s style and route based on how it felt, kind of like when writers let the story go on it’s way without trying to strictly determine the fate of it’s subjects.

The result is a bit strange obviously, I’ve received a few comments like “wow, this is cool, there’s a lot of styles in there”, to “wow, there’s a bit of distortion in there eh?”. Some people dislike the fact that I keep meddling with different genres.

So for my next couple of albums I will attempt to do something a bit more consistent.

Album Cover

I’m releasing this album for free, check it out on Soundcloud!

You can also listen to it here:

Thanks for your support, and don’t forget to share!

Cover art is an alteration of a photo by Mark Asthoff

S/Here/There

Hey everyone! I’ve finally decided to post my latest EP here. It is a bit experimental (as usual) combining rock, metal, electronica, and new-age. Most of the comments I’ve heard are ‘this is too strange for me’, but I don’t mind :)

Check it out on Spotify

Enjoy!

Truncated Dreams

On the 9th of April 2014, I closed my business, packed my bags, and flew to Belgium, after struggling with my startup for roughly 2 years. This is a story about shortcomings, failures, and personal mistakes I made during those years.

There are plenty of articles about failed startups, describing postmortems in detail, so with this story I aim to take a more personal side, describing my feelings and thoughts during the time, and how I’ve learned to deal with failure.

My hope is that it will give you a perspective of one of the ways things can go if you start a company with no prior experience, with the intention that it could help prevent similar mistakes.

It’s a long read, but I hope you enjoy it!

Truncated Dreams Header

Preface

I am a 30-something year old software developer, an AI enthusiast, and a musician in my spare time. I have been programming since I was 10 years old. I started because I dreamt of making games, but sooner rather than later I ended up writing corporate software (admin and invoicing systems, ERPs, CRMs, etc.) and designing/developing websites as this was far more profitable, and easier to get into. From age 12 onward, whenever someone asked me what I wanted to do when I was older, I would always say “I’m going to be a programmer”. And a programmer is what I became.

My other dream was to own a business. When I was 13, I started my own company making simple games (and later on websites) with my best friend. Shortly after we had an amicable split due to creative differences, so I started freelancing in my spare time over the next couple of years - mostly small web design or graphic design gigs.

It wasn’t until I was 17 that I got my first real job, working for a factory developing their administration system. After a few years I realised I could maybe rewrite it, and start selling it; heck, maybe even run my own company again.

I didn’t realise bootstrapping an IT business is a nightmare, full of ups and downs.

Some people are lucky, some people are not, some people turn a side project into a million-dollar business, and others fade away unnoticed. Regardless, in most cases it will be a long bumpy ride.

This is the story of the crazy ride through my two-year startup endeavor.

Chapter 1: A lifelong dream

It all started while I was studying an MSc in Artificial Intelligence at the University of Edinburgh in 2010.

I started planning my business and the product range over a year before returning to Mexico. My friends kept asking: “Why would you start this in Mexico? Why not open a company over there? You’ll make much more money!” But my reply was always the same: “The majority of Mexico’s GDP comes from SMBs, and technology is being adopted at an incredible pace right now. With so many new companies bubbling up, there is a growing demand for cheaper SAAS ERP/MRP/CRM solutions, websites, e-commerce sites, and other IT solutions”.

Technically speaking, my response was correct, but I hadn’t factored in an important obstacle: Micro and small businesses in Mexico are used to paying low prices for IT solutions. The market is not used to paying competitive prices for professional software programs, software consulting, or full-time development work (although this is changing in 2018+). Hence why a lot of websites and web systems in Mexico still look like from the 90s. I’ve seen too many half-baked ERP solutions riddled with bugs, even in medium-sized companies. Companies just don’t want to swallow the bullet and cough up what’s required for a professional job.

This also explains why quite a few of my developer friends in Mexico have moved to Redmond, San Fransisco, and Seattle in search for better-paid positions.

July 2012

I returned to Mexico on the 4th of July, 2012. Less than 3 months later I had three small clients looking for an administration system (including the factory I had worked for years ago).

After a few meetings with them I figured out my best bet was to rewrite my previous system, start a business, and work exclusively on it, while trying to find new potential customers. I also decided to treat it as a SAAS product, as it would facilitate deployment for the 3 customers.

A month later I started the process of relocating to a small office (instead of working at home). This was my first mistake. I didn’t need an office, I just wanted one. I contacted a couple of friends (who had their own startups), and decided to rent an office with them and split the rent. We had a bright, modern office space in the south of Monterrey. The future looked promising. I was earning a good amount of money, paying my bills on time, and acquiring computers, whiteboards, stationary (man, I love stationary!), and other office assets.

I dreamt of a beautifully decorated place, with a pool table and a large screen TV. I dreamt of people hacking around on Arduinos and Raspberry PIs in their spare time. I dreamt of small teams collaborating in great ways. I dreamt of a place that would be fun, engaging, inspiring and challenging.

computers

Instead, the workload started building up. I started making regular trips to Mexico City and Guadalajara, and I didn’t have enough time to finish the project in time, heck, I didn’t even have a full spec. Requirements kept pouring in, so I decided to hire a couple of people: a developer and a graphic designer. First I found a designer, recently graduated, willing to take a lower pay in exchange for real-world practice. I then published an ad in the newspaper, on university sites, and on LinkedIn, and a few weeks later I made my first development hire. We started out as a motivated team, we had goals (albeit short-term), and we believed in each other.

We were earning a decent amount of money developing our administration system, so we started taking up other work like designing custom websites and tools. I didn’t think about offering stock to my first employees, nor did I look for investors. I didn’t want to give up any part of the company, as I blindly thought that I could lead it by myself. This was my second mistake. Don’t be selfish, working with partners can be difficult sometimes, but bright minds (and a bit more money) go a long way. It’s all about choosing the right partners, and incentivising your first employees by offering at least a small percentage of the company, specially when you don’t have any initial investment.

December 2012

By the end of the year, I was nowhere near finished with our administration system, and on top of that we had taken up another major project (an ERP system for an entirely different business sector). Our first 3 clients were getting annoyed, we were making progress but not as fast as we could have worked. Did I need a designer for a product we didn’t have enough time to develop? I should have doubled down on development and left design til the end.

We started falling further behind schedule, money wasn’t coming in as fast because we hadn’t finished what we promised, and our newly-finished side project (a file-based CMS system) wasn’t selling. I couldn’t hire salespeople as I barely had enough money to pay my employees. We started rushing around, trying to finish our previous commitments, but it was too late, the damage was done.

I’m not saying it is bad to think big, and to be optimistic about the future. I think the biggest lesson I learned during this period is that you must always focus on your priorities, and only develop those non-paying risky ideas in your spare time. We shouldn’t have taken on web design work, nor embark on a side project to build a better/faster CMS, and we definitely should not have signed up to develop another ERP, regardless of the money.

If we had concentrated on our paying customers at the time, we would have probably finished our work sooner, and we would have been able to look for more clients, which would have brought more money in, which in turn would have allowed us to start fiddling around with other ideas.

But I let my long-term goals blind me. If you play around instead of studying, you will probably fail the exam. Likewise, if you get side-tracked developing what you think will be the next million-dollar app, while your actual customers sit around waiting for their products, your business will definitely fold.

Chapter 2: Serial mismanagement

March 2013

We were approaching the end of our first year in business.

At the time, we were about 65% done with our ERP system, we had a CMS system on the market, and we had still had income from our ERP clients.

We had around 6-7 web design / e-commerce projects, which we were trying to wrap up, to give us a greater short-term cash flow and allow us to eventually hire another developer to help us out with client work.

New work came through collaborative efforts

We started collaborating on projects with the other two start-ups in the office space. One of them was a design and branding studio, and the other one was a digital marketing agency. It was a natural fit for the requirements of many of our customers.

One start-up would do the branding and design, then we would do the web design and website, and finally the other start-up would create FB/AdWords campaigns.

The problem is that, these short-term projects grew in scope, stagnated, went very slowly, or had a bunch of unexpected challenges, thus leading them to take much longer than expected to be finished.

I sat at my desk one day looking at one of my whiteboards which had a list of customers/projects and their statuses. We had a ton projects, most of them half-done. How could I let this happen?

I was in a scenario where I would visit clients every day or so, we would have a ton of meetings, while my designer and developer tried to get most of the work done for our short-term customers, while our long-term customers grew more and more impatient.

You are either a product-oriented company, or an agency, never both

Eventually we finished most of our short-term projects, but money was running dry, and our large customers weren’t paying regularly as they paid based on results. Thus I started borrowing money to pay for my employee’s salaries. This is probably the worst decision I have ever made.

The rational decision would have been to finish up on anything we could, notify our customers, deliver all our source code and set up local machines, and close the business.

But I believed in my business. I believed in success. I knew it would come to us, but it would probably take many years more than I thought.

I started worrying all the time; I didn’t look calm, I didn’t look like I had everything under control, and my employees noticed this. I couldn’t focus anymore, I was constantly re-arranging our processes, trying to find a way to keep moving forward and return to better financial days.

I could see the worry in the face of my developer as well, he didn’t look calm anymore, he was evidently worried if I’d be able to pay his next check, so he decided to leave. I asked him if he wouldn’t mind stating for another week, to finish as much as possible and document the latest modules he had developed. He agreed to this, finished up, and I paid him for his last week at the office.

No hard feelings, I had it coming.

But now I had two problems

Design work for my ERP system had been finished, and we were no longer working on smaller web projects for customers, thus, I didn’t need a designer in the short-term, but I didn’t want to fire her either, as I envisioned a day where she would take care of the design/UX of our mobile apps, advertisements, etc.

Additionally, I no longer had a developer, so I would have to communicate with clients, do our accounting and invoicing, cash cheques, develop, test and deploy the ERP, do the project management, find work for my designer to do, among other responsibilities.

I felt like a mess. But I would keep pushing things forward, for the sake of the business, for the sake of my future.

Chapter 3: The fold

During the summer of 2013 I completely burned out.

I started going into the office late (at around 10:00 AM) feeling pretty apathetic. I no longer saw each day as a myriad of opportunities waiting to be taken. I no longer saw myself as a young entrepreneur with big dreams for success, I simply saw in me a person trying to not get squashed by the pressure, being defensive instead of proactive.

As far as I can remember I’ve always had a path I would follow. I would plan things and always follow through with them. I had diverged drastically from where I thought I would be by that age.

Every time I made a decision (like going to Scotland to study an MSC or opening my own business), my family members praised me for always following through. But I kept judging myself for all the things that went wrong instead of feeling good about the fact that I was trying my best, or what I thought was my best back then.

I also didn’t believe I was depressed, I didn’t even think about it. I thought it was just a rough period I was going through. I didn’t feel sad, nor did I feel happy, I simply didn’t care. That should have been a clue.

I started wondering about my life, what I was doing, where I was going. I realised I was stagnant. My coding style was becoming obsolete, my developer friends were moving to newer and better things (Rails, Angular, Backbone, Ember, MVC3), and I was stuck using the same languages I had used for years.

Fast-forward to Christmas, 2013: I had a talk with one of my uncles during dinner, who was also an early backer of my ERP project. He gave me some valuable insight after I tried to explain what I was going through:

> "You have talent, but you have no structure. I've met so many people in life who had talent but turned out to be failures, not because they lacked ability or passion, but because they thought of themselves as such. I recommend you go to work for a larger company, where you can learn a lot, and then in the future, if you still have the same amount of passion, try setting up shop again."

At that moment I didn’t understand what he meant with “you lack structure”. What kind of structure? How can I lack structure if I plan everything so meticulously.

It’s not about planning, it’s about constant and honest execution, it’s about being proactive and constantly communicating the status of each project to your customers, it’s about arriving early at work, living healthily, not taking up too much work which you know you won’t deliver, and being proactive.

After talking with a few friends about this, they acknowledged that I did lack structure. So I decided to put some effort into the interviews I’d be having in January. I realised they were right, I was just too inexperienced, and I was trying to do everything myself, without the capacity to do so.

February 2014

During January and February I talked with recruiters at Google and Amazon. I went through the initial tests, but given my inexperience, and the state I was in, I failed both of them.

The experience was a good one though: Google and Amazon aren’t the only ones out there! I had no plans of going to work at Microsoft, but I’d give it a shot at other hip companies in the valley.

I applied at Github, LinkedIn, Heroku, Rackspace, and about 30 other companies. For my Heroku application I even deployed a Heroku-branded website to Heroku with a video-song explaining why I wanted to join Heroku. Incredibly cheesy, but I thought it would get me noticed.

I received about 3 replies that week, all of them stating ‘not at the moment’. Heroku didn’t even reply. I removed the website shortly thereafter.

One day I was talking with one of my best friends, who lives in Belgium. I was telling him how I felt and how I wasn’t really happy with my life at the moment. He suggested I go to Belgium to live and work; he would help me find a job, and I could stay at his house for a couple of months while I settled down.

Five minutes later I made my decision. Belgium would be my next step. To make it even more interesting, I decided to go without a job secured. I’d analyse my options after arriving, and if I didn’t find anything in the IT sector, I could always do something else.

Some of my clients and family members said I was crazy. One of them even said “you are 27, you can’t go doing stupid things like that anymore. It is too risky, why don’t you just find a company over here, work hard, earn money, and then try again in 3-4 years?”.

My reply was simple: I’m not only trying to make a statement that I need to change my life drastically, but I also want to learn a new language, seek professional growth, get to know new people, travel a bit (I hadn’t taken a holiday in almost two years), and live in a smaller city (Monterrey has 4M+ inhabitants, you can almost smell the chaos and stress of people living there).

Don’t get me wrong, Monterrey is a beautiful city, but sitting an hour in traffic to get to a meeting under 40ºc heat is not really my thing.

Then again, my closest family members and friends supported my decision. I had even gone to a few sessions with a therapist, and he blatantly told me: “You’d be stupid not to do this. So many people would love to do the same, but can’t due to not having the right nationality or skill set, or being tied down by family or work reasons. You have this opportunity right now, so just take it.”

My decision to leave wasn’t rash, blunt or precipitated

Some people might say “how and why would you make such a life-changing decision so fast?” I studied my reasons and noted three main positive points for leaving:

  • I wanted to join a company where I could earn enough money to repay my debts.
  • I wanted to join a well-positioned start-up with at least 25 people, multiple developers and established frameworks, where I could learn new technologies, and acquire more “structure”.
  • I wanted to learn a new language and experience a different culture. Change is always a mind opener, and I had stagnated for too long.
  • I believed it might help me get out of my depression, and destroy my comfort zone.

I marked April 9th on my calendar as the date I’d travel to Belgium and finally put some order and excitement into my life.

Chapter 4: Restart

I spent the last few months selling everything I owned. I sold my computers, monitors, audio equipment and instruments on Facebook ‘buy-sell’ groups, and used the profits to buy my plane ticket.

After all the expenses I had a little over 1,800 euros to survive a couple of months in Belgium, including trip expenses! I didn’t remember how expensive it is over here, but this is something I’d find out further down the road.

Around this time I began to make new plans for my future. I decided maybe I wanted to stop being a developer for a while and dedicate myself to something that requires a completely different skill-set. Something more social.

April 2014: Belgium

I flew to Belgium on the 9th of April and met my friend at the train station.

I settled down at his small 3rd floor studio and started looking for a job. I was motivated to try something new, so I was looking around for different types of companies, but most of them required Dutch. I thought about applying at a restaurant or a bar; but I was scared of trying something new and I couldn’t admit it.

After a couple of weeks I got an interview at a software company. I had an inkling that this is where I belonged even before the interview. I had an upcoming holiday, so I mentioned this during the interview.

This can be a pretty tricky thing to say when you’re not even employed at the time. We reached a consensus: I’d start for a three-week trial period, then go on holiday, and hopefully return to a full-time job if I was a good fit.

The trial period was great, I got to know my coworkers and really enjoyed the vibe. A few days before leaving on holiday with my friends I was told I was accepted. I packed my bags and left with a 3 friends to Australia for a camper-van west-coast trip to Australia, and a couple of days in China.

Yes, I know what you are thinking: Wait, you are indebted, you don’t have a place, you barely just secured a job, and now you are going on holiday? Fortunately it was a cheap holiday, we found a great bargain for the flights, and we all chipped in equally for the rent of the camper van. And, well, I got paid for three-week trial period, so I thought it would be a great moment to relax and finally get over the failure of my startup.

china

The trip was awesome, cumbersome, interesting, tiring, scenic, problematic, and everything else you’d expect a trip of such magnitude to be.

January 2015

After working at this company for more than half a year, things really started to change. I was finally getting out of debt, hanging out more with friends, learning a bunch of new things from colleagues at work, and finally feeling like I was getting over failure.

My passion for AI was re-kindled as a result of having long talks with one of my friends, I started attending conferences and meet-ups. Meeting like-minded individuals makes a huge difference. People also appreciated my talks and presentations at work, which motivated me to start giving more.

I think a big factor was also the ability to experiment with new technologies and frameworks, being asked to do R&D, and being trusted to do my job. This makes a massive difference.

When you are in a good place, and you enjoy what you are doing, happiness starts to creep up on you, and you start cutting back on most auto-destructive activities.


Recap

If you feel the inkling to start your own company, go for it, it is a valuable experience! But if things don’t turn out as you expect them to, know when to pull out. Know when to take a step back, and use metrics, data, or input from everyone you can find, and reach a conclusion: carry on, or drop it. If you already have your own business and things are looking grim, take a few days off, talk with people, crunch the numbers, you’ll work it out.

Here are my key takeaway points if you are planning or running a startup:

  • Be prepared, constantly reassess yourself and your position (not just your startup’s)
  • Keep metrics! the more, the better!
  • Know that some day you might have to change direction (either pivot, downscale, or close up), but don’t let this demotivate you, try harder while things are still on course!
  • Do one thing, but do it as best as possible! This is absolutely critical!
  • You are either a product company, or an agency, not both. Never make custom apps!
  • Name your startup after your product (in the case of software startups). If it is successful and it grows, then make changes further ahead; right now your product is the only thing that matters
  • If you are going for multiple products (e.g. the cosmetics industry), keep your product line small and simple, experiment with new ideas, and kill off what doesn’t work (a la Google)
  • Make a nice, simple, well-designed website, with catchy but straight-to-the-point copy, and make it as simple as possible to purchase and pay for your product
  • Know your strengths and weaknesses, not just the company’s. This will help you with the next point:
  • Know when to make big changes in your life that are affecting your ability to lead progressively
  • Know when to step back, but only if the drive & motivation that led you to start your business have gone. Otherwise, you might find that success is right around the corner, so try harder!

Good luck!

Building a web application for $5-10 per month

SAAS companies seem to fulfil almost every need lately; from VCS to mailing, from authentication to screen sharing, from image and video processing to caching and app hosting. Interestingly enough, a lot of these companies offer basic tiers for free, so it is becoming increasingly possible to launch a web application where most of the work is done by 3rd parties, with a minimal budget.

I started wondering recently if it would be possible to launch such an app, using as many 3rd party services as possible to fulfil the necessary functions (such as authentication and storage), with a budget of $5 to $10 USD per month.

The following is a graph representing my idea for the architecture of such an app, describing the interaction with these services. Most of these are free (except for the purchase of a domain name, Google Apps, and DigitalOcean, which have very accessible plans):

image

The goal of my small research was to verify if it would be possible to:

Build an SSL-enabled web application with monitoring + CDN + hosting + authentication using OpenID, striving for minimal cost while offloading as much back-end, data, and functionality to cheap or free 3rd party services.

Every 3rd party service mentioned in this graph had to fulfil the following criteria: 

  • Free (or very cheap)
  • Longevity (has been thoroughly adopted by the market, or major companies)
  • Reliable (at least 99% SLA)

This is a list of tools & services to get your new product up and running for dirt cheap:

  • Domain, DNS, hosting, and caching
  • Authentication
    • OpenID Connect is an initiative by several large companies to make auth simpler (like Persona by Mozilla)
  • Databases & Storage
    • Self-hosted
      • MongoDB is a great/easy NoSQL solution
      • PostgreSQL is widely used and supports SQL/NoSQL
      • MySQL and** MariaDB** are standard SQL RDBMS that have gone through the test of time
    • Remote
      • Google Cloud DataStore is your database in the cloud (and it has a free plan as well)
      • Amazon S3 (for storage, in case you have a large amount of images/files, optional in this case)
  • Mail
    • Mailbox hosting
      • Pawnmail - Email hosting for free! (tried it for a year and so far it seems to work great)
      • Google Apps - Mailbox functionality for your domain ($5/mailbox) in case you don’t want to set up a server
      • Postfix mail server - You can host it yourself (using Postfix), but be prepared to spend a lot of time setting it up
    • Mass-mailing systems
  • Graphics and icons
    • Unsplash (and Flickr freeuse) offer good images for use in your site for free
    • Font Awesome provides a quality icon font for free
    • Iconifier.net (create your favicon and apple icons for free)
  • Monitoring, logging and analytics

Finally, the application itself could be built in this way:

  • Back-end: Python + Flask + Tornado. Flask is a framework which allows you to generate APIs in a simple/scalable way, and it is very easy to get started. Add Tornado to handle concurrent requests. You could use the PyOIDC wrapper to handle authentication, and the rest could rely on a simple architecture (Entity - DAL - BLL - API).
  • Front-end: Built with HTML5 + Bootstrap (easy way to get up and running fast), AngularJS (with controllers and services to communicate with the back-end), SASS (or LESS), and Gulp to compile/merge everything.
  • Source & deployments: You could use Bitbucket with two private repositories (front-end / back-end) for free, and Capistrano to deploy to your server.
  • Testing: Protractor and/or Jasmine

As easy as that!

If you have any suggestions to how I could improve this chart, or any services that would improve (or further delegate core functionality to free/cheap 3rd party solutions), please let me know in the comments!

* Note: You could use Heroku (which has a free tier) instead of DigitalOcean or Rackspace, but who doesn’t love full control over his/her server?