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

Future Project (Scheduled to Resume in 2022)

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

Toki Pona has Gained ISO 639-3 Language Code!

Jan. 28, 2022, 2:38 p.m. Toki Pona

Congratulation on Toki Pona language for successfully applying for the "tok" ISO 639-3 language code!

Toki Pona is a minimalist constructed language invented by "jan Sonja" back in 2001. The first official book describing the language, Pu, was published at 2014. Unlike most other constructed languages, Toki Pona has less than 130 words. Due to the simplicity of the language, it attracted lazy people like me who don't want to invest too much time into learning a language. Personally I've learned it in 2018. And the speaker of language has been growing steadily. As of today, Toki Pona is the second most spoken constructed language in the world, only after Esperanto, with the amount of speakers estimated to be about 300-1000 and counting...

Since Toki Pona language were invented, three ISO 639-3 Language Code applications were made, including at 2007, at 2017 and at 2021. With the 2007 and the 2017 request failed, Toki Pona had finally made it in 2021 and gained the "tok" language code.

I have learned Toki Pona in 2018 and have been using it since then. The one thing I've learned from Toki Pona is that, context is everything when it comes to communication, and it ain't a good idea to always take words at face value. It enabled me to talk with others more efficiently. I've also made quite a few friends speaking Toki Pona along the way. In addition, since I've learned the language, I've developed a hardware device and a game that feature the language. I've also joined Toki Pona Day 2021 showcasing another DIY Toki Pona counting device. As of this moment, yet another Toki Pona related hardware device is under development that's to be released some time in this year.

Last year I was invited to join the "Toki Pona ISO 639-3 working group". I wasn't quite active there. Right before the deadline of the application in 2021, the main applicant called for filling in the form collaboratively. I'm very glad to have involved in assisting in doing write-up of the missing parts required for application of the code along with other people in the working group. After that, the members of the Discord group "ma pona pi toki pona" were contacted and they helped editing the existing content into perfection. Just earlier today, it was officially announced by ISO 639-3 that the application was successful.

The success of this application is significant. It means that toki pona have a standard language code that can be used for localization of programs. Without a code, each program and website would have to come up with a custom code for toki pona language, assuming that it's even supported by the site in the first place. With a standard language code, it makes localization much easier. Believe it or not! Websites like Wikipedia only allows adding new languages that has an ISO language code. The lack of language code of Toki Pona had been a limiting factor of the growth of the language. With the new language code, I hope that Toki Pona language will continue to thrive!

If you haven't learned the language yet, do take a look at it! Here's a nice free online course for learning it:

o kama sona e toki pona! ona li musi a! (Translation: Go learn Toki Pona! It's fun!)


Toki Pona Day 2021 (suno pi toki pona 2021) Has just Ended! What a Party!

Aug. 8, 2021, 2:20 p.m. Exhibition Product Release ilo nanpa

Logo of Toki Pona Day 2021

Toki Pona is a constructed language invented by jan Sonja that has hundreds of speakers around the world. Today marks the 20th Anniversary of Toki Pona language. In celebration of the birthday of the language, the ma pona pi toki pona community had organized Toki Pona Day 2021.

As a toki pona speaker, I'm very glad to be taking part in the event as a performer, as one of the sponsors and as a participant!

As a Performer - Release of ilo nanpa lili

A month ago, I was contacted by "kala Tonyu" that I was requested to perform in "suno pi toki pona 2021" for the toki pona content that I've contributed to the internet, including ilo nanpa and the pipi song.

After some thoughts, I decided to make a sequel of the toki pona calculator, ilo nanpa lili. It's a simplified ilo nanpa that you can build on your own. It's a CD4017B-based counting device that can be built on breadboard. So I've made an assembly video, assembly instruction manual, BOM and website for the device for the event. Unlike ilo nanpa, this ilo nanpa lili is sold as a kit that the end-user would have to assemble it on their own. And it'll be sold at cost price.

The assembly video was premiered on Youtube during the event. Here's the video:


And here's the website of ilo nanpa lili that contains the BOM and shipment arrangement, so that everyone could get the kit or source the components on their own to build ilo nanpa lili.

As a Sponsor - Surprise Lucky Draw

In addition of being a performer, I was contacted by the event organizer for a request of sponsoring a unit of ilo nanpa for the event, which I gladly accepted.

In the same lucky draw, it also contained 3 units of the official toki pona book, which's known as "pu", as well as 3 units of the official toki pona dictionary, which's known as "ku". The sponsors of these items are anonymous, so I've no idea on who donated them.

Anyway, the winner of ilo nanpa in this lucky draw is jan Seno. Congratulations! I look forward to packing and sending the free unit of ilo nanpa to you!

As a Participant - The First Online Party that I've ever Participated in!

Here comes to the most important part. In addition of being a performer and a sponsor, I'm a participant of this event as well!

This event was mainly held in the ma pona pi toki pona community, which's a community resides in stupid Discord. Despite that I don't quite like Discord, I still had to join the event, so I had no choice and joined their server. :(

Unlike the toki pona communities that I've joined, this Discord community is unique in its own way. Unlike IRC and Telegram, it supports live streaming of computer screen or phone camera right inside a voicechat. This feature was heavily utilized throughout the event. In fact, this feature enabled the performances to stream the content of their screen easily for the purpose of their performance.

Apparently, the community has stricter rules compared with other toki pona communities outside as well. I've heard rumors about unjustified banning inside the community, which I couldn't confirm, but I suspect that it's true. So I acted rather cautiously inside the community for avoid breaking any of the rules during the event.

The event was also being mirrored to Youtube and Twitch. However, the viewers there seems to be treated as second-class citizens as most of the things going on were happened in Discord. Plus, there were technical issues with the mirroring in times.

Enough talking about the Discord community. Now let's talk about the content of the event.

The event's packed with performances during the 24 hours, with a few breaks. Various performances, including games, story-telling, workshops, musical performance, were available. Some of the performances were repeated for a few times during the event so that people from different timezones would be able join. In addition, there're background games going on during the entire event. The participants were asked to fill in an attendance form, which was used for the surprise lucky draw.

There're a few musical performances during the event. I've listened to music from kala pona, jan Pensa and jan Usawi. I absolutely love the song "tawa lon linja" from jan Usawi for its catchy melody!

Spamming seems to be a part of the culture of the community. While jan Pensa was singing a song, one of them contained the lyrics "mu mu mu mu mu". Then the users kept spamming "mu mu mu mu mu mu mu mu mu mu" inside the event's channel:

Spamming of mu mu mu mu mu

In addition, when music's being played, I've seen people collectively posting the cat music gif repeatedly. And I've seen other kind of spamming from other occasions. Nevertheless it's fun to look at those spams. And it's even more fun to participate in it. :P

I've played three games during the event, including Gartic Phone, sketchful.io and Classicube. The rule of Gartic Phone is that a player would write a sentence in toki pona, then someone else would draw an image based on the sentence, then someone else would write another toki pona sentence based on the image. This process keeps repeating. In the end, the sentence would be completely different from the original one. Unfortunately, a few of the players couldn't speak toki pona well (notice how "jan li tawa wawa" get turned into "jan li kama wawa". In English, that'd be "a person runs" get turned into "a person becomes strong"). The less-fluent speakers made some extra content get lost in translation.

Album of Gartic Phone

For sketchful.io, it's like post-it draw-it. But the host had loaded a custom word list that only contained toki pona words. It happened right before the closing session of the event. At first, around 20-30 players had joined the game. People began leaving before the game ended because it got overrun for a bit. At the end of the game, there were only like 8 to 10 players. With all those people leaving, I managed to win the game! :P

As for Classicube, it's a game similar to Minecraft Classic. It's one of the background events that the participants could join anytime during the event.

I'm impressed that the community had built a rather decent toki pona world during the 24 hours of the event:

A screenshot of Classicube

Too bad! I felt super dizzy after playing this game for a while. So I couldn't play it for long. :(

In the closing session of the event, it's all those thanks for joining and stuffs. And there was a lucky draw as well. In the very end of the event, it was a countdown of the 20th birthday of toki pona. They counted from "mute", "mute", "mute", "mute", "mute" to "tu" "wan" "ala!". In English, that'd be "many, many, many, many, two, one, zero!". We said "many" because in the simple toki pona numeral system, all numbers more than 3 are called "mute". After the countdown, we sang happy birthday in toki pona. During the end of the event, people kept spamming in the event's channel to the extent that the moderators had to enable slow mode of Discord for the channel to slow down the spam.

That's it for the event. I'm very glad to have joined it. See you next year! :D


Global Game Jam 2021: The Most Unique GGJ Experience that I've Ever Had!

Feb. 3, 2021, 2:01 p.m. Gamedev Product Release

Game Information

This year I'm very glad that I'm able to join Global Game Jam again. Here's the game that our team have developed. o lukin e ko jaki (Watching Poop)!

Title graphic of o lukin e ko jaki!

Game Info: Game Description

In this game, there're poops sliding and jumping around on the street. The player has to first memorize the path taken and the color of the poops. Then, the player would be asked a question about the poops. If the player answers correctly, a new wave of poops would come out. Otherwise the player'd lose the game.

The game is in Toki Pona using Sitelen Pona writing system.

Game Info: Resources and Downloads

Game Info: Gameplay Video

Here's the gameplay video. What a shitty game it is, literally! :D

Game Info: Credit

This game was developed in collaboration with jan N30HRTGDV and jan Niko. I'd like to thank them for forming a team with me. This game wouldn't have happened without their help. :)

Behind the Scenes

Behind the Scenes: Picking a Jam Site

Due to COVID19, GGJ's going remote this year. I've thought about taking this opportunity of remote GGJ to join another jam site. However, on second thought, I decided not to do that.

For the ease of administration, our team had decided to just join the Hong Kong Cyberport's site. That's because they're flexible and I'm rather experienced with joining this site.

Behind the Scenes: Using Toki Pona Language

All of our team members are Toki Pona speakers. Before the jam, I've managed to reach out four Toki Pona speakers interested in joining the jam. In the end only three of us ended up working on the game tho.

Originally we planned to exclusively speak Toki Pona within the team during the event. Unfortunately, one of the team members can't speak the language fluently. Therefore, we ended up switching to English by the end of the event.

However, as for the game itself, its description, and even the code of the game, they're in Toki Pona.

Screenshot of source code of o lukin e ko jaki in Toki Pona language

I'm rather impressed that I was actually able to write code entirely using this minimalist language (except for API calls and keywords of the programming language).

Behind the Scenes: Using Godot Engine

Since all of our members have at least a little bit experience on using Godot Engine, we've decided to use this engine. The person who's the most familiar with this engine was jan Niko. Due to some circumstances tho, I ended up being the main programmer of the team. Fortunately I've briefly revisited Godot Engine before the start of the event. And I'm surprised that my Godot skill was actually good enough for making a game for the jam. In fact, despite my limited experience, I found that I'm more efficient with Godot than with other game engines like libgdx that I've spent months on using.

With Godot engine, I've managed to pull out the following game feature in a short time, which would take quite a bit of time to do without it:

  • Animation
  • Path-following of objects
  • Image clipping

It's my first time doing any of the things above for a game. I'd seriously consider using Godot Engine for future game jams. It's easy to use, I could get the work done real fast. It's simply awesome for cranking out game features within a limited amount of time.

Behind the Scenes: Collaboration with Other Team Members

jan Niko had helped a bit with programming. Originally they planned to make music for the game. However, due to lack of inspiration, it didn't happen. But that's ok. It isn't like that this game requires any music.

jan N30HRTGDV had helped with designing 3D models. Originally we planned to make the entire landscape in 3D. However, after he finished the design, we agreed that the landscape wasn't good enough, and we didn't have time to fix that. Therefore, we ended up extracting a couple of models from the landscape and put them onto the original photo. Here's the photo before having the 3D models and after having them. Funny how there's a statue there having a bowl ready to hold the poops. xD

Image showing the photo before and after adding 3D models to it

As shown above, I've added shadow to the models so that it'd fit into the photo more naturally.

I've also asked for a thumb down photo from each of our team members. Each of us had taken a photo of thumb down. They're used in the scene when the player lose the game.

I'm very glad to have collaborated with all of the team members. The jam is more fun when I'm accompanied. And I'd like to congratulate jan N30HRTGDV for having completed his first game jam! :)

Achievements Unlocked

Here's the list of the stuffs that I've done for the first time in my life during this project:

  • Made a game using photo
  • Made a game in Toki Pona language
  • Joined a game jam with online friends
  • Animated stuffs for a game, including the title and the losing scene

Problem: Low Quality Voice in Game Trailer

Here's my fuck-up during the jam: In the trailer, I've used the wrong audio filters for noise removal. It made my voice indecipherable. And I didn't add any subtitles to it. And the alien-looking writing system shown on the game wasn't helping at all. :(

I think that the fellow jammers probably wouldn't know what this game's all about just by watching the trailer. I should have used some better filters so that my voice would be more clear. If not, I should have added subtitles.

I guess I should keep this in mind if I ever join Global Game Jam on Cyberport's site again.

Notes to Future Self

  • Do learn more about Godot Engine. It's very helpful on game jams
  • Try figuring out the audio engineering part, especially for voice editing
  • Try taking an art role
    • I've been the main programmer and the main musician in the past. But I haven't been a main artist
    • Requires me to beef up my art skill first, which isn't happening in the coming months
  • Try joining a jam site that isn't the Cyberport one
    • I've been saying this for years and it still isn't happening :(

Moving on

I was pretty much occupied with the jam and making this blogpost. After this, I hope that I'd have more time to continue on my musical training.


Resuming Normal Operation and Future Plan of Sadale for 2021 and 2022

Jan. 23, 2021, 2:20 p.m. Meta

Hey guys! I'm glad to announce that Sadale is finally resuming normal operation. Sadale had previously entered limited operation mode due to the wordings in the employment agreement that I've signed with my ex-employer. With my new day job, I'm very glad that I'm able to, once again, work on personal projects again.

Accomplishments in Limited Operation Mode

Despite that Sadale was in limited operation mode, I've managed to pull of the following during accomplishments:

Planned Projects

Currently, the following projects are planned:

  • By the end of January 2021:
    • Global Game Jam 2021 Participation
  • By the end of 2021:
    • Significant improvement in my music composition and audio engineering skill
    • Experiment with using the same PCB for two different projects
      • Development of a USB programmable 7-segment LED device
      • Development of a low-cost internet-synchronized clock
  • Starting from 2022:
    • Continue developing ilo musi. Hopefully the distribution would happen in early 2023

Planned Project: Participation in Global Game Jam 2021

Last year was a combo-breaker of my Global Game Jam participation due to the limited operation mode. This year I'm very glad that I'm able to join the event again! :D

This year I plan to do something different. I'll be joining with fellow Toki Pona speakers. For those who didn't know, Toki Pona is a minimalist constructed language with less than 130 words. Many wordings are ambiguous that the listener has to figure stuffs out by context. At first we thought about communicating with team members exclusively in Toki Pona. But some of the team members seems not to be able to speak the language well. So I'm not sure if it'd be a good idea.

Let's see how it'd turn out. Maybe we'd end up developing a game that has Toki Pona language inside. Maybe it'd be fun to make the game. Wait for the end of the event and we can tell.

Planned Project: Music Composition Training

One of the major problem of how I compose music as of today is that it heavily relies on trial and error. I do understand the theory/math of the plugin that I use. However, I've no idea on how they sound like. I just tinker with the knobs until it sounds right.

In addition, I'd like to learn efficient mean of transcribing existing music pieces so that I could reverse engineer them. Then I can make my own with similar style of the reference work.

Here's my plan in regards of music training that aims to improve my music composition and audio engineering skill:

  • [done] Pitch identification, individual note. i.e. CDEFGAB and with sharps and flats
  • [done] Melodic interval identification. i.e. m2 M2 m3 M3 P4 P5 m6 M6 m7 M7 P8
  • [postponed] Chord identification
    • base note, quality, variation, etc.
    • (postponing for microtonal melodic interval identification)
  • [postponed] Chord progression identification
  • [WIP] Microtonal melodic interval identification
  • Rhythm identification
  • Timbre identification (synth, filter, etc)
  • Maybe playing music on MIDI controller

In the past months, I've been using GNU Solfege for ear training. It worked well until I got stuck at harmoinic progression. Then I decided to take a step back and used another tool for training my skill on identifying the base note of a chord. What I've found was that I often miss the note by a semitone. So I thought that it might be a good idea to do microtonal melodic interval identification first. Maybe that'd ultimately help with chord progression identification.

As for timbre identification training, I believe that I'd have to use some kind of specialized tool for that as GNU Solfege doesn't support that. Maybe I could find one online. Or maybe I could develop an LV2 host that'd train me to identify sound produced by a synthesizer with random parameters.

It's going to take a while for me to complete this training. Hopefully I'd become a better music composer after this. Then I'll try composing music with my newly learned musical knowledge. Maybe I could create instrument template for making music as well.

Planned Project: Two Projects Sharing the Same PCB

I'd like to perform an experiment of developing two different product using the same PCB. That's mainly because, based on the experience of ilo nanpa, the units of production of my projects would be very small. Maybe the demand would be like 10~20 units. However, when I'm ordering the PCB, I'd have to order at least 5~10 pieces of them at once. Having multiple designs on the same PCB would allow me to dynamically allocate the same batch of physical PCB for multiple projects. This would allow me to have less unutilized PCB stored in my home.

I've come up with a preliminary schematics and I've tried sourcing the components for the projects. The only component that I couldn't source so far is the USB-capable microcontroller. I was told by multiple sellers that that particular model of microcontroller would take months to restock. So I guess I have to pick another one and redesign the schematics.

Planned Project: Shared PCB: USB Programmable 7-segment LED Device

This device is just like LED name badge. Except that it has 7-segment LEDs on it instead of LED matrix. Here's the planned feature:

  • A microcontroller with USB capability. Maybe STM32F070F6
  • 8-digits x 2 lines of 7-segment LEDs
  • Powered by either batteries or USB
  • USB interface for programming the content to be shown on the LEDs
  • Maybe a mechanical case

With this project, hopefully I can learn working with USB, which could be useful for the ilo musi project (the portable game console) if I wish to implement USB feature for that.

Planned Project: Shared PCB: Low-cost Internet-synchronized Clock

This device is just a LED clock with internet time sync mechanism. Apparently the auto-synchronized clocks are rather expensive in the market and it isn't worth my money to purchase them. So I'd like to develop my own one. Here's the planned feature:

  • ESP8266 microcontroller for time sync and configuration via Wi-Fi
  • Large 4-digit 7-segment LED display
  • Buzzer with alarm function
  • USB-powered
  • Mechanical case

With this project, I should be able to learn designing mechanical case, which'd be useful for designing the mechanical case of ilo musi project in the future.

Planned Project: ilo musi - New Features to be Developed

This was the main project that got suspended during limited operation mode. It's the portable game console project that I've spend a year working on. From now on I'm able to work on this project again. After working on all of the aforementioned projects, I'd like to make a better version of ilo musi. The following features are currently planned:

  • Microcontroller upgrade:
    • Get the one with more RAM so that the game can be loaded to the RAM. It eliminates flash wearing issue.
    • Alternatively, get the one with higher number of write cycles. The current 1k cycles is just too little.
  • Audio system overhaul
    • More playback channels
    • Increasing bit-depth from 1-bit to 8-bit
    • Hopefully can maintain the current performance by using precomputed tables of waveforms and stuffs
  • Allow exporting games developed for this console to the web
    • Technically it should be possible to export a C program to the web. I'd just need to port the API of the game console for the web
    • This is essential for people who doesn't own a console to play the games. It'd be helpful for game jams
  • A mechanical case for the console
    • Maybe use a 3D printer as the expected units of production is rather low
  • Maybe Arduino library support so that the device can be doubled as a kind of development board
  • Maybe Arduino-compatible pinout
  • Maybe USB support

End of Blogpost

Hopefully all these projects would lead Sadale to a wondrous future. It'd take Sadale a step closer to the dream of becoming "a cyber entity capable for creating literally anything possible using computers".


International Asynchronous Rock Paper Scissors Tournament 2020 had Ended

April 2, 2020, 1:51 p.m. RPS

Happy late April Fool! It's that time of the year again. International Asynchronous Rock Paper Scissors Tournament 2020

This year we've managed to invite quite a few new supporting organizations. Of which a few of them are the serious ones, like the ones that's registered in real life or software that have significant influence in the internet. We're very glad to have them supporting our event this year. These supporting organizations include:

  • Dimsumlabs, a hackerspace located in Hong Kong, China
  • G and B, a cram school located in Saitama, Japan
  • Bitcoin Knots, a Bitcoin node software that's a derivative of Bitcoin Core with a collection of improvements

It makes the logo count of the participation certificate of this year 15! That's more than we ever had in the past years!

So you wanna have this certificate? Tsk tsk! Too bad! This event had ended and you can't join anymore. You have to wait for next year. :P

This year we've got 158 participants. I ranked 150th with a score of -160. That's my worst performing year. :(

Oh. At least I've got this awesome participation certificate that you don't get to have! :P

Sadale's participation certificate of International Asynchronous Rock Paper Scissors Tournament 2020

It makes me feel weird to have a participation certificate that has my own logo on it. Anyway, I hope that I'd have better luck next year. I'm gonna get the gold then! :P