136 private links
age calls itself a “simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composeability”. I’m quite fond of the concept and the utility and use a pair of Yubikeys on which I keep some of its identities (secret keys).
A is for awk, which runs like a snail, and
B is for biff, which reads all your mail.
C is for cc, as hackers recall, while
D is for dd, the command that does all.
E is for emacs, which rebinds your keys, and
F is for fsck, which rebuilds your trees.
G is for grep, a clever detective, while
H is for halt, which may seem defective.
I is for indent, which rarely amuses, and
J is for join, which nobody uses.
K is for kill, which makes you the boss, while
L is for lex, which is missing from DOS.
M is for more, from which less was begot, and
N is for nice, which it really is not.
O is for od, which prints out things nice, while
P is for passwd, which reads in strings twice.
Q is for quota, a Berkeley-type fable, and
R is for ranlib, for sorting a table.
S is for spell, which attempts to belittle, while
T is for true, which does very little.
U is for uniq, which is used after sort, and
V is for vi, which is hard to abort.
W is for whoami, which tells you your name, while
X is, well, X, of dubious fame.
Y is for yes, which makes an impression, and
Z is for zcat, which handles compression.
so I've been reading a lot about terminals lately. i asked the question "what distinguishes a terminal from a dispaly+keyboard?" and here are the conclusions i've come to:
1: terminals are not merely displays with attached IO. these have existed historically, and no one called them terminals, meanwhile terminals that actually existed all have output behavior that's strongly divergent from just displays
2: terminals are a very rich domain, and few people know the great diversity of terminals that existed historically
3: the best definition of "terminal", which distinguishes them from displays+keyboards, at least in the context of historical terminals, is: A terminal is a computer peripheral that transmits and receives data from a host computer, the data being best understood as an instruction or command (both to the host machine and the terminal), and where there is typically some internal state maintained on the terminal which describes the current displayed content and interaction possibilities (but which may not include all the possible content that can be understood as "displayed")
the rest of this thread is going to be a discussion of terminals of different forms, likely many of them will be unfamiliar to you, or if they seem familiar, the details of what they could do and how and why will likely be unfamiliar. anyway, let's see some terminals
the archectypal terminal in many peoples minds, the thing that people think of when you mention terminals, is the Character-oriented terminal. the oldest form of these were just teletype machines, literally just typewriters that were electrically controlled and which could be used to communicate with a computer, which could type characters, and also receive typed characters. here's an ASR 33 teletype, which is a particular machine used for communicating with computers. because these were literally type writers, they are called hard copy terminals
a teletype integrated into a stand
the upgraded form of this is the glass teletype or video display unit, which enables far more possibilities. probably the most widely known character-oriented glass teletype is the VT100, which still forms the basis of many minimum viable terminal emulator programs today. character-oriented VDUs were effectively just video based versions of teletype terminals. instead of a paper print out, they stored a screen's worth of characters in internal memory
a vT100 showing a display with a cable-attached keyboard
its worth pausing here and bracketting these two toots by observing the large gulf in time and cost and so forth between these machines. we're talking like decades between the first teletypes and the first VDUs. teletypes existed looooong before computers, even. and even when VDUs existed, teletype terminals were still commonplace, because VDUs were expensive as heck initially
the expense was not because of the CRTs or anything like that, it was because of memory. that is to say, computer memory, not just terminal memory. and also because of computer speed
what i mean by this is, well.. let's consider a situation where you just drive a TV from a computer. suppose its, i dunno, 1960. everyone's got a TV in 1960 so they're cheap, right?
but now, if you want to drive it from a computer, you need to invent some mechanism for outputting a video signal. how are you gonna do that? real-time digital synthesis in the computer? fat chance! you might be able to control an oscilloscope that way, and many demos existed, but not a TV, with its raster graphics. and while you're doing the oscilloscope control, what else do you have time for? depends on the complexity of the thing you're drawing. funny lines for art or simple games? maybe. but text? forget it. you have no time for other programs
if you use a teletype as your output, you can just send a command to print a single character, it does, and then the character is still there on the paper indefinitely even if the computer turns off. so your program and just proceed to the next thing it needs to do
but what if you still want to use a TV? i mean, teletype machines are loud and fiddly mechanical devices
maybe you think, why not replicate the teletype's page, by storing character data in the computers memory and then use some specially designed circuit to non-destructively read that memory very quickly and generate a video signal? some sort of "video unit"
well that's nice, but for a computer in 1960, you're gonna use a lot of memory. i mean, suppose its 6 bits per character optimistically, then a standard 80x24 terminal takes 11520 bits, which is not a HUGE amount of memory but not dirt cheap either
in the 1960s you could get core memory for about a dollar a bit, which meant your little video output would be over $10,000. just for the memory! why bother when you can just use a bog standard mass produced teletype?
plus, if you were doing this by video, you'd have to wire up locations for video signal transmission to the remote displays. whereas a teletype can just be connected to a phone line if you need it. or you do wireless transmission of video? but that's still a lot. now you need radio engineers involved. why bother.
EVENTUALLY memory chips started to be built in the late 60s and costs really dropped for memory, and the size of the chips were small enough that you could actually start building VDU terminals that could produce some semblance of a terminal like the VT100
BUT the first VDUs weren't character-oriented! they weren't just glass teletypes!
the first VDU terminals to be produced were actually what are called BLOCK-oriented terminals. a block-oriented terminal does not send and receive data one character-qua-command at a time, but rather in large blocks. and the data was not merely a pile of characters but a far richer thing
the data that was received was an entire menu or form (like an HTML form), sometimes with things like data format validation info, and data sent was either a menu item selections or form field information
technically there were some hard-copy block-oriented terminals as well but they're pretty rare, because of the complications of making them work, and they're not merely a teletype
an example of a block oriented terminal, which is from 1964 (not the earliest but a fun one regardless) is the IBM 2260. it stored a very small number of characters in a delay line memory, which was probably the cheapest option for the amount of memory needed at the time. another fun one, from 10 years later, is the hp vt2640
a man using a 2260 in a computer room
a man using a 2640 in an office
these terminals LOOK an awful lot like the sorts of things we normally think of as terminals, they LOOK like character-oriented terminals like the VT100, but they were controlled very differently, and you used them very differently. you'd basically send them a large blob of data describing the entire screen, with form fields and so on, including layout information, subdivisions of the screen into static data regions vs. form regions, etc etc.
then, the user would be able to navigate around the menu items and form fields and enter data, all of which was stored locally on the terminal. only when the user pressed a send button was all of that information bundled up and shipped back to the host machine
there is, incidentally, another kind of text-oriented terminal that is "line-oriented", and all i could find about those is that they were, well.. line oriented. which i assume means that the data came across to it in blobs of one line at a time
i don't know if it sent data one line at a time as well. character-oriented terminals typically sent data for every keypress. modern terminal emulators are character oriented on send, but we typically use them with shells that simulate a line-oriented send
now, you may think this is the end of things for terminals but this is just the beginning
well actually you're right to say its the end sort of because character-oriented terminals were VERY popular and lasted a VERY long time, and also they sort of were the LAST thing that was developed
but its not the end of the thread, at least :p
the next kind of terminal that i'll discuss is a vector terminal. i mentioned before the idea of controlling a CRT like you control an oscilloscope, and some very folx realized that this is actually a REALLY good idea, because vector art is quite small in size, so you can get very far with a very small amount of memory
Nowify is an opinionated time management system based on the following principles:
"don't make me think": design your life and let a computer calculate your next moves
push over pull: active/annoying systems are better than passive ones
active feedback: use simple stats to see yourself more clearly
meta-routines: humans change -- use a system to update your system
bite-sized: modular without being fancy
Queen Mary University had an important role in the history of the Vim editor. It was here that, in 1973, the first UNIX system of the UK was installed, and it was also here that professor George Coulouris developed an editor called em. The creation of em ended up snowballing into the development of vi and many other vi clones after that.
Grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, AAC, Ogg/Speex and/or MPP/MP+(Musepack) format.
TIL there are dozens of neat little command-line tools hidden away in the Python standard library, available to run on any machine that has a Python installation https://til.simonwillison.net/python/stdlib-cli-tools
TFW a file format is so old that it includes an "insert paper tape this way" arrow as part of the header: Looks like this traces back to the PDP-11.
Seamless integration with kubectl autocompletion
Fast completion
Label autocompletion
Automatic namespace switch
How could I miss out on #VisiData for so long? This might become my new favorite #CLI tool.
If you do anything with data and enjoy working in the terminal, check it out. It can
• provide a #TUI for viewing and editing data in #CSV, #Excel, #SQLite, #JSON, #YAML & #XML files and quite a few more
• sort, filter, join and edit that data, across files and across formats
• convert between the formats (interactively or not)
• record & play macros
• be scripted in #Python
Frogmouth is a Markdown viewer / browser for your terminal, built with Textual.
Frogmouth can open *.md files locally or via a URL.
There is a familiar browser-like navigation stack, history, bookmarks, and table of contents.
Immer mehr Projekte versuchen, althergebrachte Unix-Befehle durch Rust-Alternativen zu ersetzen. Jetzt nimmt sich erdtree 2.0.0 du, tree, find und ls vor.
Some authentication means are more secure than others: using a hardware device designed to store a private key without making it possible to ever extract it is more secure than storing the private key in a file. Unfortunately the most secure ones are also more painful to use. Users who have their keys on a device need to carry the device with them, need to type their PIN code every time they initiate a SSH session, etc. This makes it quite difficult to advocate ways more secure than passwords and files for use cases where the security of the access is not the priority.
So the question is: is it possible to store the authentication material more securely than in a file (which can be stolen by some malware), without changing the user experience?
And the answer is: yes, using a TPM!
Inspiriert vo git auf deutsch hobn si auf da bsides vienna 0x7e6 a poa Spezialisten zaumdau, und a typisch österreichische Lösung gehirngsturmt.
warning Obocht! Kinad a bissl Spass beinhoitn
Write terminal GIFs as code for integration testing and demoing your CLI tools.
A tool for glamorous shell scripts. Leverage the power of Bubbles and Lip Gloss in your scripts and aliases without writing any Go code!
Ask for the commit type with gum choose:
gum choose "fix" "feat" "docs" "style" "refactor" "test" "chore" "revert"
Tip: this command itself will print to stdout which is not all that useful. To make use of the command later on you can save the stdout to a $VARIABLE or file.txt.
Prompt for an (optional) scope for the commit:
gum input --placeholder "scope"
Prompt for a commit message:
gum input --placeholder "Summary of this change"
Prompt for a detailed (multi-line) explanation of the changes:
gum write --placeholder "Details of this change (CTRL+D to finish)"