Sadale - Electronics, Games, Music and More!

Welcome to the website of a one-man amateur research and development center! Started off with game development, Sadale had developed various products, including electronic products, games, websites, desktop program, apps, music, etc. This website is a blog that mainly contains documentation of the progress of my projects as well as their release announcements. It also contains non-googleable solutions to problems that I've encountered. Scroll down to read the blogposts.

All of the products mentioned in this website are my own work, unless stated otherwise.

Core value: Development in Stability

What Sadale is about:

What Sadale is not about:

Showcase - Electronics

Showcase - Games

Showcase - Music

Showcase - Misc

Next Project

Donate with PayPal button If you'd like to support this website and the products that I'm developing, please consider making donation using this button. Thanks! :)

廣東話版網頁介紹

薩地魯 - 電子野, 網頁, 遊戲, 音樂, 仲有其他作品!

歡迎嚟到薩地魯嘅網站. 曾經係業餘遊戲開發者, 今日薩地魯利用佢嘅業餘時間, 乜都整餐懵. 包括電子野, 遊戲, 音樂, 研究項目等等.

呢個網站主要用來blog低薩地魯開發嘅作品同埋係Google搵唔到嘅問題嘅解決方案. 作品列表請見上面嘅網頁介紹嘅英文版.

絕大部分嘅blogpost只有英文版. 當然, 都有D有廣東話版嘅.

核心文化: 穩定為先, 開發為本

nimi mute pi toki pona

jan Sate - ona li pali e musi pi ilo sona e kalama musi e ijo ante!

kama pona! ni li lipu pi jan Sate. tenpo pini la jan Sate li pali e musi pi ilo sona. tenpo ni la jan Sate li pali e ali.

pali pi jan Sate li lon sewi pi lipu ni kepeken toki Inli.

lipu ni li jo e nimi mute pi pali pi jan Sate. ona mute li lon kepeken toki Inli. taso lipu ni li jo e ona lili pi toki pona. sina wile lukin e nimi mute lon toki pona la o pilin e nena ni!

jan Sate li pali tan musi tan mani ala.

?????
Website Description in a language that you don't understand

Recent Blogposts

Exhibition in Maker Faire Shenzhen 2019 has been a Blast!

Nov. 16, 2019, 4:02 p.m. Electronics Exhibition

Maker Faire Shenzhen 2019 had ended. It was my first exhibition in my life. This blogpost is to document what I've done during the trip for the exhibition.

Days before Nov 8 - Paperwork, Planning and Preparation

Days Before Nov 8 - Preparation of the Event

It took me weeks to prepare for the event. I had to sort out the application, paperwork, etc. In addition, I had to decide which projects to be exhibited, plan for the layout of the props in the exhibition, purchasing props for exhibition, order posters, order my cards, come up a list of the equipment to be brought to the site, plan for when to go and when to leave, etc. etc. etc. I had gotten extremely busy since the day that my application of exhibition had been confirmed. :(

The preparation was a loooot of work. I barely made it on time. The organizer had provided the dimensions of the exhibition table. And here's my test exhibition setup at home with a platform made of two tables that's about the same size as the exhibition table:

Test exhibition setup at home

Days Before Nov 8 - Sightseeing Preparation

I had decided to dedicate a day after the event for sightseeing. However, since I'd be exhibiting alone, touring around alone would be boring.

Luckily there's a WeChat group for oversea exhibitors. I just shouted there like an idiot and ask if anyone's planning to tour around in Shenzhen a day after the event. It turned out that there's a Japanese team interested in accompanying me. Yay! :D

We ended up having a plan for the tour in both the registration day (i.e. the day before the first day of the exhibition) and the day after the end of exhibition.

Nov 8 - Registration and Pre-Event Sightseeing

Nov 8 - Traveling to Shenzhen

I took highspeed train from West Kowloon Station in Hong Kong SAR to Shenzhen North Station. The border control process went smoothly. And I had never traveled using the highspeed rail station in Hong Kong.

When I saw the Vibrant Express train that I was about the board on, I was excited. Despite that it's pretty much identical as other CRH380A trains in functionality, the paintings are different. And it's operated by MTR Corporation (a company in HKSAR) instead of the companies in mainland China. It's like a special snowflake.

The interior of the train didn't disappoint me either. There're TVs showcasing Hong Kong and its tourist destinations. There was only a few people traveling using the train I was in. It took a while until the train got departed tho.

However, the real disappointment started when the train got departed. As soon as the train left the station, it ended up being in a tunnel. And it's staying inside the tunnel for the entire trip. Here's a photo showing the view inside the train with nothing other than darkness outside the windows:

Photo showing the interior of highspeed train with nothing outside windows because it's inside a tunnel

Its traveling speed for the entire trip was less than 200 km/h. This isn't what I was expecting for "highspeed" train. Nevertheless, it only took 20 minutes to went from West Kowloon to Shenzhen North. That's an impressively short traveling time, except that it didn't take the train waiting time into account. Depending on your origin and destination, the highspeed train may, or may not be any faster than using other kind of transit.

Nov 8 - Hotel Check-in and Registration of Exhibition

After having lunch close to the station, I headed to the hotel by taking metro. As I can't speak Mandarin well, it took me a bit trouble to get thru the check-in process. After that, I walked to the exhibition venue and did the registration of exhibition. Here's the entrance of the event's site:

The entrance of the site of the event

I was allowed to perform the setup of the exhibition booth and store the exhibition props into the warehouse. However, I decided not to do that because I'd rather to do the setup right before the exhibition starts. Since I had tested the setup at home, there's no reason that the same setup wouldn't work on the site.

Nov 8 - Sightseeing

As there's a bit time left for the day, I gathered with the previously contacted Japanese team and toured around in Shenzhen with them. We've visited the following places:

  • Near Baishilong station:
    • A dumpling restaurant
    • Baishilong Music Park (which I suggested to go because it's close to the event's venue)
  • Huaqiangbei
    • Accessories stores
    • A cafe

The music park that we visited is just a park with music playing inside the entire park area. The speakers were somehow synchronized. The decoration inside the park wasn't particularly interesting. However, the view outside the park was. Here's an array of buildings outside of the park that each buildings look identical:

Buildings that look identical outside the music park

As for Huaqiangbei, most stores were closed by the time we arrived there because we were a bit late. Fortunately the Japanese team had managed to get what they wanted. And I've got a power adapter, a retractable USB cable and an earphone. They're of good value. :)

I was a bit surprised that most storekeepers there in Huaqiangbei couldn't speak English well. A while ago I've been to a building in Huaqiangbei that most people there could speak decent English. This led me to thought that most storekeepers in Huaqiangbei could speak English well.

After that, we got drink in a cafe. And I parted with the Japanese team, went back to hotel, took a shower and slept.

Nov 9 - First Day of Exhibition

Nov 9 - Exhibition

I went to the Exhibition's site about an hour early so that I could do the setup. The setup went mostly smoothly. The only issue was that I wasn't able to get the power because there's only one power socket shared between me and the booth next to me. This was quickly sorted out by contacting the organizers, which provided me a socket outlet splitter. Here's my exhibition setup:

Real exhibition setup on the site

Some of the visitors spoke English, some spoke Mandarin and a few of them were able to speak Cantonese, which's my mother tongue. It wasn't easy for me to identify which languages the visitors spoke. And I often judged that wrong. For example, many Chinese-looking visitors of my booth are actually Japanese or Korean. And a few Chinese visitors actually spoke Cantonese instead of Mandarin.

As my Mandarin was bad, quite a few of those Mandarin speaking visitors had mistaken me as Japanese. When this happened, I just pointed at the flag of China with the flag of Hong Kong SAR on the poster and explained to them that I'm from Hong Kong, China.

I actually find that it's easier for me to explain my projects in English than in Mandarin. That's probably because English is the main language I use for anything technical. I did have a problem on trying to figure out the correct technical words in Chinese (Mandarin) when I tried to explain the stuffs that I was exhibiting. Oh, of course, it's the easiest for me to explain them in Cantonese mixed with some English technical words. :P

As for the exhibition itself, it seemed to me that the kids loved the poopie game that I was exhibiting. There was a few times that the kids gathering around on the tablet that's having my poopie game running on it:

Kids gathering around my tablet that the poopie game is running on

It's rather exhausting to do the exhibition alone. There's no break. I had to handle all of the visitors alone. I had compressed cracker (military ration) for lunch so that I wouldn't need to leave my booth. I only asked the staffs to take over the booth for going to toilet and fetching drinking water. Other than that I pretty much stayed in the booth during the event. It was a super busy day. :(

Nov 9 - Maker Party

I joined the Maker Party after the first day of the event. It's just a normal party. It had pizza, packaged waffles, lollipop, crackers, beer and water. I wish they had non-alcoholic soft drinks tho. Here's the photo of the entrance to the party:

Photo of entrance to the Maker Party

Since I already had dinner, I took a lollipop and that's all I had during the party. The party was mostly about socializing with other makers. So I chatted with the people inside the party.

This session reminded me of the pitching session of my first global game jam. Fortunately, I'm doing far better on this one because I'm now a less jerky person than I used to be. This party was pretty fun. I got a chance to know more about other fellow makers and learned about what they had developed and what they're making for. :)

Nov 9 - Maker Party - Japanese! A lot of Japanese!

Here's something funny happened during the party. There was a Super Mario cosplay guy in the Maker Faire. He was exhibiting just two booths away from mine. I found him in the party and tried chatting with him, only to find out that he's Japanese and he could only speak bad English and bad Mandarin. We chatted with each others mostly using simple English. With the help of photo and body language, we were still able to communicate. And we managed showed our projects to each others.

Suddenly another Japanese joined in. Thank goodness. He spoke good English albeit heavy accent. I could understand him perfectly. So he acted as a translator between the Mario guy and me. This was cool until another Japanese joined in. Then they started discussing in Japanese and started speaking less English. After that, yet another Japanese joined in and the entire conversation had turned into Japanese-only. I was like, awww. :(

Then we exchanged our cards and I moved on to chat with someone else. At least I had got the twitter of that Mario guy. xD

After the party, I got back to hotel, took a shower and slept a bit late.

Nov 10 - Second Day of Exhibition

Nov 10 - Exhibition

It's pretty much the same as the first day. Except that there're more visitors to my booth. And I hadn't slept enough in the previous night. It was almost too much for me to handle the visitors alone. :( Here's a photo showing an overwhelming amount of visitors:

There're a lot of visitors in second day of exhibition

During the lunch time, I opened up another pack of compressed cracker (military ration), just like the previous day. However, there were too many visitors. It was very tough to handle the visitors while eating the crackers. It took me like 1.5 hours to finish the two crackers inside the pack because I had to stop eating multiple times for explaining my projects to my visitors. At the end of the lunch, my voice turned very bad and my throat was extremely dry. Despite that I drank a lot of water, it didn't help much. :(

The event was going to end in an hour. I was extremely tired and I needed to sleep pretty badly. There was less visitors by that time. But still, it was pretty tough to me.

After the exhibition had ended, I dismantled the booth and headed to the place of taking group photos. Here's how my booth looked like after getting dismantled:

A photo showing my booth dismantled

Nov 10 - End of Exhibition and Taking Rest

After the event, I went to hotel and took a nap immediately. After napping for a few hours, I got out and had dinner. I felt much better after having the dinner. Then I headed back to hotel, took a shower and slept. That's the end of the day.

Nov 11 - Sightseeing and Leaving Shenzhen

Nov 11 - Sightseeing

I had reserved this entire day for touring around in Shenzhen. The trip of this day was planned by the Japanese team that I've contacted. I took my baggage, checked-out from the hotel and gathered with the team. Here're the places that we went to:

  • Near Laojie station:
    • The anime mall "东门动漫城"
    • The food court "庙街美食广场"
  • Near High Tech Park station:
    • A large Xiaomi store
    • A large Huawei store
    • The Cafe "奈雪之茶"
    • The shopping mall "万象天地"
  • Near Baishizhou station:
    • The supermarket "福伴"
    • The bar Peko

For the anime mall, we arrived there too early. Almost all stores weren't opened. We still looked around there anyway. I've purchased an el cheapo tiny Vocaloid figure for RMB20 from an opened store, and I'm extremely disappointed. The coloring of the hair of the figure's far off.

As for the food court, it's a pretty fun one. One of the stall sold grilled insect, which I didn't dare to try. We just randomly grabbed some food there and shared with each others. Most of the food there were spicy and mala (numbing-spicy). :)

After that, we headed to high tech park. Here's a photo of an artpiece showing the bird-eye view of high tech park inside a shopping mall that we visited:

Art of bird-eye view of high tech park

In the Xiaomi store, one of the Japanese team members purchased a new phone right on the site. Other members had purchased something else, like speaker and stuffs. I envy them. All I had got in the store was a fidget toy that costed me RMB10. I'm a poor man. :(

We didn't do much in the Huawei store because it's more expensive than the Xiaomi one.

In the cafe, each of us just grabbed a drink and we tried out the new stuffs that we've just purchased. I assembled the fidget toy. A Japanese team member had tried out the Xiaomi speaker that she had just bought and played some random music. We had fun. :)

In the evening, we went to a bar, had drinks, chicken pieces and taco and we parted.

Nov 11 - Heading Home

Right before getting back to the home, I decided to check the local news in Hong Kong about the traffic. It was pretty scary. Large scale protests were happening in 11th Nov 2019 in Hong Kong, blocking the traffic and stuffs. After discussing with my family, I decided to try returning to my home anyway. If I failed, I'd get back to Huanggang and book a hotel room to stay there.

I went to Huanggang Checkpoint using metro. Then I took a cross-border bus to get back to my home. After alighting from the bus, I took a detour to avoid the police station because it's where the chaos often happen. I passed thru a road with bricks all over on it. Apparently the bricks were used for blocking the traffic and was put there by the protestors. Nevertheless, it's not that dangerous because there's no fighting between groups of people having different political ideology. In the end I managed to get back to home safely.

Goodbye Shenzhen! I'll come back again some days later! :)

Reflection and Moving on

The entire Maker Faire experience was pretty awesome. It was quite fun overall, including the preparation work, exhibition and the post-exhibition sightseeing. I've also made a few new friends there. :)

However, it took me a loooot of work to join the exhibition. Weeks of work had been done solely for the preparation. And the exhibition itself was extremely exhausting. It's far more exhausting than joining Global Game Jam. I'm not sure if that's because the event itself's exhausting, or the event's held outside my home town, or the combination of both. Fortunately I've taken good care of myself and ensure that I've got enough sleep and food. Despite that I've caught cold, it's still nowhere as bad as the cold spell that I've caught in my first Global Game Jam.

After the event, my mana bar has almost gone empty. I pretty much need a break. Since it's exhausting, I'm not sure if I'll be doing another exhibition next year. I guess it'd be easier if I had partner(s) for exhibition. (Oh well! As if I'd be able to get one! I only socialize with online friends that aren't in Hong Kong) Anyway, in the near future, I'll probably be laid-back for a bit and focus on watching anime and playing video games. :)


Exhibition in Maker Faire Shenzhen 2019

Oct. 29, 2019, 2:50 p.m. Electronics Exhibition ilo nanpa

Big news! Sadale'll be exhibiting in Maker Faire Shenzhen 2019 in booth E10. It'll be my first time starting a booth for doing exhibition in my life! :)

ilo nanpa will be the main project to be exhibited. That's because it's the most successful project of Sadale. It's also my only project that had entered "mass" production stage (well, it's actually home-based "mass" production with the quantity of produced units of 40ish). I'll be introducing toki pona numeral, toki pona language and ilo nanpa device to the visitors of my booth during the event.

In addition of that, I'll probably be also showcasing some of my smaller projects, including Arduino 1602 Snake (Gaming Device), Raspberry Pi Single Key Keyboard, the Poopie game and HTML gallery generator during the exhibition.

All visitors'll be welcomed to try out the projects that I'll be exhibiting. :)

Preparation Work - Visiting Maker Faire Hong Kong Last Year

I've planned for doing an exhibition more than a year ago. That's why I had checked out Maker Faire Hong Kong 2018 to see what exactly'd be going on in Maker Faire.

Well, that was pretty much I had expected. There's exhibition and seminars and workshops. Except that the exhibition were meh. Honestly, I was quite disappointed by the exhibition of Maker Faire in Hong Kong last year.

Almost all of the exhibitors were from education institutes. Some of them were schools, while some other of them were cram schools. Despite that there're a few impressive projects among them, almost all of them were lame, dumb, meh and unimpressive. Those projects just involved using very limited technical skill. As for cram schools, they're just joining the faire for marketing their classes for kids.

Another common type of exhibitors were those who make education materials. Developing education material isn't bad per se. However, no one's going to use them for anything professional. No one ever! And what those education material doing is to raise a bunch of half-ass engineers. Same goes for cram schools. And I was hoping that I'd be able to find more exhibitors that's actually technically competent for developing something serious.

I think I'd only found like 5 non-education makers out of like 100 booths. Well, I guess learning solely from classes is a culture of Hong Kong, which's an idea that I don't quite buy into because I've become what I'm now mainly by self-learning using online resources. And the problem with those classes is that it won't take the kids far enough to be able to do everything they want to do. And that's how some, if not all of those education institutes make money. They keep teasing the kids so that they'd apply for more and more classes. :(

Why Shenzhen?

Despite being lame, I still planned to join Maker Faire Hong Kong this year as an exhibitor. Mainly because it'd be the most convenient to me. To my surprise, it's apparent that there'd not be any Maker Faire in Hong Kong this year. I've contacted the organizer earlier this year without any response at all. And their website is still displaying the info of the 2018's event as of the time of writing.

Since there's no Maker Faire in Hong Kong, and I still intend to do exhibition this year, I've decided to exhibit in a Maker Faire that's close to Hong Kong. The Shenzhen one is the closest one. Therefore, I decided to join the one in Shenzhen.

As a bonus, exhibition is free for individual and non-commercial team exhibitors. It's so nice of the organizer to offer booths to us for free! I'd like to thank the organizer and sponsors of the event. :)

Achievements to be Unlocked

By joining this exhibition, I'll be doing these things for the first time in my life ever!

  • It'll be the first exhibition in my life
  • It'll be the first time I take part in an event outside Hong Kong SAR (a part of China) under the name of Sadale
  • It'll be my first time planning for a trip, including arranging the commute, booking for accommodation, food, etc.

I'm so hyped up! Can't wait to join the event! See you in booth E10 of Maker Faire Shenzhen 2019! :D


Future Distribution of Ilo Nanpa with Time-Efficient Production Method

Sept. 30, 2019, 11:04 a.m. Behind the Scenes Electronics ilo nanpa

This is the second blogpost of Ilo Nanpa. You can read the first blogpost here: Ilo Nanpa (Toki Pona Calculator) - Release Announcement and Technical Details

Future Distribution of Ilo Nanpa

Hey guys! I'll be distributing new units of ilo nanpa! Previously, ilo nanpa was distributed in irregular batches. From now on, I'll be shipping a batch at approximately the end of each month (unless I run out of stock).

With time-efficient production method, the time-cost of unit production is reduced by quite a lot. Therefore, I'm lowering the average donation target per unit from $30 to $20 for all of the new units produced, including international shipping fee.

For each donation made, I'd add the amount to the donation pool. For each unit shipped, I'd deduct $20 from the pool. The fund available in the donation pool will be used for giveaways, or for subsidizing those who're donating less.

For a donation of $25 per unit or above, you'll be enlisted as one of the honored donors in the official website of ilo nanpa.

Future Distribution: Procedure of Getting Ilo Nanpa

If you're interested, here's the procedure of getting a unit of ilo nanpa:

  1. Contact me, using either the contact method in the official website of ilo nanpa, or using any social media that I'm active in, including Twitter, Facebook, Telegram and Reddit. Please provide the following information:
    • Recipient address and recipient name
    • Your intended total donation amount (If you wish to donate less or even get it for free, especially if you aren't in the workforce, it's ok to write down less than $20, or even $0. You'll still get a unit if there's enough fund available from the donation pool. If you donate more than $25, you'll be enlisted as honored donor)
    • Your name/nickname and optionally contact method/website if you're eligible to be a honored donor and if you wish to be named
    • The quantity of units that you wish to get. If it isn't mentioned, it'd be assumed that you're interested in getting one unit.
  2. Wait for my reply. I'll confirm if any unit is reserved for you based on these factors:
    • If ilo nanpa is in stock
    • Your donation amount and the available fund in the donation pool. Given that it's in stock, a donation of >$20 will secure you a unit.
    • In the reply, I'll provide the following information to you:
      • The donation link and the amount to be donated
      • The quantity of units reserved for you
      • The approximate shipping date
  3. After the donation is made, I'll ship the unit(s) to you on the shipping date. It'll be shipped as a registered parcel.

Future Distribution: Procedure of Donating without Getting Ilo Nanpa

If you wish to add funds to the donation pool without getting a unit of ilo nanpa, just donate to me using the donate button in the homepage of my website and contact me. The donation will be 100% used for subsidizing the recipients who are donating less or not donating (i.e. giveaway). If you wish to be named, a donation of $5 would enlist you as one of the honored donors.

Future Distribution: Website Updated with Distribution Information

The official website of ilo nanpa has been updated to show the number of units in stock, units distributed and the amount of fund available in the donation pool.

Future Distribution: Where'd the Donation be Used?

Here's the breakdown of the spending of donation for each unit:

  • ~$3 for material cost, including PCB, electronic components, soldering material and packaging
  • ~$5 for international shipping fee
  • ~$12 labor cost for new units (takes 45 minutes per unit), and $22 for old units using old production method (takes 2 hours per unit. In fact, 2 hours of time's worth far, far more than $22 to me)
    • Cost for renting VPS, purchasing new equipment, etc. is drawn from labor cost. I've been taking the money from my own wallet for funding my hobby for years. It'd be awesome if it can get fully or partially funded by donation.

I'd like to take this opportunity to thank all of the previous donors. With the donated amount, I've purchased new equipment, which allows me to produce ilo nanpa more efficiently.

Behind the Scenes: Time-Efficient Production Method

As I'm rather new in electronics world, my current technical ability of assembling electronic parts is rather rudimentary. I've been assembling electronic devices by soldering the components onto the PCB using soldering iron one-by-one, which is extremely time consuming.

Before this project, I only had to assemble one, or perhaps a couple of prototype units for my projects. So the time inefficiency wasn't an issue. However, this had changed since the completion of the ilo napna project. I have to manually solder a handful of units of the device in order to distribute them to Toki Pona speakers. And it took me two hours to produce a unit of the device, which was dog slow. And the demand just isn't high enough to justify outsourcing the assembly process.

Time-Efficient Production Method: Solder Paste Stencil-Based Soldering

As the previous production method was time consuming, I looked into more time-efficient production alternatives. After some Google-Fu, I've found that solder paste stencil-based soldering is probably the way to go for the following reasons:

  • Faster assembly. Instead of soldering the components one-by-one, I can solder all of them in one go
  • Low cost. The equipment and material required for using the stencil isn't expensive at all
  • Space efficiency. I wouldn't need any huge-ass machinery to perform the production

Time-Efficient Production Method: Equipment and Material Purchased

I've purchased the following equipment and material for experimenting with this production method:

  • Solder paste (duh! It's **solder paste** stencil-based soldering!)
  • PCB with its stencil (duh! It's solder paste **stencil**-based soldering!)
  • Tweezers for placing the components
  • Hot air gun (DKT 8032, with adjustable airflow and temperature)
    • Ideally I should get a toaster oven or reflow skillet. However, I don't have the space for that. Welcome to Hong Kong. It's one of the crowdest cities on the earth. :(
  • Heat-resistant mat so that the hot air gun won't burn the soldering platform

I've purchased a new batch of ilo nanpa boards. This time, the boards are panelized so that four units of the device can be produced for each PCB. After soldering them, I'd break up the PCB and I'll get four devices from a board. Here's the photo showing a jar of solder paste, panelized PCB and a stencil on a heat-resistant mat:

a jar of solder paste, panelized PCB and a stencil on a heat-resistant mat

Not all components can be soldered by this technique. Only SMD components can be soldered in this way. Fortunately, most of the components of ilo nanpa are SMD components. The only components that require using soldering iron are the USB port, programming port and the battery holder.

Time-Efficient Production Method: Procedure of Production using Solder Paste Stencil

I mostly just followed this solder stencil tutorial on Youtube. Except that I'm using hot air gun instead of reflow skillet for soldering the components onto the PCB.

Here's how I'm producing the devices using this new production method:

  1. Prepare the material and equipment, including PCB, electronic parts, soldering iron, hot air gun, etc.
  2. Put the soldering stencil above the panelized PCB. Apply solder paste onto it using putty knife
  3. Take away the soldering stencil
  4. Place the components onto the panelized PCB using tweezers
  5. Solder the SMD components onto the PCB using hot air gun
  6. Break the panelized PCB of ilo nanpa into 4 smaller boards
  7. Solder the DIP components using soldering iron
  8. Attach the battery holder to the back of the unit
  9. Program the unit using STLink
  10. Perform setup and quality control using factory mode of the device. Debug and rework if it fails the quality control

In step 2, since some spare PCBs are required for using the stencil, the 10 thought-to-be-useless wrong ilo musi boards that I ordered long time ago is now somehow useful. They're perfect to be used for holding the ilo nanpa PCB workpiece in place so that I can apply solder paste using the stencil easily.

At the end of step 3, here's a photo showing a work-in-progress panelized PCB. Take a close look and you'll see there's a layer of gray solder paste applied on each of its pads:

A photo showing PCB with solder paste on all of its pads

As for the hot air gun in step 5, it's empirically found that setting the air flow to 2/8 and the temperature to 3/8 works well for soldering the components.

Time-Efficient Production Method: Result

This new production method works very well. Despite that the stencil is a bit expensive, it has cut down the production time by quite a lot. Before using this method, I produced ilo nanpa at a rate of a unit per two hours. After using this method, I managed to produce four units within 2.5 hours, with an additional 0.5 hours of setup and cleanup time.

A photo showing four units of assembled ilo nanpa devices

This production method is very helpful for producing several units of electronic devices in timely manner. For a demand of 20-ish units, it seems to me that it's the go-to method for production. I'm very glad to have learned it. I'll continue be using this method for small scale production.


Sadale Had Entered Limited Operation Mode

Sept. 22, 2019, 11:27 a.m. Meta

Hey guys! It's been quite a while since my last blogpost. I've got a bad news for you guys. Sadale had entered limited operation mode. Due to copyright concerns, Sadale will not perform further research and development work until this mess is cleared.

What happened?

After I stopped freelancing, it took me a while to land on a day job. In fact, I've got two offers. The first offer is offering 30% more salary than my first day job. And the second one is 60% more than my first day job. After briefly working for the company who made the first offer to me, I decided to switch to the second one. Mostly as a tactical move to get me decent compensation in all of my future jobs. As it goes on, it's found that this company I'm working for is rather awesome, tho.

Anyway, here's the problem. For both of the offers, the contract is claiming the copyright ownership of stuffs that I work on outside my work hours.

- Wait what?

Yes. They're claiming it. I pointed that out immediately after receiving the contract for both companies. And, well, I was verbally told that the work that I do outside the work hour wouldn't have their copyright assigned to the company. I didn't further fight for that because I pretty much needed a job after I was done with freelancing. Anyway I think that verbal commitment isn't trustworthy because that isn't in black and white. And I'm sure that the guy who told me that I can retain the copyright ownership of the stuffs that I work on outside my work hours isn't the only guy who could sue me.

Consequence of the Bullshit Clause of the Contract

Since I've signed that bullshit contract, it means that the company I'm working for may have the right to claim any further R&D work I do, even outside my work hours, which is bullshit. I mean, I'm not using my work hours, nor the company's resource, nor the company's connection for my personal projects. I'm not even competing with the company I'm working for.

I've asked my supervisor to disclaim the products that I develop on project-basis by email. After going thru some troubles, this had went thru. However, I'm not entirely sure if the emails would be legally binding. I really have to consult a lawyer, just to be safe.

Here's the problem. I pretty much need the copyright for everything that I develop outside work hours because I share and publish my works, often under open source licenses for software and electronics, and creative common license for music and other creative works. Since I've signed the contract, I'm no longer able to develop anything outside work hours without risking getting the copyright of the stuffs claimed by the company I'm working for, unfortunately. :(

The wordings of the copyright clause in the contact of the day job that I had before I started freelancing was different. It was worded in a way that they'd only be claiming the copyright of the stuffs that I was ordered to do at work. That why copyright was never a concern until I've taken this day job.

Moving on

To avoid getting the copyright of personal projects claimed by the company I'm working for, Sadale had entered limited operation mode. Until consulting a lawyer, I'll not work on any copyrightable stuffs outside my work hours.

The current company I'm working for is having a rather awesome work culture. I think that I'm probably able to learn far more from working for this company than the day job that I had before I started freelancing. In short run, I'll continue to work for this company. I'm stopping all of the development work of all of my personal projects. I can't even join events like Global Game Jam with this clause in effect as it'll generate copyrightable, god damn it!

Depending on the advise of lawyer consultation session, I may have to look for another job to get this sorted out in long run. I could also try fighting for the clause. However, considered that it was such an ordeal to get the copyright disclaiming email (which may not even be legally binding) to get thru, I wouldn't be optimistic on fighting for rewording of the clause.

However, works that don't generate copyrightable can go on. For example, I'm particularly interested in solder paste stencil-based soldering. It has been taking me like two freaking hours to produce a unit of ilo nanpa (the Toki Pona calculator). And the demand of the device is just far too low for outsourcing the assembly process because that'd be cost inefficient. With stencil-based soldering, it should save me quite a bit of time on producing the units. As production method isn't copyrightable, practicing the soldering technique will work even with this bullshit clause being in effect.

Perhaps I'll also take time on learning new stuffs, like learning music composition techniques, and perhaps also learning drawing. This will be done by mostly following tutorials available online. I'll expect all of the stuffs that I make for the purpose of learning will have copyright assigned to the company I'm working for. Anyway I won't care because those are just work done by following the tutorials and they won't be publish-worthy. On the bright side, after this copyright crap get sorted out, I'll be a much more capable individual. Then I'll be able to produce stuffs that has far better quality than I am able to now.

To avoid any potential dispute, I've decided not to work on the portable game console ilo musi any further until this situation is fixed. Not even for non-copyrightable works like units production and testing. Therefore, the original target completion date of ilo musi project by the end of 2019 will not happen. This project is now completely suspended. :(

For now, I'm going to focus all of my power on preparing for the upcoming Maker Faire. I'll be exhibiting ilo nanpa in Maker Faire Shenzhen 2019. This will be the first exhibition in my life! I'll probably be producing extra units of ilo nanpa so that they can be exhibited during the event. As the exhibition preparation is quite a bit of work, I'll look for free lawyer consultation session from the government some time after the end of the Maker Faire.


Portable Game Console Project "ilo musi" - Third Prototype, PCB, Menu, Clock Calibration, Software Release and Suspension of Development

Hey guys. Sorry for not updating you guys about this portable game console project for an extended period of time. I have been rather busy lately.

The previous blogpost of this game console was about the Stay In game developed for the 4th Alakajam. This blogpost aims to document the update of the portable game console project since the last blogpost! :)

Name of the Portable Game Console - ilo musi!

This project had come a long way without having an official name. From now on, "ilo musi" will be the name of this portable game console! It means "amusing device" or "playful device" or "toy" in Toki Pona language. This name is chosen mainly because it is unique, and it is meaningful. As this game console is a minimalist one, this name also map well to the ideology of minimalism of Toki Pona.

Hardware Update - Third Prototype of Hardware, with PCB!

I've drawn a PCB for this project! And this is the first PCB I've ever designed in my life! I've done this PCB almost five months ago. But I didn't have the time to blog about this. :)

A photo of a hand holding a piece of PCB of ilo musi

This PCB was designed using KiCAD. The main reason of using this PCB software is that it's FOSS. To learn drawing a PCB, I went thru the official getting started documentation of KiCAD. After going thru the tutorial, I managed to draw the PCB for the game console. It's easier than I thought it'd be. :)

Hardware: [Resolved] Terrible Mistake of MicroSD Pinout of PCB Design

I've made a mistake on designing the PCB. I messed up the pinout of the microSD card as I thought that it would be identical to full-side SD card. Then I designed the circuit based on the pin-mapping of the full-size SD card. It turns out that they're different.

  • Here's the pinout of full-size SD card layout in SPI mode: CS, DI, VSS1, VDD, SCLK, VSS2, DO, UNUSED, UNUSED

  • And here's the pinout of microSD card layout in SPI mode: UNUSED, CS, DI, VDD, SCLK, VSS, DO, UNUSED

Notice how there's an extra VSS1 in the full-size SD card. I didn't notice that and I messed up. Too bad! I realized this mistake after sending my design to the PCB fab. :'(

I asked about how much would it cost to modify the design. The PCB fab told me that it's already in production. So it wasn't possible to change the design anymore. I ordered another batch of PCB with the new design. And now I've got 10 wrong ilo musi PCBs laying around:

A photo of 10 wrong PCB of ilo musi packed in bubble wrap

Oh well. Lesson learned: Review the design carefully before sending it for PCB fabrication.

Hardware: Other issues in the current prototype

With the microSD issue fixed, the current PCB is working properly. Anyway, there're still some minor issues with the PCB:

  • The silk screen for the right button label is covered by a soldering pad
  • There's no fiducial marks. It's required for the ease of automated mass production
  • The header JP1 should be renamed to J10
  • The pins of the crystal is obstructing one of the battery holders
  • The mounting holes below the headphone jack is too large
  • More decoupling capacitors are needed for reliable power supply

Hardware: Specs Changes since Second Revision of Hardware

The microcontroller had been upgraded from STM32F030K6T6 to STM32F030C6T6. STM32F030C6T6 has more GPIO pins compared with STM32F030K6T6. And it is easier to upgrade to another pin-compatible microcontroller with STM32F030C6T6, which is the main reason of this change. With STM32F030C6T6, it'd be possible to upgrade the RAM and flash space of the microcontroller without modifying the PCB.

As a result of the microcontroller upgrade, the amount of spare GPIO had been increased from 12 pins to 22 pins. Now there're 22 user-accessible GPIO pins that can be accessed by the games developed for this game console! :)

In the final product, the following specs is to be expected:

  • A microcontroller of STM32F0x0 value line. Probably STM32F030C6T6 if the flash wearing isn't an issue, or STM32F030CCT6 if flash wearing is an issue
  • Selectable USB/battery power
  • Selectable Buzzer/Audio jack audio output
  • Volume adjustment knob
  • microSD card slot
  • 22 GPIOs for game-specific hardware expansion
    • No driver would be provided for interfacing with GPIO by the bootloader firmware. The user has to develop their own GPIO driver or use a library like STM32F0 LL.

Software News

Software News: Game Selection Menu

The game-selection menu of ilo musi is implemented! Its purpose? You guessed it. It's used for selecting a game on the microSD card. With game selection menu, it's possible to store multiple games on the same microSD card. Then the player can choose a ROM from the microSD card and play it! The menu also load system configurations and has feature designed for the ease of game development.

A photo of ilo musi's game selection menu

Software News: Menu: Game Selection

As shown on the picture above, the player can choose the game using the menu. The menu can be navigated using key UP and key DOWN. Key 1 is used for starting the game, and key 2 is used for refreshing the microSD card (useful for changing the microSD card).

This portable game console supports microSD card formatted as FAT32 filesystem. The file names are shown as 8.3 filename. Directory navigation is possible.

Upon the game is selected, self-flashing would be performed. After that, the program counter would be jumped from the bootloader to the game. Then it'd be up to the game to handle what to do.

Software News: Menu: Debugging Games

As for the procedure of new game development, first, prepare the game resources, including graphical assets and whatever needed and pack the game ROM as "DEBUGRES.IMG". After that, put the file "DEBUGRES.IMG" file somewhere on the microSD card (can be put onto the root directory). Then program the game code to the microcontroller using ISP. Then the game console would be reset. Then the developer would navigate to the directory containing the "DEBUGRES.IMG". If the file is available in the directory, the game console would not perform self-flashing and jump to the game right away. Since the self-flashing part is skipped, this allows the developer to run debugger for the source code of the game with the updated game code that the developer had just flashed using ISP without repacking the game ROM. This "DEBUGRES.IMG" feature makes the life of the game developers easier.

Software News: Menu: Contrast Adjustment and Internal Clock Calibration Values

It is possible to perform contrast adjustment using the menu by pressing key LEFT and key RIGHT. This would adjust the brightness of the pixels on the LCD. The contrast adjustment value is stored on the option bytes of the microcontroller so that it'd persist after reboot.

Along with contrast adjustment value, the clock calibration trimming value is also stored in the option bytes. The option bytes are loaded by the menu on boot. We'll get to the clock calibration trimming value in the next section of this blogpost.

There're only two option bytes in the microcontroller. The two 5-bit calibration trimming values takes 10 bits. That leaves 6 bits for contrast adjustment, which is good enough as the range of adjustment is from -10 to +2. Needless to say, some bitwise manipulation is required to put three different values into two option bytes. And this has been taken care of. :)

Software News: Clock Calibration "Game"

In most of the cases, the internal clock just works fine. According to the datasheet of STM32F030C6T6, the main clock (HSI) of the microcontroller typically has an error of ±5% at full temperature range (and ±1% at 25°C). This 5% of error often wouldn't be a major issue. If the game is running 5% slower or faster, it'd barely be noticeable. However, for things like asynchronous communication, particularly UART, 5% of error would be an major problem. We'd want to control the error to within 2% or so for reliable UART communication. For this reason, some clock calibration mechanism is required.

I've thought about including clock calibration mechanism in the game selection menu. However, it takes quite a bit of code size for clock calibration. For this reason, I made a "game" dedicated for performing clock calibration.

A 32.768kHz crystal soldered onto the device serves as a reference clock source for performing the calibration. This crystal is assumed to have almost no error, which actually is the case because the error we're looking at would be 0.01%-ish. With this clock source, the clock calibration "game" would be able to calibrate the clock by setting the trimming values (i.e. calibration value) of the main clock (HSI) and the ADC clock (HSI14) appropriately. After that, the game would measure the frequency of the low frequency internal clock (LSI) and show it on the screen, which isn't possible to get calibrated. Finally, the calibrated values are saved to the option bytes so that it'd be loaded by the game selection menu upon the game console is booted, which makes the calibration persists across power cycles.

Software Released!

The software of this game console had been released!

Software Release: Template Game

To facilitate development of new game for this game console, I've prepared a new game template! It's a skeleton code with simple structure that would be useful for most of the games. It includes code for graphical assets loading, input handling, clean screen, frame limiting and a simple game object management library.

The Github repository containing the template game for ilo musi can be found here

Software Release: Python Scripts

A few Python scripts were developed to facilitate working with custom music, graphic and ROM format of ilo musi.

The Github repository containing the Python scripts can be found here

Software Release: Bootloader and Game ROMs

The bootloader is the core of the game console. It contains the game menu and the system library of the game, which all game ROMs would depend on.

The Github repository containing the bootloader and game ROMs can be found here. Currently only the binary is released because there are probably still some bugs in the bootloader. The source code of the bootloader will be eventually made available.

Bad News - Project Development Suspended!

Since I'm done with freelancing, I've got two day job offers. To my surprise, the employment agreements of both companies have a clause saying that the copyright of all work I do while I'm employed would go to the company. The local law here say that the copyright of the stuffs that employees do during "course of employment" would go to the employer, and it'd go to the author otherwise. It means that I'd hold the copyright of hobbyist projects that I work outside work hours. But I'm not sure if the agreement would override the law.

For the existing work that I've done on this project, the copyright is definitely mine. To avoid legal dispute, the development of this game console had been suspended since I've got the day job. I'm trying to come up with an agreement on copyright arrangement of this project with my employer. My employer had verbally agreed that I'd hold the copyright of this project. But still, the paperwork isn't done yet. Hopefully everything would go thru.

In case of non-agreement on paperwork, I could just distribute this game console anyway. Despite that limitations stated above, this game console is currently perfectly playable. So it's possible to distribute it without any further copyrightable development work. Another way to do that is to hand over this project to someone else. Someone had expressed interest in hacking on this project. So I'd imagine it wouldn't be difficult to look for contributors. I could also look for a new job. But the friendly coworkers, awesome culture and decent compensation of the company are just too much for me to give up. And this kind of clause is probably more than common in employment agreements. So switching to another job may not help at all.

Meanwhile, I think I may look for legal consultation from professional lawyer on the actual copyright ownership of hobbyist projects. I know that I've signed the employment agreement. However, it wouldn't make sense if all the stuffs I make outside work hours would be copyrighted by the employer. That way I technically wouldn't even be able to post any text or photo or video to any blog or chatroom or social media without infringing the copyright of my employer. And that's just bullshit. What I really need to know is if the employment agreement would override the local copyright law. If it doesn't, I'd be all good to work on this project without any new agreement with my current employer.

Anyway, the non-copyrightable work of this project can go on without any problem, including some testing that doesn't generate copyrightable material, production efficiency research and distribution of this game console.

What's next?

I'll be continue working on this game console.

No copyrightable would be generated for these tasks. I can work on these straight away:

  • Test for flash write cycles
  • Look into more efficient production method
    • With an expected demand of 10~50 units, the production speed of a unit per two hours is just far too slow. And this amount of demand is too little for outsourcing the production to PCB assembly. I think I'll look into stencil-based SMD soldering technique so that I can do efficient production at home.
  • Distribute the device!
    • A distribution model similar to Ilo Nanpa will be adopted. It'll be a donation-based distribution model to cover the material and production cost. This distribution model is proven to be effective for small demand.

New copyrightable material would be generated for these tasks. I have to check for the copyright ownership of the stuffs that I work on before working on these, or I could ask someone else to do these for me:

  • Test for GPIO functionality
  • Revise PCB
  • Prepare for release of bootloader soure code
    • There are probably still some minor bugs and formatting issues to be fixxed
  • Maybe a hardware case for the game console
  • Perhaps also an emulator so that games developed for this game console can be run on browsers

I aim to get this project done by the end of this year (not including the emulator). Let's pray and hope the copyright crap would get resolved so that the development can resume. Stay tuned! :)