Shrink PDF size with this command line trick
My wife tutors students throughout the year, and recently she wanted to assign homework by scanning some workbook pages into a file and emailing them to her students. She asked for my help, so I used Simple Scan, a document scanning application for GNOME.
read more
The surprising thing you can do in the D programming language
Software development can be a very complex process. As the code you write increases in size and complexity, it is important to keep it readable and easy to understand. In open source software development, many people collaborate on code with several interconnected and, quite often, frequently moving parts. This can make it hard for potential contributors to understand the codebases.
read more
Combine GraphQL with Java to build a flexible and modern API
In the past few years, developers have used RESTful web services over HTTP(s) to expose business functions using an API. The REST API uses server-driven fixed data responses, which means a developer (client) can't determine the result of a response. Instead, the server sends all the data back to the client, which is called over-fetching. The developer (client) needs to invoke multiple REST APIs after the first call until the client gets the required data, which results in under-fetching.
read more
Why I switched from Vim to Emacs
I have been a loyal Vim user since, well, I don't even remember any longer. Over the years, I tried other editors, but Vim commands and keyboard shortcuts are second nature to me, so much so that I ended up doing :w every time I wanted to save in another application. So, for a long time, I stuck with Vim for all my note-taking and writing.
read more
Use GNU on Windows with MinGW
If you're a hacker running Windows, you don't need a proprietary application to compile code. With the Minimalist GNU for Windows (MinGW) project, you can download and install the GNU Compiler Collection (GCC) along with several other essential GNU components to enable GNU Autotools on your Windows computer.
read more
What makes Java open source?
If you're using Java to write business applications, you may know that Java Standard Edition (SE) is not open source software. It is not managed by a foundation, like Python or JavaScript, and in January 2019, Oracle changed its policy to require a commercial license for any use of SE, from the developer's local environment to production.
read more
7 tips for giving and receiving better feedback
Getting feedback isn't always easy to handle, but we need to hear it to grow and learn. Feedback can take many forms—from formalized feedback in performance reviews to more informal feedback such as:
read more
Making open decisions in five steps
Making group decisions used to be easy.
The group's leader made a decision, and everyone else accepted it. The leader may have been a manager, a team lead, or the alpha in a social group. Was that decision the best one for the group? Did it take all relevant factors into account? It didn’t really matter, because people didn’t want to buck authority and face the ramifications. But this behavior was typical of life in hierarchical systems.
read more
How to use printf to format output
When I started learning Unix, I was introduced to the echo command pretty early in the process. Likewise, my initial Python lesson involved the print function. Picking up C++ and Java introduced me to cout and systemout. It seemed every language proudly had a convenient one-line method of producing output and advertised it like it was going out of style.
read more
Our favorite open source writing tools
Writing is one of the primary ways we communicate, and it's endlessly fascinating to see the different ways writers work. I can hardly imagine writing before computers and their ability to instantly edit and rearrange the words I've typed onto a screen. Likewise, I wonder whether people who started out writing on a typewriter process their thoughts differently, even on a modern word processor, or whether their workflow has changed and adapted because of these new tools.
read more
Why I still love tcsh after all these years
I consider myself a happy Bash user. However, when I started exploring Unix, it was on a proprietary Unix system that provided tcsh by default, so my earliest shell experiences were on a modern version of the C shell (csh). That turned out to be a fortunate accident because tcsh was also the shell of choice at the film studio where I worked later in my career.
read more
9 reasons I upgraded from AngularJS to Angular
In 2010, Google released AngularJS, an open source, JavaScript-based frontend structure for developing single-page applications (SPAs) for the internet. With its move to version 2.0 in 2016, the framework's name was shortened to Angular. AngularJS is still being developed and used, but Angular's advantages mean it's a smart idea to migrate to the newer version.
read more
An Android operating system that prioritizes mobile data privacy
Android and iOS devices are notorious for uploading your personal data to their cloud services without your permission. If you are concerned about your mobile data privacy, you have another option to consider for your next smartphone: the /e/ operating system, a free and open source, Android-based operating system. The eFoundation community is led by Gaël Duval, a legacy Linux developer and entrepreneur who founded Mandrake Linux in 1998.
read more
Use a Linux terminal on your Android phone
When it comes to ultra-mobile computing, I prefer the PocketCHIP or a Raspberry Pi with a screen rather than a mobile phone or tablet. These solutions offer a pure Linux environment that's as open source as the hardware allows and make no assumptions about how I expect to work.
read more
Edit images with Jupyter and Python
Recently, my kid wanted to make a coloring page from a favorite cartoon. My first thought was to use one of the open source programs on Linux that manipulate images, but then I remembered I have no idea how to use any of them. Luckily, I know how to use Jupyter and Python.
How hard can it be, I figured, to use Jupyter for that?
read more
Don't ignore .gitignore
I have noticed that many developers do not use a .gitignore file, even though it's a best practice to use one to designate files you don't want Git to track in version control. Because .gitignore can boost your code quality, you should not ignore .gitignore in your repositories.
What is .gitignore?Files in your working Git repository can be:
read more
How to read Lynis reports to improve Linux security
When I read Gaurav Kamathe's article Scan your Linux security with Lynis, it reminded me of my time as a systems administrator for the US Department of Labor. One of my duties was to keep our Unix servers hardened. Each quarter, an independent verifier came in to review our servers' security status. Each time on the day the verifier was scheduled to arrive, I ran Security Readiness Review (SRR), a scanning tool that used a large set of scripts to identify and report any security findings.
read more
How I customize my Mac terminal with open source tools
The command line is an important part of every developer's workflow. This makes it important that you set up your terminal in ways that improve your productivity and decrease your frustration.
In this article, I'll explain how I customize my macOS Z shell (zsh) terminal with iTerm2, Oh My Zsh, and Powerline10k. If you're a Mac user and would like to try it, follow along with this how-to. If you're a Linux user, you can read this article about themes and plugins for Zsh.
read more
Improve your focus and productivity with this Python tool
Limiting distractions helps you focus on your work so you can increase productivity. Prioritizing your tasks, especially when you have too much on your plate, is one way to help you focus on the most important or high-attention things on your list.
read more