Language Selection

English French German Italian Portuguese Spanish

Bill Wear, Developer Advocate for MAAS: foo.c

Filed under
OS
Development
Ubuntu

I remember my first foo. It was September, 1974, on a PDP-11/40, in the second-floor lab at the local community college. It was an amazing experience for a fourteen-year-old, admitted at 12 to audit night classes because his dad was a part-time instructor and full-time polymath.

I should warn you, I’m not the genius in the room. I maintained a B average in math and electrical engineering, but A+ averages in English, languages, programming, and organic chemistry (yeah, about that….). The genius was my Dad, the math wizard, the US Navy CIC Officer. More on him in a later blog — he’s relevant to what MAAS does in a big way.

Okay, so I’m more of a language (and logic) guy. But isn’t code where math meets language and logic?

Research Unix

Fifth edition UNIX had just been licensed to educational institutions at no cost, and since this college was situated squarely in the middle of the military-industrial complex, scoring a Hulking Giant was easy. Finding good code to run it? That was another issue, until Bell Labs offered up a freebie.

It was amazing! Getting the computer to do things on its own — via ASM and FORTRAN — was not new to me. What was new was the simplicity of the whole thing. Mathematically, UNIX and C were incredibly complex, incorporating all kinds of network theory and topology and numerical methods that (frankly) haven’t always been my favorite cup of tea. I’m not even sure if Computer Science was a thing yet.

But the amazing part? Here was an OS which took all that complexity and translated it to simple logic: everything is a file; small is beautiful; do one thing well. Didn’t matter that it was cranky and buggy and sometimes dumped your perfectly-okay program in the bit bucket. It was a thrill to be able to do something without having to obsess over the math underneath.

Read more

Also: How to upgrade to Ubuntu 20.04 Daily Builds from Ubuntu 19.10

More in Tux Machines

today's howtos

ARM and AMD: GNU/Linux on Board

  • ARM Again in 2019 or 2020

    The assertion that nobody cares about SBSA is rather interesting. Obviously, nobody in the embedded area does. They just fork Linux, clone a bootloader, flash it and ship, and then your refrigerator sends spam and your TV is used to attack your printer, while they move on the next IoT product. But I do care. I want to download Fedora and run it, like I can on x86. Is that too much to ask?

  • EEPD Launches AMD Ryzen Embedded NUC Boards & Mini PCs

Programming: Rust, Haskell, Qt and Python

  • Sonja Heinze: What this blog is about

    In order to ask for an Outreachy grant for a certain open-source project, applicants first have to contribute to that project for about a month. When choosing a project, I didn’t know any Rust. But the fact that Fractal is written in Rust was an important point in favor due to curiosity. But I also expected to have a hard time at the beginning. Fortunately, that wasn’t really the case. For those who haven’t used Rust, let me give two of the reasons why: If you just start coding, the compiler takes you by the hand giving you advice like “You have done X. You can’t do that because of Y. Did you maybe mean to do Z?”. I took those pieces of advice as an opportunity to dig into the rules I had violated. That’s definitely a possible way to get a first grip on Rust. Nevertheless, there are pretty good sources to learn the basics, for example, the Rust Book. Well, to be precise, there’s at least one (sorry, I’m a mathematician, can’t help it, I’ve only started reading that one so far). It’s not short, but it’s very fast to read and easy to understand. In my opinion, the only exception being the topics on lifetimes. But lifetimes can still be understood by other means.

  • Joey Hess: announcing the filepath-bytestring haskell library

    filepath-bytestring is a drop-in replacement for the standard haskell filepath library, that operates on RawFilePath rather than FilePath.

  • Parsing XML with Qt: Updates for Qt 6

    This module provides implementations for two different models for reading and writing XML files: Document Object Model (DOM) and Simple API for XML (SAX). With DOM model the full XML file is loaded in memory and represented as a tree, this allows easy access and manipulation of its nodes. DOM is typically used in applications where you don't care that much about memory. SAX, on the other hand, is an event based XML parser and doesn't load the whole XML document into memory. Instead it generates events for tokens while parsing, and it's up to the user to handle those events. The application has to implement the handler interfaces (fully, or partially by using QXmlDefaultHandler). A lot of people find this inconvenient as it forces them to structure their code around this model. Another problem is that the current implementation of SAX (and as a consequence DOM, since it's implemented using SAX) is not fully compliant with the XML standard. Considering these downsides, Qt does not recommend using SAX anymore, and the decision has been made to deprecate those classes starting from Qt 5.15.

  • pathlib and paths with arbitrary bytes

    The pathlib module was added to the standard library in Python 3.4, and is one of the many nice improvements that Python 3 has gained over the past decade. In three weeks, Python 3.5 will be the oldest version of Python that still receive security patches. This means that the presence of pathlib can soon be taken for granted on all Python installations, and the quest towards replacing os.path can begin for real. In this post I’ll have a look at how pathlib can be used to handle file names with arbitrary bytes, as this is valid on most file systems.

  • PyCoder’s Weekly: Issue #398 (Dec. 10, 2019)
  • Variables in Python

    If you want to write code that is more complex, then your program will need data that can change as program execution proceeds.

  • Creating an email service for my son’s childhood memories with Python

    This was very flexible as it allowed me to keep anything else I wanted in this document – and it was portable (to anyone who have access to some way of reading Word documents) – and accessible to non-technical people such as my son’s grandparents. After a while though, I wondered if I’d made the right decision: shouldn’t I have put it into some other format that could be accessed programmatically? After all, if I kept doing this for his entire childhood then I’d have a lot of interesting data in there… Well, it turns out that a Word table isn’t too awful a format to store this sort of data in – and you can access it fairly easily from Python. Once I realised this, I worked out what I wanted to create: a service that would email me every morning listing the things I’d put as diary entries for that day in previous years. I was modelling this very much on the Timehop app that does a similar thing with photographs, tweets and so on, so I called it julian_timehop.

  • Executing Shell Commands with Python

    Repetitive tasks are ripe for automation. It is common for developers and system administrators to automate routine tasks like health checks and file backups with shell scripts. However, as those tasks become more complex, shell scripts may become harder to maintain. Fortunately, we can use Python instead of shell scripts for automation. Python provides methods to run shell commands, giving us the same functionality of those shells scripts. Learning how to run shell commands in Python opens the door for us to automate computer tasks in a structured and scalable way. In this article, we will look at the various ways to execute shell commands in Python, and the ideal situation to use each method.

Red Hat Leftovers

  • Red Hat Global Customer Tech Outlook 2020: Hybrid cloud leads strategy, AI/ML leaps to the forefront

    For the sixth year running, we have reached out to our customers to hear where they are in their technology journey, and where they wish to go in the next year. For the 2020-focused survey, we received more than 870 qualified responses1 from Red Hat customers from around the world. They've weighed in about their challenges, strategies, and technologies they are planning to pursue in the next year and we're eager to share the results with you in our report.

  • NooBaa Operator for data management, now on OperatorHub.io

    We are excited to announce a new Operator—the NooBaa Operator for data management. The NooBaa Operator is an upstream effort that Red Hat is leading and is included as part of the features of the upcoming Red Hat OpenShift Container Storage 4, currently released for Early Access. Operators are design patterns that augment and implement common day one and day two activities with Kubernetes clusters, simplifying application deployments and empowering developers to focus on creation versus remediation.

  • Cloud native and Knative at W-JAX 2019

    The W-JAX conference in November 2019 in Munich, Germany, is a popular conference for Java, architecture, and software innovation with highly renowned speakers and sessions. Hot topics at this year’s conference included cloud-native development and open source technologies. Knative is one of the hottest topics, particularly here in Germany, it even has prime position on this month’s Java Magazin front cover. It was a pleasure to welcome Jason McGee, IBM Fellow, VP and CTO of the IBM Cloud Platform, whose keynote “The 20 Year Platform – bringing together Kubernetes, 12-Factor and Functions” revealed the next twenty years of application development. Jason showed the open source technologies that define how developers can rapidly build and operate high scale applications, discussing the key role Kubernetes plays in cloud platforms. However, in the future, Kubernetes will not be enough. Jason stressed the importance of up-and-coming tools such as Knative, Kabanero, Tekton and Razee, for the cloud-native landscape of the future.