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.
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.
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.
We got a new loader for the Quickdev16 firmware. The loader will replace
the current dummy loader and has a few new advantages:
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
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.
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.
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.