A need of an asyncio Python library for MiFlora sensor

The Mi Flora sensor is a small Bluetooth Low Energy device that monitors soil moisture, air temperature and water conductivity. It is useful for agriculture, and due to its low price, it can be easily reach by small farms. On the other hand, it worths for us to invest more software support for it.

My idea is to make a Python asyncio-based library to help access it.

Objective:

Nâng cấp Debian cho BeagleBone Black

BeagleBone Black khi bán ra thường được cài sẵn Debian 7 (Wheezy). Đây là phiên bản quá cũ (phát hành 2013) nên các phần mềm đi theo nó thường không đáp ứng đủ nhu cầu. Ví dụ tại AgriConnect, tôi viết phần mềm để chạy trên BeagleBone, dùng ngôn ngữ Python, cần những feature của Python 3.5 trở lên. Thế nhưng trong repository của Debian 7 chỉ có Python 3.2. Việc cài Python từ source code thì hơi bất tiện vì quá trình biên dịch khá nặng trong khi sức mạnh CPU của BeagleBone thì có hạn. Bởi vậy, tốt hơn thì nên nâng cấp Debian để sử dụng phần mềm, thư viện mới hơn từ repo của nó. Ví dụ, Debian 8 (Jessie) thì có Python 3.4, Debian 9 (Stretch) thì có Python 3.5.

Để nâng cấp Debian thì tôi thường lấy image từ https://rcn-ee.com/rootfs/. Để ghi image ra thẻ nhớ thì tôi không dùng dd, mà dùng bmaptool để cho tốc độc cao hơn và biết quá trình ghi tới đâu.

Khi nâng cấp Debian thì có một điều cần lưu ý là nên nâng cấp từng bước, từ 7 lên 8, 8 lên 9, chứ không nên nhảy cóc từ 7 lên 9. Lí do là bị vướng bootloader và tính năng bật tắt cape của BeagleBone.

Hiện nay, trên https://rcn-ee.com/rootfs/ không còn image Debian 8 nữa. Tôi đã kịp giữ lại một bản sao ở đây: http://quan.hoabinh.vn/Downloads/BeagleBone/Debian-2016-04/.

My packages store for BeagleBone running Debian 9

I'm building IoT gateway based on BeagleBone Black at the startup AgriConnect, with Python as the primary programming language.

When the application grows complex, the board shows to be weak. We cannot find stronger board than BeagleBone, so the only option is to try to make our app run lighter. We try to adopt latest Python version, now is 3.6, to take advantage of optimization work in them. The latest Debian image for BeagleBone is stretch (Debian 9), which doesn't include Python 3.6 in its repository.

There are some backport packages of Python 3.6 for Debian 9, but only for amd64 arch. Fortunately they provide a build script. I can use it to build for armhf arch, which is in BeagleBone boards.

How to build for armhf? The board is weak, we should not run the build process directly on BeagleBone. It can take some days!

Fix: Gitg doesn't use monospace font in Ubuntu

In my work, I always use Git as command line. But I often use a GUI program to have better view on version history. Gitg is my usual choice.

Since the inclusion of Gtk3-based Gitg in Ubuntu, some annoying bugs have started to appear. One is that Gitg's source view doesn't respect Monospace font setting of the desktop environment.

Imgur

I filed a bug report to Gitg developers, but it seems that it is Ubuntu theme problem, so no fix for Gitg is given.

Phần mềm nguồn mở và chủ nghĩa xã hội

Bài viết này Why We Chose Vue.js ví von tếu thật: Nếu như Backbone là vô chính phủ (không ai lãnh trách nhiệm), Angular là chế độ độc tài thì Vue.js là chủ nghĩa xã hội.

Nói tới sự tương quan giữa phần mềm và chính trị mới nhớ, phong cách của phần mềm nguồn mở giống như chủ nghĩa xã hội: làm theo năng lực, hưởng theo nhu cầu. Bạn viết phần mềm với một tâm thế không mong cầu lợi nhuận (mặc dù phần mềm nguồn mở vẫn trả lại lợi ích cho bạn một cách gián tiếp), bạn viết phần mềm rồi quăng mã nguồn ra cho cộng đồng, ai thích xài thì xài, ai thấy cần cải tiến thì cứ việc sửa trên mã nguồn đó rồi lại đóng góp trở lại cho cộng đồng. Mà khi bạn cho không phần mềm cho cộng đồng, không có nghĩa là bạn quăng ra cái đống bùi nhùi cẩu thả. Các dự án phần mềm nguồn mở đều đặt chất lượng và tính cộng tác lên hàng đầu, nên code phải viết cẩn thận sạch sẽ, test tiếc cẩn thận, tài liệu rõ ràng đầy đủ. Phần mềm nguồn mở không bị áp đặt về thời hạn hoàn thành nên không có lý do gì để rút ngắn công đoạn.

Phần mềm nguồn mở đã trở thành một dòng chảy, một xu thế không thể cưỡng lại. Những cái tên quen thuộc như Chromium (lõi của Chrome và Cốc Cốc), Firefox, Android, UniKey, Java, Python, NodeJS, MySQL... đều là phần mềm nguồn mở. Microsoft trước kia là "thế lực thù địch", từng cố gắng thuyết phục khách hàng tránh xa phần mềm nguồn mở bằng câu nói "Linux là cộng sản" (vâng, đây gọi là sự "tự do tư tưởng" của nền chính trị Mĩ, khi gắn vào đầu người dân một mặc định "cộng sản là thứ xấu xa"). Thế nhưng 2 - 3 năm gần đây Microsoft đã chuyển hướng về phía phần mềm nguồn mở một cách mạnh mẽ và đóng góp nhiều vào các dự án khác nhau.

Cũng giống như phong trào CNXH ngoài đời thực, khi một số quốc gia tự xưng CNXH lại có màu sắc "độc tài" trong đó, thì một số dự án phần mềm nguồn mở lớn cũng xoay quanh những "nhà độc tài", mà các lập trình viên trong đó gọi vui là "Benevolent Dictator For Life", như Linux, Python.