Brief: Filmulator is an open source raw photo editing application with library management focusing on simplicity, ease of use and streamlined workflow.
Filmulator: Raw Image Editor for Linux (and Windows)
There are a bunch of raw photo editors for Linux. Filmulator is one of them. Filmulator aims to make raw image editing simple by giving only the essential elements. It also adds the feature of library handling which is a plus if you are looking for a decent application for your camera images.
For those unaware, raw image file is a minimally processed, uncompressed file. In other words, it is untouched digital file with no compression and minimal processing applied to it. Professional photographers prefer to capture photos in raw file and process it themselves. Normal people take photos from their smartphones and it is usually compressed in JPEG format or filtered.
Let’s see what features you get in the Filmulator editor.
Features of Filmulator
Filmulator claims that it is not the typical “film effect filter” that merely copies the outward characteristics of film. Instead, Filmulator gets to the root of what makes film so appealing: the development process.
It simulates film development process: from “exposure” of film, to the growth of “silver crystals” within each pixel, to the diffusion of “developer” both between neighboring pixels and with the bulk developer in the tank.
Fimulator developer says that the simulation brings about the following benefits:
Large bright regions become darker, compressing the output dynamic range.
Small bright regions make their surroundings darker, enhancing local contrast.
In bright regions, saturation is enhanced, helping retain color in blue skies, brighter skin tones, and sunsets.
In extremely saturated regions, the brightness is attenuated, helping retain detail e.g. in flowers.
Here’s a comparison of a raw image processed by Filmulator to enhance colors in a natural manner without inducing color clipping.
Installing Filmulator on Ubuntu/Linux
There is an AppImage available for Filmulator so that you can use it easily on Linux. Using AppImage files is really simple. You download it, make it executable and make it run by double-clicking on it.
There is also a Windows version available for Windows users. Apart from that, you can always head over to its GitHub repository and peek into its source code.
Fimulator’s design ideology is to have the best tool for any job, and only that one tool. This means compromising flexibility, but gaining a greatly simplified and streamlined user interface.
I am not even an amateur photographer, let alone be a professional one. I do not own a DSLR or other high-end photography equipments. For this reason, I cannot test and share my experience on the usefulness of Filmulator.
If you have more experience dealing with raw images, I let you try Filmulator and share your opinion on it. There is an AppImage available so you can quickly test it and see if it fits your needs or not.
Single-board computers (SBC) are very popular with tinkerers and hobbyists alike, they offer a lot of functionality in a very small form factor. An SBC has the CPU, GPU, memory, IO ports, etc. on a small circuit board and users can add functionality by adding new devices to the GPIO ports. Some of the more popular SBCs include the Raspberry Pi and Arduino family of products.
However, there is an increasing demand for SBC’s that can be used for edge compute applications like Artificial Intelligence (AI) or Deep Learning (DL) and there are quite a few. The list below consists of some of the best SBCs that have been developed for edge computing.
The list is in no particular order of ranking. Some links here are affiliate links. Please read our affiliate policy.
1. Nvidia Jetson Family
Nvidia has a great lineup of SBCs that cater to AI developers and hobbyists alike. Their line of “Jetson Developer Kits” are some of the most powerful and value for money SBCs available in the market. Below is a list of their offerings.
Nvidia Jetson Nano Developer Kit
Starting at $59, the Jetson Nano is the cheapest SBC in the list and offers a good price to performance ratio. It can run multiple neural networks alongside other applications such as object detection, segmentation, speech processing and image classification.
The Jetson Nano is aimed towards AI enthusiasts, hobbyists and developers who want to do projects by implementing AI.
The Jetson Nano is being offered in two variants: 4 GB and 2 GB. The main differences between the two are, the price, RAM capacity and IO ports being offered. The 4 GB variant has been showcased in the image above.
The Jetson Xavier NX is a step up from the Jetson Nano and is aimed more towards OEMs, start-ups and AI developers.
The Jetson Xavier NX is meant for applications that need more serious AI processing power that an entry level offering like the Jetson Nano simply can’t deliver. The Jetson Xavier NX is being offered at $386.99.
Key Specifications
CPU: 6-core NVIDIA Carmel ARM v8.2 64-bit CPU
GPU: NVIDIA Volta architecture with 384 NVIDIA CUDA cores and 48 Tensor cores
The Jetson AGX Xavier is the flagship product of the Jetson family, it is meant to be deployed in servers and AI robotics applications in industries such as manufacturing, retail, automobile, agriculture, etc.
Coming in at $694.91, the Jetson AGX Xavier is not meant for beginners, it is meant for developers who want top-tier edge compute performance at their disposal and for companies who want good scalability for their applications.
Key Specifications
CPU: 8-core ARM v8.2 64-bit CPU
GPU: 512-core Volta GPU with Tensor Cores
DL Accelerator: 2x NVDLA Engines
Vision Accelerator: 7-Way VLIW Vision Processor
Memory: 32 GB 256-Bit LPDDR4x @ 137 GB/s
Storage: 32 GB eMMC 5.1 and uSD/UFS Card Socket for storage expansion
The ROCK Pi N10, developed by Radxa is the second cheapest offering in this list with its base variant coming in at $99, its range topping variant comes in at $169,
The ROCK Pi N10 is equipped with a NPU (Neural Processing Unit) that helps it in processing AI/ Deep Learning workloads with ease. It offers up to 3 TOPS (Tera Operations Per Second) of performance.
It is being offered in three variants namely, ROCK Pi N10 Model A, ROCK Pi N10 Model B, ROCK Pi N10 Model C, the only differences between these variants are the price, RAM and Storage capacities.
The ROCK Pi N10 is available for purchase through Seeed Studio.
Key Specifications
CPU: RK3399Pro with 2-core Cortex-A72 @ 1.8 GHz and 4-Core Cortex-A53 @ 1.4 GHz
GPU: Mali T860MP4
NPU: Supports 8bit/16bit computing with up to 3.0 TOPS computing power
Memory: 4 GB/6 GB/8 GB 64-bit LPDDR3 @ 1866 Mb/s
Storage: 16 GB/32 GB/64 GB eMMC
Display: HDMI 2.0
3. BeagleBone AI
The BeagleBone AI is BeagleBoard.org‘s open source SBC is meant to bridge the gap between small SBCs and more powerful industrial computers. The hardware and software of the BeagleBoard are completely open source.
It is meant for use in the automation of homes, industries and other commercial use cases. It is priced at ~$110, the price varies across dealers, for more info check their website.
Key Specifications
CPU: Texas Instrument AM5729 with Dual-core ARM Cortex-A15 @ 1.5GHz
The BeagleV is the latest launch in the list, it is an SBC that runs Linux out of the box and has a RISC-V CPU.
It is capable of running edge compute applications effortlessly, to know more about the BeagleV check our coverage of the launch.
The BeagleV will be getting two variants, a 4 GB RAM variant and an 8 GB RAM variant. Pricing starts at $119 for the base model and $149 for the 8 GB RAM model, it is up for pre-order through their website.
Key Specifications
CPU: RISC-V U74 2-Core @ 1.0GHz
DSP: Vision DSP Tensilica-VP6
DL Accelerator: NVDLA Engine 1-core
NPU: Neural Network Engine
RAM: 4 GB/8 GB (2 x 4 GB) LPDDR4 SDRAM
Storage: microSD slot
Display: HDMI 1.4
5. HiKey970
HiKey970 is 96 Boards first SBC meant for edge compute applications and is the world’s first dedicated NPU AI platform.
The HiKey970 features an CPU, GPU and an NPU for accelerating AI performance, it can also be used for training and building DL (Deep Learning) models.
The HiKey970 is priced at $299 and can be bought from their official store.
Key Specifications
SoC: HiSilicon Kirin 970
CPU: ARM Cortex-A73 4-Core @ 2.36GHz and ARM Cortex-A53 4-Core @ 1.8GHz
GPU: ARM Mali-G72 MP12
RAM: 6 GB LPDDR4X @ 1866MHz
Storage: 64 GB UFS 2.1 microSD
Display: HDMI and 4 line MIPI/LCD port
6. Google Coral Dev Board
The Coral Dev Board is Google’s first attempt at an SBC dedicated for edge computing. It is capable of performing high speed ML (Machine Learning) inferencing and has support for TensorFlow Lite and AutoML Vision Edge.
Display: HDMI 2.0a, 39-pin FFC connector for MIPI-DSI display (4-lane) and 24-pin FFC connector for MIPI-CSI2 camera (4-lane)
7. Google Coral Dev Board Mini
The Coral Dev Board Mini is the successor to the Coral Dev Board, it packs in more processing power into a smaller form factor and a lower price point of $99.99.
The Coral Dev Board Mini can be purchased from their official web store.
Key Specifications
CPU: MediaTek 8167s SoC (4-core Arm Cortex-A35)
ML Accelerator: Google Edge TPU coprocessor
GPU: IMG PowerVR GE8300
RAM: 2 GB LPDDR3
Storage: 8 GB eMMC
Display: micro HDMI (1.4), 24-pin FFC connector for MIPI-CSI2 camera (4-lane) and 24-pin FFC connector for MIPI-DSI display (4-lane)
There is an SBC available in every price range for edge compute applications. Some are just basic, like the Nvidia Jetson Nano or the BeagleBone AI and some are performance oriented models like the BeagleV and Nvidia Jetson AGX Xavier.
If you are looking for something more universal you can check our article on Raspberry Pi alternatives that could help you in finding a suitable SBC for your use case.
If I missed any SBC dedicated for edge compute, feel free to let me know in the comments below.
Author info: Sourav Rudra is a FOSS Enthusiast with love for Gaming Rigs/Workstation building.
There are two ways to run a shell script in Linux. You can use:
bash script.sh
Or you can execute the shell script like this:
./script.sh
That maybe simple, but it doesn’t explain a lot. Don’t worry, I’ll do the necessary explaining with examples so that you understand why a particular syntax is used in the given format while running a shell script.
I am going to use this one line shell script to make things as uncomplicated as possible:
Keep in mind that it needs to be a shell script that you pass as argument. A shell script is composed of commands. If you use a normal text file, it will complain about incorrect commands.
In this approach, you explicitly specified that you want to use bash as the interpreter for the script.
Shell is just a program and bash is an implementation of that. There are other such shells program like ksh, zsh, etc. If you have other shells installed, you can use that as well instead of bash.
For example, I installed zsh and used it to run the same script:
Method 2: Execute shell script by specifying its path
The other method to run a shell script is by providing its path. But for that to be possible, your file must be executable. Otherwise, you’ll have “permission denied” error when you try to execute the script.
So first you need to make sure that your script has the execute permission. You can use the chmod command to give yourself this permission like this:
chmod u+x script.sh
Once your script is executable, all you need to do is to type the file name along with its absolute or relative path. Most often you are in the same directory so you just use it like this:
./script.sh
If you are not in the same directory as your script, you can specify it the absolute or relative path to the script:
That ./ before the script is important (when you are in the same directory as the script)
Why can you not use the script name when you are in the same directory? That is because your Linux systems looks for the executables to run in a few selected directories that are specified in the PATH variable.
This means that any file with execute permissions in one of the following directories can be executed from anywhere in the system:
/home/abhishek/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
The binaries or executable files for Linux commands like ls, cat etc are located in one of those directories. This is why you are able to run these commands from anywhere on your system just by using their names. See, the ls command is located in /usr/bin directory.
When you specify the script WITHOUT the absolute or relative path, it cannot find it in the directories mentioned in the PATH variable.
Why most shell scripts contain #! /bin/bash at the beginning of the shell scripts?
Remember how I mentioned that shell is just a program and there are different implementations of shells.
When you use the #! /bin/bash, you are specifying that the script is to run with bash as interpreter. If you don’t do that and run a script in ./script.sh manner, it is usually run with whatever shell you are running.
Does it matter? It could. See, most of the shell syntax is common in all kind of shell but some might differ.
For example, the array behavior is different in bash and zsh shells. In zsh, the array index starts at 1 instead of 0.
Using #! /bin/bash indicates that the script is bash shell script and should be run with bash as interpreter irrespective of the shell which is being used on the system. If you are using zsh specific syntax, you can indicate that it is zsh script by adding #! /bin/zsh as the first line of the script.
The space between #! /bin/bash doesn’t matter. You can also use #!/bin/bash.
Was it helpful?
I hope this article added to your Linux knowledge. If you still have questions or suggestions, please leave a comment.
Expert users can still nitpick this article about things I missed out. But the problem with such beginner topics is that it is not easy to find the right balance of information and avoid having too much or too few details.
Just like some other XMPP desktop clients, Movim is a web-based XMPP front-end to let you utilize it as a federated social media.
Since it relies on XMPP network, you can interact with other users utilizing XMPP clients such as Conversations (for Android) and Dino (for Desktop).
In case you didn’t know, XMPP is an open-standard for messaging.
So, Movim can act as your decentralized messaging app or a full-fledged social media platform giving you an all-in-one experience without relying on a centralized network.
It offers many features that can appeal to a wide variety of users. Let me briefly highlight most of the important ones.
Features of Movim
Chatroom
Ability to organize video conferences
Publish articles/stories publicly to all federated network
Tweak the privacy setting of your post
Easily talk with other Movim users or XMPP users with different clients
Automatically embed your links and images to your post
Explore topics easily using hashtags
Ability to follow a topic or publication
Auto-save to draft when you type in a post
Supports Markdown syntax to let you publish informative posts and start a publication on the network for free
React to chat messages
Supports GIFs and funny Stickers
Edit or delete your messages
Supports screen sharing
Supports night mode
Self-hosting option available
Offers a free public instance as well
Cross-platform web support
Using Movim XMPP Client
In addition to all the features listed above, it is also worth noting that you can also find a Movim mobile app on F-Droid.
If you have an iOS device, you might have a hard time looking for a good XMPP client (I’m not aware of any decent options). If you rule that out, you should not have any issues using it on your Android device.
For desktop, you can simply use Movim’s public instance, sign up for an account, and use it on your favorite browser no matter which platform you’re on.
You can also deploy your instance by using the Docker Compose script, the Debian package, or any other methods mentioned in their GitHub page.
While the idea of decentralized social media platforms is good, not everyone would prefer to use it because they probably do not have friends on it and the user experience is not the best out there.
That being said, XMPP clients like Movim are trying to make a federated social platform that a general consumer can easily use without any hiccups.
Just like it took a while for users to look for WhatsApp alternatives, the craze for decentralized social media platform like Movim and Mastodon is a possibility in the near future as well.
If you like it, do consider making a donation to their project.
What do you think about Movim? Let me know your thoughts in the comments below.
Remove applications from Ubuntu Software Center (for desktop users)
Remove applications using apt remove command
Remove snap applications in command line (intermediate to advanced users)
Let’s see these steps one by one.
Method 1: Remove applications using Ubuntu Software Center
Start the Software Center application. You should find it in the dock on the left side or search for it in the menu.
You can see the installed applications in the Installed tab.
If you don’t see a program here, try to use the search feature.
When you open an installed application, you should see the option to remove it. Click on it.
It will ask for your account password. Enter it and the applications will be removed in seconds.
This method works pretty well except in the case when Software Center is misbehaving (it does that a lot) or if the program is a software library or some other command line utility. You can always resort to the terminal in such cases.
Method 2: Remove programs from Ubuntu using command line
You know that you can use apt-get install or apt install for installing applications. For uninstalling, you don’t use the apt-get uninstall command but apt-get remove or apt remove.
All you need to do is to use the command in the following fashion:
sudo apt remove program_name
You’ll be asked to enter your account password. When you enter it, nothing is visible on the screen. That’s normal. Just type it blindly and press enter.
The program won’t be removed immediately. You need to confirm it. When it asks for your conformation, press the enter key or Y key:
Keep in mind that you’ll have to use the exact package name in the apt remove command otherwise it will throw ‘unable to locate package error‘.
Don’t worry if you don’t remember the exact program name. You can utilize the super useful tab completion. It’s one of the most useful Linux command line tips that you must know.
What you can do is to type the first few letters of the program you want to uninstall. And then hit the tab key. It will show all the installed packages that match those letters at the beginning of their names.
When you see the desired package, you can type its complete name and remove it.
What if you do not know the exact package name or even the starting letters? Well, you can list all the installed packages in Ubuntu and grep with whatever your memory serves.
For example, the command below will show all the installed packages that have the string ‘my’ in its name anywhere, not just the beginning.
apt list --installed | grep -i my
That’s cool, isn’t it? Just be careful with the package name when using the remove command in Ubuntu.
Tip: Using apt purge for removing package (advanced users)
When you remove a package in Ubuntu, the packaged data is removed, but it may leave small, modified user configuration files. This is intentional because if you install the same program again, it would use those configuration files.
If you want to remove it completely, you can use apt purge command. You can use it instead of apt remove command or after running the apt remove command.
sudo apt purge program_name
Keep in mind that the purge command won’t remove any data or configuration file stored in the home directory of a user.
Method 3: Uninstall Snap applications in Ubuntu
The previous method works with the DEB packages that you installed using apt command, software center or directly from the deb file.
Ubuntu also has a new packaging system called Snap. Most of the software you find in the Ubuntu Software Center are in this Snap package format.
You can remove these applications from the Ubuntu Software Center easily but if you want to use the command line, here’s what you should do.
List all the snap applications installed to get the package name.
snap list
Now use the package name to remove the application from Ubuntu. You won’t be asked for confirmation before removal.
sudo snap remove package_name
Bonus Tip: Clean up your system with one magical command
Alright! You learned to remove the applications. Now let me tell you about a simple command that cleans up leftover package traces like dependencies that are no longer used, old Linux kernel headers that won’t be used anymore.
In the terminal, just run this command:
sudo apt autoremove
This is a safe command, and it will easily free up a few hundred MB’s of disk space.
Conclusion
You learned three ways of removing applications from Ubuntu Linux. I covered both GUI and command line methods so that you are aware of all the options.
I hope you find this simple tutorial helpful as an Ubuntu beginner. Questions and suggestions are always welcome.
I love using dark mode in Ubuntu. It’s soothing on the eyes and makes the system look aesthetically more pleasing, in my opinion.
One minor annoyance I noticed is with gedit text editor and if you use it with the dark mode in your system, you might have encountered it too.
By default, gedit highlights the line where your cursor is. That’s a useful feature but it becomes a pain if you are using dark mode in your Linux system. Why? Because the highlighted text is not readable anymore. Have a look at it yourself:
If you select the text, it becomes readable but it’s not really a pleasant reading or editing experience.
The good thing is that you don’t have to live with it. I’ll show a couple of steps you can take to enjoy dark mode system and gedit together.
Making gedit reader-friendly in dark mode
You basically have two options:
Disable highlight the current line but then you’ll have to figure out which line you are at.
Change the default color settings but then the colors of the editor will be slightly different, and it won’t switch to light mode automatically if you change the system theme.
It’s a workaround and compromise that you’ll have to make until the gedit or GNOME developers fix the issue.
Option 1: Disable highlighting current line
When you have gedit opened, click on the hamburger menu and select Preferences.
In the View tab, you should see the “Highlight current line” option under Highlighting section. Uncheck this. The effects are visible immediately.
Highlighting current line is a usable feature and if you want to continue using it, opt for the second option.
Option 2: Change the editor color theme
In the Preferences window, go to Font & Colors tab and change the color scheme to Oblivion, Solarized Dark or Cobalt.
As I mentioned earlier, the drawback is that when you switch the system theme to a light theme, the editor theme isn’t switched automatically to the light theme.
A bug that should be fixed by devs
There are several text editors available for Linux but for quick reading or editing a text file, I prefer using gedit. It’s a minor annoyance but an annoyance nonetheless. The developers should fix it in future version of this awesome text editor so that we don’t have to resort to these worarounds.
How about you? Do you use dark mode on your system or light mode? Had you noticed this trouble with gedit? Did you take any steps to fix it? Feel free to share your experience.