I blog about anything I find interesting, and since I have a lot of varied interests, my blog entries are kind of all over the place. You can browse my tags to sort them by topic and see which ones I frequently write about, or the archive has a complete history of my posts, dating back to 2008!
Besides my blog, I have pages for my creative projects, which are linked to on the navigation bar.
I write a lot about Linux and Android, Minecraft, and I like to rant about stuff. Generally anything that makes me curious. Also check out my Bookmarks for all sorts of cool websites about various topics I'm interested in.
For the geeks: this website respects your privacy and doesn't run any third party ads or analytics. This site speaks HTTP and doesn't require any JavaScript to work.
Status of mobile Linux apps on Pinephone (Screenshots)The Pinephone is a smartphone that runs mainline GNU/Linux software instead of Android, and the software is still a work in progress. I've had a Pinephone since about May of 2020 and have been watching the rapid growth of the software ecosystem for it, so this blog post is kind of a "status update" in the form of screenshots of various apps that are already running great on this device.
I'm not a software developer in that space, so props to the whole open source community that's making this all come together!
The question is: "is this phone daily driver capable yet?" and to that I say: it's getting close! I haven't yet tested putting my SIM card into the phone and trying voice calls and SMS texts, but I've heard from others that these are working and reliable for a long time. MMS picture messages are still a work in progress though, and they say the phone doesn't wake up quickly if an incoming phone call comes in while the phone is sleeping.
All that aside, the big apps for me to have working to call this a daily driver phone should include:
And: I have basically all my bases covered and then some! This blog post goes through some of my favorite apps that work well on Linux mobile.
Update (Jan 24 2021): Chromium works very well and with better performance than Firefox + webapp support. Screenshots and info added to this post.
The game I've been working on, Project: Doodle now runs a little bit better on the Pine64 Pinephone, an upcoming smartphone that runs mainline GNU/Linux instead of Android.
On previous Pinephone Linux distributions, SDL2 applications like mine were not communicating well with the on-screen keyboard (it was reading completely wrong key symbols, so arrow keys and keyboard input weren't recognized). It seems they ironed out some of those kinks so the keyboard input works and the game is more or less playable:
The "Play Mode" is not super great because it seems only one keypress can be registered at a time (so Up arrow to jump can't be combined with Left or Right arrow to move). But levels can be drawn and you can interact with pop-up windows like the Doodad Dropper to drag things into your level. "Right-click" support is uncertain, but if you want to remove a doodad from your level you could drag it back onto the Doodad Dropper window since the normal right-click to delete doesn't seem working yet.
Project: Doodle is not initially designed for mobile but may get there some day. This is the desktop Linux version of the game running on Pinephone and may be useful for me to design somewhat mobile-friendly interfaces ahead of actually attempting an Android OS build of the game. (Android support is pretty far off, don't hold your breath!)
In case you have an ARM64 Linux device like the Pinephone and wanna check it out, a download for the recent 0.4.0 release is available here:
Tip: run it like `./doodle -w maximized` for it to maximize its window and fit best on the screen size of Pinephone.
This was built on Mobian and should work on most distros but may not be working on postmarketOS, as its Alpine Linux base doesn't use GNU libc.
Here is another alpha release of the videogame I've been working on, code named Project: Doodle.
I've updated the user documentation that ships with the game. It now has tons of good information and screenshots showing various features of the game. I recommend checking it out to get a feel for what this game is about.
I'm working on a proper website for this game, but for now the Guidebook is a good stand-in!
This is a "draw your own levels and play them" kind of game, like Mario Maker but completely free form. In the level editor you can draw whatever level you want, pick which colors are solid and which are fire, and drag-and-drop 'doodads' into your level to add interactive elements like keys and buttons.
And those doodads you can drag into your level? There will be some built-in ones but you can also create your own -- and program them with JavaScript to do whatever you want. This game is designed to be super mod friendly. In the future you'll be able to bundle your custom levels, with your custom doodads, and share them easily with others: your level will bring its custom doodads with it and "just work" on another computer.
See the About Page of the user manual for an introduction.
Note: "Project: Doodle" is just its code name while it's in early alpha and looking ugly.
Read this blog post for changes and download links.
The Pinephone is a new smartphone in the works that will run mainline Linux as its operating system instead of Android, and already has a lot of Linux distributions that run on it. The idea is it would run all the same Linux software you get on desktops, servers or Raspberry Pi's and give you a private alternative to Android devices which send a lot of data up to Google.
They've already released some phones, and I have one that came installed with Ubuntu Touch, and I've been testing the operating systems as they progress. Linux on Mobile is still very early, most graphical apps don't fit on the tiny screen size of a smartphone, battery life can still be improved, camera quality can be improved. But progress is advancing rapidly and there's a growing number of apps that work and provide basic "smart phone" functions: calls, texts, email, calculator, calendar, maps, password manager (KeePass), web browsers.
My dream is to use a Pinephone as my daily driver, but it's still got a long ways to go, and I got impatient and instead installed a de-googled Android ROM onto my existing Pixel phone.
And having used both Linux and Android on mobile, I've determined that a de-googled Android ROM is a very solid alternative to a Linux phone while you wait for Linux phones to get better:
Details below:
Here's another alpha release of the game I've been working on, codenamed Project: Doodle. This time, it has new sprites for the player character.
The new player character is larger in size (33x54 pixels) than the previous 32x32 placeholder was, so the three example levels that came with v0.2.0 no longer worked: the character would get stuck in the narrow hallways. However, this release comes with two new example levels that look better than the older ones anyway.
I may scale up the size of Doors and things to accommodate the larger character as doorways now feel a little tight to draw.
When we're talking about "Linux" the operating system, we really mean one of the thousands of Linux distributions that exist out there. Linux itself is just the kernel -- the lowest level part of the operating system that deals with hardware, drivers, process and memory management. A distribution is all the stuff on top: the software, the desktop environments and so on.
Most Linux distributions can be called "GNU/Linux" because they include the Linux
kernel and a suite of software tools from the GNU
project. These are mostly command-line programs like grep
and less
as well as
deeper system components like the GNU C Library
(glibc) which is used by basically every program on the system.
When you're new to Linux you may look at this enormous list of distributions and be paralyzed as to which one you should pick. Fedora, or Ubuntu? Or Debian or Arch?
People will often tell you: it doesn't really matter, all these distributions
are running more-or-less the same software and the biggest differences between
them is their package manager and
what format their software is shipped in. On Fedora you might dnf install firefox
or dnf update thunderbird
whereas on Debian you would apt install firefox
or on Alpine you'll apk add firefox
. Just learn
the set of commands for your distro of choice and you're good. Software on
Fedora-like distros come in .rpm packages, Debian-likes come in .deb, but mainly
you'll install software through the official repositories of your distro.
But there's more differences between the distros that they don't tell you about:
Docker is a commonly used tool in modern software development to deploy applications to web servers in a consistent, reproducible manner. It's been described as basically a "light-weight virtual machine" and it makes use of a Linux kernel feature known as containers.
How does it work?
In this post I'll try and briefly sum up what Linux containers do and what problem they solve for developers.
This blog post is non-technical: I won't be showing docker commands or any such details, there is plenty of better documentation on the Internet for that, but instead a high level overview of how we got here and what containers do for us today.
The Pinephone is "an open source smart phone supported by all major Linux phone projects." I'd been keeping my eye on these things for a few years now and finally got the Pinephone in my hands earlier this week to try it out.
The idea with devices like this (as well as the Librem 5 phone) is that it's a smartphone that runs standard mainline GNU/Linux software instead of Android. This means root passwords (or sudo), SSH servers, full admin control of the device, and ability to run all the familiar Linux software that you get on a desktop PC, server, or Raspberry Pi type of device.
Importantly this means no Google Play Services or built-in spyware and the user is in control of their device. More privacy, but not necessarily more security.
There are many Linux operating systems available for the device already and I've tested out Ubuntu Touch UBports, postmarketOS and Mobian/Phosh and here are some of my impressions so far.
tl;dr.:
See also: I'm maintaining a Linux on Phones page on my site's wiki to collect notes, config tweaks, software I found that works and so on.
Here is another alpha release of the videogame I've been working on, codenamed Project: Doodle.
It's a drawing-based maze game where you can design your own levels freehand and play it as a 2D platformer game.
This release brings Sound Effects and Menus to the game.
New features:
The Guidebook contains some help and documentation on the game. In particular, it teaches you how you can create custom doodads and program them with JavaScript. Future releases of the game will include more fleshed-out versions of the guidebook.
Mac users: let me know if the performance is horrible or if sound effects aren't working. I only tested the game briefly in a virtual machine that I use to build the game, and it only ran at ~30 FPS and my VM had no audio drivers. Press the F3 key to open the debug menu and see the frames per second.
Oliver asks:
Hello,
I'm looking for a way to solve the following scenario using Rivescript and Python. The chatbot has no answer to a question, in this case it asks the user for the correct answer and records it in the rivescript file.
Do you have an idea? Does it even work in Rivescript?
Thanks
Best wishes Oliver
Hey Oliver
This can be done with a little bit of creativity. Self-learning bots aren't an officially supported feature in RiveScript, but you can get something to work using object macros that write new replies out to .rive
files to grow the bot's brain over time.
There's an example for this in the JavaScript edition of RiveScript, but its logic could be ported over to Python easily enough: https://github.com/aichaos/rivescript-js/tree/master/eg/learning
RiveScript Playground example you can test in your web browser: https://play.rivescript.com/s/0r4ZYvklR9
The basic ideas are:
+ when i say * you say *
allows the user to teach the bot a new reply.
rs.set_uservar(username, "origMessage", message)
when i say * you say *
trigger re-parses the user's message to get the original punctuation and formatting they used.learned.rive
file and also calls stream()
to load the new reply for immediate use by the bot "right now."The JavaScript example linked above works whether or not the program set the origMessage
variable: if the program did not set the variable, the learned reply is just somewhat limited to only include simple text with very few punctuation symbols preserved.
0.0018s
.