Language Selection

English French German Italian Portuguese Spanish

Oldies, Hacking, and UNIX

Filed under
  • ‘Oregon Trail’ at 50: The story of a game that inspired generations

    A long, long time ago in Minneapolis, this question loomed over a small group of eighth-graders.

    Appearing on a teletype machine—basically a primitive computer keyboard connected to a printer—at Jordan Junior High School, the strange question broke open the world of The Oregon Trail. Decades later, the title remains perhaps the most influential educational video game ever created, one that endures today as its influence is still being felt across the gaming industry.

  • The Matrix Is the Best Hacker Movie

    Most people point to Sneakers, Hackers, or WarGames. They’re all wrong. The Wachowskis actually invented the ultimate cyber superhero.

  • The Jurassic Park Scene That Aged Poorly

    "It's a UNIX system...I know this!"

    According to Wired, UNIX actually is what a computer geek like Nedry would have used for Jurassic Park in 1993. But the scene where Lex "hacks" into the security system by typing extremely fast is very inaccurate and today looks unintentionally hilarious. Unlike common Hollywood portrayals of computer hacking, real hacking is often complicated and it's not something a 13-year-old would just know how to do simply because they use computers.

    And where UNIX was once extremely modern technology, it now looks a lot simpler than the coding used in security systems today. Much of "Jurassic Park," like the velociraptors entering the kitchen, is still thrilling in 2021, but this scene simply didn't hold up well.

  • Why V7 Unix matters so much

    When I talk about things involving the history of Unix, I often wind up mentioning V7, also known as Seventh Edition of Research Unix from Bell Labs (for a recent example, in my entry on when Unix got stack size limits). If you're relatively new to the history of Unix, you might wonder why V7 keeps coming up so often. There are a number of reasons that V7 matters so much both for the history of Unix and for what is what we think of as being 'Unix' and the Unix way.

    Unix and C were originally created and developed in the Bell Labs Computing Sciences Research Center (CSRC) by various well known people like Ken Thompson and Dennis Ritchie. The CSRC's release of V7 was a pivotal moment in the history of Unix, as it was both widely publicized and relatively widely distributed. This led to a number of effects, both practical and of perceptions.

    First, V7 is effectively the common ancestor of various strains of Unix since then (this is not quite true for PWB, but close enough). Both BSD Unix and AT&T Unix (System III and System V) branched off from V7, so things in V7 were generally inherited by both of them, while things introduced after V7 (in some Unix line) had to make their way back and forth and didn't always migrate. This tends to be why I go back to V7 (and often no further) to see when something was introduced and if it was originally common to BSD Unix and System III/System V.

    Second, V7 was where a lot of what we think of as the way Unix and C are was established. V7 is where we got the Bourne shell and a relatively modern dialect of C, including stdio; both the V6 shell and C were somewhat different, to the point that you couldn't necessarily compile V6 programs even on 1980s C compilers (never mind modern ones). In fact a lot of 'Unix' comes from V7, and it's probably the oldest Research Unix that would feel normal and familiar to us today as users of modern Unix.

More in Tux Machines

Programming Leftovers

  • C: sigprocmask Function Usage

    You may have heard about socket programming in C. One of the socket functions is the “sigprocmask” function. This function has been usually utilized in the code to inspect or alter the signal mask of the calling function. The signal mask is a term used for a group of signals that are presently blocked and cannot be conveyed for the calling function. Such kind of signal is known as “Blocked Signals.” You can say that a process can still receive the blocked signals, but it will not be used until they are unblocked and released, i.e., raised. Until then, it will be pending. Therefore, within today’s guide, we will be discussing the use of the sigprocmask function in C programming. Let’s have a start. After the Ubuntu 20.04 successful login, you need to launch the shell of the Ubuntu 20.04 system first after the login. So, try out the “Ctrl+Alt+T” shortcut simply on the desktop screen. It will launch the terminal shell for you in some seconds. Make sure to update your system using the apt package of your system. After that, you have to execute the “touch” instruction along with the file name you want to generate, i.e., to create the C file via the shell. This newly created file can be found in the “home” folder of your system’s file explorer. You can try opening it with the “text” editor to create code in it. Another way to open it in the shell is using the “GNU Nano” editor using the “nano” keyword with a file name as demonstrated beneath.

  • C: sigaction function usage

    A sigaction() is a function that allows to call/observe or examine a specific action associated with a particular signal. It is thought to consider a signal and sigaction function on the same page. But in reality, it has not occurred. The signal() function does not block other signals when the current handler’s execution is under process. At the same time, the sigaction function can block other signals until the current handler has returned.

  • delegation of authority from the systems programming perspective – Ariadne's Space

    As I have been griping on Twitter lately, about how I dislike the design of modern UNIX operating systems, an interesting conversation about object capabilities came up with the author of musl-libc. This conversation caused me to realize that systems programmers don’t really have a understanding of object capabilities, and how they can be used to achieve environments that are aligned with the principle of least authority. In general, I think this is largely because we’ve failed to effectively disseminate the research output in this area to the software engineering community at large — for various reasons, people complete their distributed systems degrees and go to work in decentralized finance, as unfortunately, Coinbase pays better. An unfortunate reality is that the security properties guaranteed by Web3 platforms are built around object capabilities, by necessity – the output of a transaction, which then gets consumed for another transaction, is a form of object capability. And while Web3 is largely a planet-incinerating Ponzi scheme run by grifters, object capabilities are a useful concept for building practical security into real-world systems. Most literature on this topic try to describe these concepts in the framing of, say, driving a car: by default, nobody has permission to drive a given car, so it is compliant with the principle of least authority, meanwhile the car’s key can interface with the ignition, and allow the car to be driven. In this example, the car’s key is an object capability: it is an opaque object, that can be used to acquire the right to drive the car. Afterwards, they usually go on to describe the various aspects of their system without actually discussing why anybody would want this.

  • Pip Install: Install and Remove Python Packages
  • A dog-cat-horse-turtle problem

    Sometimes the text-processing problems posted on Stack Exchange have so many solutions, it's hard to decide which is best. A problem like that was posted in the "Unix & Linux" section in December 2021...

Istio / Announcing Istio 1.12.2

This release fixes the security vulnerability described in our January 18th post, ISTIO-SECURITY-2022-001 as well as a few minor bug fixes to improve robustness. This release note describes what’s different between Istio 1.12.1 and Istio 1.12.2. Read more Also: ISTIO-SECURITY-2022-001

Android Leftovers

Redis vs. MongoDB: What you need to know

Databases are garnering a lot of popularity every day and are used by many organizations for a wide variety of use cases. Many organizations are employing innovative techniques to handle their data storage. These companies often shift between databases to optimize their storage and data mapping according to their business needs. Companies with growing data requirements utilize databases with dynamic functionalities. However, deciding which database is perfect for each of these companies can be very subjective. When it comes to database management, choosing between Redis and MongoDB can be relatively challenging. Read more