Update about my company

Its been a while since I blogged about the development of my company Userlike that I co-founded in 2011. Last update was 2 years ago

As you might expect running a company needs a lot of time and energy. So my left free time is mostly reserved for my family and social activities. You could say that free time for my hobbies became a rare thing. The last couple of years I saw a definite shift that I tend to spent more time on not computer related stuff during my free time. Lately I spent more time playing the guitar, re-booting an old hobby of mine. Actually this one involved also a bit computer work, since I figured I need to build my own Midi Controller for my amp modelling software.

Between Christmas and New Years I went on a vaction where I got some unexpected free afternoons on my hand, and I felt the itch to look into my old console projects I had been working. I re-booted some old PSP code, for which I used to development a couple of projects. I started writing an amiga style intro. I re-used some old Future Composer player routine that I ported ages ago to the PSP. Revisiting PSP development, brought some nice changes.You can run your toolchain in a docker image, which makes cross development easier.

Getting back to initial topic of this blog post. A big step for the company’s development was our move into a new office space. We grew out the old 120 square meter office space. The last couple of month in that space we were using the officw with up to 14 people in 3 rooms. That demanded a lot of discipline and smart approach to our work schedule. But we survived it 🙂

Peter & Jörn

Office with a view

Finally we found a nice office space not to far away from the old office, still very close to the center of cologne. Everything is in 10 minutes walking disctance, eihter to the main station or into the center of the city.
The office is bit over 400 square meetinfs consisting of 5 rooms. Three big open space loft offices, a meeting room, a lounge area and a kitchen.

After we moved in and exchanged all our office furniture, we gave our office a new look with the help of Grafit. The office make over was celebrated at our Summer party.

Like switching office we also replaced our website, multiple time. When we moved in the old office the website looked kind of like this.

Our old website like 4 years ago from 2015 And we transitioned to a new style. Next version website from 2017

And right we are in the process of releasing a new website again. Latest version website from 2019 Latest version website from 2019 Latest version website from 2019

Its been a crazy time developing the company. Our headcount grew from around 15 people working at the old Userlike office to arround 40 people today. My development team grew from a 3 people (including me) to 10 developers.

Which also means a shift in my line of work, that I transitioned coding to managing a team. It’s been challeging 2 years for me because we mostly grew the development team to build a new big iteration of our product.

We are changing couple of components in our current stack. First we unify our operator and user facing chat application to one code base using React. Also we are throwing out XMPP as our main message broker, and switching to a custom component, that is part of our new chat server. We switched to Python with Greenlets and giving up node.js. These steps help us to share code between our apps and also reduce also the distributed state handling between application, since we have less “moving parts” in our stack. Its been a rough start. Because we didn’t realise in the beginning, that most of our problems were related to our internal protocol shortcomings and complex state handling. Once we addressed this by developing a new chat server with a new protocol, things picked up very quickly. Looking forward to release the first iteration of the product.

The new production iteration will open us a lot of new usages of our chat application. Despite an new look and improved UX, the biggest conceptional switch for us is to leave the online/offline paradigma of live chat and transition to a sync/async paradigma of a messaging application. This will improve our messenger integrations like Telegram, Facebook and WhatsApp.

We had 2 strong years of growing our product and customer base, we have a stronghold in the German market and were able to subscribe a couple of enterprise customer which we could attract with a strong product, professional onboarding services and custom integrations as well as custom tailored solution like chat bot integrations.

Looking forward to a successful 2019.

Building a Company

Its been some time since I blogged about the development of my company Userlike that I co-founded in 2011. It has been 5 busy years since I last blogged about Userlike.

Since then I haven’t had a lot of time to work on gaming console related hobby projects. (Despite some work on the AspectQt port and a Amiga Intro I made). I hope to find more time to work on new projects. I already have planned to update the quickdev16 software a bit.

It has been an awesome time developing the company. Our headcount grew from 3 people working at Userlike to 20 people today. The customer base grew from a couple of hundreds signups to 30k customer accounts that we are handling right now. 4 Years ago we were more or less working from home office all the time. Then we moved into our first office space in the center of Cologne like 2.5 years ago. This was a huge step for us and moved the company forward. As of today we have already outgrown the office space and started looking for a new and bigger place to call our new home.

Wasn’t slow on the technical side either. I guess its fair to say that we replaced each of our software components at least once by a either re-write or different approach. And still we are refactoring and getting rid of technical debt all the time. On of our most visible components is the chat messenger widget itself, where we are on the 3rd major iteration. Each major version introduction involves a migration phase for our customers. This is always a huge task for the development team, to make the migration smooth as possible while maintaining multiple software versions of the messenger.

Developing a SaaS can be tricky. You always have to balance between customers requests, not falling behind competition and don’t overloading your product with options that hardly anyone is using. The challenge is to find the right compromise, being pragmatic sometimes helps.

Devops side of the project wasn’t less interesting. Last year we switched our datacenter, since we had outgrown our old setup and approach of scaling we went for something new. Now we rely on automatic deployment of our system which we solved with Ansible and are very happy with it. Another big change for our infrastructure was to switch from MySQL to Postgres. The reason for this was quite pragmatic. We used to store all business data in MySQL and stored all bulk data in a mongoDB. Over time and a growing dataset it became clear mongoDB is a hard to handle memory wasting database. So we decided to move to Postgres and merged the mongoDB bulk data using the Postgres JSON type feature. It was quite a task to do the data migration, but since then we never looked back.

We kind of matured the feature set for Userlike over the last 4 years and already branched out into new fields. We started integrating different messenger channels like Telegram and Facebook. Another new development will be to break up the online / offline communication paradigm to a more async and sync communication which will yield to higher usability for professional support teams using Userlike.

Btw, we are hiring and extending our developer team. If you are a python and javascript person, or like building infrastructure, we might have the right job for you.

Bake that Book

Last Summer i gave my old Macbook Pro 15″, Late 2011 with 8GB and 160GB SSD to one of my team members at Userlike, since i got a Retina upgrade. I think the old one was still decent, since the SSD gave it that boost to make it usable, even if the laptop was 2 years old at that time. Unluckily the old Macbook Pro didn’t last long, it just died after 3 month. Wouldn’t turn on anymore. As i predicted, after bringing it to the Apple Store, they said the logic board was fried, which always means its totaled. We bought a new Macbook and moved on.

Now i got the broken Macbook back to my place and i thought i would at least sell the display, case and reuse the SSD. But i remembered reading all the Macbook baking blog articles. I already disassembled a few Macbooks down to the logic board and also did some reflow stuff for side projects. Also knowing that a friend of mine has good experience with baking old Nokia phones, i though i give it a try.

  • Go to ifixt.com and look up the tutorial to change the logic board
  • Disassemble the laptop, collect screws and parts in separate containers
  • Be becareful with all the ribbon cable connectors, there are a lot and some are tricky
  • Get the logic board out, remove heat pipes, ram and speakers
  • Preheat oven to 180c
  • I cleaned the board with isopropyl alcohol
  • Set board on tin foil legs on a baking tray
  • Put in the oven for 7 minutes
  • Let it cool fast at a open window
  • Clean fans and case from the inside
  • Assemble, make sure to get all cables connected
  • Boot that Book

I hoped that i had a 50/50 chance that it will work. I was confident, that i don’t mess the laptop during disassemble and assemble phase, i wasn’t sure what the result was after baking. I remembered that the laptop got quite hot while working, so there were some odds that this permanent heat would have altered the setup of the parts of the pcb. And it turned out to be worth the work, the Macbook booted up nicely.

Get your tools

IMG_2536

IMG_2534

IMG_2537

IMG_2538

IMG_2540

IMG_2543

Meet my new project Userlike

Its not that i have been kind of lazy about blogging the last year, its just i didn’t to anything on my side projects like SNES hacking or the like. I quit my day job last year and started founding my own Company Devcores. Last Summer i began coding our first SAAS wich entered the beta phase last december. Lets meet Userlike. It’s a webbased live chat system targeted for online shops. It SAAS and can be added with one line of javascript to your website. We are in private beta right now and plan to release the first public version with the next 2 month. If you want to test it, drop me a line and i will get you an account.

Userlike

Super Nintendo Talk

A while ago i held a talk at the ccc in cologne about my favorite game console the Super Nintendo. This talk covers the Super Nintendo technology in detail. Starting with the CPU and PPU, covering the cartridge memory maps and showing most of the custom chips which where used on cartridges. I also show development hardware, copier stations and the current available flashcarts. The topic emulation is also covered . The second part of the talk is about the quickdev16 project, which i did with my friend max in 2009. We built a flashcart for the SNES which is useful for developing homebrew software. The talk sums up all the details i learned during the research i made to built this kind of cartridge. I uploaded the slides, maybe someone find this useful to dive into the SNES world.

New Quickdev16 Loader

We got a new loader for the Quickdev16 firmware. The loader will replace the current dummy loader and has a few new advantages:

qd16boot02

  • Faster upload because of IRQ driven communication between SNES and AVR
  • Progressbar while uploading
  • Display Rom infos
  • ASCII and Katakana font support
  • Eyecandy: new logo design with sine wave effect and bassdrum synced background effects..

Due to these features the loader blew up to more than 55kb, too much for our limited space in the AVR progmem (64kb – 4kb bootloader). Our main firmware is between 8kb and 24kb, depends on the debug-features that you compile in. So the recent task is to either reduce the loader size by skipping eyecandy, finding a better compression routine to compress it in the progmem or build a minimal firmware and put parts of the loader into the surplus 4kb eeprom on the AVR. Probably we will have to combine the different approaches.

One reason why the firmware is that big these days is the new “minimal debug terminal”, a serial command line where you can maintain the Quickdev system status. You can dump memory regions from sram, switch between the busses, write to the shared memory section, show the status of the hardware ports and use several other usefull commands. Check the project page for more details on the commands.

Quickdevs are shipping

Last week we shipped the first batch of Quickdevs. The Software is feature ready, but we wanted to do some eye candy on the SNES software side, which didn’t work out yet. So software updates are coming within the next weeks.

Feel free to order at david @ optixx.org.

Quickdev16 Pre-orders

I start taking inoffical pre-orders for the Quickdev16 now. Just send me an email to david at optixx.org with your name and email address. In order of arrival i will put you on the pre-order list. Right now we plan to sell around 35 cartridges.

Why inoffical pre-orders list? A fews points are unclear right now. I don’t know the final price since this will depend on the assembling costs which are not setteld yet. I can’t say if the the new PCB are working 100% since we didn’t test it yet. Also we didn’t figured out if we gonna ship the cartidge with a CIC chip or not. The client software is tested and developed under Linux and OS X. Can’t say much about windows. But if you can compile ucon64 with libusb support in windows you should be fine. I will give this a shot soon.

These points will clear up within the next 2-3 weeks. But expect an sale price around 100 USD or 80 Euros. I gonna use paypal for international shipping and direct debit in Germany and even Europe. Will provide an an IBAN and paypal account later.

I don’t take any money before everything has clear up. So the pre-order is not binding as long as you are not happy with the final outcome of the project. I just started this pre-order list, since a few people start asking for it and they don’t want to miss the opportunity to get one.

Just a quick preview of up coming features.

  • up to 16Mbit Roms supported
  • Ucon64 upload via USB
  • Lo/Hi Rom
  • Serial Debug Console
  • SNES Boot Loader
  • SDcard Daughter Board planed