I Converted my Sony A6000 into a Full-spectrum Camera

Lately, I found some oily dirt on the sensor of my old A6000 camera, leaving the photos I shot a few black spots. Being lazy and misled by some forum posts, I made a very wrong decision by cleaning it with isopropyl alcohol and cotton swab. Subsequently, part of the coating fell off, leaving an even larger dimmed mark while shooting.

After some further research, I found that the so-called sensor that people presume for A6000 is actually an IR filter in front of the actual image sensor, which means my camera is not totally ruined. I also found a good tutorial and video explaining on how to disassemble the camera and perform full-spectrum/ IR conversion. Hence, I decided to go for this crazy way, remove the IR filter and convert my camera into full-spectrum. Although it is super risky, I have nothing to lose now.

Continue reading

Discover STM32 with libopencm3 (4) : Keeping Time with SysTick Timer Interrupt

After playing around with basic GPIO operations, I would like to look into the usage of timers and interrupts. A good start is to make use of the system tick timer (SysTick), which doesn’t require an external signal.

In the previous programs I wrote, I used an empty loop to perform delay. It is inaccurate and is blocking. This time, I use SysTick to track the system up-time and toggle the LED on each second passed.

The program introduced only a few new lines of code based on the previous 2 programs, but as usual there are full of details that I can take notes on.

The completed code is tagged with 3_systick.

Continue reading

Discover STM32 with libopencm3 (3) : Digital Input

In the previous article, I practiced the most basic operation of a microcontroller using libopencm3, which is to set the output of a GPIO. This time I go one little step further to play with digital input.

The program this time is still very simple. I read the press status of the built-in push button and then toggle the built-in LED if it is pressed. The following aspects will be covered:

  • Pull-up/ Pull-down resistor for input GPIO
  • Setting/ Getting the state of a GPIO
  • Static function and void parameter
  • Debouncing

The completed code can be found in the tag “2_button“.

Continue reading

Discover STM32 with libopencm3 (2) : Blink

The first program I am going to write with libopencm3 is the “Hello World” of microcontroller – blink. In a typical tutorial, people may only learn how to write the code to setup a GPIO as output and toggle it. However, looking into deeper, we can also learn:

  • Basic clock initialization of microcontroller
  • Further details on GPIO output mode setup
  • Why a simple delay_cycle() is inaccurate

I started from the commit (tagged “minimal_template”) where I finished building the workspace template and the blink program was done in the next commit (tagged “1_blink”). In the future, you may use the tags to find out where I left off previously and where I finished the new section.

Continue reading

Discover STM32 with libopencm3 (1): Environment Setup

It may be a bit of a shame that after playing around with many different microcontrollers throughout the past 10 years, I still haven’t seriously learnt to program them in a hardcore way like using the official HAL. It doesn’t mean that I only know to program with the Arduino framework. I still used the official HAL to program nRF51 and MSP430, built drivers for various peripherals. Just that I never dived deep in a structured way.

One can get better understanding of how a microcontroller works internally by practicing bare metal programming. Now I want to get my hands dirty and go for one of the more hardcore framework: libopencm3. It’s an open source firmware library for various Cortex ARM MCUs. It is believed to be less bloated than ST’s HAL and has lower level of abstraction so the interaction with the microcontroller should be more direct and clearer for studying.

While I am learning to program STM32 with libopencm3, I will try to take notes on my experience and make it available to everyone.

Continue reading

Follow-up Configuration for my Home Nextcloud Server

Continuing from my previous post “Installing Nextcloud on Raspberry Pi OS from Scratch“, further configuration will be made to make the Nextcloud server run more properly.

In the overview of administration settings you can see some security and setup issues detected by Nextcloud. In the upcoming sections, I will resolve the most important among them.

Continue reading

Installing Nextcloud on Raspberry Pi OS from Scratch

Currently I am building a small home server with Raspberry Pi 4 to host several services that for my own use. One of these is Nextcloud — a versatile self-host cloud storage service.

Although Nextcloud provides a lot of “easy” ways to install the server, they all have some limitations. For instance, I’m going to run the server in my local network only so I don’t want to use a SSL certificate. The AIO docker image won’t let me do that. Also, I have several other services to be hosted on the Raspberry Pi, so it is not suitable to use the dedicated NextcloudPi OS image. The snap package might be the closest to the best choice but some configurations and features might be limited. Therefore, I decided to install Nextcloud manually from sketch. Freaky, there isn’t many clear and up-to-date tutorial on the Internet so I am going to make one for you all and myself.

Continue reading

Zimtschnecken einfach machen 自製蘋果肉桂捲

Kürzlich habe ich gemerkt, dass Lidl ein interessantes Produkt verkauft. Mit einem bereiten Teig und einer Apfel-Zimt-Füllung kann man leckere Zimtschnecken in 20 Minuten einfach selbst machen! Hier ist die Anleitung:

最近在Lidl超市發現他們新推出了一款頗為有趣的產品,是一個可以簡單自製美味可口的蘋果肉桂捲材料包。內含一捲製好的麵團和一樽蘋果肉桂醬,只花20分鐘即可製成。以下介紹一下做法:

Continue reading

Hello again! My New Manjaro Gnome Installation Log 2022

I used to be a Manjaro Linux user. However, since I bought my new MSI Prestige 15 laptop as well as left my software engineer job about 2 years ago, my journey as a daily Linux user paused.

Few months after I bought my new laptop, I actually tried to install Manjaro in an external harddisk to get a taste, but the experience was not very good: I found many optimizations provided by MSI to this Windows laptop don’t have a good and simple alternative on Linux. For example, the audio optimization powered by Nahimic, optimized color profiles by True Color, power and battery management in Creator Center. Especially the last one allow me to set battery charging limit and CPU power throttle in just a few clicks, which is so handy, keeping my battery health and usage time very well. Some hardware couldn’t work either in that Manjaro installation, like the micro SD card reader and the fingerprint sensor. Even the wireless module couldn’t always be detected. Since then, I chose to stick back with Windows and WSL.

Even so, I can’t stop thinking about using Linux as my daily system. The smooth and elegant UI/UX that Gnome DE gave is unforgettable. (Especially I can never get comfortable with the dull taskbar and the non-tabbed file explorer in Windows 10) Furthermore, while Linux should be one of my major career skills, I have a feeling that my experience with it is fading. I know that even if I don’t have the energy to dive into a serious Linux project at the moment, I should still work with Linux more often, passively refresh my knowledge. So, even if I expect that installing Linux on my laptop may not give me the best all-rounded user experience, and I may encounter system problems from time to time, spending extra time to resolve them (in some sense it is what I want now), I still want to give it a try again.

Continue reading

《This War of Mine》— 那些在戰火中求存的百姓們

在俄羅斯入侵烏克蘭後,波蘭遊戲開發公司11 bit studios隨即宣佈將旗下反戰遊戲《This War of Mine》未來一週的收益全數捐贈予烏克黑蘭紅十字會(相關公佈),同時遊戲亦正在以25折發售,鼓勵人們購買。在消息宣佈後他們在短短一日就已籌得16萬美金收益。

關於《This War of Mine》,從14年首次接觸後就感受到它是一款別具意義的遊戲,後來它更成為了波蘭教育部針對道德、哲學和戰爭的推薦教材。青鳥一直以來都想介紹一下這部遊戲,今次順水推舟將以前還沒有購入的DLC全數購入,重新體會,並向大家推介一番。

遊戲一開始會從兩組角色中隨機選擇一組作為故事開端。以上是以記者Katia、廚師Bruno,以及足球名星Pavle為組合的故事開端。往後亦會有更多的角色組合解鎖供玩家選擇。
Continue reading