Page 1 of 5
Hello, and welcome to issue #33!
It has been some time since the last issue of the newsletter, but here we are again. A lot of new and exciting things have been going on around the Tech world. For example, the release of Apple’s M1 Chip, and all the positive reviews. It’s a shame that I won’t be buying one just now. I had an emergency and had to get a new computer a couple of months back, so I’ll have to wait a little bit longer.
Read More...
macOS comes with a good set of predefined security features designed to keep us safe, e.g. System Integrity Protection. These security features are great for everyday use, but they get in the way when we are trying to analyse what processes are doing, for example, attaching to a process using lldb. In this post, I’ll show you how to set up a Virtual Machine (VM) using Parallels Desktop and Disable SIP so you can use the VM as your research lab.
Read More...
Hello, and welcome to issue #32!
How are you doing? I hope everything is going well wherever you are. Things seem to have been settling down around here, so I’ve got more time to write. I completed my guide on macOS network programming in Swift. It covers three main frameworks:
- BSD Sockets
- Apple’s Network.framework
- SwiftNIO
With that, you should be able to build a wide range of network applications in macOS. As always, my guides are “pay what you want”. Including $0.00, so they are free, but if you find them useful and want to support me, you can buy them. Networks is a topic I always found fascinating, it is at the core of the Internet. But network programming also touches other areas like security, system administration, software engineering, and telecommunications. So it is a broad topic, but super fun to explore. Have a look at the guide and build some network applications, I bet you’ll have fun.
Read More...
Building a network application requires a good amount of effort, not only because of the complexities of the application you are building but also by the nature of network architecture. We have to define how are we going to handle the connections, the abstractions we’ll use to differentiate between network code and our application code, etcetera. Here is where SwiftNIO comes in, it provides an efficient non-blocking event-driven model, that is easy to use and extend. If we follow SwiftNIO’s model, we can take a lot of the boilerplate set up away and focus on building the logic of our applications. In this post, I’ll show you how to use SwiftNIO and understand its workflow by creating a server that receives text from clients and returns a modified version of the text.
Read More...
The ncurses(3) library powers many popular text-based applications, for example, emacs(1) and htop(1). The use of ncurses is not required to build text-based applications. We could use escape sequences. And for small command-line tools escape sequences are enough, but sometimes it’s nice to rely on a library that handles edge cases. In this post, we’ll build a text-based clock that uses SwiftCursesTerm, a wrapper library I created for using ncurses in Swift.
Read More...
Shoulder surfing is a real threat. And we, as software developers, should strive to provide safety to our users. One way to mitigate the inadvertent exposure of sensitive data is related to how we handle the input of sensitive data in our applications. Every time the user inputs sensitive data, we should hide it from prying eyes. In this post, we’ll learn how to read passwords and passphrases on a command-line tool built using Swift.
Read More...
Operating systems have provided command-line interfaces for decades now, and all but the simplest command-line tools require argument parsing. Due to years of use and refinement, there are many expectations on how command-line tools should handle arguments. Because of these popular conventions, creating an argument parser is not as simple as we might think.
Creating a bespoke argument parser might not be where we would like to spend most of our time. The good news is that you don’t have to, Apple open-sourced the Swift Argument Parser (SAP). In this post, we’ll learn how the Swift Argument Parser works, and how to use it for handling STDIN for composable command-line tools.
Read More...
Hello,
I found an interesting thread on Twitter explaining that when the Apple II early documentation was being written, they had to tell people to differentiate between how they type using typewriters and how they’ll type in the Apple II computer.
I don’t remember the typewriters I used missing the 0(zero) or 1(one) key, but I see how it was possible to use O(oh) and l(el) to replace 0 and 1 respectively. Or if you made a mistake typing -(dash) when you wanted to type = you could move your carriage back and put a _(underscore) under it :). I thought you might find it interesting.
Read More...
This is going to be a small article on the basics of working with Assembly Language. We won’t go deep into building extensive programs in assembly. The main idea of this post is to clarify the workflow for creating an assembly program and some key concepts so you can comfortably begin your assembly explorations.
Let’s first learn about the different assembly syntaxes and types.

Bash Beyond Basics
Increase your efficiency and understanding of the shell
If you are interested in this topic you might enjoy my course Bash Byond Basics.
This course helps you level up your bash skills. This is not a course on shell-scripting, is a course on improving your efficiency by showing you the features of bash that are seldom discussed and often ignored.
Read More...
Hello,
Sorry for the delay this week with the newsletter, I got stuck in an airport for longer than I expected. So this week’s newsletter is going to be quick.
When I’m travelling, I always enjoy the time off in the airports. I enjoy visiting bookstores, getting some coffee and listening to podcasts. There are some podcasts that I enjoy for the storytelling and some for their content. Twenty thousand Hertz is the perfect example of storytelling and content. It’s a podcast about “The stories behind the world’s most recognisable and interesting sounds”. I’m not much of a graphics type of person, as you can tell I prefer to design beautiful command-line tools than beautiful GUI’s. But one thing I enjoy is sounds. For example, the sounds of different accents. Or the sounds on video games and even the sound when my computer boots up. Anyways, If you like to hear about the history of some of the sounds you know, you’ll probably enjoy the Twenty thousand hertz Podcast. Give it a go and let me know what you think.
Read More...