(3386,'2021-07-26','What\'s for dinner?',1342,'Some scripts and a database for randomly choosing which meal to cook','
Overview
\r\n
I live on my own, but I cook for members of my family from time to time. Each week we all get together and cook dinner for Wednesday and Thursday. I usually do the cooking but we are starting to share these duties for certain meals.
\r\n
In 2019 I thought it would be useful if I had some sort of random chooser to decide what next week’s meal was going to be. I wrote a Bash script called choose_meal, using a simple CSV file of meal names and the date last eaten to avoid choosing the same one too often. The shortcomings of this approach soon became apparent!
\r\n
It wasn’t long before choose_meal was rewritten in Perl. This time I decided to use a database, and chose SQLite to create it. My database contained just two tables, one for the meals themselves (called slightly confusingly \'meal_history\'), and another for a record of the choices made (called \'meal_log\') – the ability to produce historical reports seemed like a desirable feature!
\r\n
In 2019 the design of this system was very specific to our needs: one choice per week on a Wednesday. It was not something that could be used by anyone else – which seemed like a bad idea.
\r\n
In late 2020 and early 2021 the system was redesigned, as will be discussed in the detailed notes. In May 2021 a more general design was added to the public GitLab repository and the preparation of this show was begun.
\r\n
I had never intended this system to hold recipes. This was partly because I have built a collection of recipes I have constructed from various sources and amended as I have made them. I print these and keep them in a ring-binder for reference as I cook. In some cases the meals described in the database are multi-component ones (such as the dishes that make up a curry for example), so it doesn’t seem appropriate to hold these here.
',225,0,1,'CC-BY-SA','Perl,SQLite3,database,food',0,0,1),
(3387,'2021-07-27','Infosec Podcasts Part 5 Grab bag',483,'Presenting my favorite podcasts related to various aspects of information security','
Inoffensive in every region of the world.
\r\n
Thank you to everyone who has listened to my previous episodes. I hope I am not boring you all to death!
\r\n
Why am I recording this series?
\r\n
\r\n
You can hear my reasoning for why I am making this series by listening to the introduction to any of the previous four episodes in this series. Yes, this is a shameless plug for you to listen to my other works.
\r\n
\r\n
Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:
\r\n
\r\n
Part 1 - News & Current Events
\r\n
Part 2 - General Information Security
\r\n
Part 3 - Career & Personal Development
\r\n
Part 4 - Social Engineering
\r\n
Part 5 -\r\n
\r\n
Hacks & Attacks
\r\n
Technical Information & Learning
\r\n
Infosec Community / Social / History
\r\n
\r\n
Part 6 - Infosec Leadership
\r\n
\r\n
Part 5
\r\n
Hacks & Attacks
\r\n
\r\n
Malicious Life Ran Levi sponsored by Cybereason (Periodically)
\r\n
\r\n
Detailed descriptions of specific historical events in cybersecurity
The Offensive Security Podcast - TJ Null and Jeremy Miller (Harbinger) and sponsored by Offensive Security (Creators of the OSCP Offensive Security Certified Professional certification)
\r\n
\r\n
Probably belongs in the Career & Personal Development category, but I discovered it after I had already recorded that episode.
\r\n
Interviews with Red team practitioners and other security professionals, related to the various certifications and training available with Offensive Security.
I hope that this series has helped introduce you to some new and interesting listening options. Give some of them a try, and I would love to get your feedback in the episode comments on the HPR website.
\r\n
The next and final episode of this series will be about Information Security Leadership podcasts.
\r\n
Thank you for listening.
',394,75,1,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3399,'2021-08-12','Linux Inlaws S01E36: Open Source Licenses',3361,'The ultimate show on open source licenses or how to fall asleep without chemicals','
\r\n In this episode Chris is trying hard to get Martin to sleep by elaborating on the\r\n subject of free and open source software licenses but fails miserably. Listen to a\r\n more than riveting episode on the ins and outs of licensing FLOSS code bases in addition\r\n to banter about Brexit, plans for a reshaping of Europe after the invasion of England\r\n and Wales, Northern Ireland and Scotland leave the UK.\r\n
\r\n',384,111,1,'CC-BY-SA','Licensing, GNU, BSD, MIT, Taking Lives, MI6, Clarkson\'s Farm, Open Source Initiative',0,0,1),
(3696,'2022-10-03','HPR Community News for September 2022',3283,'HPR Volunteers talk about shows released and comments posted in September 2022','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 39 comments in total.
Comment 1:\nbrian-in-ohio on 2022-09-27:\n\"cussing\"
Comment 2:\nLurking Prion on 2022-09-28:\n\"Yes, I probably need a hug\"
\n
hpr3694\n(2022-09-29) \"Robo Tripping Ravelords of the Apocalypse\"\nby Mechatroniac.
\n
\n
Comment 1:\none_of_spoons on 2022-09-29:\n\"{inspirational artifice}\"
Comment 2:\nClaudioM on 2022-09-29:\n\"Great Story\"
Comment 3:\nKen Fallon on 2022-09-29:\n\"I loved this\"
Comment 4:\nMechatroniac on 2022-09-29:\n\"Thanks\"
Comment 5:\nbrian-in-ohio on 2022-09-30:\n\"the show\"
\n
hpr3695\n(2022-09-30) \"How I watch youtube with newsboat\"\nby binrc.
\n
\n
Comment 1:\nfolky on 2022-09-30:\n\"Great for gpodder too\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
FOSDEM 2023
\n
FOSDEM 2023 will take place in Brussels, Belgium at the Université Libre de Bruxelles (or ULB) next February on the weekend of the 4th and 5th.
\n
HPR had a stand at the last in-person event, representing Free Culture Podcasts. There is a call for proposals out at the moment for those wishing to run a stand for the forthcoming event.
\n
Older HPR shows on archive.org, phase 2
\n
Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in May 2022. We are keeping a running total here to show progress:
\n
\n
\n
\nMonth\n
\n
\nMonth count\n
\n
\nRunning total\n
\n
\nRemainder\n
\n
\n
\n
\n2022-04\n
\n
\n130\n
\n
\n130\n
\n
\n1428\n
\n
\n
\n
\n2022-05\n
\n
\n140\n
\n
\n270\n
\n
\n1288\n
\n
\n
\n
\n2022-06\n
\n
\n150\n
\n
\n420\n
\n
\n1138\n
\n
\n
\n
\n2022-07\n
\n
\n155\n
\n
\n575\n
\n
\n983\n
\n
\n
\n
\n2022-08\n
\n
\n155\n
\n
\n730\n
\n
\n828\n
\n
\n
\n
\n2022-09\n
\n
\n150\n
\n
\n880\n
\n
\n678\n
\n
\n
\n\n
Updated: 2022-10-02 11:47:18
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3392,'2021-08-03','Structured error reporting',1714,'Tuula talks about how she improved build times by breaking down error reporting to smaller parts','
Initial state
\r\n
When I originally wanted a unified error reporting on the server-side, I made one huge type that enumerated all the possible error cases that could be reported:
\r\n
-- | Error codes for all errors returned by API\r\ndata ErrorCode\r\n -- common error codes\r\n = ResourceNotFound\r\n | InsufficientRights\r\n | FailedToParseDataInDatabase\r\n -- errors specific to news\r\n | SpecialEventHasAlreadyBeenResolved\r\n | UnsupportedArticleType\r\n | SpecialNewsExtractionFailed\r\n | TriedToMakeChoiceForRegularArticle\r\n -- errors specific to simulation state\r\n | SimulationStatusNotFound\r\n | DeltaTIsTooBig\r\n | TurnProcessingAndStateChangeDisallowed\r\n | SimulationNotOpenForCommands\r\n | SimulationNotOpenForBrowsing\r\n -- errors specific to people\r\n | StatIsTooLow Text\r\n | CouldNotConfirmDateOfBirth\r\n | DateOfBirthIsInFuture\r\n | FirstNameIsEmpty\r\n | FamilyNameIsEmpty\r\n | CognomenIsEmpty\r\n | RegnalNumberIsLessThanZero\r\n -- errors specific to new person creation\r\n | AgeBracketStartIsGreaterThanEnd\r\n | PersonCreationFailed\r\n deriving (Show, Read, Eq)\r\n
\r\n
Then I had some helper functions to turn any value of that type into a nice error message:
errorCodeToStatusCode was responsible for turning ErrorCode into http status code. For example StatIsTooLow \"intrigue\" would be 400. statusCodeToText would take this code and turn it into short error message given in http response. 400 would be Bad Request. errorCodeToText would give a bit more verbose explanation of what happened, StatIsTooLow \"intrigue\" would be mapped to \"Stat intrigue is too low\". Finally raiseIfErrors would take a list of ErrorCode and use these helper functions to turn them into a http response with correct status code, error message and json body detailing all errors that had happened:
\r\n
[\r\n { code:\r\n { tag: "StatIsTooLow"\r\n , contents: "intrique"\r\n }\r\n , error: "Stat intrigue is too low"\r\n }\r\n]\r\n
\r\n
There’s two tags: code, which contains machine readable details about the error and error, which contains error message that can be shown to user.
\r\n
While this worked fine, there was some problems with it. ErrorCode type was growing larger and larger and the module it was defined in was referred all over the codebase. Every time I added a new error message, all the modules that used error reporting had to be compiled and it was getting slow.
\r\n
Solution
\r\n
Breaking up the ErrorCode to smaller types and moving them to different modules would means less modules were going to built when I added a new error code. The problem was that raiseIfErrors :: [ErrorCode] -> HandlerFor App () wanted a list of ErrorCode and elements in a list have to be of same type.
\r\n
I started by splitting ErrorCode to smaller types. Each of the smaller error types have automatically derived toJSON and fromJSON functions for serializing them to and from JSON:
That $(deriveJSON defaultOptions \'\'PersonCreationError) is template haskell call. Basically it invokes a deriveJSON function with PersonCreationError as parameter and compiles and splices the resulting code here. This is fast and easy way of generating ToJSON and FromJSON instances and avoiding having to write them by hand. It is very similar to how Lisp macros work.
\r\n
Then I defined a type class, that has functions for getting a http status code and a error message that can be shown to user. statusCodeToText I could use as is, without any modifications:
\r\n
class ErrorCodeClass a where\r\n httpStatusCode :: a -> Int\r\n description :: a -> Text\r\n
\r\n
I have to have instance of ErrorCodeClass defined for each and every smaller error type. Here’s an excerpt of PersonCreationError showing how it would look like:
\r\n
instance ErrorCodeClass PersonCreationError where\r\n httpStatusCode = \\case\r\n StatIsTooLow _ -> 400\r\n CouldNotConfirmDateOfBirth -> 500\r\n...\r\n\r\n description = \\case\r\n StatIsTooLow s ->\r\n "Stat " ++ s ++ " is too low"\r\n...\r\n
\r\n
A little note: description = \\case relies on lambda case extension. It is just a slightly different way of writing:
\r\n
description d =\r\n case d of\r\n
\r\n
This allows me to turn values of these smaller error types into error messages that could be sent to the user.
\r\n
The second part of the solution is to figure out a way to put values of these smaller error types into same list. If a list is of type [PersonCreationError], it can’t contain values of CommonError and vice versa. Creating a wrapper like:
\r\n
data ECode a = ECode a\r\n
\r\n
doesn’t work, because then I would have elements of type ECode PersonCreationError and ECode CommonError, which are of different type. What I need, is a way to wrap all these different types into a wrapper that loses the type of wrapped value. Another problem is that I need to place constraints on what kind of values can be wrapped. I need them to have instances for ErrorCodeClass (for getting error information) and ToJSON (for serializing them into JSON). There’s several ways of doing this, but I chose to use generalized algebraic data types (GADTs for short):
\r\n
{-# LANGUAGE GADTs #-}\r\n\r\ndata ECode where\r\n ECode :: (ErrorCodeClass a, ToJSON a) => a -> ECode\r\n
\r\n
Now type ECode has one value constructor, also named to ECode, which takes one parameter a. a can be anything, as long as there’s ErrorCodeClass and ToJSON instances defined for it. Calling this constructor will return ECode. If you compare this with the previous definition of ECode, you’ll notice two major differences:
\r\n
\r\n
a is constrained to have specific type class instances
\r\n
resulting type is ECode, not ECode a
\r\n
\r\n
The second part means that I can wrap different types into ECode and place them into a same list without problems. Type of that list is simply [ECode].
\r\n
But having a list of error codes wrapped in ECode isn’t going to do much to us. We need to be able to turn them into http status code, text and list of error messages. Luckily we have a type class just for that:
\r\n
instance ErrorCodeClass ECode where\r\n httpStatusCode (ECode a) =\r\n httpStatusCode a\r\n\r\n description (ECode a) =\r\n description a\r\n
\r\n
httpStatusCode of ECode is httpStatusCode of the value ECode wraps. Similarly description of ECode is description of the wrapped value.
\r\n
For turning ECode into JSON, I opted for hand written instance:
This gives me complete control over how I want to report errors to the client.
\r\n
Final piece of the puzzle is raiseIfErrors function:
\r\n
raiseIfErrors :: [ECode] -> HandlerFor App ()\r\nraiseIfErrors errors = do\r\n when (not $ null errors) $ do\r\n let code = fromMaybe 500 $ errors ^? ix 0 . to httpStatusCode\r\n let msg = statusCodeToText code\r\n sendStatusJSON (Status code msg) $ toJSON errors\r\n
\r\n
If there are any elements in the passed in list, grab the http status code and text from the first element of the list. I was considering writing some sort of logic to deduce which error code to return in case there are more than one type in the list, but decided against it. There doesn’t seem to be any easy way to decide between HTTP 400 Bad Request and HTTP 500 Internal Server Error. So I just return the first one. Body of the response contains list of errors codes:
Since manually wrapping things in ECode gets tedious after a while, I defined function for each type of error that does that for me:
\r\n
statIsTooLow :: Text -> ECode\r\nstatIsTooLow s = ECode $ StatIsTooLow s\r\n
\r\n
Now, instead of writing ECode $ StatIsTooLow \"intrigue\", I can write statIsTooLow \"intrigue\". And if I ever decide to change internals of errors again, I can change how these functions are defined and hopefully don’t have to change each and every place where they’re being used.
\r\n
Different solution
\r\n
Another way to tackle this problem is to use records instead of algebraic data types:
\r\n
data ECode = ECode\r\n { httpCode :: Int\r\n , description :: Text\r\n }\r\n\r\nstatIsTooLow :: Text -> ECode\r\nstatIsTooLow s =\r\n ECode\r\n { httpCode = 400\r\n , description = "Stat " ++ s ++ " is too low"\r\n }\r\n
\r\n',364,107,1,'CC-BY-SA','haskell, error reporting',0,0,1),
(3393,'2021-08-04','We need to talk about XML',1885,'An extensible markup language? This is too good to be true!','
Klaatu introduces XML.
\r\n\r\n
\r\nThe sample XML document discussed in this episode is:\r\n
\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
(3394,'2021-08-05','Be an XML star with xmlstarlet',1591,'Parse XML from the terminal','
See the layout of an XML document
\r\n\r\n
\r\n$ xmlstarlet elements planets.xml\r\nxml\r\nxml/sol\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\n\r\n
\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
(3441,'2021-10-11','Murphy Work Bench',842,'Operator talks about hitting his head on his work bench','
\r\n
PROS:\r\n
\r\n
easy clean up just fold and vacuum
\r\n
height is great for tall people so I\'m not hunched over the table
\r\n
saves space
\r\n
\r\n
CONS:\r\n
\r\n
I ran into it 2 times so I rounded the edges
\r\n
I just now hit my head on it ... folded and crashed everything on the table to the ground and pic I custom made fell of the wall and into my AC water bucket
\r\n
loud when using and setting up everything echoes though the walls at night etc
\r\n\r\n',36,0,1,'CC-BY-SA','DIY,wood working,hacking',0,0,1),
(3396,'2021-08-09','Card roles in Magic the Gathering',2367,'There are over 25,000 cards in MTG. You only need 60 to play.','
Cutting to the chase:
\r\n
When getting into Magic the Gathering, it's easy to get overwhelmed and confused by choice. Instead of thinking about cards, I've learnt to think about the game mechanic roles that a deck needs to have satisfied, and then I look for cards that fill those roles.\r\n
\r\n\r\n
My list is by no means definitive, but I think these are the basic universal roles you need, regardless of how you play:
\r\n\r\n
\r\n
Mana base: Land cards. These provide you with mana so you can play cards. For a 60 card deck, anticipate requiring about 24. In a later episode, I'll talk about additional ways to manage mana.
\r\n
General purpose: Creatures, enchantments, instants, artifacts, and so on. These are cards, costing a full spectrum of mana amounts (some you can play for 1 or 2 mana, others require 4 and 5 and more), that you need to populate your deck. These don't need to be anything special, unless you want to spend money for really fancy cards, but I assume you're not listening to me if you're a pro player./i>\r\n
Card draw: You're going to deplete your hand unless you have cards that give you permission to draw more cards than just your allotted one-per-turn.
\r\n
Recursion: When you're forced to discard a card you really really wanted to play, you'll be glad to have some cards that grant you permission to bring that card back from your graveyard. This is called "recursion" by Magic players.
\r\n
\r\n\r\n
There are other card types that can be useful, but they may be best for specific strategies. The ones I list here are, I believe, pretty universal.\r\n
\r\n\r\n
You can find lists of cards that fill specific roles with a simple Internet search. For instance, if you realize you have no cards that let you replenish your hand, you might search for "best cards to draw cards MTG" and get directed to a site like TappedOut.net or magic.wizards.com.
\r\n\r\n
Go to your local game store or an online vendor to buy just the cards you need. Because there are so many to choose from in any given category, you get to control the price. I have a rule for myself that do not spend over $2 on any single card.\r\n
\r\n\r\n
When trying to fill roles, I generally aim to get 4 cards that do the thing I need. Sometimes I get exactly the same card 4 times, other times I get a variety of cards to fill the role. Either way, 4 usually feels like a good draw frequency for each role.
\r\n\r\n',78,0,0,'CC-BY-SA','magic, mtg, card, tcg',0,0,1),
(3401,'2021-08-16','Mana hacks',1924,'Klaatu muses about mana ramping in Magic the Gathering','
The categories of mana ramps I have defined for myself are:
\r\n
\r\n
Mana acquired outside of the land drop action
\r\n
Getting more mana for less
\r\n
Mana saved up over time
\r\n
\r\n',78,95,0,'CC-BY-SA','magic, mtg, card, tcg, mana',0,0,1),
(3397,'2021-08-10','What is a PineTime',595,'In this podcast I talk a little bit about the pinetime.','
\r\nThis is the first impression of a PineTime watch that I bought about a week ago and have already done some changes to the underlying code. I think this is an interesting project and open source so you can contribute.\r\n
',382,0,0,'CC-BY-SA','open source, watch, coding',0,0,1),
(3406,'2021-08-23','A study of cards in games',1633,'Currency, deterrent, coersion, clutter, rules','
What function cards have in games.
',78,95,0,'CC-BY-SA','card, game',0,0,1),
(3402,'2021-08-17','Reading a manifesto: Declaration of Digital Autonomy',877,'Reading and brief commentary and background on Molly DeBlanc\'s and Karen Sandler\'s techautonomy.org','
This episode, as its source material, is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.
\r\n
Previously
\r\n
\r\n
hpr3317 :: Reading a manifesto: Towards A Cooperative Technology Movement
We demand a world in which technology is created to protect and empower the people who use it. Our technology must respect the rights and freedoms of those users. We need to take control for the purpose of collectively building a better world in which technology works in service to the good of human kind, protecting our rights and digital autonomy as individuals.
\r\n
We have become more reliant than ever on technology that we intertwine into every aspect of our lives. That technology is currently made not for us, those using it. Rather, it is for the companies who intend to monetize its use and whoever owns the associated copyrights and patents. Services are run via networked software on computers we never directly interact with. Our devices are designed to only function while broadcasting our intimate information regardless of whether the transmission of that information is necessary functionality. We generate data that we do not have access to, that is bought, sold, and traded between corporations and governments. Technologies we\'re increasingly being forced to use reinforce and amplify social inequalities. As schools and jobs go online, high speed computing, centralized services and Internet become inescapably necessary. Technology is designed and implemented to oppress, often with sexist, classist, and racist implications. Rather than being served by these tools, we are instead in service to them. These gatekeepers of our technology are not individual people or public organizations who think about the wellbeing of others, but instead are corporations, governments and others with agendas that do not include our best interests. Our technology has become the basic infrastructure on which our society functions, and yet the individuals who use it have no say or control over its function.
\r\n
It\'s time to change our digital destiny.
\r\n
We believe it is necessary for technology to provide opportunity for: informed consent of use; transparent development and operation; privacy and security from bad actors; interaction without fear of surveillance; technology to work primarily on the terms of the people using it; functionality inside and outside of connected networks; use with other services and other software, repair; and connection, and not alienation, from the technology itself and that which is created from it.
\r\n
We therefore call for the adoption of the following principles for ethical technology:
\r\n
\r\n
In service of the people who use it
\r\nFrom conception through to public availability, technology must be in the service of the people and communities who use it. This includes a freedom from surveillance, data gathering, data sales, and vendor and file format lock-in. When it becomes apparent that the technology, as it is delivered, does not meet the needs of a given person, that person is able to change and repair their technology. Technology must have an option for use without an Internet connection.
\r\n
Informed consent
\r\nPeople must have the ability to study and understand the technology in order to decide whether using it as is is the right choice for them. People must be able to determine, either directly or through third parties, how the technology is operating and what information it is collecting, storing and selling. Additionally, there should be no punitive responses for declining consent -- practical alternatives must be offered, whether those are changes to the underlying technology or compatible updates from the original provider or from third parties.
\r\n
Empowering individual and collective digital action
\r\n
When people discover that their technology is not functioning in their interest, or that the trade offs to use it have become too burdensome, they must have the ability to change what they are using, including the ability to replace the software on a device that they have purchased if it is not serving their interests and to use the technology while not being connected to a centralized network or choose a different network.
\r\n
Technology should not just be designed for the individuals using it, but also the communities of users. These communities can be those intentionally built around a piece of technology, geographic in nature, or united by another shared purpose. This includes having the ability and right to organize to repair the technology on and to migrate essential data to other solutions. Ownership of essential data must belong to the community relying on them.
\r\n
\r\n
Protect people\'s privacy and other rights by design
\r\nBuilding technology must be done to respect the rights of people, including those of privacy, open communication, and the safety to develop ideas without fear of monitoring, risk, or retribution. These cannot be tacked on as afterthoughts, but instead must be considered during the entire design and distribution process. Services should plan to store the minimum amount of data necessary to deliver the service in question, not collect data that may lay the groundwork for a profitable business model down the road. Regular deletion of inessential data should be planned from the outset. Devices need to have the ability to run and function while not transmitting data. All of these requirements are to better ensure privacy, as everytime a device wirelessly transmits or otherwise broadcasts data there is opportunity for interference or theft of that data.
\r\n
\r\n
We, as individuals, collectives, cultures, and societies, are making this call in the rapidly changing face of technology and its deepening integration into our lives. Technology must support us as we forge our own digital destinies as our connectivity to digital networks and one another changes in ways we anticipate and in ways we have yet to imagine. Technology makers and those who use this technology can form the partnerships necessary to build the equitable, hopeful future we dream of.
\r\n
We\'d love to hear what you think! Let us know by emailing thoughts@ this domain.
\r\n
The Declaration of Digital Autonomy is (c) Molly de Blanc and Karen M. Sandler, 2020, licensed under Creative Commons Attribution-ShareAlike 4.0 International.
\r\n',311,0,1,'CC-BY-SA','manifesto, community, free software, open source, politics, philosophy, digital autonomy',0,0,1),
(3398,'2021-08-11','Anacron',949,'Put down that crontab and get started with anacron','
',78,95,0,'CC-BY-SA','card, game',0,0,1),
(3409,'2021-08-26','Linux Inlaws S01E37: All about Hacker Public Radio',5738,'An interview with Ken Fallon, Janitor at Hacker Public Radio','
\r\n In this episode of our beloved open source podcast rapidly approaching its\r\n zenith of popularity (with hopefully not an equally rapid decline afterwards)\r\n our two elderly heroes pay tribute to Hacker Public Radio in general and\r\n Ken Fallon in particular. Plus: a never-heard-of-before peek into Martin\'s\r\n very own private life (we lift the veil and reveal it all - don\'t miss this!)\r\n
\r\n',384,111,1,'CC-BY-SA','HPR, cleaning, janitoring, having a good time, Richard M. Stallman, stats',0,0,1),
(3417,'2021-09-07','Ceph cluster hardware',729,'Looking into the hardware behind my ceph cluster ','
In this video I talk about 4 different computers that could be used in a ceph cluster and what I use and what could be good solutions. If you want to have a visual aid I\'ve created a youtube video talking about the same thing.
\r\n',382,0,0,'CC-BY-SA','ceph, cluster, hardware',0,0,1),
(3437,'2021-10-05','The HTML document format',402,'Talking about my favorite document format.','
Klaatu asked us what document format we like and why, so this is a response to his podcast. In this podcast I talk about HTML and the importance of good document structure.
',382,0,0,'CC-BY-SA','html, document, css, javascript',0,0,1),
(3408,'2021-08-25','Composting',336,'Inspired by episode 3157, Rho`n describes his experience of learning to compost','
Introduction
\r\n
Welcome to another episode of Hacker Public Radio. This episode is inspired by HPR episode 3157 entitled Compost by Klaatu. During the early 2000\'s, I lived in a single family home which had a number of oak trees around it. Between the trees, other foliage, and grass, there was a large amount of yard waste. While my city (Baltimore, MD in the US) will pick up your yard waste if you put it in bags by the curb [1], I would use the oak leaves as mulch, and did have a mulch pile of leaves and other yard waste. At that time, I thought about composting food waste, but there is a big issue with rats in Baltimore, and I didn\'t look into ways to compost. I just knew I couldn\'t randomly mix it into my mulch pile.
\r\n
I am currently living in a different house, without any oak trees, and not as much yard waste (particularly since we hire someone to mow the grass every couple weeks). After listening to the Compost episode, I was inspired to look into the best way to do it given my current living situation. The first thing I did was to look and see if there are any laws against composting in Baltimore City. The rat problem is big enough that the City purchased and distributed a large green plastic trash bin to every physical mailing address in the city. This is the bin you are required to use when putting out your trash. Given the situation, I wasn\'t sure it would be legal to do composting in your back yard. Much to my surprise, it is not only legal, but the city website has a web page on how to compost [2] and just recently started a pilot program for food scrap drop off with seven locations around the city [3].
\r\n
Kitchen Compost Bin
\r\n
After determining I wasn\'t going to be a scofflaw, I went to the Internet to see what kind of bins are available for purchase. While Klaatu gives great suggestions for low cost composting bins, I wanted something that would look nice sitting out on a shelf for the small inside bin. I found the Utopia Kitchen Compost Bin [4]. The bin is made of stainless steel and has a volume of 1.3 gallons (4.9 liters). The lid is rounded and has a series of holes around the top. The inside of the lid holds a circular shaped charcoal filter. The combination of holes and charcoal filter capture any odors generated by the food scraps. It works amazingly well and even with onion scraps you need to stick your nose to the holes and inhale deep to smell anything when the lid is closed. It holds three to seven days worth of food scraps, most of which end up being coffee grinds. We have had this bin for 10 months, and the charcoal filter is still effective. There are replacement filters available for this bin, but you could also cut other charcoal filters to fit inside the lid.
\r\n
Outside Compost Bin
\r\n
Given the potential rat and other small critter issues, I wanted the main, outside composter to be fully enclosed, and preferably not sitting directly on the ground. A quick search brings up a number of options, both composters that sit on the ground and ones that are tumbler style, which hang on a frame. I went with a tumbler style compost bin. This provided the desired feature of not being on the ground, and has the added advantage of making it easy to turn the compost every second or third day by just rotating the bin slowly for three or four full turns. I purchased the FCMP Outdoor IM4000 Tumbling Composter [5]. The composter is octagonal shaped column with two chambers inside it. This allows you to fill one chamber while the other side is finishing the composting process. There are also aeration holes for each chamber which can be open to different levels to moderate the amount of moisture. The combined volume of the two chambers is approximately 37 gallons (140 liters).
\r\n
My Composting Experience
\r\n
So far I have been very happy with this combination. I just emptied a chamber for the third time. I do have a bit of an issue with the compost being overly damp. I have mixed some drier yard waste in from time to time and that does help, but have had times when parts of it get a little slimy. I have also run into issues with flies and other bugs living in the chamber for a while, but generally I don\'t see them outside of the composter, just when I open the door to add more material. Not ideal, but not so bad that I did anything about it. I have also found certain things do take extra time to compost, and usually need some manual help to break down. Pits of mangoes and avocados in particular along with corn cobs take a long time to break down. They do start to compost, and are easy to crumble in your hands, but keep their basic shape for a long while. Egg shells don\'t really break down, as Klaatu mentioned, but they do become very brittle and I crumble them up manually along with the pits and corn cobs. Another issue I have found with damper compost, particularly in cooler months, it doesn\'t heat up enough to decompose the seeds of some plants. This ended up being a pleasant surprise this summer after mixing in the first batch of compost in our little herb garden during the spring. We now have a combination of plumb and medium sized tomato plants and some kind of squash plant growing in it. If you don\'t want random plants growing in your yard or flower beds, do be careful when composting plants with seeds [6].
\r\n
Conclusion
\r\n
While it takes a little extra effort, composting does reduce the amount of garbage you are sending to the dump, and does reduce the smell of your kitchen trash bin. It also gives a rewarding feeling as you watch the material break down into a rich dirt, and then mix it into your garden or yard. I recommend giving it a try, and posting your experience as another episode of Hacker Public Radio.
\r\n\r\n',293,0,0,'CC-BY-SA','food,rubbish,landfill,gardening,compost,composting',0,0,1),
(3414,'2021-09-02','Critical Thinking may make You Critical of the Covid Crisis',645,'Some Science YOU can observe about covid fallacies, and some preventative medicine.','\r\n
The homeless weren\'t affected as much as other segments of the population. This Radiolab episode suggests that healthy vitamin D3 levels from being out in the sun often may be the reason.
A hospital in Spain did a double blind study, solid science. In this study, before any vaccines were available for covid, vitamin D3 made the difference between a 7.6% death rate due to covid, and a 0% death rate with vitamin D3. This YouTube video gets very technical, but tells the story.
Back in the 60s, body temperature\'s effect on fighting viruses was known, that knowledge was lost for a time because of scientists who spoke out, not knowing the whole story, but in 2003, in the aftermath of the previous covid outbreak, a doctor from China documented the need for body heat to fight off covid. Even so, medical professionals in New York set up a covid triage in Central Park during a season when the daytime temperature was in the 50s, and night time temperature was much colder. Just having a PhD behind your name doesn\'t make you right.
\r\n',395,0,1,'CC-BY-SA','covid, vitamin D3, masks, viruses, lawyers',0,0,1),
(3404,'2021-08-19','Suse 15.3 Leap',652,'A short review of Suse 15.3','
Short review of Suse 15.3
\r\n',129,0,0,'CC-BY-SA','linux, suse, leap, vnc',0,0,1),
(3412,'2021-08-31','Reading a license: Creative Commons Attribution ShareAlike 3.0 Unported',2098,'We are using this license but we didn\'t publish it on HPR ... until now!','
The original work is by Creative Commons and has been slightly modified during reading. The text\r\nreproductions below have been modified for formatting, but not intentionally for content.\r\nMisspellings are from the original.
This is a human-readable summary of (and not a substitute for) the license.
\r\n
Disclaimer
\r\n
This deed highlights only some of the key features and terms of the actual license. It is not a\r\nlicense and has no legal value. You should carefully review all of the terms and conditions of the actual\r\nlicense before using the licensed material.
\r\n
Creative Commons is not a law firm and does not provide legal services. Distributing, displaying,\r\nor linking to this deed or the license that it summarizes does not create a lawyer-client or any other\r\nrelationship.
\r\n
You are free to:
\r\n
\r\n
Share - copy and redistribute the material in any medium or format
\r\n
Adapt - remix, transform, and build upon the material for any purpose, even commercially.\r\nThe licensor cannot revoke these freedoms as long as you follow the license terms.
\r\n
\r\n
Under the following terms:
\r\n
\r\n
Attribution - You must give\r\nappropriate credit,\r\nprovide a link to the license, and\r\nindicate if changes were made.\r\nYou may do so in any reasonable manner, but not in any way that suggests the licensor endorses\r\nyou or your use.
\r\n
ShareAlike - If you remix, transform, or build upon the material, you must\r\ndistribute your contributions under the\r\nsame license\r\nas the original.
\r\n
No additional restrictions - You may not apply legal terms or\r\ntechnological measures\r\nthat legally restrict others from doing anything the license permits.
\r\n
\r\n
Notices:
\r\n
You do not have to comply with the license for elements of the material in the public domain or\r\nwhere your use is permitted by an applicable\r\nexception or limitation.
\r\n
No warranties are given. The license may not give you all of the permissions necessary for your\r\nintended use. For example, other rights such as\r\npublicity, privacy, or moral rights\r\nmay limit how you use the material.
\r\n',311,0,0,'CC-BY','license, creative commons, recital, reading, legal',0,0,1),
(3407,'2021-08-24','Software Freedom Podcast',3407,'A sample episode of the Free Software Foundation Europe Podcast','
\r\n',30,75,0,'CC-BY-SA','FSFE,Podcast,freeculturepodcasts',0,0,1),
(3419,'2021-09-09','Linux Inlaws S01E38: Tiny kernels',3748,'All you ever wanted to hear and more about micro kernels and other operating system war stories','
This episode is dedicated to tiny kernels driving operating systems also\r\n known as micro-kernels. While discussing the last 100 years of operating\r\n system design and implementation, our two aging heroes also shed some\r\n light on operating systems in general and their recent history (like fifty\r\n years). Unless you\'re a true OS nerd, you find the episode mildly\r\n refreshing and educational on the layers of software underneath your\r\n beloved applications controlling the hardware and other shenanigans. If\r\n you\'re an OS nerd, this episode may have the potential of closing your few\r\n remaining knowledge gaps (or something like this). A fun show for\r\n children of all ages and beyond.
\r\n',384,111,1,'CC-BY-SA','Operating systems, kernels, Usenet wars, Linus Torvalds, Andrew Tanenbaum, Minix, trainspotting',0,0,1),
(3421,'2021-09-13','BlacKernel\'s Journey Into Technology: Episode 1',967,'Learning about Assembly and Social Engineering before I could read','
',396,0,0,'CC-BY-SA','technology, childhood, stories',0,0,1),
(3413,'2021-09-01','Bash snippet - using coproc with SQLite',2738,'Sending multiple queries to a running instance of sqlite3','
Introduction
\r\n
I am in the process of rewriting some scripts I use to manage Magnatune albums. I’m a lifetime Magnatune member and have access to the whole music collection. I wrote a script for downloading albums and placing them in my ~/Music directory which I talked about in 2013 (show 1204). The original scripts are still available on GitLab and I know of one other person who made use of them!
\r\n
Since 2013 I have written a few other support scripts, for example one to manage a queue of albums I want to buy and download, and one which summarises the state of this queue.
\r\n
It’s this \'show_queue\' script I am currently updating (called show_queue_orig, and available in the resources to this show). The original version of this script took Magnatune album URLs from a file (acting as a queue of stuff I wanted to buy), parsed out a piece of the URL and used it to grep a pre-prepared summary in another file. This file of summaries had been made from a master XML file provided by Magnatune (see update_albums on GitLab).
\r\n
Magnatune has moved away from this master XML file to a SQLite database in recent years, so I want to perform a database lookup for each URL to list its details.
\r\n
The first version of the new script wasn’t difficult to write: just extract the search data as before and run a query on the database using this data. I have included this script which I call show_queue_db_1 amongst the resources for this episode, so you can see what I’m talking about – and what I want to improve on. It felt bad to be performing multiple calls on the sqlite3 command in a loop, so I looked around for an alternative way.
\r\n
In April 2019 clacke did a show (number 2793) about the Bash coproc command.
\r\n
This command creates a subshell running a command or group of commands which is connected to the calling (parent) process through two file descriptors (FDs). It’s possible for the calling shell to write to the input descriptor and read from the output one and thereby communicate with whatever is running in the subshell.
\r\n
I was vaguely aware of coproc at the time of clacke’s show but hadn’t looked into it. I found the show fascinating but didn’t have a use for the feature at the time.
\r\n
To solve my need to show my Magnatune queue of future purchases, it looked as if a sqlite3 instance running in a subshell could be given queries one after the other and return the answers I needed. My journey to a Bash script using coproc then followed.
\r\n',225,42,1,'CC-BY-SA','Bash,coproc,subshell,coprocess,pipe,file descriptor',0,0,1),
(3431,'2021-09-27','Living in the Terminal',2763,'BlacKernel shows you some programs you\'ll need for living life without X org','
Provides an easy way of splitting a tty into various panes
\r\n
Get multiple workspaces for free with CTL+ALT+F{1,2,3,4,5,6,7}
\r\n
All of the tiling window manager, none of the X-it
\r\n
Can set up if [ -t 0 ] && [[ -z $TMUX ]] && [[ $- = *i* ]]; then exec tmux; fi in .bashrc in order to have tmux start/stop with your terminal sessiion.
I didn\'t really use email very much when I was living on the terminal and now, since I use protonmail, I don\'t really have an easy way not to use the webmail.
\r\n
Trying to find a fix to this. Let me know your thoughts!
\r\n
This is the mail client I\'ve heard the most good things about that isn\'t built into a text editor I can\'t use
\r\n',396,11,1,'CC-BY-SA','cli, terminal, nox, linux, technology, tty',0,0,1),
(3426,'2021-09-20','Rust 101: Episode 0 - What in Tarnishing?',1348,'BlacKernel teaches you what rust is and how it is different from Python or C.','
Talking Points
\r\n
\r\n
What is Rust?\r\n
\r\n
\" Garbage Collection \" - Resource Acquisition Is Initialization (RAII)
\r\n
Strict Typing with Type Inference
\r\n
Reference pointers
\r\n
Immutable by default
\r\n
Unsafe Mode
\r\n
\r\n
Why use Rust over Python?\r\n
\r\n
Speed
\r\n
Compiled\r\n\r\n
Help from compiler
\r\n
Smaller binary size
\r\n
Useful in high throughput/embedded applications
\r\n
\r\n
Logically consistent
\r\n
\r\n
Why use Rust over C?\r\n
\r\n
Safe by default
\r\n
Easier to read
\r\n
Forces you to write good code
\r\n
Arrays without stupidity++ and built in vectors
\r\n
Option<T> and Result<T> or a match {} made in heaven
\r\n
\r\n
\r\n\r\n
Show Notes
\r\n
Strict Typing
\r\n
fn main() {\r\n\r\n // Type declared with var: <T> syntax\r\n let penguin_one: &str = "gentoo";\r\n \r\n // Type &str is inherited from "gentoo"\r\n let penguin_two = "gentoo";\r\n \r\n // Will not panic if they are the same\r\n assert_eq!(penguin_one, penguin_two);\r\n}
\r\n
Reference Pointers
\r\n
Wrong Way:
\r\n
fn print_u8_vector(vec: Vec<u8>) {\r\n println!("{:?}", vec);\r\n}\r\n\r\nfn main() {\r\n let penguin_ages: Vec<u8> = vec!(2, 4, 6);\r\n print_u8_vector(penguin_ages);\r\n \r\n // This line will throw an error\r\n println!("{}", penguin_ages[0]);\r\n}
\r\n
Correct Way:
\r\n
fn print_u8_vector(vec: &Vec<u8>) {\r\n println!("{:?}", vec);\r\n}\r\n\r\nfn main() {\r\n let penguin_ages: Vec<u8> = vec!(2, 4, 6);\r\n print_u8_vector(&penguin_ages);\r\n \r\n // This line will print '2'\r\n println!("{}", penguin_ages[0]);\r\n}
\r\n
Immutable By Default
\r\n
Wrong Way:
\r\n
fn main() {\r\n let my_num = 2;\r\n \r\n // This line will throw an error\r\n my_num = my_num + 1;\r\n println!("{}", my_num);\r\n}
\r\n
Correct Way:
\r\n
fn main() {\r\n let mut my_num = 2;\r\n my_num = my_num + 1;\r\n \r\n // This line will print '3'\r\n println!("{}", my_num);\r\n}
',396,25,0,'CC-BY-SA','rust, programming, raii, python, c',0,0,1),
(3418,'2021-09-08','My gEeeky Experiment - Part 2',648,'Claudio talks about how he installed Haiku on an Asus Eee PC 900a received from a friend.','
\r\n',152,0,0,'CC-BY-SA','asus,eeepc,haiku,beos,starmax,bebox,motorola,be',0,0,1),
(3423,'2021-09-15','\"upg.sh\" my \"dump.txt\" to \"note.md\"',2278,'I upgraded my scripts.','
upg.sh my dump.txt to note.md
\r\n
SYNOPSIS:upg.sh
\r\n
\r\n
Upgrade your system and store stdout into a markdown file.
\r\n
\r\n
#!/bin/bash\r\n# upg.sh\r\n\r\nFILENAME=sys-upgrade$(date +%m-%d-%Y).md\r\nDIRECTORY="${HOME}/Documents/"\r\n\r\n# step 1: formatting.\r\necho -e "# **System Upgrade:** $(date)\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "**Command:** \\`sudo apt-get update; sudo apt-get upgrade --yes\\`\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "**Command Breakdown:**" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`sudo\\`, Admin Privilages." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`apt-get\\`, Package Manager." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`update;\\`, Package Manager's task; update the system software repositories." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`sudo apt-get upgrade\\`, Perform system upgrade with updated repositories." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`--yes\\`, Answers yes to the prompt." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 2: run commands with formatting.\r\necho -e "\\n**Command std-output:**\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n echo $(date) \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get update \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\n# System update completed.\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get upgrade --yes \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\n# System upgrade completed.\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 3: additional details with more formatting.\r\necho -e "**Upgraded Package Details:**\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nPKGLIST=$(sed -n "/The following packages will be upgraded:/,/^.. upgraded/p" ${FILENAME} \\\r\n | sed '1d;$d' | xargs -n 1 | sed '/:i386$/d') \\\r\n\r\nPKGCACHE=$(echo -e "${PKGLIST}\\n" \\\r\n | xargs -n1 -I _ apt-cache search _)\r\necho "${PKGCACHE}" > ${DIRECTORY}delete.txt\r\n\r\necho "${PKGLIST}" \\\r\n | xargs -n 1 -I _ echo "sed -n '/^_ /p'" "${DIRECTORY}delete.txt" \\\r\n | bash | tee -a ${DIRECTORY}${FILENAME};\r\n\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nrm -v ${DIRECTORY}delete.txt;\r\nPKGLIST=\r\nPKGCACHE=\r\n\r\n# step 4: place EOF (end of file).\r\n sed -i '/EOF/d' ${DIRECTORY}${FILENAME}\r\necho "EOF" >> ${DIRECTORY}${FILENAME}\r\n#EOF\r\n
\r\n
Script breakdown:upg.sh
\r\n
\r\n
First, we declare bash as our shell with #!/bin/bash. We could also use #!/bin/sh for a more portable script.
\r\n
I like to paste the name of the script we\'re working on into the script itself # upg.sh.
\r\n
Setup a couple of variables to shorten the syntax.
Build labels and a short breakdown of the update/upgrade commands used.
\r\n
\r\n
\r\n
echo -e "# **System Upgrade:** $(date)\\n" \\ <-- formatting: label with date.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "**Command:** \\`sudo apt-get update; sudo apt-get upgrade --yes\\`\\n" \\ <-- formatting: command label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "**Command Breakdown:**" \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "- \\`sudo\\`, Admin Privilages." \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "- \\`apt-get\\`, Package Manager." \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "- \\`update;\\`, Package Manager's task; update the system software repositories." \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "- \\`sudo apt-get upgrade\\`, Perform system upgrade with updated repositories." \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\necho -e "- \\`--yes\\`, Answers yes to the prompt." \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME} <-- path/to/file\r\n
\r\n
\r\n
# step 2: run commands with formatting.,\r\n
\r\n
Setup labels and an area for the stdout to be store with markdown formatting.
\r\n
We place the time and date into the stdout area then run the commands.
\r\n
\r\n
\r\n
echo -e "\\n**Command std-output:**\\n" \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`" \\ <-- formatting: markdown.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n echo $(date) \\ <-- command: date.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get update \\ <-- command: update.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\n# System update completed.\\n" \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get upgrade --yes \\ <-- command: upgrade with "--yes" option.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\n# System upgrade completed.\\n" \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`\\n" \\ <-- formatting: markdown.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n
\r\n
\r\n
# step 3: additional details with more formatting.,\r\n
\r\n
List the packages that were upgraded with details from system cache.
\r\n
\r\n
\r\n
echo -e "**Upgraded Package Details:**\\n" \\ <-- formatting: label.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`" \\ <-- formatting: markdown.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nPKGLIST=$(sed -n "/The following packages will be upgraded:/,/^.. upgraded/p" ${DIRECTORY}${FILENAME} \\ <--| variable with list of packages within it.\r\n | sed '1d;$d' | xargs -n 1 | sed '/:i386$/d') \\ <--| sed: filter the first and last lines then remove the :i386 duplicate packages.\r\n\r\nPKGCACHE=$(echo -e "${PKGLIST}\\n" \\ <--| variable with massive apt-cache search results.\r\n | xargs -n1 -I _ apt-cache search _) <--| xargs runs the PKGLIST (the _ is the value of PKGLIST) into the apt-cache search.\r\necho "${PKGCACHE}" > ${DIRECTORY}delete.txt <--| I had to put the PKGCACHE in a file. I couldn't get sed to filter a variable (yet).\r\n\r\necho "${PKGLIST}" \\ <--| use that PKGLIST to create a few sed commands to filter the file called "delete.txt".\r\n | xargs -n 1 -I _ echo "sed -n '/^_ /p'" "${DIRECTORY}delete.txt" \\ ^--| xargs is used to create the sed commands.\r\n | bash | tee -a ${DIRECTORY}${FILENAME}; <--| run the sed commands through bash then store them.\r\n\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nrm -v ${DIRECTORY}delete.txt; <--| use rm to delete the file called "delete.txt" it has the apt-cache search results in it.\r\nPKGLIST= <--| empty the variable. why? why not!\r\nPKGCACHE= <--| empty the variable. why? why not!\r\n
\r\n
\r\n
# step 4: place EOF (end of file).,\r\n
\r\n
Add EOF (END OF FILE) to the end of the file. If one is already there, -
\r\n
it\'s removed then replaced in the correct position.
\r\n
\r\n
\r\n
sed -i '/EOF/d' ${DIRECTORY}${FILENAME} <--| search for EOF then remove it. we don't want multiple EOF if we run the script multiple times in the same day.\r\necho "EOF" >> ${DIRECTORY}${FILENAME} ^--| adds the EOF (End Of File) at the end of the file. I read it was a nice thing to do.\r\n#EOF <--| Yep. it's there.\r\n\r\n
\r\n\r\n
SYNOPSIS:note.sh \"command\" \"filename\"
\r\n
\r\n
example: note.sh \"ls -lhA\" \"basic-list\"
\r\n
make markdown notes of your commands.
\r\n
\r\n
#!/bin/bash\r\n# note.sh "command" "filename" no extentions.\r\n\r\n# variables\r\nFILENAME=$2$(date +%m-%d-%Y).md\r\nDIRECTORY="${HOME}/Documents/"\r\n\r\n# step 1: create file with formatting.\r\necho -e "# **Command:** \\` $1 \\`\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "**Command Breakdown:**" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho "$1" | tr " " '\\n' \\\r\n | awk '{ print "- `" $0 "`, info." }' \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 2: run command with more formatting.\r\necho -e "\\n**Command std-output:**" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`\\n$(date)" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho $1 | bash \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -ne "\\n${FILENAME} has been updated $(date)."\r\n\r\n# step 3: insert EOF (End Of File).\r\nsed -i '/EOF/d' ${DIRECTORY}${FILENAME}\r\necho EOF >> ${DIRECTORY}${FILENAME}\r\n
\r\n
Script breakdown:upg.sh
\r\n
\r\n
First, we declare bash as our shell with #!/bin/bash. We could also use #!/bin/sh for a more portable script.
\r\n
I like to paste the name of the script we\'re working on into the script itself # upg.sh.
\r\n
Setup a couple of variables to shorten the syntax.
\r\n
\r\n
FILENAME=$2$(date +%m-%d-%Y).md <--| the "$2" is the second user input (file name) from the commandline.\r\nDIRECTORY="${HOME}/Documents/"\r\n
\r\n
\r\n
# step 1: create file with formatting.\r\n
\r\n
Build labels for Command Name with a short breakdown of the command(s) used.
\r\n
Note: the breakdown must be entered manually.
\r\n
\r\n
\r\n
echo -e "# **Command:** \\` $1 \\`\\n" \\ <--| the "$1" is the first user input (the command) from the commandline.\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "**Command Breakdown:**" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho "$1" | tr " " '\\n' \\ <--| This just breaks the command into parts then adds some markdown formatting for use to add -\r\n | awk '{ print "- `" $0 "`, info." }' \\ ^--| details to later. I just added the word info so you know to provide info about the command. -\r\n | tee -a ${DIRECTORY}${FILENAME} ^--| the formatting gets a bit crazy if you use something like: awk {' print $1 $2 $3 '} path/to/file; each space becomes a newline with the markdown formatting.\r\n
\r\n
\r\n
# step 2: run command with more formatting.\r\n
\r\n
Echo the Command into bash with markdown formatting for stdout.
\r\n
\r\n
\r\n
echo -e "\\n**Command std-output:**" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`\\n$(date)" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho $1 | bash \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -ne "\\n${FILENAME} has been updated $(date)."\r\n
\r\n
\r\n
# step 3: insert EOF (End Of File).\r\n
\r\n
Add EOF (END OF FILE) to the end of the file. If one is already there, -
\r\n
it\'s removed then replaced in the correct position.
\r\n
\r\n
\r\n
sed -i '/EOF/d' ${DIRECTORY}${FILENAME}\r\necho EOF >> ${DIRECTORY}${FILENAME}\r\n
\r\n',391,0,0,'CC-BY-SA','Bash Scripting, sed, awk, xargs, markdown, notes',0,0,1),
(3427,'2021-09-21','Ranger for the Win!',1096,'In this episode, I go over some typical use cases for the Ranger file manager','
Programs referenced in this episode
\r\n
\r\n
ranger
\r\n
caca-utils
\r\n
poppler-utils
\r\n
atool
\r\n
highlight
\r\n
trash-cli
\r\n
xlsx2csv
\r\n
docs2txt
\r\n
catdoc (for doc2txt and xls2csv)
\r\n
ods2tsv
\r\n
\r\n',300,0,0,'CC-BY-SA','ranger,file manager,linux',0,0,1),
(3428,'2021-09-22','Bad disk rescue',1794,'Bad disk rescue - tragedy or happy ending?','
Here I tell the tale of a bad disk rescue. Is the rescue bad or just the disk? Well the disk is most certainly bad but please listen and tell me if the rescue was good or bad or could have been done better.
',268,0,0,'CC-BY-SA','linux,disk,windows,virtualbox',0,0,1),
(3422,'2021-09-14','Update about Phones and Devices',1341,'An Update about my New Phone and second one that is coming','
Small update about my new RedMi 10s and my new Monty Mint phone.
CISO Stories - Hosted by Todd Fitzgerald and Sam Curry and part of the Security Weekly family of podcasts\r\n
\r\n
Based originally on interviews with security leaders who contributed to the book \"CISO COMPASS: Navigating Cybersecurity Leadership Challenges with Insights from Pioneers\"
That wraps up this series. I welcome any feedback you might have in the comments section for this episode on the HPR site.
\r\n
Thank you very much for listening.
\r\n',394,75,0,'CC-BY-SA','infosec, podcasts, security, leadership',0,0,1),
(3429,'2021-09-23','Linux Inlaws S01E39: Ubuntu and the Community',5207,'All about your favourite Debian spin and IBM mainframes','
\r\n In this episode, our two hosts host Rhys Davies, a developer advocate from Canonical. So all\r\n beans will be spilled on one of the most popular Linux distros out there. Like its past, present\r\n and future. Never mind how Canonical makes its moolah and where this goes... Plus an interesting\r\n infomercial on old big iron (IBM, if you\'re listening: the mail address is sponsor@linuxinlaws.eu).\r\n
LOST :( https://rmccurdy.com/.scripts/downloaded/CL4P-TP%20Claptrap%20Borderlands%20Bricklink.xml
\r\n
7 missing out of 216 on one shipment
\r\n
\r\n\r\n\r\n
Photo \r\n Click the thumbnail to see the full-sized image
',36,0,0,'CC-BY-SA','lego',0,0,1),
(3432,'2021-09-28','Reading a license: Creative Commons Attribution ShareAlike 4.0 International',1956,'We jump into the future of 2013 and see how content licensing has changed','
The below is an Adaptation that has been reformatted for simplicity and focus on the text, removed graphical elements such as the Creative Commons Attribution and ShareAlike icons and has simple links to more info where there was originally a popup with a brief description and then a link.
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
\r\n
This is a human-readable summary of (and not a substitute for) the license.
\r\n
Disclaimer
\r\n
\r\n
This deed highlights only some of the key features and\r\nterms of the actual license. It is not a license and\r\nhas no legal value. You should carefully review all of\r\nthe terms and conditions of the actual license before\r\nusing the licensed material.
\r\n
Creative Commons is not a law firm and does not\r\nprovide legal services. Distributing, displaying, or\r\nlinking to this deed or the license that it summarizes\r\ndoes not create a lawyer-client or any other\r\nrelationship.
\r\n
\r\n
You are free to:
\r\n
\r\n
Share - copy and redistribute the material in any medium or format
\r\n
Adapt - remix, transform, and build upon the material for any purpose, even commercially.
\r\n
\r\n
\r\n
The licensor cannot revoke these freedoms as long as you follow the license terms.
\r\n
Under the following terms:
\r\n
\r\n
Attribution - You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
\r\n
ShareAlike - If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
\r\n
No additional restrictions - You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
\r\n
\r\n
Notices:
\r\n
\r\n
You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.
\r\n
No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
\r\n',311,0,0,'CC-BY-SA','license, creative commons, recital, reading, legal',0,0,1),
(3433,'2021-09-29','A Squirrels thoughts about RMS',2565,'RMS and the subject of freedom','\r\n
\r\n\r\nThis podcast was provided by Zen_Floater2 in his personal capacity. The opinions expressed in this podcast are the author\'s own and do not reflect the view of Hacker Public Radio. \r\nShownotes Edited by Ken on 2021-09-11T14:35:19Z to include disclaimer.\r\n\r\n
\r\n\r\n\r\n\r\n\r\n
\r\nA Squirrels thoughts about freedom and RMS.\r\n
\r\n
\r\nI also cover guns on aircraft. I cover smoking on aircraft.\r\n
\r\n
\r\nAnd I cover drinking beer on aircraft.\r\n
\r\n
\r\nAnd COBOL as well.\r\n
\r\n',377,0,1,'CC-BY-SA','RMS,Pedophilia,BEER',0,0,1),
(3434,'2021-09-30','From 0 to K8s in 30 minutes',1938,'Build a Kubernetes cluster, run a website, route traffic to website','
Install CentOSor Debian on a Raspberry Pi. I\'m using CentOS, but I\'ll admit that Debian is the easier option by far.
\r\n
Do this on 3 separate Pi units, each with the same specs.
\r\n
Set hostnames
\r\n
You must have unique hostnames for each Pi. Without unique hostnames, your cluster cannot function.
\r\n
There are several \"kinds\" of hostnames, so to avoid confusion I change all of them.
\r\n
I use a simple naming scheme: k for \"kubernetes\" + an integer, starting at 100 + c for \"cluster\":
Do this for each Pi. At a minimum, you end up with Pi computers named k100c, k101c, and k102c.
\r\n
Set verbose prompts
\r\n
When working with many different hosts, it\'s helpful to have a very verbose prompt as a constant reminder of which host you\'re connected to. Add this to the ~/.bashrc of each Pi:
#!/bin/bash\r\n\r\nset -o errexit\r\nset -o nounset\r\n\r\ntrap quit INT TERM\r\n\r\nCOUNT=0\r\nLED="/sys/class/leds/led0"\r\n\r\nif ! [ $(id -u) = 0 ]; then\r\n echo "Must be run as root."\r\n exit 1\r\nfi\r\n\r\nif [[ ! -d $LED ]]\r\nthen\r\n echo "Could not find an LED at ${LED}"\r\n echo "Perhaps try '/sys/class/leds/ACT'?"\r\n exit 1\r\nfi\r\n\r\nfunction quit() {\r\n echo mmc0 >"${LED}/trigger"\r\n}\r\n\r\necho -n "Blinking Raspberry Pi's LED - press CTRL-C to quit"\r\necho none >"${LED}/trigger"\r\n\r\nwhile true\r\ndo\r\n let "COUNT=COUNT+1"\r\n if [[ $COUNT -lt 30 ]]\r\n then\r\n echo 1 >"${LED}/brightness"\r\n sleep 1\r\n echo 0 >"${LED}/brightness"\r\n sleep 1\r\n else\r\n quit\r\n break\r\n fi\r\ndone\r\n
\r\n
Install K3s on your control plane
\r\n
K3s is Kubernetes for IoT and Edge computing. It\'s the easiest, cleanest, and most serious method of getting Kubernetes on an ARM device. You can try other solutions (Microk8s, Minikube, OXD, and so on), but the best support comes from k3s.
\r\n
First, you must install k3s on one Pi. You can use any of your Pi units for this, but I use host k100c because it\'s the first in the sequence, so it feels logical.
Read the script to ensure that it seems to do what you expect, and then:
\r\n
[k100c]$ ./install_k3s.sh\r\n
\r\n
After installation, you\'re prompted to add some arguments to your bootloader. Open /boot/cmdline.txt in a text editor and add cgroup_memory=1 cgroup_enable=memory to the end of it.
Once the Pi is back up, verify that your node is ready:
\r\n
[k100c]$ k3s kubectl get node\r\nNAME STATUS ROLES AGE\r\nk100c Ready control-plane,master 42s\r\n
\r\n
This Pi is the \"control plane\", meaning it\'s the Pi that you use to administer your cluster.
\r\n
Get the node token
\r\n
Obtain the control plane\'s node token. Thanks to k3s, this is autogenerated for you. If you not using k3s, then you must generate your own with the command kubeadm token generate.
Add your control plane hostname to your hosts file
\r\n
If you know how to manage local DNS settings, then you can use a DNS service to identify the hosts in your cluster. Otherwise, the easy way to make your nodes know how to find your control plane is to add the control plane\'s hostname and IP address to the /etc/hosts file on each node. This also assumes that your control plane has a static local IP address. For example, this is the host file of k101c and k102c:
Now you can add the other Pi computers to your cluster. On each Pi you want to turn into a computer node, install k3s with the control plane and token as environment variables. On my second Pi, for instance, I run this command:
\r\n
[k101c]$ curl -sfL https://get.k3s.io | K3S_URL=https://k100c:6443 K3S_TOKEN="${MYTOKEN}" sh -\r\n
\r\n
On my third and final Pi, I run the same command:
\r\n
[k102c]$ curl -sfL https://get.k3s.io | K3S_URL=https://k100c:6443 K3S_TOKEN="${MYTOKEN}" sh -\r\n
\r\n
Verify your cluster
\r\n
On your control plane, verify that all nodes are active:
\r\n
% k3s kubectl get nodes\r\nNAME STATUS ROLES AGE VERSION\r\nk100c Ready control-plane,master 2d23h v1.21.4+k3s1\r\nk102c Ready <none> 21h v1.21.4+k3s1\r\nk101c Ready <none> 20h v1.21.4+k3s1\r\n
\r\n
It can take a few minutes for the control plane to discover all nodes, so wait a little while and try the command again if you don\'t see all nodes right away.
\r\n
You now have a Kubernetes cluster running. It isn\'t doing anything yet, but it\'s a functional Kubernetes cluster. That means you have a tiny Pi-based cloud entirely at your disposal. You can use it to learn about Kubernetes, cloud architecture, cloud-native development, and so on.
\r\n
Create a deployment and some pods
\r\n
Now that you have a Kubernetes cluster running, you can start running applications in containers. That\'s what Kubernetes does: it orchestrates and manages containers. You\'ve may have heard of containers. I did an episode about Docker containers in episode 1522 of HPR, you can go listen to that if you need to catch up. I\'ve also done an episode on LXC in episode 371 of my own show, GNU World Order.
\r\n
There\'s a sequence to launching containers within Kubernetes, a specific order you need to follow, because there are lots of moving parts and those parts have to reference each other. Generally, the hierarchy is this:
\r\n
\r\n
namespaces are the \"project spaces\" of kubernetes. I cover this in great detail in my GNU World Order episode 13x39.
\r\n
create a deployment that manage pods.
\r\n
pods are groups of containers. it helps your cluster scale on demand.
\r\n
services are front-ends to deployments. A deployment can be running quietly in the background and it\'ll never see the light of day without a service pointing to it.
\r\n
traffic, or exposure. A service is only available to your cluster until you expose it to the outside world with an external IP address.
\r\n
\r\n
First, create a namespace for your test application to use.
\r\n
[k100c]$ k3s kubectl create namespace ktest\r\n
\r\n
The Kubernetes project provides an example Nginx deployment definition. Read through it to get an idea of what it does. It looks something like this:
This creates metadata named nginx-deployment. It also creates a label called app, and sets it to nginx. This metadata is used as selectors for pods and services later.
Now you must connect the Nginx instance with a Kubernetes Service.
\r\n
The selector element is set to nginx to match pods running the nginx application. Without this selector, there would be nothing to correlate your service with the pods running the application you want to serve.
[k100c]$ k3s kubectl --namespace ktest get svc nginx-deployment\r\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\r\nnginx-deployment ClusterIP 10.43.32.89 <none> 80/TCP 58s\r\n
\r\n
A Service is backed by a group of Pods. Pods are exposed through endpoints. A Service uses POST actions to populate Endpoints objects named nginx-deployment. Should a Pod die, it\'s removed from the endpoints, but new Pods matching the same selector are added to the endpoints. This is how Kubernetes ensures your application\'s uptime.
Notice that the Endpoints value is set to a series of IP addresses. This confirms that instances of Nginx are accessible. The IP of the service is set to 10.43.251.104, and it\'s running on port 80/TCP. That means you can log onto any of your nodes (referred to as \"inside the cluster\") to interact with your Nginx app. This does not work from your control plane, only from a node.
\r\n
[k101c]$ curl https://10.43.251.104\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<title>Welcome to nginx!</title>\r\n</head>\r\n<body>\r\n<h1>Welcome to nginx!</h1>\r\n</body>\r\n</html>\r\n
\r\n
Nginx is accessible.
\r\n
The only thing left to do now is to route traffic from the outside world.
\r\n
Exposing a deployment
\r\n
For a deployed application to be visible outside your cluster, you need to route network traffic to it. There are many tools that provide that functionality.
Save this as metallb.yaml and apply the configuration:
\r\n
$ k3s kubectl apply -f metallb.yaml\r\n
\r\n
You now have a configmap for metallb, and metallb is running.
\r\n
Create a load balance service mapping your deployment\'s ports (port 80 in this case, which you can verify with k3s kubectl -n ktest get all). Save this as loadbalance.yaml:
This service selects any deployment in the ktest namespace with an app name of nginx, and maps the container\'s port 80 to a port 80 for an IP address within your address range (in my example, that\'s 10.0.1.1/26, or 10.0.1.1-10.0.1.62).
\r\n
$k3s kubectl apply -f loadbalance.yaml\r\n
\r\n
Find out what external IP address it got:
\r\n
$ k3s kubectl get service ktest-ext -n ktest\r\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)\r\nktest LoadBalancer 10.43.138.91 10.0.1.3 80:31790/TCP\r\n
\r\n
Open a web browser and navigate to the external IP address listed (in this example, 10.0.1.3).
\r\n\r\n',78,61,0,'CC-BY-SA','network, kubernetes, cloud',0,0,1),
(3438,'2021-10-06','Ten privacy friendly Google search alternatives.',551,'Google search is monopolistic here are some alternatives','
Here are links to all the search engines and related stuff discussed during this podcast,
\r\n',397,74,0,'CC-BY-SA','searx, whoogle, metager, gigablast, private.sh, ecosia, startpage, qwant, brave, duckduckgo',0,0,1),
(3446,'2021-10-18','Speech To Text',1378,'I talk about converting HPR audio to text and tagging','
\r\n',36,0,0,'CC-BY-SA','AI,ML,scripting,audio',0,0,1),
(3721,'2022-11-07','HPR Community News for October 2022',3248,'HPR Volunteers talk about shows released and comments posted in October 2022','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 34 comments in total.
\n
Past shows
\n
There are 5 comments on\n3 previous shows:
\n
\n
hpr3693\n(2022-09-28) \"Fixing the automatic cutoff mechanism to an electric mower\"\nby Rho`n.
\n
\n
\n
\nComment 1:\nSome Guy On The Internet on 2022-10-27:\n\"Thank you.\"
\n
hpr3694\n(2022-09-29) \"Robo Tripping Ravelords of the Apocalypse\"\nby Mechatroniac.
\n
\n
\n
\nComment 6:\nSome Guy On The Internet on 2022-10-27:\n\"Please continue.\"
\n
hpr3695\n(2022-09-30) \"How I watch youtube with newsboat\"\nby binrc.
\n
\n
\n
\nComment 2:\nbinrc on 2022-10-01:\n\"RSS THE PLANET\"
\n
\nComment 3:\nDave Morriss on 2022-10-03:\n\"Great show, but I have questions\"
\n
\nComment 4:\nNate on 2022-10-20:\n\"use an invidious instance to get the channel id\"
\n
\n
This month\'s shows
\n
There are 29 comments on 14 of this month\'s shows:
\n
hpr3697\n(2022-10-04) \"Mis-information, Dis-information, and Fake News. You are a product and target for all of it.\"\nby Lurking Prion.
\n
\n
Comment 1:\nSome Guy On The Internet on 2022-10-27:\n\"Bravo, Bravo!\"
Comment 1:\nThe hacker formerly known as b-yeezi on 2022-10-29:\n\"Tin foil hat engaged\"
Comment 2:\none_of_spoons on 2022-10-31:\n\"Protonmail shopping for law enforcement.\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Older HPR shows on\narchive.org, phase 2
\n
Now that all shows from number 1 to the latest have been uploaded to\nthe Internet Archive there are other tasks to perform. We are\nreprocessing and re-uploading shows in the range 871 to 2429 as\nexplained in the Community News show notes released in May\n2022. We are keeping a running total here to show progress:
\n
\n
\n
\nMonth\n
\n
\nMonth count\n
\n
\nRunning total\n
\n
\nRemainder\n
\n
\n
\n
\n2022-04\n
\n
\n130\n
\n
\n130\n
\n
\n1428\n
\n
\n
\n
\n2022-05\n
\n
\n140\n
\n
\n270\n
\n
\n1288\n
\n
\n
\n
\n2022-06\n
\n
\n150\n
\n
\n420\n
\n
\n1138\n
\n
\n
\n
\n2022-07\n
\n
\n155\n
\n
\n575\n
\n
\n983\n
\n
\n
\n
\n2022-08\n
\n
\n155\n
\n
\n730\n
\n
\n828\n
\n
\n
\n
\n2022-09\n
\n
\n150\n
\n
\n880\n
\n
\n678\n
\n
\n
\n
\n2022-10\n
\n
\n155\n
\n
\n1035\n
\n
\n523\n
\n
\n
\n\n
Updated: 2022-11-05 15:28:06
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3439,'2021-10-07','Linux Inlaws S01E40: The One with the BSDs',5834,'The other One Operating System to Rule them all','
In this episode, Martin and Chris host an eclectic panel of contributors to\r\nthe *other* major FLOSS operating system family - you guessed it: the\r\nflavours of the Berkeley Software Distribution (aka BSD among friends).\r\nDisclaimer: you may be tempted to diverge from the Path of the\r\nRighteousness also known as Linux and give this alternative a spin. So\r\nthis episode is *not* for the faint-hearted - listen at your own\r\ndiscretion! Also: the true defective nature of our beloved (?) hosts\' past\r\nwill be revealed - an episode not be missed despite the caveat! Plus\r\na refresher on spaced-out operating system concepts including library\r\noperating systems and a rant on Android and friends. In addition to some\r\ncool BSD trolling...
\r\n',384,111,1,'CC-BY-SA','Berkeley Software Distribution, library operating systems, Android, Copyleft, BSD License, Usenet',0,0,1),
(3442,'2021-10-12','What is this thing called science',790,'Critical thinking is only part of the equation. Here\'s the other part.','\r\n
Some time ago, I did some Hacker Public Radio episodes in which I ostensibly demonstrated how to create a PDF with Scribus. Secretly, I was actually demonstrating how unexpected payloads could be embedded into a PDF. Did the PDF I uploaded as part of that episode no longer contain a payload if the listener who downloaded it wasn\'t aware that the payload existed?
\r\n
I\'ve been diagnosed by educators as a \"life long learner,\" which as far as I can tell is a buzzword referring to someone who takes pleasure in learning new things. In our world of technology, dear listener, I think this term is just \"hacker.\" And that\'s appropriate, because this is Hacker Public Radio you\'re listening to now, and listeners of this show tend to be people who enjoy learning and exploring new ideas, taking apart gadgets to see what makes them tick, reverse engineering code and data to understand how it gets processed, and so on.
\r\n
The thing about being a hacker or a life-long learner is that there\'s a lot of stuff out there that wants to be hacked, or learnt. And it turns out that it\'s just not possible to learn everything. Sometimes, you\'re out of your depth. It can be tricky to recognize when you\'re out of your depth, and I think there\'s a certain learn-able skill to knowing that you don\'t know something. There\'s a lot of value to this skill, because when you can recognize you don\'t have expertise on something, you\'re able to look around you and find someone who has. That\'s significant because you can learn from someone with expertise.
\r\n
In my own humdrum life, before getting a full-time job at a tech company, I was commissioned on several occasions to build out infrastructure for a video game development project, an indie radio station, a few different multimedia projects, and so on. When I took on those roles, I became the resident expert. People turned to me for the authoritative word on what technological solutions should be used. When I told them, they were more or less obligated to listen, because that was the role I\'d been hired for. If they were to ask me what a workstation should run, and I said Linux, but they bought a Mac instead, then my role would be unarguably redundant. They could just as easily type the question into a search engine on the Internet, and ignore the result. Or they could roll a die, or whatever.
\r\n
In those cases, though, it\'s a question of my opinion compared to someone else\'s opinion. Both are valid. Because I was the architect, my opinion mattered more to the long-term plan, but if the long-term plan were to change from having a highly-available cluster for fast 3d model rendering to having workstations with a familiar desktop, then my opinion would be less valid.
\r\n
But there are some areas in life where opinions don\'t matter. Specifically, that area is science. But what is science, anyway? People talk about science a lot, but it took me a long time, especially as someone who largely came from an artistic background, to comprehend the significance of the term, much less how it worked.
\r\n
Forget about all the high school classes and pop dietitians and physicists. Science is a framework. It\'s a set of principles designed to help our human brains hack the world around us in a methodical and precise way. Instead of letting our opinions, which may or may not be relevant, influence conclusions and decisions we make, science looks at the results of controlled input and output. Wait a minute. \"Input and output\"? Those are words I understand. Those are computer terms!
\r\n
Yeah it turns out that computers are the product of science, and in fact building computers and programming computers is a form of Computer Science. Those are just words we made up, but they reveal a lot about what we computer hackers do all day. Computers don\'t understand the influence of opinion, or your force of will, or the power of faith. They just take input and produce output. They do this very reliably.
\r\n
I don\'t know whether you\'ve ever tried, but it\'s really hard to make a computer. Comprehending how a CPU processes rudimentary electrical pulses to transform them into complex instruction sets is mind-bending, at least to me. I\'ve sat down and thought about it critically. I\'ve set up a few experiments, too. There\'s one you can do with dominoes, believe it or not, that can somewhat help you design a logic circuit. There\'s a Turing Machine you can build with Magic The Gathering cards. And an electronics kit that\'ll help you build an 8bit CPU. But even with all of those experiments, the open RISC-V CPU still eludes my comprehension.
\r\n
And just to be clear: back in 2008 or so, I was hired to stress test a RISC CPU to determine whether it was efficient at rendering massive amounts of video. I designed tests in an attempt to prove that a RISC CPU could not out-perform the latest Intel Core2duo, and could not achieve the goal (RISC is better, what can I say?) So my affinity for RISC is far from just a passing interest. But I can\'t build a RISC-V or even really explain how a CPU works.
\r\n
For that, I understand that there are experts. These aren\'t just people I call experts because they\'re labeled that way on their shirt pocket. They\'re experts because they\'re building the RISC-V, and it works. I met some of them back at OSS Con in 2019. I recognize their expertise, because they\'re proving their knowledge.
\r\n
Let\'s say I approached the RISC-V booth with the preconception that x86 was superior. After all, why would most consumer computers be running x86 if it weren\'t the best? I might be skeptical if I were told that RISC-V is superior for some tasks. Could they have ulterior motives? Could they have been paid off by Big Silicon to lie about RISC\'s performance in order to hurt x86\'s marketshare? Sure, it could happen. And that skepticism is important. It\'s arguably part of the scientific process. Look at the results of an experiment, replicate the input and ensure that the output is reliably the same.
\r\n
But you can\'t be sure until you\'ve duplicated the experiments that make the claim in the first place. Unfortunately, this often requires some pretty controlled environments, and possibly some pretty high end equipment.
\r\n
The bottom line is that I\'m never going to get around to doing that, I\'m never going to have access to those resources, and I\'m never going to have the understanding I\'d need to comprehend all the potential variables involved. In short, I just don\'t have the expertise. But I\'m willing to trust the expertise of a lot of people from all over the world working on this project. I\'m going to trust that because they all agree on similar findings, that what they\'re saying about the design and architecture of their CPU, that there\'s a high likelihood that their findings are correct.
\r\n
The same goes, as it turns out, for biological sciences. No matter how many one-off experiments discover that cigarette smoking is beneficial to your health, the wider scientific consensus is that it\'s harmful. No matter how man \"free-thinkers\" on the Internet discover that Covid-19 is actually no worse than the common cold, the worldwide scientific community asserts that it\'s actually harmful, and medical staffs across the globe assert that increased cases of Covid-19 cause bed and healthcare shortages for everyone else. Somebody online may assert that it\'s an impossibly unified globe-spanning political plot, but that relies on a bunch of untest-able opinions and interpretations of reality that fall well outside any scientific framework.
\r\n
It seems to me that this line of speculation makes about as much sense as asking whether your computer can really still add numbers accurately. Couldn\'t it occasionally be lying to you? The device you\'re using to listen to my voice right now not to scramble what I\'m saying and accurately play what I recorded in the first place is based on the same scientific principles used by those in biological sciences. We\'re feeding data into functions, whether the function is written in code, forged in silicon, or written on paper as a math formula, and we\'re observing the results. When every expert in their field, across the entire globe, agrees on the output, I think we do too. It\'s either that, or we\'d better all go build our own 8bit circuits out of chickens and batteries and just start to rebuild.
\r\n
So did the PDF I uploaded as part of the Scribus episode no longer contain a payload if the listener who downloaded it wasn\'t aware that the payload existed? Obviously not. If the listener lacked the foresight or expertise to investigate the PDF for a hidden file, then they could have posted an episode of their own about how my PDF was completely normal. They\'d have been confident in their findings. But you and I know that whatever experiments they might have used to come to the conclusion that Klaatu was NOT a liar was, in the end, insufficient. The payload did exist, but it was just outside this imaginary listener\'s detection or comprehension.
\r\n
Critical thinking is important. But at the same time, the scientific framework requires more than just critical thinking, just as building a RISC-V CPU requires more than just being a fan of reduced instruction sets. And solving the Covid-19 crisis takes a lot more than just critical thinking and a couple of backyard \"experiments.\" We\'re not in the Dark Ages any more, folks. Get vaccinated. Stay safe, and I\'ll talk to you next time.
\r\n',78,0,0,'CC-BY-SA','covid, science, risc-v, cpu',0,0,1),
(3443,'2021-10-13','Neuton battery replacement',593,'Rho`n describes replacing the battery in his Neuton EM 4.1 electric lawn mower','
Audio Notes
\r\n
During the audio I repeatedly called it the Neutron mower instead of the Neuton mower. I was too lazy edit those mispronunciations.
\r\n
Introduction
\r\n
After recently reclaiming my Neuton EM 4.1 electric lawn mower from my parents, I needed to replace the battery to make it operational. This mower was purchased in the early 2000s, and replacement batteries for it are no longer available from the manufacturer. Thankfully replacement 12V 10A batteries are available through third parties.
\r\n
Replacing Parts
\r\n
I faced two issues with finding replacement parts. The Neuton mowers run at 24V and need batteries that can provide 10 amps of current. They come with a battery case that holds two 12V 10A batteries connected in series. The case holds the batteries and provides a connector and circuitry for a 24V DC charger. When I received the mower back from my parents, it didn\'t have a battery case with it. While the Neuton website is still online, and looks like you can order some accessories still, they no longer carry replacement battery cases or batteries. I was able to find just the case on EBay. I then found replacement batteries on Amazon.
\r\n
Installing the batteries in the case is simple. One side of the case has a lid. The lid is held in place by plastic notches on the bottom and two screws at the top. The screws have size 10 star heads. The batteries sit side by side in the case, with their terminals facing the lid. I connected the inner terminals (negative of one battery to positive of the other) with the jumper wire that came with the case. I then connected the outer terminals to the battery case terminal wires, slid the batteries all the way into case, closed, and fastened the lid.
\r\n
Conclusion
\r\n
The batteries are currently charging. The red charging light did come on when I plugged in the 24V DC charger, and nothing has exploded yet, so I am optimistic I will be able to use the mower again shortly.
\r\n
References
\r\n
\r\n
Neuton CE5.4 24 volt rechargeable battery CASE ONLY - EBay item
\r\n',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,rechargeable battery',0,0,1),
(3445,'2021-10-15','True critical thinking seems to be the key',4328,'A response to HPR 3414','\r\n
A response to Critical Thinking may make You Critical of the Covid Crisis
\r\n
(HPR episode 3414, produced by CoGo and released on 2021-09-02)
\r\n
Defining terms
\r\n
\r\n
What is Critical Thinking?\r\n
\r\n
The Wikipedia definition begins: \"Critical thinking is the analysis of facts to form a judgment.\"
\r\n
It goes on to say: \"The subject is complex, and several different definitions exist, which generally include the rational, skeptical, unbiased analysis, or evaluation of factual evidence.\"
\r\n
See the references below.
\r\n
\r\n
\r\n
\r\n
Note the use of the terms fact, factual evidence and unbiased analysis. It is my contention that HPR episode 3414 fails in these regards in several places.
\r\n
\r\n
\r\n
What is an \"experiment\"?\r\n
\r\n
Wikipedia’s definition begins: \"An experiment is a procedure carried out to support or refute a hypothesis. Experiments provide insight into cause-and-effect by demonstrating what outcome occurs when a particular factor is manipulated.\"
\r\n
\r\n
\r\n
\r\n
The term experiment is often used incorrectly in episode 3414. A better term would be observation or anecdote
\r\n
\r\n
\r\n
The virus:\r\n
\r\n
The virus is a coronavirus. There are many viruses classified in this way.
\r\n
The name of the virus is SARS-CoV-2. The SARS part stands for Severe Acute Respiratory Syndrome, the type of disease caused by the virus. CoV signifies that it is a coronavirus and the 2 means it’s the second SARS-type corona virus to have caused problems in the recent past. The other one, just called SARS occurred in 2003.
\r\n
The name of the disease caused by SARS-CoV-2 is COVID-19. The letters COVID define it as a coronavirus disease. The 19 part is because it was first discovered in 2019.
COVID-19 false dichotomies and a comprehensive review of the evidence regarding public health, COVID-19 symptomatology, SARS-CoV-2 transmission, mask wearing, and reinfection:\r\n
\r\n\r\n',225,100,1,'CC-BY-SA','COVID-19,social distancing,masks,aerosol,Vitamin D3,body temperature,vaccines',0,0,1),
(3444,'2021-10-14','The Psion series 5mx',1178,'A show where I talk about my experiences of the Psion 5mx, a portable computer from the late 90s','
The psion series 5mx is a portable computer from the late 90s, here\'s my episode talking about it.
',381,0,0,'CC-BY-SA','retro, psion, programming, pdas',0,0,1),
(3452,'2021-10-26','Neuton battery test',324,'Rho`n describes testing the battery in his Neuton EM 4.1 electric lawn mower','
Introduction
\r\n
On today\'s show I test whether the battery replacement for my Neuton mower is a success. This is a follow up to episode 3443. After some audio recording difficulties with the blue tooth headset I used with my phone, we hear if the replacement was successful. Before I could test the battery, I needed to replace the mower key. I think it would have been simple to just jump the terminals with a wire and maybe some alligator clips to hold the wire to the key terminals, but I was worried this would not guarantee the wire shaking loose as I moved. I looked on EBay and found a replacement key for about fifteen dollars US, and decided it was worth the cost and the wait before trying out the mower.
\r\n
Testing the mower
\r\n
After putting the key in the mower, pulling and holding the safety levers, and then pressing the start button. The mower wouldn\'t start. I checked the key was set properly, and saw the green LED on the handle lit and indicating that power was available. I pulled the key and battery out, and then reseated both of them, checking once again that the power indicator was lit. After some fooling around with the safety levers and start button, I realized you had to push the start button and then pull and hold the safety levers for the mower to start. The mower runs well, and the cost of the batteries and key will even out over time from the savings on not paying for a lawn service.
\r\n
References
\r\n
\r\n
DR Neuton Cordless Walk Behind 14\" Lawn Mower CE2 CE3 CE5 Reset Security Key - EBay item
',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,rechargeable battery',0,0,1),
(3447,'2021-10-19','BlacKernel\'s Journey Into Technology: Episode 2',1249,'In which BlacKernel struggles to talk about Windows','
Talking Points
\r\n
\r\n
W*ndows Power User\r\n
\r\n
Programmed a few Visual BASIC programs, but was underwhelmed with how BASIC the programming language was
\r\n
Tried installing Python and Ruby to much frustration
\r\n
Tried installing Cygw*n to make Python/Ruby easier to work with
\r\n
Read on the Cygw*n site about something called Linux
\r\n
Started working with C and C++
\r\n
\r\n
Customizing my deck\r\n
\r\n
Tried to customize as much as I could about my W*ndows install
\r\n
Utilized tools to change the boot logo, the start menu, the init scripts, etc.
\r\n
Hit a few snags with problems boot-looping, not loading graphically, etc
\r\n
Tried editing the W*ndows registry and realized that the programs I was using to edit the operating system necessarily break the security and stability of the OS
\r\n
Didn\'t really know/care about open source, but was getting frustrated that I wasn\'t able to just reach in to my system\'s code to fix it.
\r\n
\r\n
\r\n\r\n\r\n\r\n
Show Notes
\r\n
Important Links:
\r\n
\r\n
I couldn\'t really find any of the stuff that I used and, at this point, I\'m not super motivated to find them.
In this infomercial on Microsoft, our hosts discuss the infamous Halloween\r\ndocuments (\'tis the season after all), a set of ancient scrolls dating back\r\nmore than twenty years and giving an overview of the behemoth\'s then strategy\r\non open source and how to possibly combat it. But fear not, ye of little faith\r\n:-), all is well now as the episode shows also the long way Microsoft has come\r\nsince then and its adoption (and giving back!) as an enterprise technology.
\r\n\r\n
Plus: How to increase your market cap by using FLOSS. And last but not least:\r\nThe Dark Side is back by popular demand! With a special episode on the usual\r\nHalloween stuff including vampires, Transylvania, politicians, QAnon, Zoom,\r\nTeams and other horror topics (Ever wondered what happened to Angela Merkel\r\nafter she stepped down as Germany\'s chancelorette in 2021? Then don\'t miss out\r\non this episode!).
\r\n',384,111,1,'CC-BY-SA','Microsoft, Google, The Dark Side, Halloween, Transylvania, Carmesine-colored Soy Milk, vegan vampire',0,0,1),
(3471,'2021-11-22','The Sony Walkman WM-F41',531,'A quick talk about one of my favorite Legacy Audio devices, a genuine Sony FM/AM cassette Walkman.','
This episode is just a quick talk about one of my favorite legacy audio devices, my Sony FM/AM cassette Walkman, model WM-F41.
\r\n\r\n',238,0,0,'CC-BY-SA','audio, vintage audio, cassette tapes, tape players, portable stereos, audio repair',0,0,1),
(3468,'2021-11-17','Distro upgrade intervals on my Raspberry Pi',786,'In this episode I discuss Debian distro upgrade intervals for my raspberry Pi','
A discussion about Debian LTS distro upgrade intervals on my Raspberry Pi
\r\n',201,0,1,'CC-BY-SA','Linux, Distros, Raspberry Pi, Debian',0,0,1),
(3741,'2022-12-05','HPR Community News for November 2022',3276,'HPR Volunteers talk about shows released and comments posted in November 2022','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 25 comments in total.
Comment 2:\nZen_floater2 on 2022-11-27:\n\"loved this\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
HPR RSS feeds and https\nlinks
\n
A question came up in November regarding the HPR RSS feeds. All of\nthe URLs in these feeds use \'http\' as opposed to\n\'https\'.
\n
Although this may seem odd, this is a fairly common thing to do,\nbecause the RSS standard (such as it is) does not cater for\n\'https\' links. There is a concern that passing an RSS feed\nwith such links to a validator (such as the W3C Feed Validation Service)\nwill result in it being marked as invalid.
\n
Older HPR shows on\narchive.org, phase 2
\n
Now that all shows from number 1 to the latest have been uploaded to\nthe Internet Archive there are other tasks to perform. We are\nreprocessing and re-uploading shows in the range 871 to 2429 as\nexplained in the Community News show notes released in May\n2022. We are keeping a running total here to show progress:
\n\n
\n
\n
\nMonth\n
\n
\nMonth count\n
\n
\nRunning total\n
\n
\nRemainder\n
\n
\n
\n
\n2022-04\n
\n
\n130\n
\n
\n130\n
\n
\n1428\n
\n
\n
\n
\n2022-05\n
\n
\n140\n
\n
\n270\n
\n
\n1288\n
\n
\n
\n
\n2022-06\n
\n
\n150\n
\n
\n420\n
\n
\n1138\n
\n
\n
\n
\n2022-07\n
\n
\n155\n
\n
\n575\n
\n
\n983\n
\n
\n
\n
\n2022-08\n
\n
\n155\n
\n
\n730\n
\n
\n828\n
\n
\n
\n
\n2022-09\n
\n
\n150\n
\n
\n880\n
\n
\n678\n
\n
\n
\n
\n2022-10\n
\n
\n155\n
\n
\n1035\n
\n
\n523\n
\n
\n
\n
\n2022-11\n
\n
\n230\n
\n
\n1265\n
\n
\n293\n
\n
\n
\n\n
Updated: 2022-12-03 16:10:11
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3464,'2021-11-11','Being irrational',777,'Being irrational is rational.','
When listening to HPR 3442 by Klaatu, which I recommend, some thoughts about how we think started rattling about in my head. In this show I riff on that and talk about the importance of our irrational mode of thought.
\r\n',268,0,0,'CC-BY-SA','philosophy,mathematics,science,chess,logic,music',0,0,1),
(3465,'2021-11-12','Walmart Onn 7 inch tablet gen 2',863,'Podcast about a new Android go Tablet I purchased ','
\r\n',129,0,0,'CC-BY-SA','Walmart, Android Go, Tablet',0,0,1),
(3466,'2021-11-15','Why HPR has less downloads',551,'A short summary on why podcast listening might be on decline.','
I did a show about why I do not listen to non-mainstream podcasts as much as I used to. For me two things happened: I switched from being in the car for 16 hours a week to being a remote sales person at home. So the 16 hours I listened to podcasts every week in the car went away. The second reason I reduced was that many of the podcasts I was listening to were presented by people who do not share my values. So I stopped listening to them. The third reason I listen less is the Army opened up the online book library to retired service members and I do a lot of audio books in the moment.
\r\n',129,0,0,'CC-BY-SA','podcasts, dowloads',0,0,1),
(3469,'2021-11-18','Linux Inlaws S01E43: The Great Battle or not',4138,'The Great Battle nor Not','
In this episode Martin and one of the Grumpies (as in Grumpy Old Coders)\r\nbattle it out: SQL or NoSQL - which technology is better? If you ever wondered\r\nwhy the Structured Query Language was invented in the first place and why the\r\nhipster abandoned ship for the latest (?) rage of the likes of the NoSQL\r\nvariety, this is for you. Plus: A whole family of never-heard-of sound effects\r\nmake their debut on this bumper of an episode.
\r\n',384,111,1,'CC-BY-SA','SQL, NoSQL, Grumpy Old Coders, Hipster databases, mainframes, Execution planners',0,0,1),
(3448,'2021-10-20','Installing GuixSD',2679,'Rho`n records installing GuixSD to an external USB drive to be run on a Mac Mini computer','
Synopsis
\r\n\r\n
In this episode Rho`n records his adventure in installing GuixSD on an external USB drive which will be run on a Mac Mini computer. After overcoming the initial difficulty of finding a keyboard that would connect wirelessly to the Mac Mini while using the Guix installer and some network difficulties, he describes the installation steps.
\r\n\r\n
Guix has a graphical text based installer. It is reminiscent of the mid to late 90s Debian installers. Even with its old school feel, the installer is very nice. It is well laid out, has good onscreen description for each step of the installation process, and provides ample configuration selections from language, to to key board layout, to desktop and software selection.
\r\n',293,0,0,'CC-BY-SA','Guix,GuixSD,installer,install,USB drive,Mac Mini,grub rescue',0,0,1),
(3461,'2021-11-08','Changes to HPR Branding',2441,'Rho\'n, Dave and Ken read the entire email thread related to changing the HPR theme','
',159,47,0,'CC-BY-SA','HPR, Branding, Intro, Outro',0,0,1),
(3453,'2021-10-27','Rust 101: Episode 1 - Hello, World!',1348,'In which BlacKernel introduces the cargo tool and goes into detail on the rust hello world program','
Talking Points
\r\n
\r\n
main.rs\r\n
\r\n
Like main.cpp in C++ or main.c in C
\r\n
Tells the compiler which file to start with
\r\n
Can link to other \"crates\" and \"modules\"
\r\n
\r\n
Cargo.toml\r\n
\r\n
Keeps track of application metadata
\r\n
This includes dependencies!
\r\n
\r\n
Functions\r\n
\r\n
Strictly typed, like everything in Rust
\r\n
Declared by fn
\r\n
Argument typed with argument: Type
\r\n
Return typed with -> Type otherwise assumed to return nothing
\r\n
\r\n
The Main Function\r\n
\r\n
Like the main functions in C and C++
\r\n
Where the program starts within the main.rs file
\r\n
CLI arguments handled by std::env, rather than argv and argc in C
\r\n
Can return nothing or a Result<()>
\r\n
\r\n
Macros\r\n
\r\n
Metafunctions or functions for functions
\r\n
More general than functions, having flexibility in the number of arguments, etc, but harder to write
\r\n
\r\n
The println! Macro\r\n
\r\n
Can take any number of arguments that implement the display trait
\r\n
Usually things like strings or character literals
\r\n
Will format them into a string and display it on the terminal
\r\n
Similar to printf in C
\r\n
\r\n
The Hello World program\r\n
\r\n
Can be automagically generated with cargo new and then the name of your application
\r\n\r\n',396,25,1,'CC-BY-SA','rust, programming, hello world, macros, functions',0,0,1),
(3455,'2021-10-29','Podcast Recommendation: IBM and Quantum computing',193,'Highlights of a podcast from Moore\'s Lobby','
Moore\'s Lobby
\r\n
Ep. 34 | The Latest from the Lab: How IBM Research Is Inventing What\'s Next
Qiskit is open-source software for working with quantum computers at the level of circuits, pulses, and algorithms.
\r\n
\r\n
\r\n
\r\n
\r\n\r\n',318,0,0,'CC-BY-SA','podcast, moore\'s law, quantum computing, qubits, encryption, cryptography, NIST, Josephson junction',0,0,1),
(3463,'2021-11-10','Clonezilla: A backup story',2046,'Rho`n walks through the process of backing up his laptop with Clonezilla','
Notes on the audio quality
\r\n
I have been looking into the audio quality issues of my shows. I think I have found a solution to them. Unfortunately, this show was recorded before I discovered it.
\r\n
Synopsis
\r\n
In today\'s episode, I take the audience along my adventure in backing up my laptop\'s hard drives. During recent OS updates, the kernel updates started to fall. In my efforts to resolve the problem, I made things worse – to the point I decided it was time to reinstall the operating system. To prevent any data loss, I chose Clonezilla to image the drives.
\r\n\r\n
The Clonezilla Live edition lets you boot into a ncurses menu driven system that walks you through the process of either backing up your hard drives or restoring a Clonezilla backup. Clonezilla backups save space by imaging only the data on your drives (for those filesystems it recognizes – otherwise it uses dd to do a sector-by-sector copy)
\r\n\r\n
Overall the process was very smooth, and, at the end, I was confident to move forward with wiping my main hard drive and reinstalling the operating system knowing I had a way to restore any lost data.
\r\n\r\n',293,0,0,'CC-BY-SA','Clonezilla,backup,backups,cloning,hard drives',0,0,1),
(3454,'2021-10-28','Engineering Notation',736,'Ken runs through the most common Engineering Notation used in HAM radio.','
Engineering Notation
\r\n
Learn this table
\r\n
\r\n giga G 109 1,000,000,000\r\n mega M 106 1,000,000\r\n kilo k 103 1,000\r\n 1\r\nmilli m 10−3 0.001\r\nmicro μ 10−6 0.000,001\r\n nano n 10−9 0.000,000,001\r\n pico p 10−12 0.000,000,000,001\r\n
\r\n',30,43,0,'CC-BY-SA','giga,mega,kilo,milli,micro,nano,pico,SI, International System of Units',0,0,1),
(3457,'2021-11-02','Tables',2260,'How and why I convert tables to lists','
\nMobile devices don\'t display them nicely.\nMost tables can be converted into a list:\n
\n\n
\n
\n
OS
Init
Pkg
\n
\n
\n
Fedora
systemd
dnf
\n
\n
\n
Slackware
BSD-style
slackpkg
\n
\n
\n
Gentoo
OpenRC
emerge
\n
\n
\n\n
Can be represented as a list. In YAML terms, this is a sequence of mappings.\n
\n\n
Fedora\n
Init system: systemd
\n
Package manager: dnf
\n
\n
Slackware\n
\n
Init system: BSD-style
\n
Package manager: slackpkg
\n
\n\n
Gentoo\n
\n
Init system: OpenRC
\n
Package manager: emerge
\n
\n
\n\n
A table doesn\'t always translate exactly to a list, but it probably can be restructured.
\n\n
\n
\n
OS
Open source
Landed on Mars
\n
\n
Linux
Yes
Yes
\n
\n
\n
BSD
Yes
No
\n
\n
\n
macOS
No
No
\n
\n
\n\n
Could be written like this instead:
\n\n
Linux and BSD are open source operating systems, while macOS is not. Of these POSIX-compliant systems, only Linux has landed on Mars so far.
\n\n
That\'s pretty casual and loses the visual impact of a table or a list. So alternately, you could summarize what\'s common and highlight differences:
\n\n
\nThere are a few Linux systems on Mars.\nNeither BSD or macOS have yet landed on Mars.\n
\n\n
\n
Linux and BSD are both open source.
\n
macOS is based partially on open source and includes components from the BSD, KDE, GNU, and other projects.
\n
\n',78,4,0,'CC-BY-SA','data,tables,communication',0,0,1),
(3458,'2021-11-03','Living in the Terminal 2: The Obligatory Sequel',3648,'A very tired BlacKernel tries to handle feedback from the previous episode','
\r\n',396,0,1,'CC-BY-SA','cli, linux, terminal, applications, picks, tired',0,0,1),
(3459,'2021-11-04','Linux Inlaws S01E42: The Open Source Initiative',4396,'The Open Source Initiative','
In this episode our two OAPs host Deb Nicholson, the general manager of the\r\nOpen Source Initiative (OSI). Apart from riveting insights into open source\r\nlicensing we discuss the greater FLOSS ecosystem and Deb\'s views on why\r\nwearing shoes is important in certain contexts, open source standards, law\r\nsuits and the differences between US and Europe among other things.
Editor\'s Note, 2021-12-09: TerminusDB link changed as requested
\r\n',384,111,1,'CC-BY-SA','OSI, RMS, Open Core, the Cat Internet, Luca, Loki, open source licensing',0,0,1),
(3462,'2021-11-09','Metal marbles.',618,'Introduction of new host, with reference to semantic playgrounds.','
Title: Metal marbles.
\r\n
Summary: Introduction of host, with reference to semantic playgrounds.
\r\n
Link to the rust converter recipe, which I found to be cheaper, and more sprayable than buckets of gel or paint-like substances which you might find elsewhere:
In case that link moves, search for tannic acid rust converters, then choose your buffers.
\r\n
Email: \r\nhpr@spoons.one
\r\n
Mastodon, though very very rarely: \r\n@one_of_spoons@hispagatos.space
',398,0,1,'CC-BY-SA','host zen',0,0,1),
(3472,'2021-11-23','consuming an AQI API',386,'just because the sky is clear, doesn\'t mean the air is safe to breathe','
Determining air quality in my area is as simple as visiting https://www.airnow.gov and entering my zip code. Although my zip code covers 139.56 square miles, the result is accurate enough for my needs. When my zip code was submitted, the web page did not refresh. This means that the client interface made an API call to the backend server.
\r\n
It sure would be nice if the AQI status was emailed to my phone every hour, if the AQI was above a certain threshold.
\r\n
In order to get the data from the API, it is necessary to emulate the request made by the client to the API. This can be accomplished using Firefox.
open the Firefox developer tools, either through the menu or with CTRL+SHIFT+i
\r\n
in the dev tools, select the Network tab
\r\n
enter the zip code in the form and submit
\r\n
watch the Network tab for a POST request to https://airnowgovapi.com/reportingarea/get
\r\n
click on the request in the network tab
\r\n
\r\n
Another set of tabs are now available to display various bits of information regarding the request. From this data, it is possible to recreate the query. \r\nHowever, I took an even easier route, and right-clicked on the query in the Network tab, and selected Copy > Copy as cURL to get the request as a curl command complete with all necessary arguments prefilled. Since I didn\'t want to write my entire AQI fetching script in bash, I copied the curl command into a text file and ported the request to Ruby.
\r\n',243,25,0,'CC-BY-SA','ruby, api, programming',0,0,1),
(3473,'2021-11-24','My journey into Amateur Radio',616,'Dave explains his journey into Amateur Radio, initial setup and successes.','
Opening
\r\n
Hello, my name is Dave, and welcome to another exciting episode of Hacker Public Radio. It\'s been a couple of years since my last episode, and I know that HPR is running low on shows. As I have had this one in planning for some time now, I though this was the right time to get it finished.
\r\n
Main
\r\n
At the time of recording this, I\'ve been an Amateur Radio licence holder for 6 months. I took the notion of studying and applying for my Foundation licence (the first of three stages to a Full licence) when I read a blog post by Jon Spriggs G7VRI, back in March, entitled Might Amateur Radio be a hobby for you? I saw a presentation by Jon at OggCamp in 2018 in Sheffield where he gave a whistle-stop tour of what Amateur Radio actually is, and how easy it is to get involved in it.
\r\n
As a bit of background, I was quite involved in the CB Radio scene back in the late 80s and early 90s - I was introduced to CB by my dad, whose handle was \"Screwball\", in the 70s... he had a CB rig in his car since as far back as I can remember. I picked up the hobby from him, by actually liberating him of his rig when he stopped using it. Unfortunately it got stolen from my car. C\'est la vie. Yes, my handle back then was \"The Love Bug\" - in fact, it was whilst looking for an alternative to \"Kool Kat\" as a handle that I first used the moniker \"The Love Bug\" - probably in the mid-80s - and it just stuck.
\r\n
So, after reading Jon\'s blog post, and doing some research into Amateur Radio myself, a whole bunch of things happened at the same time: I bought my first radio - a Baofeng UV-5RTP [Amazon UK], I joined the Radio Society of Great Britain (not a requirement, but I would recommend it), signed up for Essex Ham\'s Foundation Training Course (not a requirement, but strongly recommended as it\'s geared around the examination, and it\'s free!)
\r\n
The training took 3 weeks (in my own time), and I applied for my exam as soon as the training was complete. The exam was an hour long, under as close to exam conditions as an online exam would allow, and I was told by the online system that I\'d passed as soon as I submitted my answers. It then took a few days to get the confirmation of passing (and a certificate) in the post, which then allowed me to apply to Ofcom (the authority for the radio spectrum here in the UK) for my licence and callsign. I was able to choose the suffix of my callsign, and - as BUG was taken - I opted for TLB (for The Love Bug), and thus my callsign is - currently - M7TLB (Mike Seven Tango Lima Bravo). I say \"currently\" - I\'m not allowed to change my callsign, however the callsign is specific not only to me but also to the fact that I\'m a Foundation Licence holder. Therefore, when I go for my Intermediate and then Full licence, I\'ll get new callsigns for each one, each superseding the previous.
\r\n
Anyhoo, once I got my Foundation licence, I went out that Sunday to log some contacts, or QSOs. So I parked up at a high point near to here, put a small aerial on the roof of the car (so that I didn\'t warm up my head when transmitting), and started calling CQ - essentially a way of saying \"I want to talk to somebody\" - \"Seek You\". As part of the licence conditions, you are only permitted to make contact with other identifiable and identified amateurs... general broadcasts to whomever might be listening are prohibited. Except when calling CQ to initiate that contact.
\r\n
So I\'d call out something akin to \"CQ, CQ, this station Mike Seven Tango Lima Bravo, Mike Seven Tango Lima Bravo Portable, calling CQ.\" The \"Portable\" indicates that I\'m not at my home station location. It\'s also a good indication that my transmission might be variable due to the portable nature of the station.
\r\n
I was transmitting using 8 watts of power, two watts fewer than the limit of my license, but significantly lower than the 400 watts that I could be using as a Full licence holder, so my hopes weren\'t high. My first contact was with a chap just outside Caistor, Lincolnshire... about 38 miles direct from where I was based. He was also using a portable station, but with a directional beam antenna, meaning that both transmission and reception from his end was able to focus on my direction. So yeah, impressed!
\r\n
My second contact was also a portable station, located at a high-point by the Woodhead Pass, in Penistone, about 18 miles direct from where I was. This contact was the gift that kept on giving, as there were two other portable stations at the same location, so I got three contacts in the log for that one.
\r\n
Things went quiet after that one, so after a further 5 calls out, I figured that was my lot. Still, I was happy with four QSOs on my first day!
\r\n
Later the same day, I went out for my daily constitutional, so I figured I\'d take the radio - with the standard short rubber-duck antenna, and an earpiece - with me. At least that way, I wouldn\'t look too silly, or a target to be fair. My intention was just to bounce around the frequencies and listen to conversations, rather than put out any CQs myself... I was in a residential area, so I didn\'t want to draw attention to myself.
\r\n
Whilst listening, I heard someone calling CQ and inviting respondents to a different frequency, so I followed and listened. There were a couple of contacts already there that I couldn\'t hear, so I waited for the initial contact to finish working the first. When he put out a call for whomever originally responded, I jumped in with my callsign, thinking that there was no way he would hear me. Consider that I was walking around town, in a reasonably built-up area, with probably the worst antenna I could have chosen for distance, and he wasn\'t exactly coming through strong. He responded to me directly, asking me to standby whilst he worked the other station that responded. Well, I was shocked to hear him say to the other contact that he was in East Yorkshire, about 33 miles from here! He was using a directional beam antenna which was pointing due west... whereas I am south-west of his location, so when you consider the other things I mentioned, the fact that he was also not pointing his antenna directly at me I was completely amazed that I was able to hold this relatively decent quality conversation with someone that far away. Well pleased was I.
\r\n
Cost-wise, I should warn that Amateur Radio can be an expensive hobby, but it absolutely doesn\'t have to be. At a bare minimum, to get me \"on the air\" I bought the Baofeng (£42.99), and paid for my Foundation examination (£27.50), so a little over £70 overall. I actually bought a number of accessories for the radio, and joined the RSGB, but these are in no way required expenses. The standard radio on its own is more than sufficient to gain some decent contacts, as I hope I\'ve proven with the success from that Sunday.
\r\n
Since then, I have bought an HF (or High Frequency) radio from India, it\'s a low-power model (or QRP) which is unlikely to get very far, but there are transmission modes that I can use that are specifically intended for low-power operation. My next big thing is to get an antenna up in the back garden along with a decent tuner so that I can actually use that radio!!
\r\n
By the time this episode goes out, I will have started an intensive course with OARC (Online Amateur Radio Community) which is a UK-based club - a more fantastic bunch of people you are not likely to find - so I\'ll be able to change my callsign to one beginning 2E0 or 2E1, and be able to use up to 50W to transmit, even though I don\'t have any equipment capable to transmitting 50W - yet!
\r\n
I point you to the excellent Ham radio, QSK series on HPR where a number of correspondents have recorded shows about Amateur Radio that you may find interesting. I\'m putting this episode into the same series.
\r\n
Questions
\r\n
Are you an Amateur Radio operator? Let me know.
\r\n
Call to action
\r\n
Drop me an email to hpr@thelovebug.org, I\'m on Facebook and Twitter as thelovebug, or leave a comment on this episode, or record your own episode in response.
\r\n
At the time of recording this, HPR is low on shows, if you have any shows in progress, or something burning in your mind, get it recorded. Find out more over at hackerpublicradio.org.
\r\n
Close
\r\n
So, that\'s it for today... thanks for listening. \r\nWherever you are in the world, stay safe. \r\nCome back again tomorrow for another exciting episode on Hacker Public Radio.
\r\n
73 de M7TLB
\r\n',314,43,0,'CC-BY-SA','amateur radio, baofeng, rsgb, qso, cq, ham, ham radio, hf',0,0,1),
(3476,'2021-11-29','My mutt email setup',765,'My humble mutt email setup','\r\n\r\n
Get app password and enter it in a file call pass
\r\n\r\n
set my_gpass= "MyAppPassword"
\r\n\r\n
Encrypt pass file with \'gpg -e pass\'
\r\n
Shred pass file with \'shred -uv pass\', which uses verbose mode
\r\n\r\n
shred - overwrite a file to hide its contents, and optionally delete it\r\n -u deallocate and remove file after overwriting\r\n -v, --verbose, show progress
\r\n\r\n
Use gpg encrypted key to open Gmail
\r\n
\r\n
in .muttrc source \"gpg -d ~/.mutt/pass.gpg |\"
\r\n
\r\n
Source colors file: Custom color scheme
\r\n\r\n
## Custom - Shows a gray line on tagged emails\r\n color index yellow brightblack "~T ~N | ~T"
\r\n
Tagged emails \r\n
\r\n\r\n
Source hooks file: Redirect default save path for email sorting
Install zathura-pdf-mupdf and zathura-pdf-poppler\r\n
\r\n
Just needed zathura-pdf-mupdf, zathura-pdf-poppler was included with zathura.
\r\n
\r\n
\r\n
\r\n
\r\n
mailcap - metamail capabilities file\r\n\r\nDESCRIPTION\r\n The mailcap file is read by the metamail program to determine how to display non-text at the local site.
\r\n',318,11,0,'CC-BY-SA','mutt,email, gpg,accessibility ',0,0,1),
(3485,'2021-12-10','50 years since the 1st Edition of Unix was published',747,'Ken (Fallon not Thompson) checks his unix like computer to see how many commands still exist.','
top ten of the first unix commands
\r\n
50 years after the 1st Edition of Unix was published, Ken (Fallon not Thompson) checks his unix like computer to see how many commands still exist (38) and how many are not installed by default (23).
Many are available under another name but I have not installed them. Seven of the of the twenty two relates to tapes.
\r\n
\r\nB -- language\r\nbas -- basic\r\nbcd -- binary coded decimal conversion\r\nboot -- reboot system\r\nchdir -- change working directory\r\ncheck -- file system consistency check\r\ndb -- debug\r\ndbppt -- dump binary paper tape\r\ndsw -- delete interactively\r\ndtf -- DECtape format\r\nfor -- fortran\r\nform -- form letter generator\r\nhup -- hang up typewriter\r\nlbppt -- load binary paper tapes\r\nrew -- rewind tape\r\nrkd -- dump RK disk to tape\r\nrkf -- format RKO3 disk pack\r\nrkl -- reload RK disk from tape\r\nroff -- format text\r\nsdate -- set date and time\r\ntap -- manipulate DECtape\r\ntm -- provide time information\r\nun -- undefined symbols\r\n
\r\n',36,0,1,'CC-BY-SA','audio',0,0,1),
(3491,'2021-12-20','My Github and flickmetrix',1553,'Bear with me as I go though my github over the past year some real gems in here','
\r\n',36,0,1,'CC-BY-SA','scripts,hacking,github,windows,linux',0,0,1),
(3467,'2021-11-16','Protonmail in the terminal',2262,'One way of doing Protonmail in the terminal.','
I use email in the terminal with a combination of:
\r\n
\r\n
protonmail-bridge-cli
\r\n
local IMAP server to fetch Protonmail mails\r\n
\r\n
tmux
\r\n
to run protonmail-bridge in\r\n
\r\n
isync (or offlineimap etc)
\r\n
to sync IMAP with maildirs\r\n
\r\n
notmuch
\r\n
to tag and search mails\r\n
\r\n
afew
\r\n
to move mails found by certain notmuch queries in certain maildirs\r\n
\r\n
alot
\r\n
to read, compose, search and tag mails\r\n
\r\n
msmtp
\r\n
to send mails\r\n
\r\n
w3m (or lynx etc)
\r\n
to read HTML mails in the terminal\r\n
\r\n
rsync
\r\n
to copy archived mails\r\n
\r\n
a shell function and an alias
\r\n
to make it all less ridiculous\r\n
\r\n
\r\n
To most, Thunderbird will be suitable, the target audience here is unreasonable people.
',399,0,1,'CC-BY-SA','email,protonmail,alot,afew,notmuch,mbsync',0,0,1),
(3475,'2021-11-26','How I Watch Everything Using Open Source Software',878,'Using Libreelec, Kodi, a tuner, and a Raspberry Pi to create a great media center','
I\'ve been using this setup or one similar for several years now and it has worked out very well.
\r\n
Hardware:
\r\n
\r\n
Clearstream TV antenna
\r\n
Coax cable
\r\n
Hauppage WinTV-dual HD USB Dual Tuner
\r\n
Raspberry Pi 4 4GB
\r\n
1 TB SSD connected via USB 3
\r\n
HDMI cable
\r\n
\r\n
Software:
\r\n
\r\n
Libreelec OS
\r\n
Kodi
\r\n
TVheadend server
\r\n
TVheadend client
\r\n
Debrid addon media streamer
\r\n
\r\n
Any questions or comments you can reach me at minnix at minnix dot dev
\r\n',375,0,0,'CC-BY-SA','libreelec,kodi,raspberry pi,tvheadend',0,0,1),
(3477,'2021-11-30','Picking a Forth',1313,'Available forths, old and new','
\r\n
arduino as a sketch download pdf at wiki.forth-ev.de, then cut and paste $
\r\n
the arduino controlled by eforth, search for this ter$
\r\n',326,0,0,'CC-BY-SA','forth, arduino, history',0,0,1),
(3478,'2021-12-01','Audio Wiring Hack on a Classroom Podium',1093,'Listen in while I hack the wiring on our classroom podium for custom audio routing.','
In this episode I take you along for the ride as I hack the wiring in a classroom podium so that I can show musical scores on the Elmo document camera while playing audio through the podium\'s laptop VGA audio source. Without this hack, the students could either see the score, or they could hear the music, but not both. This simple hack installing two jumper wires allows them to see the score and hear the music at the same time, which is important in my classes. I could already do this by using a PDF music score on my laptop while playing the audio file, but this allows me to use a paper score and audio from my laptop at once. It essentially acts as an audio splitter, sending the audio signal to two channels at once.
\r\n\r\n',238,0,0,'CC-BY-SA','audio, wiring, higher education',0,0,1),
(3484,'2021-12-09','My vim setup with GnuPG',501,'My vim setup with the GnuPG vim plugin','
Using the GnuPG vim plugin to edit encrypted files.
set tabstop=2 softtabstop=0 expandtab shiftwidth=2 smarttab textwidth=80\r\nsyntax on\r\nautocmd BufRead,BufNewFile *.log set filetype=logtalk\r\nset spell spelllang=en_us
\r\n
Generate gpg full key \r\ngpg --full-generate-key
\r\n
or just a regular one, with less options \r\ngpg --gen-key
\r\n
Encrypt the file in question, with -r as the recipient \r\nIn this case, I used part of the comment as the recipient
\r\n
Picture 1 \r\n Click the thumbnail to see the full-sized image
\r\n
This is more like it. \r\ngpg -e -r test thisIsMyTestFile.txt
\r\n
Now test edit the file \r\nvim thisIsMyTestFile.txt.gpg
\r\n
Picture 2 \r\n
\r\n
It is a good idea to shred the original text file
\r\n
shred - overwrite a file to hide its contents, and optionally delete it\r\n -u deallocate and remove file after overwriting\r\n -v, --verbose, show progress
\r\n
Example: shred -u -v foo.txt
\r\n',318,11,0,'CC-BY-SA','vim, plugin, lightweight',0,0,1),
(3486,'2021-12-13','Unleash the true potential of GNU nano text editor',516,'Turn GNU nano text editor into a fancy, good looking & powerful editor','
Text editors are highly subjective and highly opinionated commodities. Everyone is aware of infamous rivalry between users of Emacs and Vi/Vim. Every single text editor has its own strengths and weaknesses. At the end of the day it\'s the question of your personal preferences and muscle memory when it comes to default key-bindings. Both Emacs and Vim have a learning curve. Steepness of that curve depends on the person\'s background and interests. Hey, but today I\'m not here to talk about Emacs and Vim. I\'m here to talk about a simple, easy to use and almost ever present text editor called GNU nano. So what exactly is this nano text editor? Well, according to documentation available on GNU nano\'s website,
\r\n
\r\n
GNU nano was designed to be a free replacement for the Pico text editor, part of the Pine email suite from The University of Washington. It aimed to \"emulate Pico as closely as is reasonable and then include extra functionality\".
\r\n
\r\n
Pico and Pine email suites are still around so what was the need to create nano in the first place? The answer is license. Pico and Pine email suites nowadays are available under Apache-2.0 license but that always wasn\'t the case and this ambiguity in the original licensing terms of the Pico editor led to the creation of nano. It was first created in 1999 with the name TIP (an acronym for TIP Isn\'t Pico), by Chris Allegretta. The name was changed to nano on January 10th, 2000 to avoid a naming conflict with the existing Unix utility tip. The name comes from the system of SI prefixes, in which nano is 1000 times larger than pico. In February 2001, nano became a part of the GNU Project. BTW if you want to know more about SI prefixes, I\'d highly recommend you to listen to HPR episode 3453 - Engineering notation by Ken Fallon.
\r\n
nano is really small in footprint and is relatively easy to use compared to Emacs and Vim and perhaps this is the reason why you\'d invariably find it already installed on almost all GNU/Linux distributions. If you have ever used nano before you might have noticed that it looks kinda boring; there are no line-numbers nor there is any syntax highlighting and spell-checking also seems absent. But this is not true. nano has all of these features and even some more like regex searches, indentation, multiple buffers, available at its disposal. Then why does it come across as a plain Jane? The short answer is, I honestly don\'t know! For some unknown and obscure reasons many of nano\'s cool features are disabled by default. This results in nano coming across as a plain Jane little text editor that is uncool. And as I mentioned earlier, that is not true. But worry not! It is so darn easy to unleash the true potential of nano and make it shine. Are you ready? Great! Let\'s do it together then!
\r\n
First thing we need to to do is create a file with the name .nanorc in the $HOME directory. Open your terminal emulator and run,
\r\n
touch $HOME/.nanorc\r\n
\r\n
We\'d also need to create a directory called Nano_Backups in our Documents directory. To do so run the following command,
\r\n
mkdir -p $HOME/Documents/Nano_Backups\r\n
\r\n
Next open that .nanorc file and simply paste the following content in it,
You\'ll have to replace USERNAME in the line number four, set backupdir \"/home/USERNAME/Documents/Nano_Backups/\" with your actual username and then save this file.
\r\n
Wouldn\'t it be nice if the colors in nano were different for a normal user and a root user? Yes, for sure. To do so create an empty .nanorc file in the root\'s directory,
\r\n
sudo touch /root/.nanorc\r\n
\r\n
Next create the backup directory Nano_Backups in root\'s Documents directory. To do so run the following command,
\r\n
sudo mkdir -p /root/Documents/Nano_Backups\r\n
\r\n
Open that /root/.nanorcfile and paste this content in it and save the changes,
What we have just done is, we have enabled some useful features of nano and changed the default keybindings to the more familiar ones like Ctrl+C for copying, Ctrl+X for cutting, Ctrl+V for pasting and a bunch of other key combinations. We\'ve also enabled automatic backing-up of documents. Backups will get saved in the user\'s Documents/Nano_Backups directory.
\r\n
Spell checker is enabled in nano via this configuration but to utilize it you\'ll have to install aspell and aspell-dictionary from your package manager.
\r\n
Kudos! We have turned a timid GNU nano into a powerful wildebeest. Try this configuration and if possible leave your feedback.
\r\n
A word of warning. Package maintainers often ship stripped down versions of nano so one of these features might not be present in your installation and in that case, nano will throw some errors and refuse to start. You have two choices in that scenario; first, disable that feature by deleting the corresponding line from .nanorc file. Your second option is to download the nanosource code and compile it yourself with all the features intact. If I were you, I\'d go with the second option as compiling nano is really simple and straightforward. Only extra packages that you will need are libncurses-dev and libmagic-dev.
\r\n
I\'ll leave you guys with a quote from some wise man,
\r\n
\r\n
Good Things Come in Small Packages.
\r\n
\r\n',397,11,1,'CC-BY-SA','text-editor, terminal, linux, nano, pico, pine, nanorc',0,0,1),
(3488,'2021-12-15','Binaural 3d audio recording, please listen at normal speed with good head phones.',302,'recorded November 19 2021 quick storm.','
Recorded November 19 2021 quick storm. Please search Binaural on HPR for similar recordings and description of procedure, enjoy and have a glorious 2022.
\r\n',110,101,0,'CC-BY-SA','Binaural, storm, thunder',0,0,1),
(3479,'2021-12-02','Linux Inlaws S01E49: Version Control Systems and why bother',3414,'Version Control Systems and why bother','
In this episode our two heroes contemplate the ins and outs of version\r\ncontrol systems (VCS) and how to maintain sanity using them. Particular focus\r\nis on the newer generation of such as git which enabled large-scale community\r\nprojects such as the Linux kernel, programming languages like Rust and Python\r\nand other shenanigans. Including a crash course on version control systems\r\n- you may credits at your local third-level education facility for listening\r\nto this episode. Just tell them the Inlaws sent you :-). Plus Martin reveals\r\nhis favourite Pay TV channel and his gun-buying habits being a minor. Don\'t\r\nmiss this episode if you\'re a minor and want to buy a gun in certain countries\r\n(details as part of the episode! :-).
\r\n',384,111,1,'CC-BY-SA','Version control systems, git, subversion, mercurial, bazaar, how to buy guns as a minor in NL',0,0,1),
(3483,'2021-12-08','Pinephone64 review',563,'Sigflup got a pinephone and wants to talk about it. ','
\r\n',115,0,0,'CC-BY-SA','linux,cellphone,pinephone,mobie phone',0,0,1),
(3505,'2022-01-07','A DX with Hotel Bravo 9 Hotel November Tango',2890,'Ken (PA7KEN) and Beni (HB9HNT) talk about getting your HAM ticket in Switzerland','
\r\nUnion of Swiss Short Wave Amateurs, they manage the local associations and the use of the frequencies for relays and automated stations: https://www.uska.ch/en/\r\n
\r\n\r\n
Training
\r\n\r\n
\r\nMost likely the best way to prepare for the exam is attending a preparation course from a local Association, of have a brother who did and forwarded all the background info and documents to me. ;) But apart from having a brother I did the following:\r\n
\r\nI mainly used the HamRadioTrainer to prepare for the exam. This is a Windows application which however works pretty well in wine. I was told that the Swiss questions are rather old, 2017ish.\r\n
\r\n
\r\nI was told that there are mobile apps with more recent questions but I couldn\'t be bothered to check whether they exist on F-Droid.\r\n
',288,43,0,'CC-BY-SA','Swiss,BAKOM,HamRadioTrainer,HB9',0,0,1),
(3482,'2021-12-07','Introduction to Post Apocalyptic Robotics Meta Technology',810,'Building robots from junk parts and tech prepping','
Hail to my Loyal Henchmen and fellow SuperVillains, welcome new recruits and greetings to the hackers of HPR.
\r\n
This is Mechatroniac the mechatronics maniac with the zeroth installment of Robot Warlords of the Apocalypse, where I will talk about post apocalyptic robotics and share my projects, philosophy and future ambitions.
\r\n
I am doing this podcast contribution for hacker public radio.
\r\n
hackerpublicradio.org
\r\n
After this has aired on HPR I will be adding video and to this presentation which will be uploaded to my channel at:
Mechatronics is code, electronics and mechanics working together as a system. I am weak in all 3, but have built mini battlebot style robots completely from scratch, with every chassis part, every motor and wheel, and every circuit that drives them sourced for free from junk like discarded printers, dvds, tvs, computers and UPS.
\r\n
I am calling this ethos and the resultant aesthetic, Post Apocalyptic Robotics, that is robots that can be built by reclaiming existing post consumer products to create something new.
\r\n
Currently they are confined to smooth surfaces like battlebot arenas, but more rugged terrain bots are currently also being worked on, and I want to work towards autonomous and swarm robots as well.
\r\n
The recipes I release here, can be followed by anyone to build their own robots and devices, by simply gathering the required scrap units or similar as described; then disassembling, then finally reassembling into a new meta technological device.
\r\n
I hope that others will do the same, and come up with their own innovations and new recipes that can be added to our incipient swarms of meta-technological bots as they evolve ever more sophistication.
\r\n
Welcome to post apocalyptic robotics.
\r\n
Introduction to Post-Apocalypse Robotics Meta-technology
\r\n
Tech Prepping, Building a \'battlebot\' out of junk
\r\n
Meteors, asteroids, comets. Cataclysmic solar flares, massive volcanic eruptions and earthquakes triggering massive tsunamis, social unrest, runaway climate change, ransomware and EMPs attacks striking electric grids, deadly viral pandemics, mass hysteria, big boats blocking waterways, obscured malware in a systemd update, management engines at the heart of CPUs providing backdoors to Intel and AMD hardware at root -3 privilege... what could go wrong there?
\r\n
There are a large number of looming events which could collapse technological society as it is, wiping out most of the internet and shipping and transport and hopefully maybe even the government.
\r\n
Tech Prepping is more important than food prepping
\r\n
While most survivalist and prepper types concentrate on stacking cans of beans, seeds, fuel and ammo, the robot prepper will also be hoarding books on pdf, component datasheets, software libraries, breakout boards and every post EOL electronics product they can get their hands on.
\r\n
In a semi apocalyptic scenario where the trucks stop rolling, a lot of people who save seeds will be able to grow food in their communities, so food won\'t be such a big deal.
\r\n
There might even be some that figure out how to make petroleum from wood like mrteslonian channel on youtube.
\r\n
But a real crux will be analog, digital electronics technology, IT and mechatronics. Those communities with working electronics, mechatronics, and information technology infrastructure, will be at a distinct competitive advantage. They will be able to leverage this in such things as automation of agriculture, from watering schedules to weed pulling along with many other applications that will make the PAR communities ascendant. All else being equal, PAR will be a force multiplier vs hostile neighbours starved of their slaveslabs swiping because facebook no longer exists, or remnants of the tyrannical state coming out of their DUMB bunkers and thinking they still have the right to rule.
\r\n
It\'s a good thing then, that we have a boost up to a mechatronic technological society all around us in the electronic consumer devices that although they may be decrepit, soiled and/or dead, nonetheless contain a wealth of component parts -most of which are hardy enough to function for a very long time, components that can be reused in new applications.
\r\n
It\'s like there is a supply chain for robot factories all around us. It\'s not infinite but it is very plentiful at the moment. Sadly, our society is blind to the current and future worth of the technological legacy in our midst and the electronics recycling is electronics destruction.
\r\n
Meta technology
\r\n
Antecedents: BEAM, cyberpunk, road warrior
\r\n
Fellow Travellers/Parallels: Maker, Right to repair, hardware hacking(Valerio De Giampietro - Hardware Hacking Tutorial), CollapseOS
\r\n
One of this new meta technology\'s main antecedents is BEAM(Biology Evolution Aesthetics Mechanics) robotics, Mark Tilden\'s robot projects that eschewed microprocessors in favour of circuits built of discrete components that mimic biological nerves and can react to environmental stimuli. There is a nice archive of BEAM related documents on the solarbotics site.
\r\n
Mark Tilden even wrote a book called \'Junk Bots\', so must have had some of the same ideas I have... but where Mark uses transistors as the nerves and brains, I am using arduino since microprocessors are now very inexpensive.
\r\n
The use of arduino is the only thing keeping my projects from being completely PAR, but one day wish to have entirely PAR
\r\n
Thus right to repair and hardware hacking are thus two important aspects to utilizing the processors inside consumer products to run other operating systems for our use. Unless we hoard thousands of atmega328p chips, it will be difficult to find processors that we can use unless they have been liberated via techniques described by Valerio De Giampietro. Reusing processors from printers and other products is a goal for the future, but right now, let\'s have some fun.
\r\n
FUN and Education The first arduino PAR battlebot I built - the herald/interceptor; is powered by 5 18650 cells from trashed laptops, powertrain is a custom hybrid relay/MOSFET H-bridge, and it is driven by four electric motors and wheels harvested from PA printers. It has IR remote control and is very fast to the extent that I had to add rubber bumpers to it to keep it and others safe.
\r\n
I departed somewhat from the PAR ethos, with added front and rear ultrasonic sensors, and an mp3 player powering a tv speaker. Hence, it is the herald/interceptor
\r\n
I think it has an interesting road warrior cyberpunk aesthetic, with the grey steel, aluminum and black ABS parts, and but for the wheels; star wars for the bolted on look of it
\r\n
Can we set up PAR tournaments where we can bring our bots and battle it out? Cost is no longer a barrier.
\r\n
I could see a challenging new sport that is a cross between battlebots and junkyard wars, where contestants would have a set amount of time to build a bot from junk, and then compete in racing or sumo matches.
\r\n
Obviously you are going to learn a lot building a robot and the best way to learn is by doing.
\r\n
Alright, now that I have shown some of the important strategic and fun implications of PAR meta technology, by raiding trashed consumer electronics for their components: I hope at the very least that everyone hearing this never again take their post use electronics to one of those recycling centers where all those precious components are destroyed, instead of keeping it in your basement where it belongs. You\'d do better taking it to a landfill where perhaps some future wretched mutant can discover and make use of it, than take it to electronics recycling.
\r\n
Next episode I\'ll show you how to build your PAR laboratory and give you the ingredients to the herald/interceptor battlebot, but if you\'re already excited to get started you can order an arduino Uno or nano, or an arduino kit with a bunch of sensors like I did when I got started. You can also start gathering things like printers, tvs, dvds, UPS and other waste, and get a soldering station if you don\'t already have one.
\r\n
In the coming episodes I will share the detailed recipe for my first post apocalyptic battlebot style robot I built complete with arduino code, and will show you how to build your own robot for free except for the arduino*. I\'ll also do email tech support for anyone having problems.
\r\n
I also want to go further into other tech prepper archiving, in case all or large parts of the internet are no longer accessible, and this may be where you programming specialists might be able to help. They kind of gave me weird looks on the arduino forums when I asked for a way to download all the libraries but was finally able to beg a script that let me download a lot of them, if not all.
\r\n
Also, all the component datasheets would be handy... it seems it would be prudent to have datasheets on all the components and microprocessors that you possibly can, and to have all the software libraries it would be practical to archive.
\r\n
I\'ll also go into more aspects and implications of this exciting meta technology, and I hope you will join me in building post apocalypse robotics and mechatronics fun.
\r\n',401,0,1,'CC-BY-SA','beam,righttorepair,robots,mechatronics',0,0,1),
(3489,'2021-12-16','Equality of structured errors',776,'Tuula talks about equality in Haskell','
Equality of structured errors
\r\n
Background
\r\n
In previous episode, I built a system where error codes weren\'t defined in one huge type. This made compilation times faster and maintenance quite a bit more easier.
\r\n
Problem
\r\n
I wanted to write a test to see that parameters passed to validatePatchApiPersonR are validated correctly. patchApiPersonR is used by client to do partial updates on a Person entity. There\'s three different cases I wanted to check:
\r\n
\r\n
trying to change life focus too soon (there\'s 5 year cooldown)
\r\n
trying to select same life focus that has already been selected
\r\n
trying to modify somebody else\'s avatar
\r\n
\r\n
Code is shown below and the last 2 lines are the interesting ones. There I\'m using equality to compare if a given error exists in a list of errors created by validatePatchApiPersonR.
\r\n
spec :: Spec\r\nspec = do\r\n describe "people" $ do\r\n describe "life focus" $ do\r\n describe "Validating requests" $ do\r\n it "All errors are reported" $ do\r\n forAll anyCompletelyFaultyRequest $\r\n \\(userE, personE, msg, date) ->\r\n let res = validatePatchApiPersonR (userE ^. entityKeyL, userE ^. entityValL, personE, msg, date)\r\n newFocus = msg ^? patchPersonRequestLifeFocus . _Just . _Just\r\n in\r\n case res of\r\n V.Success _ ->\r\n expectationFailure "Invalid request was not detected"\r\n\r\n V.Failure errs -> do\r\n errs `shouldSatisfy` (\\xs -> any (\\x -> "CanNotChangeLifeFocusSoSoon" `isInfixOf` (pack $ show x)) xs)\r\n errs `shouldContain` [ canNotReselectSameLifeFocus newFocus ]\r\n errs `shouldContain` [ insufficientRights ]\r\n
\r\n
Detour on equality
\r\n
Equality in Haskell works slightly differently compared to for example C#. There is no built in, default implementation that gets used when the programmer hasn\'t written their own. If you want to compare equality, there needs to be implementation specific to your data types. This is done by making an instance of type class Eq (https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Eq.html).
\r\n
class Eq a where\r\n (==) :: a -> a -> Bool\r\n (/=) :: a -> a -> Bool\r\n
\r\n
There\'s two functions: == for equality and /= for inequality. You need to implement either one.
\r\n
Back to problem
\r\n
ECode is our structured error code type and defined as follows (this is short recap of previous episode):
\r\n
data ECode where\r\n ECode :: (ErrorCodeClass a, ToJSON a, Eq a, Show a) => a -> ECode\r\n
\r\n
It can wrap anything that has correct type class instances and you will always get ECode as a result. It hides the specific type of thing being wrapped and only functions defined in type classes are available.
\r\n
First try
\r\n
Peel away ECode and compare what\'s inside and compare wrapped values:
\r\n
instance Eq ECode where\r\n ECode a == ECode b =\r\n a == b\r\n
\r\n
This will lead into a error \"Couldn\'t match expected type ‘a’ with actual type ‘a1’. ‘a1’ is a rigid type variable bound by a pattern with constructor...\". This is because ECode can wrap many different types, there is no quarantee that you\'re comparing values of same type. The whole error is show below for reference:
\r\n
[35 of 76] Compiling Errors ( src/Errors.hs, .stack-work/dist/x86_64-linux/Cabal-2.2.0.1/build/Errors.o )\r\n\r\n/home/tuula/programming/sky/src/Errors.hs:148:14: error:\r\n • Couldn't match expected type ‘a’ with actual type ‘a1’\r\n ‘a1’ is a rigid type variable bound by\r\n a pattern with constructor:\r\n ECode :: forall a.\r\n (ErrorCodeClass a, ToJSON a, Eq a, Show a) =>\r\n a -> ECode,\r\n in an equation for ‘==’\r\n at src/Errors.hs:147:16-22\r\n ‘a’ is a rigid type variable bound by\r\n a pattern with constructor:\r\n ECode :: forall a.\r\n (ErrorCodeClass a, ToJSON a, Eq a, Show a) =>\r\n a -> ECode,\r\n in an equation for ‘==’\r\n at src/Errors.hs:147:5-11\r\n • In the second argument of ‘(==)’, namely ‘b’\r\n In the expression: a == b\r\n In an equation for ‘==’: ECode a == ECode b = a == b\r\n • Relevant bindings include\r\n b :: a1 (bound at src/Errors.hs:147:22)\r\n a :: a (bound at src/Errors.hs:147:11)\r\n |\r\n148 | a == b\r\n |\r\n
\r\n
Second try
\r\n
We can use Show to turn ECode into string and compare them. This is what I did initially.
\r\n
instance Eq ECode where\r\n a == b = show a == show b\r\n
\r\n
While this works, it feels hacky. It relies on string representations being different. If you accidentally write Show instance in a way that produces same string with two different values, the comparison breaks down.
\r\n
Third time is a charm
\r\n
After pondering a bit, I asked myself a question \"When are two ECode equal?\". The answer I arrived is \"When they have same http status code and description.\" Then I could write yet different take on equality:
\r\n
instance Eq ECode where\r\n a == b =\r\n httpStatusCode a == httpStatusCode b\r\n && description a == description b\r\n
\r\n
This states that to two ECode values are equal, if they have same httpStatusCode and description.
\r\n
Thanks for listening, if you have any questions or comments, you can reach me via email or in fediverse, where I\'m Tuula@tech.lgbt. Or even better, you could record your own hacker public radio episode.
\r\n
Ad astra!
\r\n',364,107,1,'CC-BY-SA','haskell, eq',0,0,1),
(3487,'2021-12-14','Installing a cat door',1446,'Rho`n installs a cat door in his interior basement door','
Synopsis
\r\n
In today\'s episode, Rho`n installs a cat door in the basement door separating the finished side of the basement from the utility side. Follow along as he learns once again that it is best to read all the instructions before starting a project, and also learns that modern, inexpensive, interior doors are not made of wood.
\r\n\r\n
The following are the pictures taken during the project.
\r\n',293,0,0,'CC-BY-SA','Install, cat door',0,0,1),
(3492,'2021-12-21','Linux Inlaws S01E44: Pipewire Just another audio server Think again',3170,'Pipewire - Just another audio server? - Think again!','
In this episode - sadly missing Martin as he buggered off to do something\r\nelse - the remaining Inlaw hosts Wim Taymans, inventor and brain behind\r\nPipewire, a new approach to Linux audio. Don\'t miss out on this episode if\r\nyou\'re fed up with Pulseaudio (hello Martin :-) or find Jack just too\r\ncomplicated for every-day usage - you may see audio on Linux from a different\r\nperspective after this episode... Never mind those of you who are looking for\r\na crash-course on audio on Linux - this episode is for you!
\r\n',384,111,1,'CC-BY-SA','Linux audio, Pipewire, PulseAudio, Jack, gstreamer, Rubik\'s Cube, Kefir',0,0,1),
(3499,'2021-12-30','Fixing a noisy blower motor',264,'I fix a noisy blower motor that I put off since last winter.','
A brief description of fixing a problem I put off from last winter, on the 2013 Hyundai Elantra.
\r\n
Motor with the electrical plug still attached \r\n Click the thumbnail to see the full-sized image
\r\n
12 volt plug showing where to press the clip to remove it \r\n Click the thumbnail to see the full-sized image
\r\n
Mess left by the lithium grease spray \r\n Click the thumbnail to see the full-sized image
\r\n
Broken clip: Don\'t try this \r\n Click the thumbnail to see the full-sized image
\r\n
Motor cage apart, showing the bearing \r\n Click the thumbnail to see the full-sized image
\r\n',318,0,0,'CC-BY-SA','car,repair,maintenance,bearing',0,0,1),
(3508,'2022-01-12','Differences between C# and Haskell',1712,'Tuula talks about some of the differences between C# and Haskell','
This episode covers some of the differences between C# and Haskell. I\'m probably going to omit lot of things accidentally.
\r\n
\r\n
Origin: practical language for solving real world problems vs. programming language research
\r\n
Main paradigm: object oriented vs purely functional
\r\n
Changing data: mutability vs. immutability
\r\n
Data structures: inheritance vs. composition
\r\n
Execution model: strict vs. nonstrict
\r\n
Side effects: anywhere vs. specifically marked areas in the code
\r\n
\r\n
Thanks for listening, if you have any questions or comments, you can reach me via email or in fediverse, where I\'m Tuula@tech.lgbt. Or even better, you could record your own hacker public radio episode.
\r\n',364,107,0,'CC-BY-SA','haskell, c#, programming',0,0,1),
(3515,'2022-01-21','ADB and scrcpy',565,'Some useful tools for working with Android Devices','
There are multiple guides online as to how to install, but I found dnf install android-tools.x86_64 adb-enhanced.noarch the easiest. Similar commands are available for the other distros. Use your package manager to search for adb.
Go to Settings. Usually via the pulldown menu from the top twice, and click the cog icon. Search for \'Build Number\', it\'s usually in Click on \'About Phone\' Click on \'Build Number\' seven times.
\r\n
Go back and then search for \'Developer options\' it\'s usually in the System section
\r\n
You\'ll need to turn on two features \'Android Debugging\' and \'ADB over network\'
\r\n
While we are at it, go back and then search for \'IP Address\' it\'s usually in the About phone section. You should see a IPv4 address eg: 192.168.1.100. Make note of the IP address as we\'ll use it later.
\r\n
Using ADB
\r\n
To get help use the command adb help
\r\n
\r\n
global options: Tell you how to connect to the phone
\r\n
general commands: Shows your devices, and gives help
\r\n
networking: Allows you to connect over the network but also to port forward and reverse traffic
\r\n
file transfer: The only reliable way to get files to and from your device.
\r\n
internal debugging: Shows how to control the server
\r\n
\r\n
USB
\r\n
Plug your phone using a usb cable. There will be a notification and a popup to allow the connection.
\r\n
Run adb shell and all going well you should see your phone. Commands like ls, cd, and find work well. For example find /storage/self/primary/.
\r\n
Network
\r\n
Unfortunately if you unplug your phone you no longer have a connection to it, but you can enable network access via tcp. Leave your phone connected to USB and then tell it to use a TCP/IP connection with the command adb tcpip 5555.
\r\n
Then connect to the phone using the phones IP address and port 5555, adb connect 192.168.1.100:5555. It should reply with a connected to message
\r\n
$ adb connect 192.168.1.100:5555\r\nconnected to 192.168.1.100:5555
\r\n
Now commands like adb shell should allow you to access the phone even if it\'s not physically connected via usb.
\r\n
Multiple devices
\r\n
Got multiple devices then you can connect them all in the same way as shown above. The only issue is you need to tell adb which one you want to address.
\r\n
The first thing you need to do is list the devices
scrcpy is a free and open-source screen mirroring application that allows control of an Android device from a Windows, macOS, or Linux desktop computer. The software is currently developed by Genymobile, which also developed Genymotion, an Android emulator.
\r\n
The source code is available on github. It\'s available via apt install scrcpy on Ubuntu. In Fedora you\'ll need to enable it from the copr repo.
\r\n
dnf copr enable zeno/scrcpy\r\ndnf install scrcpy
\r\n
With only one phone connected you can just type scrcpy and the screen will appear. Remember right click is power, and the mouse is your finger ;-).
\r\n
If you have multiple devices connected you can connect using scrcpy --tcpip=192.168.1.101:5555
\r\n
scrcpy is a wonderful tool that deserves a show in itself, but in short it lets you interact with your phone as if it was a VNC/Remote Desktop session. You can copy text from the phone as well.
\r\n
It allows for control of the screen, as well as screen recording.
\r\n',30,0,0,'CC-BY-SA','adb,scrcpy,android Debug Bridge',0,0,1),
(3493,'2021-12-22','My First Spanish HPR Episode',302,'A short Spanish episode inspired by discussions about non-English episodes on the HPR mailing list.','
\r\n',152,0,0,'CC-BY-SA','spanish,languages,castellano,espanol,pubnix,textoplano,podcast',0,0,1),
(3498,'2021-12-29','Linux Inlaws S01E45: The Big Xmas New Year bash with the Grumpies',8076,'the same as the title so I\'m not going to repeat it','
In this end of year episode / Xmas bumper our two aging heroes host the Grumpy Old Coders\r\nonce again. Apart from having lots of fun, our four eclectic panelists discuss the year in\r\nreview and some obscure predictions the Inlaws made at the end of last year in S01E20 to\r\nsee if these became true or not. Plus a seriously long commercial break on mainframes\r\ndone by our own Chris (Arvind / Jim / IBM: If you\'re listening: the sponsor mail address\r\nis ibm_sponsor@linuxinlaws.eu). Plus some juicy competitive knowledge about some hyperscalers.\r\nBeans spilled right from the inside... In addition to cloud nightmares. So if you\'re into\r\nhorror after never mind beyond Halloween this is your episode... There might be the odd open source\r\nangle to this episode but we are not sure and this of course is purely by accident - just find out for yourself! :-)\r\n
\r\n',384,111,1,'CC-BY-SA','Mainframes, IBM, Hyperscaler secrets, Rust, old men, programming languages',0,0,1),
(3495,'2021-12-24','Podcast Recommendation: The Retroist',92,'Podcast Recommendation: The Retroist number 243 - Die Hard','
\r\n',318,75,0,'CC-BY-SA','retro,retroist,nostalgia,1988,die hard,bruce willis,podcast',0,0,1),
(3494,'2021-12-23','Recent Generator Repairs and Maintenance',1080,'I talk about my Generac 4000XL gasoline-powered generator and what I\'ve done to get it running right','
In this episode I talk about some work I\'ve done recently on my Generac 4000xl portable generator. Here are some images to accompany the episode. First a beefcake shot of the unit:
\r\n\r\n\r\n\r\n\r\n
This is the power panel on the generator
\r\n\r\n\r\n
Here\'s the receptacle for the fat cable with a 4-prong plug. This goes right into my main electrical panel.
\r\n\r\n\r\n\r\n
Here\'s the interlock switch on my panel, which allows you to plug the generator into your panel safely.
\r\n\r\n',238,0,0,'CC-BY-SA','Engine repair, generators, electricity, emergency preparedness',0,0,1),
(3509,'2022-01-13','Linux Inlaws S01E46: The Matrix Project (Without Neo)',4315,'The Matrix Project Without Neo','
In this episode, the Inlaws are hosting Neil Johnson, VP of Engineering at Element. But this is\r\nnot just about this popular Matrix graphical user interface but rather about this federated communication\r\nnetwork dubbed as the next big thing after Mastodon and Discord, soon to take over the world (pretty\r\nmuch like the Inlaws themselves - it\'s gonna get crowded... :-).
\r\n',384,111,1,'CC-BY-SA','Matrix, Element, federated social network, peer-to-peer communication',0,0,1),
(3496,'2021-12-27','How I record HPR Episodes',1707,'Some python to record short segments of audio.','
This is a sample script for solocast.\r\nSeparate the segments with a blank line\r\n\r\nBulleted lists are OK, but keep the items together by not skipping a line\r\n- Item 1\r\n- Item 2\r\n\r\n### Markdown Formatting is OK\r\nBut the Formatting gets lost in the script\r\nso you can write show notes in loosely formatted markdown\r\n\r\nDon't have more than 1 blank line separating segments\r\n
\r\n
solocast.py
\r\n
#! /usr/bin/env python3\r\n\r\nimport click\r\nimport os\r\nfrom shutil import which\r\n\r\nscript_file = "script.txt"\r\nrecording_directory_name = "Recordings"\r\nrecording_format = "wav"\r\nscript_segments = {}\r\n\r\n\r\ndef test_sox_exists():\r\n try:\r\n assert which("sox")\r\n except AssertionError:\r\n print("Cant find sox. Install sox somewhere in your path.")\r\n exit(1)\r\n\r\n\r\ndef get_recording_file_name(slug):\r\n return f"{recording_directory_name}/{slug}.{recording_format}"\r\n\r\n\r\ndef project_prep():\r\n if not os.path.exists(recording_directory_name):\r\n os.makedirs(recording_directory_name)\r\n if not os.path.exists(f"{recording_directory_name}/Archive"):\r\n os.makedirs(f"{recording_directory_name}/Archive")\r\n\r\n\r\ndef wait_for_input():\r\n click.echo("*" * 40)\r\n _ = input("Press ENTER to Continue")\r\n\r\n\r\ndef add_slug_text(slug, text):\r\n script_segments[slug] = text\r\n\r\n\r\ndef recording_exists(slug):\r\n if os.path.isfile(get_recording_file_name(slug)):\r\n return True\r\n return False\r\n\r\n\r\ndef noise_profile_missing():\r\n if os.path.isfile(f"{recording_directory_name}/noise.prof"):\r\n return False\r\n return True\r\n\r\n\r\ndef truncate_audio(slug):\r\n recording = get_recording_file_name(slug)\r\n new_recording = f"{recording_directory_name}/{slug}-truncated.{recording_format}"\r\n click.echo(f"truncating {recording}")\r\n\r\n SOX_CMD = (\r\n f"sox -V2 {recording} {new_recording} silence -l 1 0.1 .1% -1 1.0 .1% stat"\r\n )\r\n click.echo(SOX_CMD)\r\n os.system(SOX_CMD)\r\n os.system(\r\n f" mv -v {recording} {recording_directory_name}/Archive/{slug}.{recording_format}"\r\n )\r\n os.rename(new_recording, recording)\r\n review_audio(slug)\r\n\r\n\r\ndef play_audio(slug):\r\n recording = get_recording_file_name(slug)\r\n click.echo(f"Playing {recording}")\r\n os.system(f"play {recording}")\r\n review_audio(slug)\r\n\r\n\r\ndef delete_audio(slug):\r\n recording = get_recording_file_name(slug)\r\n os.remove(recording)\r\n\r\n\r\ndef review_audio(slug):\r\n review_menu = ["(p)lay", "(a)ccept", "(r)eccord again", "(t)runcate"]\r\n click.echo(slug)\r\n for i in review_menu:\r\n click.echo(i)\r\n menu_action = input(">> ")\r\n if menu_action == "p":\r\n play_audio(slug)\r\n elif menu_action == "a":\r\n exit()\r\n elif menu_action == "r":\r\n delete_audio(slug)\r\n find_and_record_next()\r\n elif menu_action == "t":\r\n truncate_audio(slug)\r\n else:\r\n review_audio(slug)\r\n\r\n\r\ndef record_audio(slug):\r\n new_recording = get_recording_file_name(slug)\r\n click.echo(f"Creating {new_recording}")\r\n click.echo("press Enter to start then CRTL-C to quit")\r\n wait_for_input()\r\n os.system(f"rec {new_recording}")\r\n\r\n\r\ndef record_silent_audio():\r\n silent_recording = f"{recording_directory_name}/silence.{recording_format}"\r\n click.echo("RECORD 5 SECONDS OF SILENCE \\n" * 5)\r\n click.echo("press Enter to start")\r\n wait_for_input()\r\n os.system(f"rec {silent_recording} trim 0 5")\r\n os.system(\r\n f"sox {silent_recording} -n noiseprof {recording_directory_name}/noise.prof"\r\n )\r\n\r\n\r\ndef load_script():\r\n linetext = ""\r\n with open(script_file) as script_file_reader:\r\n for line in script_file_reader.readlines():\r\n\r\n if not line.strip():\r\n\r\n slug = linetext[:40].title()\r\n segment_name = "".join(filter(str.isalnum, slug))\r\n add_slug_text(segment_name, linetext)\r\n linetext = ""\r\n\r\n else:\r\n linetext += f"{line} \\n"\r\n\r\n\r\ndef combine_recordings_for_export():\r\n recording_list = []\r\n combined_recording = f"{recording_directory_name}/combined.{recording_format}"\r\n for slug, text in script_segments.items():\r\n recording = get_recording_file_name(slug)\r\n recording_list.append(recording)\r\n recording_list_string = " ".join(recording_list)\r\n print(recording_list_string)\r\n SOX_CMD = f"sox -V3 {recording_list_string} {combined_recording} noisered {recording_directory_name}/noise.prof 0.21 norm -10"\r\n click.echo(SOX_CMD)\r\n os.system(SOX_CMD)\r\n\r\n\r\ndef find_and_record_next():\r\n for slug, text in script_segments.items():\r\n if recording_exists(slug):\r\n continue\r\n click.clear()\r\n click.echo(slug)\r\n click.echo("*" * 40)\r\n click.echo(text)\r\n click.echo("*" * 40)\r\n record_audio(slug)\r\n review_audio(slug)\r\n\r\n\r\n@click.group()\r\ndef cli():\r\n test_sox_exists()\r\n pass\r\n\r\n\r\n@cli.command()\r\ndef combine():\r\n "Combine Segments into single audio file"\r\n combine_recordings_for_export()\r\n\r\n\r\n@cli.command()\r\ndef record():\r\n "Record next unrecorded segment"\r\n if noise_profile_missing():\r\n record_silent_audio()\r\n find_and_record_next()\r\n\r\n\r\n@cli.command()\r\ndef silence():\r\n "Generate noise profile"\r\n record_silent_audio()\r\n\r\n\r\n\r\n@cli.command()\r\ndef review():\r\n "Print segments"\r\n\r\n for slug, text in script_segments.items():\r\n click.clear()\r\n click.echo(slug)\r\n click.echo("*" * 40)\r\n click.echo()\r\n click.echo(text)\r\n wait_for_input()\r\n\r\n\r\nif __name__ == "__main__":\r\n project_prep()\r\n load_script()\r\n cli()\r\n
\r\n',342,0,0,'CC-BY-SA','python,sox',0,0,1),
(3518,'2022-01-26','Linux Inlaws S01E47: BigBlueButton and NAT',3272,'Our two OAPs discuss running conferencing systems like BigBlueButton behind NAT','
In this episode of your favourite FLOSS podcast our two OAPs discuss the challenges of running\r\nconferencing systems like BigBlueButton behind a network address translation\r\n(NAT) configuration, something that the Inlaws have been struggeling (?) with\r\nfor quite some time but now have arrived a solution which might just work :-).\r\nIf you face similar challenges or just want to refresh your knowledge about\r\nintricate network architectures never mind their pitfalls, stay tuned. All\r\nwill be revealed (hopefully :-). But beware: This show is highly technical and\r\ngeek-only. Which may come in handy if you\'re not technical but suffer from\r\ninsomnia or similar sleep disorders - this is your show!
\r\n',384,111,1,'CC-BY-SA','BigBlueButton, Network Address Translation, TURN, STUN, WebRTC, Parallels, Vulcan\'s Hammer, The Ice ',0,0,1),
(3497,'2021-12-28','Jankilators.',1275,'Follow the wail of the janky scissor monster into the muddy flux of headtorch borderlands. ','
Three phase alternating current generated from an axial flux alternator.
\r\n
I did find plans which seem to describe themselves as open. I might get around to posting them at a web site, but that exists much less than other comprehensive banks of searchable information on the internet.
\r\n
Someone suggested some alternators constructed with as many wooden parts as possible, which makes the whole endeavour more accessible and energy efficient. Thank you HPR new year show, for that.
\r\n
Wind turbine towers are the difficult part, and obviously dangerous.
\r\n
Tiny generators are cool to cobble from discarded equipment junk.
\r\n
A solid axial alternator is easy and robust. They can channel a lot of power if the wires are thick enough. Gears exist.
\r\n
Pedal, and hang sacks.
\r\n',398,0,1,'CC-BY-SA','oscillators,complexity,flux,alternator,3phase,field,trees,sky',0,0,1),
(3502,'2022-01-04','New year Greetings and a short review of my new Juno PC',291,'I just ramble for a few minutes about my new Juno PC','
Hi to all HPR listeners this is a short show just to say Hi and a happy New Year to those in HPR land I may not have talked to over the Mumble marathon (and that is most of you). My main news is my new Juno PC which I got just before Christmas and It is a massive upgrade for me from my old Gen 3 i7 PC I was using. In real world tests it is about 5 times faster than my old PC and editing Audio and images is a breeze. I got the Brutus 5000 with a Ryzen 9 5900 CPU 32Gb RAM and a 1TB Nvme SSD. It came pre loaded with Ubuntu 20.04 but I installed Linux Mint 20.2 and after getting the details of the PPA for the Juno Drivers everything is working fine. Ports wise for a tiny PC it is OK but I have added a USB 3 powered Hub with 4 extra ports and in the new year will get one with a few more to help me tidy up the wiring snakes on the desk.
\r\n
For some reason it no longer sees any bootable USB drives at boot after pressing of the boot menu key so a bit of investigation is needed to get that to work again, but on the whole I am a happy camper.
\r\n
Well that\'s me for this show short as it was if you want more of my ramblings along with my fellow hosts Moss and Dale pop over to Distrohoppers\' Digest and see what we have been up to, we record a new show about once a month.
\r\n',338,0,0,'CC-BY-SA','Ubuntu, Linux Mint, Juno computers, Ryzen 5900, New Year Greetings',0,0,1),
(3503,'2022-01-05','Configuring Mumble',906,'In this episode we will show you how to connect to the HPR Community Room on Mumble.','
\r\nOnce you have installed the client then connect to the HPR Room on Mumble.\r\n
\r\nThere is a first run wizard that will step you through the process of configuring Mumble the first time. This will open up a series of configuration options.\r\n
\r\n
\r\nIt is very important that you set Push to Talk (PTT) and you Disable Text-To-Speech, as you will disturb the other people in the room if you select the other methods. It may seem to be working fine to you, but it will result in issues for the others.\r\n
\r\n
\r\nYou are expected to have a digital certificate when connecting to Mumble servers. An automatically created one is usually fine.\r\n
\r\n
\r\nOnce you have the Mumble client set up we can now start the process of connecting to the HPR Room on Mumble.\r\n
\r\n
\r\nIf at any time you need to add the HPR server open mumble and press Server - Connect, press Add New...and enter the following information for the HPR server:\r\n
\r\n
\r\n
Address: chatter.skyehaven.net
\r\n
Port: 64738
\r\n
Username: Your Username
\r\n
Label: chatter.skyehaven.net
\r\n
\r\n
\r\nThink about your username a bit as if you register it on the server you will not be able to change it again.\r\n
\r\n
\r\nBefore connecting to any room it\'s good etiquette to make sure your audio is working correctly. The room Audio Test will allow you to speak and the OpieTheRepeatherBot will record your speech and after 10 seconds will play it back for you.\r\n
\r\n\r\n',30,0,0,'CC-BY-SA','mumble,hpr mumble, new year show',0,0,1),
(3761,'2023-01-02','HPR Community News for December 2022',2695,'HPR Volunteers talk about shows released and comments posted in December 2022','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 14 comments in total.
\n
Past shows
\n
There is 1 comment on\n1 previous show:
\n
\n
hpr3737\n(2022-11-29) \"Review of KOBO Libra H20 e-reader\"\nby Rho`n.
\n
\n
\n
\nComment 1:\nAaron Cocker on 2022-12-05:\n\"Kobo e-readers\"
\n
\n
This month\'s shows
\n
There are 13 comments on 8 of this month\'s shows:
Comment 1:\nTrey on 2022-12-27:\n\"Thanks for sharing.\"
Comment 2:\njanedoc on 2022-12-27:\n\"Thanks for an informative show\"
Comment 3:\nbinrc on 2022-12-28:\n\"binrc@protonmail.com\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Older HPR shows on\narchive.org, phase 2
\n
Now that all shows from number 1 to the latest have been uploaded to\nthe Internet Archive there are other tasks to perform. We are\nreprocessing and re-uploading shows in the range 871 to 2429 as\nexplained in the Community News show notes released in May\n2022. We are keeping a running total here to show progress:
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3504,'2022-01-06','James Webb Space Telescope',2718,'Andrew and Dave watch the launch of the JWST','
Overview
\r\n
On Christmas Day 2021 at 12:20 UTC the James Webb Space Telescope was launched. This is the largest telescope ever sent into space and the project has been delayed for many years. The entire astronomical community was very nervous about the launch and about the phase that will follow as the telescope is set up for use.
\r\n
Andrew Conway was previously a professional Astronomer, and Dave is very interested in the subject as an amateur. They got together on Mumble to witness the launch, and the dialogue was recorded and is presented here.
\r\n
The JWST
\r\n
Quote from Wikipedia (a page that is being updated as the project proceeds):
\r\n
\r\n
The James Webb Space Telescope (JWST) is a space telescope developed by NASA with contributions from the European Space Agency (ESA), and the Canadian Space Agency (CSA). The telescope is named after James E. Webb, who was the administrator of NASA from 1961 to 1968 and played an integral role in the Apollo program. It is intended to succeed the Hubble Space Telescope as NASA’s flagship mission in astrophysics. JWST was launched 25 December 2021 on Ariane flight VA256. It is designed to provide improved infrared resolution and sensitivity over Hubble, and will enable a broad range of investigations across the fields of astronomy and cosmology, including observations of some of the most distant events and objects in the Universe such as the formation of the first galaxies, and allowing detailed atmospheric characterization of potentially habitable exoplanets.
\r\n
JWST’s primary mirror, the Optical Telescope Element, consists of 18 hexagonal mirror segments made of gold-plated beryllium which combine to create a 6.5 meter (21 ft 4 inch) diameter mirror – considerably larger than Hubble’s 2.4 m (7.9 ft) mirror. Unlike Hubble, which observes in the near ultraviolet, visible, and near infrared (0.1–1.0 μm) spectra, JWST will observe in a lower frequency range, from long-wavelength visible light (red) through mid-infrared (0.6–28.3 μm). This will enable it to observe high-redshift objects that are too old and too distant for Hubble. The telescope must be kept very cold to observe in the infrared without interference, so it will be deployed in space near the Sun–Earth L2 Lagrange point, about 1.5 million kilometers (930,000 mi) from Earth. A large sunshield made of silicon- and aluminum-coated Kapton will keep its mirror and instruments below 50 K (−223 °C; −370 °F).
\r\n
The NASA Goddard Space Flight Center (GSFC) in Maryland managed the development and the Space Telescope Science Institute is operating JWST. The prime contractor was Northrop Grumman.
\r\n
Development began in 1996 for a launch that was initially planned for 2007 with a US$500 million budget. There were many delays and cost overruns, including a major redesign in 2005, a ripped sunshield during a practice deployment, a recommendation from an independent review board, the COVID-19 pandemic, issues with the Ariane 5 rocket and the telescope itself, and communications issues between the telescope and the launch vehicle. Concerns among the involved scientists and engineers about the launch and deployment of the telescope have been well-described.
\r\n
Construction was completed in late 2016, when an extensive testing phase began. JWST was launched 12:20 UTC 25 December 2021 by an Ariane 5 launch vehicle from Kourou, French Guiana and was released from the upper stage 27 minutes later. The telescope was confirmed to be receiving power, and as of December 2021 is traveling to its target destination.
\r\n
\r\n
Witnessing the launch
\r\n
Andrew and Dave came up with the idea of watching the launch and talking about it on Mumble. Although this was not originally planned, the audio was recorded, and is included here.
\r\n
Note: Dave’s audio had a background hum which has been reduced a little with Audacity’s notch filter. Hopefully it’s not too distracting.
\r\n
We were puzzled that the altitude of the final stage of the rocket plus telescope decreased during launch. See the link below to a YouTube episode from Anton Petrov explaining what was going on.
\r\n
In the context of orbital mechanics, Dave spoke of another mission which is heading to Mercury but passing by inner planets to adjust speed. The name couldn’t be recalled at the time, but it was BepiColombo which is taking a 7-year path to its destination.
\r\n
Deployment after launch
\r\n
At the time of preparing these notes (2022-01-02) the JWST is en route to the (Sun-Earth) L2 point, about 1 million miles (1.5 million kilometres) from Earth. Along the way it is preparing itself for use, deploying the features which were folded up or stowed away when it was being launched. See the deployment explorer site for details of what is happening.
\r\n
There are enormous amounts of information about this project on the web, some examples of which are linked below. Searching with your favourite search engine will certainly reveal more.
only new host or existing host interviewing a 3rd party
\r\n
I pick the winner
\r\n
don\'t abuse the system to win the prize ;P
\r\n
\r\n',36,0,1,'CC-BY-SA','contest',0,0,1),
(3529,'2022-02-10','Linux Inlaws S01E48: Year Two of the Five Year Plan',3127,'The two ageing heroes discuss the past year in review','
Right into the third year of the first five-year plan our two ageing heroes\r\ndiscuss the past year in review (blatantly stealing this concept from other\r\npopular podcasts), focussing on the hotter episodes of second year and\r\nprogress with increasing the number of active listeners from two to five and\r\nbeyond. Also, major fuck-ups and lessons learned from them are revealed\r\nincluding some ranting about badly designed and implemented software never\r\nmind documentation.
\r\n',384,111,1,'CC-BY-SA','2021, review, communism, five year plan, Grumpy Old Coders, MiniDebConf',0,0,1),
(3514,'2022-01-20','Hacking Stories: Soft Drink',1270,'I talk about old pentest stories','
\r\n',36,0,1,'CC-BY-SA','hacking stories',0,0,1),
(3535,'2022-02-18','template Haskell',2849,'turturto talks how she\'s using template Haskell to cut down amount of code she writes','
There\'s certain amount of boilerplate code in my game that keeps repeating time after time. I can\'t quite remove it, but I can hide it with template haskell.
\r\n
newtype recap
\r\n
I\'ll be using PlanetName as an example throughout the show. newtype is Haskell\'s way of defining a new type, that wraps around an old type. This lets us to give better meaning to the wrapped type. Instead of talking about Text, we can talk about PlanetName and we won\'t accidentally mix it up with StarName or ContentsOfAlexandrianLibrary. It comes with no performance cost at all, as the wrapping is removed during the compilation.
deriving clause, telling compiler to automatically generate Show, Read and Eq instances
\r\n
\r\n
If it were wrapping a Integer, we would add Ord and Num instances too.
\r\n
These instances give us some basic functions that we can use to turn out value into String and back or compare two values to see if they\'re equal or not. Ord lets us compare their relative size and Num adds some basic arithmetics like addition and subtraction.
\r\n
Remember, type constructor is used when talking about the type (function signatures, declaring type of a value, etc.), while data constructor is used to create values of the type (\"Earth\", \"Mars\", etc.). isPlanet :: PlanetName -> Bool states that isPlanet function takes one parameter of type PlanetName and returns value of type Bool. planet = MkPlanetName \"Earth\" creates a new value planet, that has type PlanetName and which value is MkPlanetName \"Earth\".
\r\n
Boilerplate
\r\n
When PlanetName is defined, I need to add some instances by hand: IsString, ToJSON, FromJSON, PersistField and PersistFieldSql.
\r\n
IsString lets me use string literals in code, without having to call the data constructor. Compiler is smart enough to infer from context if string I typed should be PlanetName or something else.
\r\n
ToJSON and FromJSON are used to turn value to and from json for transferring back and forth between client and server. In json our value is just simple string, but we still need to program that transformation.
\r\n
PersistFieldSql tells Persistent (database layer I\'m using) what type of database field should be created to hold this data in database.
\r\n
PersistField contains functions for serializing our value to database and loading it from there.
\r\n
Below is full code that I want to abstract out as much as I can:
Template Haskell is an extension that adds metaprogramming capabilities to Haskell. One can write function that generates Haskell code and call it in appropriate place in source file. During compilation the function gets executed and resulting code injected in source file. After this source file is compiled normally. If you have used lisp macros, this is the similar thing.
\r\n
Generating the code
\r\n
We want a function that can be called like $(makeDomainType \"PlanetName\" \'\'Text) and it will create all the boiler plate for us.
\r\n
The function is show below:
\r\n
makeDomainType :: String -> Name -> Q [Dec]\r\nmakeDomainType name fType = do\r\n tq <- reify fType\r\n case tq of\r\n TyConI (DataD _ tName _ _ _ _) ->\r\n selectDomainType name tName\r\n _ -> do\r\n Language.Haskell.TH.reportError "Only simple types are supported"\r\n return []\r\n
\r\n
reify is interesting function. When called during compile time and given a name, it\'ll figure what the name refers to and construct datastructure that contains relevant information about the thing. If you were to give it name of a function, you would have access to code inside of the function and could introspect it.
\r\n
Here we\'re using tq <- reify fType to find out what kind of type our code should wrap. Code uses pattern matching to match TyConI (DataD _ tName _ _ _ _). This is referring to a type constructor. In all other cases (more complex types, functions and so on), code reports and error.
\r\n
Since code should support different types of types and the respective generated code differs, next there\'s check to find out what kind of code to generate:
This uses guard clause to check if fType is Text or Int and call respective function to generate it. Again, if there\'s no match, code reports an error.
\r\n
I could have written a function that generates all the code, but that would have been pretty long and hard to maintain. Instead of that, I opted to split generation in parts. makeTextDomainType calls these functions, one at a time and combines the results together to form the final code to be generated.
\r\n
makeTextDomainType :: String -> Q [Dec]\r\nmakeTextDomainType name = do\r\n td <- makeNewTypeDefinition name ''Text\r\n si <- makeIsStringInstance name\r\n tj <- makeToJSONInstance name\r\n fj <- makeFromJSONInstanceForText name\r\n mp <- makePersistFieldInstanceForText name\r\n mps <- makePersistFieldSqlInstance name ''Text\r\n return $ td ++ si ++ tj ++ fj ++ mp ++ mps\r\n
\r\n
Some of the functions called are specific for Text type, while others are written to work with Text and Int. The latter ones have extra parameter passed in to indicate which type of code should be generated.
\r\n
Actual code generation
\r\n
Now we\'re getting into actual code generation. First one is makeNewTypeDefinition, which generates code for newtype.
First step is to call derivClausForNewType to create deriving clause (we\'ll look into that just in a bit). The major part of the code consist of generating newtype definition. There\'s two ways for code generation: quoting (which works very similar to lisp macros) and writing abstract syntax tree by hand. No matter what I tried, I couldn\'t get the quoting work for newtype, so I had to write the AST out by hand. And as you can see, it\'s not particularly pleasant experience. Constructor names are short and cryptic and there\'s plenty of them there. Some major parts:
\r\n
\r\n
NewtypeD starts definition for newtype
\r\n
(mkName name) creates Name for the newtype, PlanetName in our example
\r\n
RecC record constuctor. We have a single record in our newtype, remember?
\r\n
DerivClause deriving clause, which istructs compiler to autogenerate some useful instances for us
\r\n
\r\n
And RecC takes a bunch of parameters to guide what kind of record we\'re actually creating:
\r\n
\r\n
(mkName $ \"Mk\" ++ name) creates Name for our record constructor, MkPlanetName in our case
\r\n
then there\'s a list of tuples defining fields of constructor, which has only one element in our case
\r\n
first is name of the field mkName $ \"_un\" ++ name, which is _unPlanetName in our case
\r\n
Bang controls source packedness (that I don\'t know what it really is) and strictness (when value should be computed)
\r\n
finally, ConT fType creates type constructor call, indicating type of the field: Text in our case
\r\n
\r\n
That\'s quite lot to write and keep track of. It\'s especially tedious to come back to code and figure out what it is exactly doing.
Again we\'re using guard to check if we\'re working with Text or Int and in any other case signal an error. <$> is used to call (ConT . mkName) function to elements in list of strings, getting back a list of type constructors.
\r\n
Next step, we create IsString instance for turning string literals into our domain type.
Here I could get quoting to work. In the example, everything inside of [d| ... |] is quoted literally, ie. I don\'t have to bother with AST, but can just write in plain Haskell what I want the result to be. $ that is immediately followed with another symbol is used to unquote. $(conT $ mkName name) executes conT $ mkName name and splices result inside the quote. Because name is a String, we can create a new String by appending \"Mk\" at the start of it. This creates our data constructor MkPlanetName. Notice how we use conT when creating a type constructor and conE for applying data constructor.
\r\n
For transforming our domain type to and from json we need ToJSON and FromJSON instances. Generating them is very similar than generating IsString instance, but I have included them below for sake of completeness.
Next we\'ll take serializing to and from database. Since Persistent takes care of the details, it\'s enough that we have two instances that interface with Persistent. First one of them is PersistField as show below:
This has more code into it as the type class requires us to implement three functions. Imagine how tedious this would be to write out as plain AST. But thanks to quoting, we can write most of the code as it were regular Haskell and just splice in the parts that vary.
\r\n
First notable part in it is constPatt = conP constName [varP $ mkName \"s\"], which creates a pattern used in pattern matching. When toPersistValue is called with MkPlanetName s as parameter, our pattern matches and we have access to s. When then call data constructor PersistText s and let Persistent to save this newly created value into database.
\r\n
Second pattern in the code is conP (mkName \"PersistText\") [varP $ mkName \"s\"] and we use it in fromPersistValue function. So when that function is called with PersistText s, our pattern matches and we have access to s. Which we then use to call MkPlanetName s to construct our domain type. If fromPersistValue would be called with something else, say numeric value from database, fromPersistValue _ pattern matches and we\'ll report an error. This normally shouldn\'t happen, but it\'s good practice to always cover all patterns, otherwise we get a nasty runtime exception and whole program grinds to halt.
\r\n
Last piece in our long puzzle is PersistFieldSql, which tells Persistent the type of the backing field in database.
This is probably starting to look familiar to you by now. We create instance of PersistFieldSql for our domain type. For Text we want to save data as SqlString and for Int we use SqlInt64. The actual, concrete and definite, column type is actually selected by Persistent based on this information. Persistent supports different kinds of databases, so it\'ll take care of mapping this information for the actual database product we\'re using.
\r\n
In closing
\r\n
Using template Haskell can cut down amount of boiler plate code. It also lets you create new abstractions that might not be possible with the tools offered by regular Haskell. All this is nice until things don\'t work as planned and you have to figure out why. Debugging complicated template Haskell, especially if written by somebody else, can be tedious.
\r\n
As usual, if you have any questions, comments or feedback, feel free to reach out for me via email or in fediverse where I\'m Tuula@tech.lgbt. Or even better, record your own episode telling us where you use template Haskell or why did you choose not to use it at all.
\r\n
ad astra!
\r\n',364,0,0,'CC-BY-SA','haskell, metaprogramming, template haskell',0,0,1),
(3516,'2022-01-24','Rant about RX',1303,'This is a rant mostly about prescriptions and health care','
It\'s a rant mostly about prescriptions and health care
\r\n',36,100,1,'CC-BY-SA','rant',0,0,1),
(3507,'2022-01-11','USB Turntable fix and sound journey',528,'USB Turntable fix and sound journey with arecord, asound and ffmpeg','
Partial list of albums
\r\n
\r\n
Journey - Frontiers
\r\n
Journey - Evolution
\r\n
Journey - Greatest Hits
\r\n
Journey - Departure
\r\n
Chicago - 2 albums - unknown titles
\r\n
John Denver - Rocky Mountain Christmas
\r\n
Inside Star Trek (1976)\r\n
\r\n
SIDE I Inside Star Trek Star Trek Theme William Shatner Meets Captain Kirk The Origin of Spock Sarek\'s Son Spock The Questor Affair
\r\n
SIDE II The Enterprise Runs Aground McCoy\'s Rx for Life The Star Trek Philosophy Asimov\'s World of Science Fiction A Letter From a Network Censor The Star Trek Dream Ballad I/Ballad II)*
\r\n
\r\n
\r\n
Inside Star Trek album: Cover \r\n Click the\r\nthumbnail to see the full-sized image - -
\r\n
Inside Star Trek album: Contents \r\n Click the thumbnail to see the full-sized image - -
\r\n
I found a turntable at the thrift store, and the spindle ran, but the platter did not. The belt had slipped off, and here is the fix.
-D, --device=NAME\r\n Select PCM by name\r\n -V, --vumeter=TYPE\r\n Specifies the VU-meter type, either stereo or mono. The stereo VU-meter is available only for 2-channel stereo samples with interleaved format.\r\n -c, --channels=#\r\n The number of channels. The default is one channel. Valid values are 1 through 32.\r\n -f --format=FORMAT\r\n Sample format\r\n Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE\r\n Some of these may not be available on selected hardware\r\n The available format shortcuts are:\r\n\r\n -f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100]\r\n -f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -f44100]\r\n -f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r48000]
\r\n',318,0,0,'CC-BY-SA','Vinyl, album, Vinyl album, record album, aplay, arecord, alsaloop, ffmpeg,retro, USB turntable',0,0,1),
(3511,'2022-01-17','Podman like Vagrant',1160,'This is how I use Podman on the desktop','
I used to use Vagrant to spin up minimal virtual machines when I needed to test code on a different distro than what I ran. Lately I\'ve switched to Podman.
\r\n\r\n
Install Podman with your distribution\'s package manager.
Create a directory to share data between your container and your localhost:
\r\n\r\n
\r\n$ mkdir data\r\n
\r\n\r\n
Run a container, with your ./data directory mapped to /storage in the container:
\r\n\r\n
\r\n$ podman run -it --volume ./data:/storage:Z busybox\r\n
\r\n\r\n\r\n',78,8,0,'CC-BY-SA','containers, podman, docker, vagrant',0,0,1),
(3512,'2022-01-18','Auld Acquaintance',659,'flappin gums aboot auld hardware and how I use it.','
#!/bin/bash\r\n\r\n# target dir is ~/Photos/YYYY-MM-DD_Hm\r\ntargetDir="/home/$USER/Photos/$(date +"%F_%H%M")"\r\n\r\n# create the dir\r\nmkdir $targetDir\r\n\r\n# cd to dir\r\ncd $targetDir\r\n\r\n# kill all gphoto stuff\r\npkill -f gphoto2\r\n\r\n# get the files\r\ngphoto2 --get-all-files\r\n\r\n# delete all files on camera recursively\r\ngphoto2 -DR
\r\n',243,0,0,'CC-BY-SA','auld hardware, photography',0,0,1),
(3513,'2022-01-19','HB9HNT and PA7KEN on SOTA, Summits on the Air',2595,'Summits on the Air is the combination of mountain climbing and amateur radio','
Links
\r\n
You\'ll find further information under the following links:
SOTLAS a map of SOTA summits with activations and other info
\r\n
\r\n',288,0,1,'CC-BY-SA','ham, ham radio, hamradio, sota',0,0,1),
(3521,'2022-01-31','Upgrades to Acer Aspire 5 Slim',344,'Upgrades to Aspire 5 Slim and Specs','
{\r\n CPU: AMD Ryzen 3 3200U\r\n GPU: AMD Radeon RX Vega 3\r\n Display: 15.6”, Full HD (1920 x 1080), IPS\r\n Storage: 128GB SSD, NMVE\r\n RAM: 4GB DDR4, upgradeable to 32Gb\r\n Weight: 1.90 kg (4.2 lbs)\r\n Ports and connectivity\r\n 2x USB Type-A 2.0\r\n 1x USB Type-A 3.2 Gen 1 (5 Gbps)\r\n HDMI\r\n}
\r\n
Why?
\r\n
\r\n
The system would randomly kick me out, back to the login screen.
\r\n
This was due to low RAM (4Gb) and high RAM usage from Firefox
\r\n
\r\n
What?
\r\n
\r\n
RAM: 16Gb DDR4
\r\n
HD: 500Gb spinning drive
\r\n
\r\n
Other uses for the upgrade
\r\n
\r\n
Room for Virtual Machines
\r\n
\r\n
Future upgrade
\r\n
\r\n
SSD
\r\n
\r\n
Screw locations \r\n Click the thumbnail to see the full-sized image
\r\n
Inside the laptop \r\n Click the thumbnail to see the full-sized image
\r\n
Power/Battery plug location \r\n Click the thumbnail to see the full-sized image
\r\n
Legend for inside the laptop \r\n Click the thumbnail to see the full-sized image
\r\n',318,57,0,'CC-BY-SA','laptop, hardware, hardware upgrades, RAM, hard drive',0,0,1),
(3517,'2022-01-25','Hp stream laptop with Lubuntu 20.04',2257,'Laptop update','
Just a simple check of an old laptop with update
\r\n',129,0,0,'CC-BY-SA','Hp stream,Lubuntu,geko,Linux,pine64',0,0,1),
(3519,'2022-01-27','Rust 101: Episode 2 - Rolling With the Errors',3234,'In this episode, BlacKernel helps you construct a simple dice rolling application in rust.','
I will attempt to make the commits follow the episodes pretty closely with one commit after every episode with the episode number in the commit message.
\r\n',396,25,1,'CC-BY-SA','rust, programming, dice, learning',0,0,1),
(3522,'2022-02-01','Set up your Robot Building Lab and build a $0 Robot Platform',1580,'Ep 1 of Robot Warlords of the Apocalypse, build a free robot platform/crash buggy from old printers ','
be the assimilator not the assimilated
\r\n
Setting up your robot building lab and building your first platform/ crash buggy.
\r\n
Getting started
\r\n\r\n
stuff to buy: \r\n\r\n
\r\n
order Arduino Uno or kit (recommended) \r\nKit is highly recommended because you can work through projects for the various sensors and relays and gain experience using sensors. This makes it easier to integrate sensors into your robot, enabling it to more effectively interact with it\'s environment. Kit should come with a case, booklet, and have links to the code involved.
\r\n
order extra Arduinos (for when you blow up the first one)
\r\n
small machine screws of various lengths with nuts and washers
\r\n
18650 4 cell battery compartment
\r\n
2 18650 1 cell compartments*
\r\n
18650 chargers (wavgat) - these plug into a usb device
\r\n
solder/flux/solder sucker (tree sap)
\r\n
perfboard
\r\n
extra dupont wires (male to male)
\r\n
extra resistors
\r\n
optional\r\n
\r\n
ultrasonic sensors (or hack out of something)
\r\n
mp3 module
\r\n
\r\n
L298N h-bridge modules
\r\n
\r\n
get tools and acc:\r\n
\r\n
solder station
\r\n
computer with internet (raspberry pi works too) - should have listened...
\r\n
adruino.cc download and install arduino IDE
\r\n
various screwdrivers, pliers, straight airplane snips, drill with assorted bits. hacksaw, ruler, soldering station, multimeter,
\r\n
parts drawers for organizing small parts,
\r\n
several rubbermaid bins or cardboard boxes for cct boards, ABS pieces, etc.
\r\n
\r\n
Collect and disassemble post apocalyptic scraps:\r\n
\r\n
safety note: Be careful when disassembling; use pliers rather than your fingers as much as possible. Printers and other products can sometimes be tricky to take apart. There may not be any visible screws to remove. The case cover may just snap into place and sometimes it feels like you are going to break the part before it unsnaps. Be aware that the ABS can snap if you force it past its breaking point, it is strong but when it breaks it can have sharp edges. Be especially careful when taking apart laptop batteries. Try not to short any circuits, and watch out because the metal strips that connect the 18650 cells are very sharp. Use pliers and metal cutters and remember not to create any circuits with your metal tools!
\r\n
\r\n\r\n
Ingredients
\r\n
\r\n
Printers are a great source of mechanical and chassis parts, including motors. The best are the ones with scanners built-in, which means an extra stepper motor.
\r\n
\r\n
motors A mid sized printer will usually have two electric motors of the same size along with a few other smaller motors and stepper motors. Have two identical printers and you will have the 4 identical motors needed. It is OK to have 2 smaller and 2 larger motors and put one pair in front and one pair in back.
\r\n
steel rods, wheels with rubber tires, gears, specialty steel plates, reed switches, rotary encoders, ir switches
\r\n
ABS parts including a power supply cover that can hold Arduino.
\r\n
Glass panel can be repurposed as solar panel with cheap Chinese solar cells.
\r\n
\r\n
UPS - for relays and opto isolators
\r\n
TVs - wire, speakers, optoisolators, lots of transistors and other components in older tvs.
\r\n
laptops, power tools, cell phones - lithium ion batteries
Example of useful parts \r\n Click the thumbnail to see the full-sized image
\r\n',401,0,1,'CC-BY-SA','beam,righttorepair,robots,mechatronics,apocalypse',0,0,1),
(3545,'2022-03-04','How I make coffee',302,'Making coffee, and a podcast recommendation','
Coffeemaker
\r\n
\r\n
Bunn model: Speedbrew
\r\n
Heats a reservoir to 200 ℉
\r\n
Displaces a minimum of 4 cups for a fresh pot
\r\n
\r\n
Bunn Coffeemaker and grinder \r\n Click the thumbnail to see the full-sized image
\r\n
This was too coarse, but still had a good taste \r\n Click the thumbnail to see the full-sized image
\r\n
Coffee of the day
\r\n
\r\n
Door County Coffee and Tea Co.: Jingle Bell Java\r\n
\r\n
Located in the U.S., in Sturgeon Bay, Wisconsin
\r\n
\r\n
\r\n
Jingle Bell Java \r\n Click the thumbnail to see the full-sized image
\r\n
Ham Radio Crash Course
\r\n
\r\n
Started by Josh Nass (KI6NAZ) as a YouTube channel,
\r\n
Ham Radio Crash Course (HRCC) has evolved into a rapidly growing community of radio enthusiasts that are excited to grow in the hobby, and help others grow as well.
\r\n',318,88,0,'CC-BY-SA','coffee, podcast, ham radio',0,0,1),
(3538,'2022-02-23','Installing the Tenacity audio editor',272,'Installing Tenacity, and the reasons behind the fork.','
Our project initially started as a fork of Audacity as a result of multiple controversies and public relation crises, which you can find out more about here:
Nevertheless, the goal of this project is to pick up what the original developers of Audacity the decades-long work by the original creators of Audacity and create an audio editor that is fresh, more modern, convenient and practical to use, with the help and the guidance of our users and our community.
Clone Tenacity from the Tenacity GitHub project.\r\n\r\n $ git clone https://github.com/tenacityteam/tenacity/\r\n $ cd tenacity\r\n\r\n Configure Tenacity using CMake:\r\n\r\n $ mkdir build && cd build\r\n $ cmake -G "Unix Makefiles" -Duse_ffmpeg=loaded ..\r\n\r\n By default, Debug build will be configured. To change that, pass -DCMAKE_BUILD_TYPE=Release to CMake.\r\n\r\n Build Tenacity:\r\n\r\n $ make -j`nproc`\r\n\r\n $ sudo make install
\r\n
Current version:3.0.2-895-g0665614 \r\n
\r\n',318,0,0,'CC-BY-SA','Tenacity, Audacity, Github, Cmake, make, audio editor, telemetry, Google, tracking',0,0,1),
(3523,'2022-02-02','The Compose key',406,'What is the compose key, and how to set it up on X, GNOME and Windows.','
The Compose key allows you to input any character or sequence of characters regardless what keyboard layout you use, by typing the Compose key followed by a sequence of other keys. To use it, you must activate it in your system and choose what key you want to serve as the Compose key.
\r\n
If on Windows, we don\'t judge, we understand it\'s because, like me, you have no choice, and that\'s OK, one day we\'ll all get to live the dream, until then we\'ll just make do... WinCompose enables the compose key on that wretched environment. It comes with a ton of additional sequences, plus a fancy GUI for creating your own.
Note that that last one actually comes with X by default. In ArchLinux, all the default sequences can be found in /usr/share/X11/locale/<your-locale>/Compose. Also good to find out what to call your keys when writing your own sequences.
\r\n
/etc/X11/xorg.conf.d/00-keyboard.conf is the file that makes the Compose key happen in X.
\r\n',399,0,0,'CC-BY-SA','Xorg,X11,compose,composekey',0,0,1),
(3524,'2022-02-03','Wheels Addendum - How to Reliably Attach Wheels to PAR Robot Platform',393,'The most difficult part of Post Apocalyptic Robotics - how to keep the wheels on','
Picture 1 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 2 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 3 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 4 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 5 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 6 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 7 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 8 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 9 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 10 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 11 \r\n Click the thumbnail to see the full-sized image
\r\n
Picture 12 \r\n Click the thumbnail to see the full-sized image
\r\n',401,0,0,'CC-BY-SA','beam,righttorepair,robots,mechatronics,apocalypse',0,0,1),
(3525,'2022-02-04','Battling with English - part 4',920,'Some confusion with English plurals; strange language changes','
Confusing plurals
\r\n
In this episode, the fourth of this series, I’m looking at some words that have singular and plural forms that are very different. These lead to a lot of confusion as we’ll see.
\r\n
I also want to look at the way that English is evolving in some very strange and apparently senseless ways!
\r\n
Personal note: I notice I started preparing this show in 2019; unfortunately, COVID messed up my productivity for the next two years, but I hope I can now begin to be productive again!
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed by following the full notes link.
\r\n',225,120,1,'CC-BY-SA','grammar,spelling,plurals,word misuse,English,language evolution',0,0,1),
(3539,'2022-02-24','Linux Inlaws S01E50: The OpenSUSE Project',4079,'An interview with Doug DeMaio and Axel Braun from the OpenSUSE project','
In this episode of the Inlaws our two ageing heroes host Doug DeMaio and Axel Braun, both intimately\r\nassociated with and actively supporting the OpenSUSE project, the foundation of one of the popular Linux distros\r\napart from RedHat and Debian for companies of all sizes (yes, and Ubuntu before I get any hate mails\r\nfrom Mark Shuttleworth or Cannonical in general :-). Apologies for not mentioning Alma, CentOS or\r\nRocky Linux. Topics of discussion include the advantages of hipster concepts like rolling releases,\r\nthe year of the Linux desktop, other people\'s computers (aka Clouds) and philosophical things like\r\nIT security, all things cloud-native (well, almost) and Apple laptop users drinking fancy coffee\r\nderivatives. Never mind containers, edge-computing operating systems and live kernel patching.
\r\n',384,111,1,'CC-BY-SA','OpenSUSE, Kubic, MicroOS, Clouds, Lattes, Desktops',0,0,1),
(3527,'2022-02-08','My gEeeky Experiment - Part 3',816,'Claudio talks about how he upgraded the SSD on his Asus Eee PC 901 netbook.','
Contact: claudiom@bsd.network (Mastodon) \r\nIRC: ClaudioM on #oggcastplanet (Libera.chat)
\r\n',152,0,0,'CC-BY-SA','openbsd,netbook,asus,eeepc,upgrades,ssd',0,0,1),
(3528,'2022-02-09','Slackware on a netbook',346,'A response show to HPR3512','
Installed Slackware on Acer Aspire One
\r\n
\r\n
4.4.14-smp #2 SMP Fri Jun 24 14:44:24 CDT 2016 i686 Intel(R) Atom(TM) CPU N270 @ 1.60GHz GenuineIntel GNU/Linux
\r\n
1 Gb ram
\r\n
[mark@archer72:~ ] $ free total --mega\r\n total used free shared buff/cache available\r\nMem: 1009 172 376 0 459 692\r\nSwap: 1048 0 1048
echo on >/sys/bus/acpi/drivers/button/$PLATFORM\\:00/power/control
\r\n
Or in this case
\r\n
echo on > /bus/acpi/drivers/button/LNXPWRBN\\:00/power/control
\r\n
Clear screen in BASH
\r\n
\r\n
Enter in ~/.bashrc the line:
\r\n
bind -x $\'\"\\C-l\":clear;\'
\r\n
Not working between reboots
\r\n
\r\n
\r\n
\r\n
If you always want the content of your .bashrc file processed, you can add the following lines to your .bash_profile file, creating that file if it does not already exist:
\r\n
if [ -f ~/.bashrc ]; then\r\n . ~/.bashrc\r\nfi
\r\n
Per its man page, bash \"[...] looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.\" Conventions and policies of your local system will determine which, if any, of these files already exist.
\r\n
A word of caution: be aware that creating a new .bash_profile in your home directory could have the unintended side-effect of preventing the reading and executing of commands in a .bash_login or .profile file already present, changing further the behavior of subsequent logins.
\r\n',318,0,0,'CC-BY-SA','Slackware, Auld hardware, netbook',0,0,1),
(3531,'2022-02-14','Barrier: Software KVM',1039,'A brief inroduction to the Barrier software KVM','
This episode is a quick software recommendation/introduction to Barrier. Barrier is a software KVM, forked from Synergy. It sends your keystrokes and mouse input over the network, so that you can share your input devices between computers.
\r\n',196,0,0,'CC-BY-SA','kvm,Barrier,network,keyboard,mouse',0,0,1),
(3532,'2022-02-15','Self-hosting in small scale E0: Disclaimer and general idea',545,'This ep is just explanation of the general idea and introducing useful communities around the topic','
By the end of the series I would like to end up with an example repository on Github/Gitlab with scenarios and example configuration file which makes them easy to replicate and modify to your need. I am interested in your opinion what type of service would you fancy to self-host yourself. So don\'t hesitate to contact me on twitter, matrix.org or in email.
Outside large jaws: used to measure external diameter of an object (like a hollow cylinder) or width of an object (like a rod), diameter of an object (like a sphere).
\r\n
Inside small jaws: used to measure the internal diameter of an object (like a hollow cylinder or pipe).
\r\n
Depth probe/rod: used to measure depths of an object (like a small beaker) or a hole.
\r\n
Main scale (Metric): marked every millimeter and helps to measure length correct up to 1 mm.
\r\n
Main scale (Imperial): marked in inches and fractions.
\r\n
Vernier scale (Metric) gives interpolated measurements to 0.1 mm or better.
\r\n
Vernier scale (Imperial) gives interpolated measurements in fractions of an inch.
\r\n
Retainer: used to block movable part to allow the easy transferring of a measurement.
\r\n\r\n',30,0,0,'CC-BY-SA','Vernier Caliper,measurement',0,0,1),
(3565,'2022-04-01','Heavy Hacking down in the quarry. ',468,'How to adjust a toggle plate on a MOBICAT MC 120 PRO Jaw Crusher','
Another trip down the quarry with Marshall aka Timtimmy. Today he\'s changing the toggle plate on a MOBICAT MC 120 PRO Jaw Crusher. We\'ve already covered it before but there is a brief refresher about the hydraulic, and pneumatic systems before we get to changing the plate itself. As always be sure you follow the safety instructions provided by the manufacturer.
',392,0,0,'CC-BY-SA','quarry,hacking,Health and Safety',0,0,1),
(3536,'2022-02-21','Laptop power problems',1398,'This is a story of a laptop with two power problems.','
This is a story of a laptop with two power problems.
\r\n
The first and less severe is that sometimes the charging of the battery will get stuck at a certain percentage. This is not simply due to the effect commonly found with aging batteries but a fault with the laptop\'s charging hardware. A full reset of the charging system can fix it, which for this ASUS Zenbook UX550vd laptop requires a long press — meaning 40 seconds — from its shutdown state.
\r\n
The second and more serious issue is that the laptop thinks that it is plugged into AC power even when it is running only on battery. I ruled out an operating system or software issue because the issue remains whether running GNU/linux or Windows. The problem is serious because the power management software, in my case in KDE, will not respond to critically low battery levels by suspending or gracefully shutting down. It may be that a sudden loss of power damaged the previous SSD in this laptop, which was the subject of HPR 3428.
\r\n
My first attempt to fool KDE into seeing accurate battery information under /sys/class/power_supply/BAT0 using an overlay filesystem failed presumably because KDE\'s power system is listening out for some kind of event rather than simply monitoring those files. My second and successful attempt involved writing my own bash scripts run by cron to monitor battery levels and initiate actions when they got too low. There were errors with comedic consequences along the way. In fact, while writing these shownotes after I finished recording the audio, the laptop suspended itself because of a bug in my script - I used le (less than or equal to) rather than lt (less than) in my test for a change in the battery charge leading to unintended and fun consequences when the battery was fully charged.
\r\n',268,0,0,'CC-BY-SA','laptop,linux,power',0,0,1),
(3647,'2022-07-26','Weekend projects',1004,'Rho`n rambles about some weekend projects','
Synopsis
\r\n\r\n
In this episode, Rho`n rambles about some recent weekend repair projects. The main focus of this episode is fixing a bent patio table umbrella pole, along with his attempts to fix a punctured basketball. There are some successes, some failures, and some side stories along the way.
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n',293,0,0,'CC-BY-SA','diy, repairs, umbrella, basketball',0,0,1),
(3858,'2023-05-17','The Oh No! News.',873,'Sgoti talks about Toyota\'s data leak and more, on the Oh No! News.','
Author: FBI Internet Crime Complaint Center. (2023,\nApr 7). \n
\n
The companies use deceptive tactics—including threats, manipulation,\nand providing false information—to coerce sextortion victims into paying\nfor their services. Some of the services for which the companies charge\nfees, such as sending the perpetrators cease and desist orders, make\nvictims feel better but are not legally enforceable. The companies may\nalso attempt to discourage victims from reporting the sextortion to law\nenforcement. Limited reporting indicates the companies are directly or\nindirectly involved in the sextortion activity. \n
Nickolas Sharp, a former senior developer of Ubiquiti, was sentenced\nto six years in prison for stealing company data, attempting to extort\nhis employer, and aiding the publication of misleading news articles\nthat severely impacted the firm\'s market capitalization. \n
Toyota Motor Corporation disclosed a data breach on its cloud\nenvironment that exposed the car-location information of 2,150,000\ncustomers for ten years, between November 6, 2013, and April 17,\n2023. \n
Author: Traffic Commissioners for Great Britain.\n(2023, May 4). \n
\n
The Traffic Commissioner for the West Midlands, Miles Dorrington,\nimposed a financial penalty under section 155 of the Transport Act 2000\nof £1500, based on a £100 penalty for each of the vehicles authorised on\nthe operator’s licence. \n
Author: FBI Internet Crime Complaint Center. (2023,\nApr 10). \n
\n
The FBI warns of criminal actors posing as Chinese law enforcement\nofficials or prosecutors in financial fraud schemes targeting the\nUS-based Chinese community. Criminals tell victims they are suspects in\nfinancial crimes and threaten them with arrest or violence if they do\nnot pay the criminals. Criminals exploit widely publicized efforts by\nthe People’s Republic of China government to harass and facilitate\nrepatriation of individuals living in the United States to build\nplausibility for their fraud. Criminals typically call victims,\nsometimes using spoofed numbers to appear as if the call is from the\nChinese Ministry of Public Security, one of its localized Public\nSecurity Bureaus, or a US-based Chinese Consulate. Criminals may also\ncommunicate through online applications. \n
Twitter has launched its \'Encrypted Direct Messages\' feature\nallowing paid Twitter Blue subscribers to send end-to-end encrypted\nmessages to other users on the platform. \n
\n
The private decryption key is only stored on the sender\'s device and\nis not shared with anyone else. However, the public encryption key is\nshared with others who want to send you encrypted data. \n
Discord is notifying users of a data breach that occurred after the\naccount of a third-party support agent was compromised. \n
\n
The security breach exposed the agent\'s support ticket queue, which\ncontained user email addresses, messages exchanged with Discord support,\nand any attachments sent as part of the tickets. \n
\n
\n
\n\n
\n
Additional Information.\n
\n
What is a \"Data\nBreach\"? A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so. \n
\n
What is \"Malware\"?\nMalware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy. \n
\n
What is a \"Payload\"?\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection. \n
\n
What is \"Phishing\"?\nPhishing is a form of social engineering\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim. \n
Information Security Attributes:Confidentiality, Integrity and Availability (C.I.A.).\nInformation Systems are composed in three main portions, hardware,\nsoftware and communications with the purpose to help identify and apply\ninformation security industry standards, as mechanisms of protection and\nprevention, at three levels or layers: physical, personal and\norganizational. Essentially, procedures or policies are implemented to\ntell administrators, users and operators how to use products to ensure\ninformation security within the organizations. \n
\n
\n
What is \"Risk\nmanagement\"? Risk management is the identification, evaluation, and\nprioritization of risks followed by coordinated and economical\napplication of resources to minimize, monitor, and control the\nprobability or impact of unfortunate events or to maximize the\nrealization of opportunities. \n
\n
What is a \"Vulnerability\"\n(computing)? Vulnerabilities are flaws in a computer system that\nweaken the overall security of the device/system. Vulnerabilities can be\nweaknesses in either the hardware itself, or the software that runs on\nthe hardware. \n
\n
What is an \"Attack\nSurface\"? The attack surface of a software environment is the sum of\nthe different points (for \"attack vectors\") where an unauthorized user\n(the \"attacker\") can try to enter data to or extract data from an\nenvironment. Keeping the attack surface as small as possible is a basic\nsecurity measure. \n
\n
What is an \"Attack\nVector\"? In computer security, an attack vector is a specific path,\nmethod, or scenario that can be exploited to break into an IT system,\nthus compromising its security. The term was derived from the\ncorresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity. \n
\n
What is\n\"Standardization\"? Standardization is the process of implementing\nand developing technical standards based on the consensus of different\nparties that include firms, users, interest groups, standards\norganizations and governments. Standardization can help maximize\ncompatibility, interoperability, safety, repeatability, or quality. It\ncan also facilitate a normalization of formerly custom processes.\n
What is a \"Replay\nattack\"? A replay attack is a form of network attack in which valid\ndata transmission is maliciously or fraudulently repeated or delayed.\nAnother way of describing such an attack is: \"an attack on a security\nprotocol using a replay of messages from a different context into the\nintended (or original and expected) context, thereby fooling the honest\nparticipant(s) into thinking they have successfully completed the\nprotocol run.\" \n
\n
What is a\n\"Man-in-the-middle attack\"? In cryptography and computer security, a\nman-in-the-middle, ..., attack is a cyberattack where the attacker\nsecretly relays and possibly alters the communications between two\nparties who believe that they are directly communicating with each\nother, as the attacker has inserted themselves between the two\nparties. \n
\n
What is \"Transport Layer\nSecurity\" (TLS)? Transport Layer Security (TLS) is a cryptographic\nprotocol designed to provide communications security over a computer\nnetwork. The protocol is widely used in applications such as email,\ninstant messaging, and voice over IP, but its use in securing HTTPS\nremains the most publicly visible. \n
\n
What is a \"Handshake\"\n(computing)?. In computing, a handshake is a signal between two\ndevices or programs, used to, e.g., authenticate, coordinate. An example\nis the handshaking between a hypervisor and an application in a guest\nvirtual machine.
\n',391,74,0,'CC-BY-SA','Ubiquiti dev, Toyota, Sextortion, Twitter, Discord',0,0,1),
(3549,'2022-03-10','Linux Inlaws S01E51: git and static site generators',3206,'git and static site generators','
Another fortnight, another episode of our beloved podcast called Linux\r\nInlaws :-). What starts as an episode on the history of Central Europe and the\r\nrole of the Netherlands and Germany in the greater scheme of things rapidly\r\nmoves sideways into a discussion of git-powered static HTML website generators\r\nin contrast to context management systems (CMSs) and their advantages,\r\ndisadvantages and why the hell even think about this. Chris uses an innocent\r\n(?) Linux User Group (LUG) as an example for a successful site migration from\r\na Python-powered CMS to a version of the website based on a static site\r\ngenerator written in Go and called Hugo. Even if you may find this boring to\r\ntears stay tuned as there may be an unexpected ending of this ditty in the\r\nshape of two interesting poxes...
\r\n',384,111,1,'CC-BY-SA','git, content management systems, MoinMoin, HUGO, static site generators, HPR, PEPs, gitea, Reacher',0,0,1),
(3543,'2022-03-02','Idle thoughts on web browsers',476,'and a call for your own on the same','
To contribute your own idle thoughts in voice message form, join #thoughtsonbrowsers:matrix.org and leave your voice message. Then join #hpr:matrix.org and say hello.
\r\n',399,0,1,'CC-BY-SA','browsers,firefox,qutebrowser,tridactyl',0,0,1),
(3537,'2022-02-22','getting to blinky with flashforth',1708,'making an arduino board useful','
: hw1 ." Hello, world!" ;\r\n: led-on %00100000 PORTB mset ;\r\n: led-off %00100000 PORTB mclr ;\r\n: flash-led begin led-on #1000 ms led-off #1000 ms again ;
\r\n',326,0,0,'CC-BY-SA','arduino, forth',0,0,1),
(3786,'2023-02-06','HPR Community News for January 2023',2881,'HPR Volunteers talk about shows released and comments posted in January 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 27 comments in total.
Comment 2:\nJohnnyLawrence on 2023-01-26:\n\"Whoafully misinformed\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Show transcripts
\n
Transcripts of audio have been generated for shows since December\n2022, using the Whisper tool.\nKen Fallon has been working on this project, and has also been\ntranscribing the older shows from hpr0001 to the present\nday. This part of the project is complete.
\n
The transcripts have been attached to each show on the HPR website,\nand are in the process of being added on archive.org.
This \"re-upload\" project\nis now ended. All shows from 871 to 2429 have been re-uploaded with all\naudio files and other assets.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3806,'2023-03-06','HPR Community News for February 2023',4592,'HPR Volunteers talk about shows released and comments posted in February 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 30 comments in total.
Comment 1:\nbrian-in-ohio on 2023-02-26:\n\"moore\'s law\"
Comment 2:\nZen_floater2 on 2023-02-26:\n\"Very Interesting\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3554,'2022-03-17','Guide to the Science and Technology Section of Bitchute',775,'Guide to some cool science and tech channels on Bitchute','
too lazy to add any more channels... make an account and you can browse and subscribe too.
\r\n',401,0,1,'CC-BY-SA','bitchute,videos,technology,science',0,0,1),
(3541,'2022-02-28','The case of missing ideas.',940,'With negotiation painful barely legible robotic voices will develop into beautiful expressive music ','
Just a mixed up overview of cases in the natural human languages of Russian and English types.
',398,0,1,'CC-BY-SA','language , cases , russian , grammar , ideas',0,0,1),
(3542,'2022-03-01','The Worst Car I Ever Had',651,'Beeza releases 30 years of frustration about a particularly dreadful car he once owned.','
Most of us who drive have probably owned a number of cars over the years. Some are inevitably better than others but there may be one which stands head and shoulders above the rest as the WORST car we\'ve ever owned.
\r\n
In this episode Beeza gets off his chest a tale of woe regarding a rogue car he had the misfortune to own in the mid 80s.
\r\n
Maybe other HPR listeners will care to tell their own horror stories in due course......
\r\n',246,0,0,'CC-BY-SA','Cars, automobiles',0,0,1),
(3544,'2022-03-03','All my microphones',655,'A show recording using every microphone I had to hand.','
I used the following microphones in roughly reverse order of my expectations of their quality:
All audio is mono. I used Audacity to record on my laptop at 44.1kHz. For the desktop mic I had to resort to using my son\'s desktop Windows 10 PC and Windows recording app which defaulted to 48kHz and I think it was the app rather than the mic that resulted in the surprisingly poor quality. It definitely sounds like some kind of noise gate is being applied but I didn\'t dig around to see what settings were available. For my phone\'s built-in mic I used Samsung\'s voice recording app which I presume came pre-installed on the phone. Recording via bluetooth on an android phone turned out to be tricky as the OS only wants you to use a bluetooth microphone for calls however I found an app called Bluetooth Headset Voice Recorder and then enabled call audio on bluetooth and was able to record (the rubbish) audio.
\r\n
I edited this show in audacity and contrary to my normal practice I did not remove noise from any of the recordings so that you can hear any hiss in all its glory. I did however tweak the gain on each track manually so that they were about the same volume.
\r\n',268,0,1,'CC-BY-SA','audio,microphone,headset,Plantronics,ASUS ZenBook UX550VD',0,0,1),
(3548,'2022-03-09','Make a custom Git command',1177,'Make Git subcommands with shell scripts and Git rev-parse','
\r\nHow to make your own Git subcommands with shell scripts, and then how to pass arguments to them with git rev-parse.
\r\n\r\n
\r\nFor a real-world example of Git in scripts and hooks, see Git-portal.
\r\n\r\n
The joke site Klaatu mentions in the episode is \r\ngit-man-page-generator. It\'s a joke site. Do not attempt to run these commands. However, it could be fun inspiration on what Git command you could make next!
\r\n',78,81,0,'CC-BY-SA','git',0,0,1),
(3547,'2022-03-08','Password Managers',811,'How I manage password security.','
\r\n',391,74,0,'CC-BY-SA','Password Managers, Online Security, Bitwarden, KeePassXC',0,0,1),
(3552,'2022-03-15','Unboxing a PineTime development kit',1684,'Rho`n talks about his new PineTime smart watch development kit','
Synopsis
\r\n\r\n
In this episode, Rho`n unboxes his new PineTime smart watch development kit, and gives his initial impressions. The development kit consists of two watches. One watch is fully assembled and ready for daily use. The other watch is disassembled, consisting of a watch band, the watch back cover, and the assembled display, system on a chip (SOC), CPU, and battery. The kit also comes with a serial cable for connecting from your computer to the SOC.
\r\n\r\n
The following are the photographs taken during the unboxing.
\r\n\r\n',293,0,0,'CC-BY-SA','pinetime, pine64, smart watch, InfiniTime',0,0,1),
(3551,'2022-03-14','Bash snippet - some possibly helpful hints',1475,'Using \'eval\', \'mapfile\' and environment variables','
Overview
\r\n
I write a moderate number of Bash scripts these days. Bash is not a programming language as such, but it’s quite powerful in what it can do by itself, and with other tools it’s capable of many things.
\r\n
I have enjoyed writing such scripts for many years on a variety of hardware and operating systems, and Bash is my favourite - partly because Linux itself is so flexible.
\r\n
This is just a short show describing three things I tend to do in Bash scripts to assist with some tasks I find I need to undertake.
\r\n\r\n
Generate Bash variables from a text file - usually output from a program
\r\n
Fill Bash arrays with data from a file or other source
\r\n
Use environment variables to control the Bash script’s execution
\r\n',225,42,1,'CC-BY-SA','Bash,eval,mapfile,environment variables',0,0,1),
(3559,'2022-03-24','Linux Inlaws S01E52: The Zig Project',4151,'An interview with Loris Cro of Zig Fame','
In this episode Martin and Chris have a very special guest: Loris Cro of\r\nZig fame. Zig fame? Stay tuned. Not only is Loris an ex-colleague of our two\r\naging heroes, he is also the community vice president at the Zig Software\r\nFoundation. So this episode will be all about this new programming language,\r\nwhy you should use it (and perhaps why you shouldn\'t) and life, the universe\r\nand the rest. And Rust. Of course. :-) Full disclosure: In contrast to other\r\nepisodes, this one is really tech-heavy and may offend the less technical\r\nlisteners. Listen at your own discretion if you want to into the weeds of\r\nClang, LLVM, typing and cross-compilation - you have been warned. If this is\r\nup alley, you may want consider seeking professional help just in case :-).
\r\n',384,111,1,'CC-BY-SA','Zig, Zig Software Foundation, Rust, Money, Miami Vice, US Non-Profits',0,0,1),
(3553,'2022-03-16','Freedom of speech in open source',1432,'Is it free speech if you have to leave?','\r\n
First Amendment(United States Constitution). \r\nCongress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the Government for a redress of grievances.
\r\n',391,69,1,'CC-BY-SA','Free Speech',0,0,1),
(3562,'2022-03-29','Creating a new project with Haskell and Stack',1230,'Tuula explains how to create a new haskell project and build it','
Stack
\r\n
Stack is a cross-platform program for developing Haskell projects. It features:
\r\n
\r\n
Installing GHC automatically, in an isolated location.
Our game will be called Treasure Dungeon. After installing stack, we\'ll open a new terminal window, change into some suitable directory and use stack to create our project: stack new treasure-dungeon rio.
\r\n
This will create directory treasure-dungeon and initialize it by using rio template. rio is a standard library that I have recently started using. There\'s a tutorial available if you want to learn more about it. We\'ll cover only very basics while writing the game.
\r\n
package.yaml
\r\n
Next step is to modify the project settings for the project that was created for us. Have a look at license file and change that to your liking. Then open up package.yaml and edit some of the metadata:
\r\n
\r\n
git this should point to your public repository
\r\n
license this has machine readable info about the license terms
\r\n
author here you should fill in your info
\r\n
maintainer this is the person currently maintaining the package
\r\n
copyright Copyright information
\r\n
executablebles this section lists executable, you may want to edit the name
\r\n
\r\n
I have a repository at codeberg if you want to have a look what settings I ended up with.
\r\n
stack.yaml
\r\n
Having finished with package.yaml, save it and start editing stack.yaml. Here we change only one setting: - resolver: lts-18.27, this specifies which set of libraries to use. These are fetched from Stackage.
\r\n
Final step is to edit README.md to suit your needs.
\r\n
Using stack
\r\n
Now we can work on our project. Lets start by building it: stack build. This will build the example code. There\'s one library and one executable there. If everything went correctly, we can start our executable with stack exec -- treasure-dungeon. This should print a little message on screen and exit. We can also turn on verbose logging, by starting the project with stack exec -- treasure-dungeon --verbose 2> log.txt.
\r\n
Another useful command is stack test, which will compile and run tests for the project. There\'s couple simple ones as an example created by the template.
\r\n
And if you want to clean up your project of intermediate files and exes, you can use stack clean.
\r\n
Project structure
\r\n
Final thing before finishing, let\'s have a look at the project structure. There\'s three directories: app, src and test.
\r\n
app contains code for our executable. This is where we will be placing big portion of the code, mainly one that deals with user interactions.
\r\n
src contains code for our library. This is where we will be placing code that codifies rules of the game. We want to keep this part of the code oblivious about outside world, like screens, user input and such.
\r\n
test this is where tests live. We aren\'t going to do much with them most likely.
\r\n
In closing
\r\n
We started our card game project. It doesn\'t do much yet, but we already have an executable that we can build and run. Next time we\'ll look into how to roll a new character and get them equipped before venturing into treasure dungeon.
\r\n
ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, programming, getting started',0,0,1),
(3555,'2022-03-18','PopKorn Episode 1: The Fallacy of the Unreasonable Effectiveness of Mathematics in the ETC',969,'BlacKernel tries talking off the cuff with mixed results','
Talking Points
\r\n
\r\n
The concept of PopKorn
\r\n
The statement of \"The Unreasonable Effectiveness of Mathematics in the Natural Sciences\"
\r\n
The Fine-structure Constant
\r\n
The Axiom of Extentionality
\r\n
Why proofs of God are crap
\r\n
The \"First Mover\" argument of St. Thomas Aquinus
\r\n',396,0,1,'CC-BY-SA','improv, math, popkorn, fallacy',0,0,1),
(3556,'2022-03-21','TTS for HPR',226,'Few voice samples to swap espeak TTS in HPR intro','
Used the opentts Project with default settings. The voices you will hear in order:
\r\n
\r\n
coqui_en_ljspeech
\r\n
larynx_northern_english_male
\r\n
larynx_southern_english_female
\r\n
larynx_scottish_english_male
\r\n
larynx_glados
\r\n
\r\n
I found the gladOS voice funny, hence I included that one, but these are the best sounding to my knowledge so far.
\r\n
I have seen that with there will be a new mimic release version 3 soon, which has a really great voice. And example with the voice of Alan Pope mycroft_demo. And synesthesiam who\'s working on these projects said that there will be hopefully a model, which can be trained with actual voice, which would fine tune the voice to sounds more like someone else.
\r\n',402,0,0,'CC-BY-SA','tts, hpr',0,0,1),
(3563,'2022-03-30','Home Coffee Roasting, part 1',1123,'What it\'s like to roast coffee at home','
If I left anything out, let me know in the comments or email me.
\r\n
I think I mentioned in the show that I would put in the sound of first crack, but then it didn\'t work because the motor was too loud and you couldn\'t hear anything. Sorry.
\r\n',399,88,0,'CC-BY-SA','coffee,\"coffee roasting\"',0,0,1),
(3561,'2022-03-28','Employment security',410,'Phone system for the state of Illinois','
Going through the phone system for the state of Illinois in the United States.
\r\n
Feel free to record your experience with various states/countries.
\r\n',318,0,0,'CC-BY-SA','Phone call, IDES, Unemployment, Government, Firefox, Internet Explorer',0,0,1),
(3557,'2022-03-22','A short story about Lenovo and laptop batteries',580,'How Lenovo is spicing up the life of their user with strange challenges','
you need practice, you most likely can\'t just stare at code and learn it like that
\r\n
\r\n
ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, learning, programming, blogs, books',0,0,1),
(3564,'2022-03-31','Removing EXIF data from an image',745,'An image might reveal data you want to keep private','
Introduction
\r\n
I’m writing a script to process image files sent in by HPR hosts with their shows. One of the things the script does is to strip Exif metadata from such images. That’s because this metadata may contain details that could identify the creator of the image - their camera, their location, and other things. Many people will be alert to this, but in case anything slips through it seems a courtesy to anonymise images sent to HPR.
\r\n
As I was implementing this I realised that one piece of Exif data: \'Orientation\', can’t just be removed. Sometimes images are created with a particular orientation by the camera but are written with an Exif orientation setting that shows another orientation. If this is just removed the image might be shown wrongly.
\r\n
This short episode describes the journey I had learning about this issue and finding how to get round it.
\r\n
The Problem
\r\n
A show was sent in early March 2022 which had three images with orientation values in the Exif metadata. They had apparently been taken with one orientation but were being rotated for viewing.
\r\n
I later discovered that the orientation setting can be viewed with the exiftool command:
You can find information about the Orientation tag on the ExifTool web site.
\r\n
The actual image in this case is rotated 90° anti-clockwise (the top of the image is to the left) and this needs to be reversed. The setting \'Rotate 90 CW\' causes it to be displayed after rotating 90° in the clockwise direction. The actual value for this setting is 6.
\r\n
The problem is that removing all the Exif data causes such an image to revert to its raw state as explained below.
\r\n
Investigation
\r\n
Demonstration
\r\n
It took me a little while to understand this problem because I couldn’t find a good explanation of what was going on.
\r\n
I found a repository on GitHub which would take a picture and generate all of the possible Exif orientations from it. I used it to generate pictures from one (a thumbnail) I used in an old HPR show. Here’s the original picture with an orientation setting of 6 (Rotate 90 CW), and then with the Exif metadata removed.
\r\n
Original image with orientation 6 \r\n
\r\n
Same image with Exif stripped \r\n
\r\n
Methods used to fix this
\r\n
I found and installed some tools:
\r\n
\r\n
jpegexiforient - reads or writes the Exif Orientation Tag
\r\n
exifautotran - transforms Exif files so that Orientation becomes 1
\r\n
jpegtran - lossless transformation of JPEG files
\r\n
\r\n
Note that these only operate on JPEG images.
\r\n
The exifautotran tool is a shell script that uses jpegexiforient to find the orientation and jpegtran to undo whatever rotation (or other transformation) has been defined.
\r\n
Reading the exifautotran script helped me understand all of this, but I did not use these tools in the end.
\r\n
In the script I had written to manage images I also needed to do other image operations:
\r\n
\r\n
interrogate the image to find its size to determine whether a thumbnail was needed
\r\n
make a thumbnail if necessary
\r\n
\r\n
To do this I had started to use the GraphicsMagick package.
\r\n
This package actually caters for the orientation transformation I wanted to perform and can handle many image types, not just JPEG.
\r\n
The technique is to use the command \'gm convert\' with two options:
\r\n
\r\n
-strip - remove all profiles and text attributes from the image
\r\n
-auto-orient - orient (rotate) the image so it is upright; adjusts the image orientation so that it is suitable for viewing
Running this on the images in question removed the Exif orientation after having rotated the pixels of the image to the \'Horizontal (normal)\' state.
\r\n
Conclusion
\r\n
I have modified my picture management script to use this technique, and so far it seems to do the job perfectly. It has to be admitted that images with Exif orientation metadata are rare though.
\r\n
The GraphicsMagick documentation indicates that the transformations needed to generate an upright image could cause problems with some images, so we will be alert to any issues. For the moment, it looks as if the problem is largely solved.
\r\n
Personally, I gained several things from this journey of discovery:
\r\n
\r\n
I ended up understanding images a bit better.
\r\n
Using exiftool to examine these images helped me to understand the power of this tool1.
\r\n
I also discovered that if opened the example image with Gimp it spotted the orientation issue and asked if I wanted it to perform the transformation discussed above.
\r\n
I installed a KDE image tool called ShowFoto and it also reported the fact that the image existed in two forms, in the same way, and allowed Exif editing.
\r\n\r\n\r\n',225,0,1,'CC-BY-SA','image,Exif,exiftool,GraphicsMagick,orientation',0,0,1),
(3579,'2022-04-21','PINN is not NOOBS',650,'Multibooting raspberry pi','
An easy enhanced Operating System installer for the Raspberry Pi
\r\n
The latest version of PINN can be downloaded from sourceforge.
\r\n
This README relates to v3.8
\r\n
(PINN-lite does not include any operating systems at all.
\r\n
It is more akin to NOOBS-lite rather than NOOBS. For that reason, the filename that you download is called pinn-lite.zip. More recently, pinn.zip has also been made available for download which includes versions of Raspbian and LibreELEC.)
\r\n',318,0,0,'CC-BY-SA','Raspberry Pi, 64 bit, multiboot, Retropie, Kodi',0,0,1),
(3569,'2022-04-07','Linux Inlaws S01E53: Rust Marketing',2661,'A shameless plug for this hippster programming language and why you should use it','
In this episode our two heroes explore the depths a new (?) hipster\r\nprogramming language called Rust. Being an obvious piece of blatant technology\r\nmarketing, the Linux Inlaws are still waiting for the funds to arrive from the\r\nRust Foundation :-) (@Foundation: If you want to get in touch please send\r\na mail to sponsor at linuxinlaws eu). Jokes aside, the episode give a short\r\noverview of this new programming language without going into deeper technical\r\ndetails as this podcast is only the usual four hours long.
\r\n',384,111,1,'CC-BY-SA','Rust, The Rust Foundation, Firefox, D-Wave, Cargo',0,0,1),
(3568,'2022-04-06','PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy',899,'in This episOde, blackeRnel Tries to help yoU undeRstand Enough about math and programming','
Talking Points
\r\n
\r\n
Any audio is better than no audio?
\r\n
Mathematics = Logic
\r\n
ZFC Axioms show logical structure
\r\n
Peano Axioms illustrating this point
\r\n
Euclid\'s Axioms showing how just because something is logical doesn\'t mean that has anything to do with reality
\r\n
x86 Instruction set showing the axiomatic basis of programming
\r\n
Asymmetric Literacy in Chinese languages.
\r\n
NOTE: This section is slightly incorrect in that there is a separate written form for Cantonese as well, but I hope that the main idea is still intelligible.
\r\n',396,0,0,'CC-BY-SA','improv, math, popkorn, programming, language',0,0,1),
(3571,'2022-04-11','The Meatball Mystery',512,'A naming oddity leads to questions about geneaology and American history','
Discussing the interesting oddity that is the meatball; its origins, and some misconceptions and coincidences surrounding the tasty \"traditional\" dish of spaghetti and meatballs.
\r\nNVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer\'s non-volatile storage media usually attached via PCI Express (PCIe) bus. The acronym NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCI Express (PCIe) add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices \r\nhttps://en.wikipedia.org/wiki/NVM_Express\r\n
\r\n\r\n\r\n',129,0,0,'CC-BY-SA','ssd,NVME Storage,high performance',0,0,1),
(3567,'2022-04-05','What is NVMe™ and why is it important?',1020,'A short Podcast about NVMe how it works and it is good','
\r\nNVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer\'s non-volatile storage media usually attached via PCI Express (PCIe) bus. The acronym NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCI Express (PCIe) add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices \r\nhttps://en.wikipedia.org/wiki/NVM_Express\r\n
\r\n\r\n',129,0,0,'CC-BY-SA','ssd,NVME Storage,high performance',0,0,1),
(3826,'2023-04-03','HPR Community News for March 2023',5070,'HPR Volunteers talk about shows released and comments posted in March 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 29 comments in total.
\n
Past shows
\n
There are 6 comments on\n5 previous shows:
\n
\n
hpr3434\n(2021-09-30) \"From 0 to K8s in 30 minutes\"\nby Klaatu.
\n
\n
\n
\nComment 3:\nMike Ray on 2023-03-24:\n\"Built a cluster in a rack\"
Comment 2:\nSome Guy On The Internet on 2023-03-28:\n\"My Mastodon handle.\"
\n
hpr3822\n(2023-03-28) \"A tale of wonder, angst and woe\"\nby Bookewyrmm.
\n
\n
Comment 1:\nWindigo on 2023-03-31:\n\"Wrist device\"
\n
hpr3825\n(2023-03-31) \"Creating a natural aquarium\"\nby minnix.
\n
\n
Comment 1:\nDave Morriss on 2023-03-31:\n\"Great and fascinating show\"
Comment 2:\nminnix on 2023-03-31:\n\"Thanks Dave\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Movement of the\nplay button on each show page
\n
\n
A request was made to move this from the bottom of each show page,\nwhere it can be difficult to find because of the length of the notes, to\nthe top.
\n
The change was made in the last week of March.
\n
\n
Non-English shows
\n
How to organise them?
\n\n
Just an intro and then the show
\n
An intro and then the show, then the text-to-speech translation\nafter
\n
Just the text-to-speech translation
\n
The original in the left channel and the text-to-speech in the\nright
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3574,'2022-04-14','Local Talking Newspapers',393,'Recordings of Local News for the Blind and Visually Impaired','
\r\n',403,79,0,'CC-BY-SA','blind, audio, recording',0,0,1),
(3575,'2022-04-15','An Edinburgh Blether',3724,'MrX and Dave Morriss catching up after nearly a year','
We recorded this on Sunday March 6th 2022. The last time we set up a chat like this was back in March 2021, almost exactly a year ago surprisingly!
\r\n
Note on the title: we spoke a little on the subject of the Scots language in the show - when speaking of the current census - so the title uses a Scots term.
\r\n
Topics discussed
\r\n
\r\n
COVID:\r\n
\r\n
Losing track of time
\r\n
\r\n
\r\n
\r\n
Christmas:\r\n
\r\n
A quiet time for both of the hosts, with some family time
\r\n
\r\n
\r\n
\r\n
Dave’s family matters:\r\n
\r\n
Son graduated after doing an MSc and got a job quite quickly last year
\r\n
Daughter had graduated from an MSc the year before and also got a job this year.
\r\n
Dave had a bout of shingles in early January, which lasted about 6-7 weeks overall. If you can get a shingles vaccination as you age, get one!
\r\n
\r\n
\r\n
\r\n
UK heating, boilers, etc.\r\n
\r\n
MrX’s in-laws had a boiler failure during the cold weather, and a gas leak!
\r\n
Dave had a leak in his cold water tank in the attic which flooded the room below. He decided to completely upgrade the heating system, remove all tanks and put in a new pressurised condensing gas boiler. See the Wikipedia page for an overview of central heating systems.
\r\n
Old-style plumbing; coal fires, back boilers and dampers.
\r\n
The era of coal:\r\n
\r\n
Gas poker used for starting domestic (usually coal) fires
\r\n
Coal gas made from coal, superseded by natural gas
Scots is recognised as an indigenous language of Scotland, a regional or minority language of Europe, and a vulnerable language by UNESCO. In the 2011 Scottish Census, over 1.5 million people in Scotland reported being able to speak Scots.
\r\n',225,0,1,'CC-BY-SA','conversation,blether',0,0,1),
(3576,'2022-04-18','First impressions of Ubuntu 22.04 as a daily driver.',1380,'Knightwise gives his first impressions on the latest LTS release of Ubuntu','
Knightwise gives us a good first impression of the Ubuntu 22.04 release and answers the question if its ready for prime time. We go down a little rabbithole on why there will never be a year of the Linux desktop.
\r\n',111,0,0,'CC-BY-SA','ubuntu, linux, desktop, open-source',0,0,1),
(3578,'2022-04-20','Linux Inlaws S01E54: Electronic Freedom Never Mind the Civil Rest',5234,'A discussion with members of the Electronic Frontier Georgia about electronic freedom, civil rights ','
In this episode our two hosts talk to an eclectic panel consisting of\r\nmembers of the Georgian affiliation of the Electronic Frontier Foundation\r\n(EFF) called Electronic Frontiers Georgia. Among other topics, civil rights\r\n(especially in the digital age), sharing of ideas never mind other\r\nintellectual capital and why this still matters in socialist America are the\r\nfocus of discussion. Plus Chris manages to recount most of the founding\r\nfathers of the US (gaps may be present... :-)
\r\n',384,111,1,'CC-BY-SA','EFF,Electronic Frontier Foundation, Georgia, US Constitution, Civil Rights, Positive Lobbying',0,0,1),
(3589,'2022-05-05','Sample of my microphones',434,'Microphones I have around the apartment','
\r\n',318,0,0,'CC-BY-SA','microphones, headsets, bluetooth',0,0,1),
(3581,'2022-04-25','My daily Linux driver.',1376,'Knightwise talks about the Linux system he uses as a daily driver.','
I talk about how I use Linux on a Daily basis from my home workstation.
\r\n',111,0,0,'CC-BY-SA','linux, workstation, ubuntu, budgie, mint',0,0,1),
(3583,'2022-04-27','takov751 and dnt talk about browsers',473,'After episode 3543, some messages were exchanged','
This is the follow up to episode 3543. HPR host takov751 had some things to say and I responded.
\r\n
If you have any topic ideas for a show in this type of format, let me know or post a show yourself.
',399,0,1,'CC-BY-SA','browsers',0,0,1),
(3588,'2022-05-04','Linux Inlaws S01E55: Get yer boots on for a fresh look at init systems',2779,'Martin and Chris discuss what happens when you turn on a computer (preferably running Linux)','
In this episode, Martin and Chris discuss init systems and Chris outs\r\nhimself as a systemd fan boy (Devuan followers take note :-). Even Linux and\r\nother FLOSS OS geeks not interested in what happens when you flick the power\r\nswitch on a computer may find this episode (vaguely) interesting as some light\r\nis also shed on the philosophy of the different system architectures and their\r\nhistory (Ever wanted to know what an /360 IPL really is? Then stay tuned...).\r\nDisclosure: The following text may resort to regular expressions to keep\r\nthings concise and simple. Some of the PCRE-challenged readers may take\r\noffence - you have been warned.
\r\n',384,111,1,'CC-BY-SA','init, SysVInit, Upstart, systemd, GRUB, Unix philosophy, Hello Magazine',0,0,1),
(3591,'2022-05-09','Small Flashlights',675,'Stuff that goes in your pocket','
Just had my birthday got some lights
\r\n',129,0,0,'CC-BY-SA','Flashlight,usb,pocket device ',0,0,1),
(3577,'2022-04-19','Hello and how I got into tech',444,'Hi, I\'m Sarah and this is how I got into Tech','
Hi, I\'m Sarah. In this show, I introduce myself and ramble about how I got into tech. Despite saying I hate talking about myself, I managed 7 minutes and 25 seconds. I started as a kid with a Tandy and eventually ended up being a librarian and a sysadmin for a RedHat system.
',404,29,1,'CC-BY-SA','intro, linux',0,0,1),
(3605,'2022-05-27','Aspire-ing to use 13 year hardware',502,'Part 2 of using Slackware on the old netbook','
Add \'acpi_mask_gpe=0x1D\' or whatever interrupt corresponds to the overactive one, and remember to run the lilo command afterward to make the kernel option active.
\r\n
Htop options for CPU usage \r\n Click the thumbnail to see the full-sized image
Use ACPI boot table parsing, but do not enable ACPI interpreter This disables any ACPI functionality that is not required for Hyper Threading.
\r\n
ACPI (Advanced Configuration and Power Interface) is an open industry specification establishing industry-standard interfaces for OS-directed configuration and power management on laptops, desktops, and servers.
\r\n',318,0,0,'CC-BY-SA','Slackware, netbook, interrupts, htop, upgrades',0,0,1),
(3592,'2022-05-10','A quick look at the Surface pro X',1380,'Knightwise gives a quick overview of 3 months on the Surface pro X','
I talk about the Surface Pro X I got at the beginning of the year and what the pro\'s and cons of it are. \r\nMore at www.knightwise.com \r\nTwitter: twitter.com/knightwise
The Surface Pro X is a 2-in-1 detachable tablet computer developed by Microsoft. It was developed alongside and was announced on 2 October 2019 alongside the Surface Pro 7 and Surface Laptop 3.[1] Updated hardware was announced alongside Surface Laptop Go and Surface accessories on October 1, 2020[2] and September 22, 2021.[3] The device starts at $899.99 USD / £849.99.[4][5]\r\n
The Surface Pro X comes with a Microsoft SQ1 or SQ2ARM processor, which the company claimed has three times the performance of an x86 MacBook Air, whilst also having a 13-hour battery life. This is due to the increased power efficiency of ARM processors compared to traditional x86 processors.[1][6][7] Microsoft has previously used ARM processors in the discontinued Surface RT and Windows Phone devices.\r\n
Microsoft now offers a Wifi-only version of the device as announced at their Surface Event on September 22, 2021.[8]\r\n
\r\n',111,0,0,'CC-BY-SA','surface, windows, laptop, hardware, review',0,0,1),
(3582,'2022-04-26','Rolling a new character',1793,'Tuula continues writing an example Haskell game, this time rolling a new character','
Quick peek at some places in code
\n
Main.hs has our Main module definition. It was generated by Stack when we started. In the end of the main function, it calls run function, which is defined in Run.hs file. This is the place where we can see overall flow of the program in one glance.
\n
run :: RIO App ()\nrun = do\n choice <- showMainMenu\n case choice of\n StarNewGame -> do\n logDebug "New game starting..."\n logDebug "Rolling new character..."\n player <- liftIO $ evalRandIO rollNewCharacter\n displayNewCharacter player\n logDebug "Selecting starting gear..."\n gear <- selectStartingGear $ playerGear player\n logDebug "Preparing game..."\n game <- liftIO $ evalRandIO $ startGame player gear\n logDebug "Dealing first card..."\n finishedGame <- playGame game\n logDebug "Displaying game over..."\n displayGameOver finishedGame\n\n ExitGame ->\n return ()
\n
Another interesting module is Types. Here you can find how player, items, monsters and such are represented.
\n
Third and biggest module is UserInterface, which contains functions to display game status to player and ask their input.
\n
So, what does our run function do? Lets have a look:
\n
\n
choice <- showMainMenu\n
\n
show main menu and ask for player input
\n
\n
case choice of\n
\n
depending on the choice, continue with game logic or exit the function
\n
\n
player <- liftIO $ evalRandIO rollNewCharacter\n
\n
roll a new character
\n
evalRandIO indicates we\'re dealing with random numbers
\n
\n
displayNewCharacter player\n
\n
display the new character on screen
\n
\n
gear <- selectStartingGear $ playerGear player\n
\n
select starting gear
\n
\n
game <- liftIO $ evalRandIO $ startGame player gear\n
\n
shuffle the deck and set up the game
\n
again using random numbers here
\n
\n
finishedGame <- playGame game\n
\n
play game until we\'re done
\n
\n
displayGameOver finishedGame\n
\n
display game over screen
\n
\n
\n
Word about input and output
\n
One of the features of Haskell I like is the ability to show which functions are pure (always returning same output with given set of inputs and not having any side effects). In our program, every function that returns RIO a b has access to input and output. In addition to that, it also has access to system wide configuration (which we don\'t use much here) and logging functions.
\n
To write on the screen, we use putStrLn and reading a user input readLine. Since they\'re designed to work with IO instead of RIO a b, we have to use liftIO. But all that is technical details that we won\'t worry now.
\n
App is our configuration. We aren\'t directly using it, so it\'s safe to ignore for now.
\n
Showing main menu
\n
showMainMenu function will print out the menu and then call mainMenuInput. mainMenuInput will read input, validate that it\'s either 1 or 2 and return respectively StarNewGame or ExitGame. In case user enters something else, mainMenuInput will recurse until user enters valid input.
\n
-- | Display main menu\nshowMainMenu :: RIO App MainMenuChoice\nshowMainMenu = do\n logDebug "Displaying main menu"\n liftIO $ putStrLn "\\n\\n"\n liftIO $ putStrLn "Treasure Dungeon"\n liftIO $ putStrLn "****************"\n liftIO $ putStrLn ""\n liftIO $ putStrLn "1. Start a new game"\n liftIO $ putStrLn "2. Quit"\n mainMenuInput\n\nmainMenuInput :: RIO App MainMenuChoice\nmainMenuInput = do\n i <- liftIO getLine\n case i of\n "1" -> return StarNewGame\n "2" -> return ExitGame\n _ -> do\n logDebug $ displayShow $ "Incorrect menu choice: " <> i\n liftIO $ putStrLn "Please select 1 or 2"\n mainMenuInput
\n
You might wonder, why mainMenuInput can keep calling itself without filling the stack? That\'s because Haskell doesn\'t use stack in the same sense as many other programming languages. Haskell compiler is also smart enough to notice that call to mainMenuInput is last operation of the mainMenuInput, there is no work to be done after the call, and thus can optimize things even more. I don\'t know all the dirty details how this has been implemented and how things work behind the curtains.
\n
Rolling new character
\n
player <- liftIO $ evalRandIO rollNewCharacter rolls a new character, but what exactly is going on here? rollNewChacter has following signature: rollNewCharacter :: (RandomGen g) => Rand g Player. It doesn\'t take any parameters and returns Rand g Player, where g implements RandomGen. So, it\'s Rand monad that returns Player. In order to get the result of the computation, we call evalRandIO that uses global random number generator to compute. And since it\'s an IO operation, we need liftIO. It\'s bit confusing at first, so don\'t worry if you don\'t get all the details. The main point is that we\'re doing computation with random numbers.
This rolls three six sided dice for each attribute and 4 for hit points. The values are then used to create Player record that is returned.
\n
dice is implemented as following:
\n
dice :: (RandomGen g) => Natural -> Rand g Natural\ndice n = do\n rolls <- getRandomRs (1, 6)\n let roll = sum $ take (fromIntegral n) rolls\n return $ fromInteger roll
\n
Again, we\'re using Rand monad for random number generation. getRandomRs supplies us an infinite list of numbers between 1 and 6. Then we use take to some of them and sum to add them together. fromIntegral n is needed, because take doesn\'t operate on Natural type, but Int. I wanted to use Natural though, because that ensures that the parameter n will always be 0 or more.
\n
In closing
\n
Now we have a basic layout for our program and know how to roll a character with random stats. Next time we\'ll finally look into getting some gear on them. The code for the game is available at my codeberg repository.
\n
ad astra!
\n',364,107,0,'CC-BY-SA','game development, haskell',0,0,1),
(3584,'2022-04-28','The collective history of RAID controller brands',1074,'The story of Raid cards 1999 to present','
The market segment of RAID adapters has a long history and tradition, and has undergone gradual concentration, followed by upstream mergers of the owning corporations - a feeding frenzy of sorts, among the semiconductor manufacturers.
\n',129,0,0,'CC-BY-SA','HBA,Raid,Raid card,Mylex,Adaptec',0,0,1),
(3585,'2022-04-29','Freedom of speech in open source, Part 2.',793,'Freedom has a cost.','
\n',36,0,1,'CC-BY-SA','routers,firewalls,wireless,home networking',0,0,1),
(3593,'2022-05-11','Home office setup mouse shoulder and Auto Hot Key Scripts',1371,'I talk about my issues and solutions for desk ergonomics','
runs it and based on IP address sets different configurations
\n
\n
\n',36,0,0,'CC-BY-SA','Ergonomic,back pain,health,fitness',0,0,1),
(3594,'2022-05-12','Peely-wally in Edinburgh',4057,'MrX and Dave Morriss chatting about this and that','\n
Dave’s home-built desktop PC had another disk problem
\n
Running a SMART daemon (under SystemD) gives warnings of imminent disk problems
\n
HP Proliant MicroServer - an AMD-based machine sold in the 2010’s (?) by HP with a substantial discount. (Prices cited in the audio are probably not reliable!)
\n
Regarding the failed PSU mentioned last time, there was speculation about whether turning off at the mains every day is a good idea. MrX is inclined to think that it is not.
\n
\n
\n
\n
Remote-controlled plugs:\n
\n
Dave used a set of Brennenstuhl plugs for a while until several of them were destroyed!
\n
Now has two Sonoff plugs which can be flashed with firmware and controlled with MQTT as part of a Smart Home
\n
\n
\n
\n
Programming:\n
\n
MrX has recently been writing a Bash script, and found it difficult to get back into it.
\n
Dave had written in DEC Pascal on a VAXCluster for many years, but can’t remember any of it any more.
\n
Discussion of Delphi, Borland C++
\n
Neither MrX nor Dave has used C very much
\n
\n
\n
\n
Difficulty of producing HPR shows:\n
\n
Pandemic effects on motivation
\n
Complications of working from home
\n
Happily the rate of contributions to HPR has been increasing in the past few months
\n
Adding pictures to shows still needs documentation
\n
\n
\n
\n
Smart speakers:\n
\n
MrX already had two Google Home devices and got a free Amazon Echo (with Alexa software) from his ISP.
\n
The Echo didn’t prove to be very useful as a means of listening to BBC radio, and the sign-up was intrusive.
\n
The Google Home devices are preferable; they give easier access to BBC Radio as well as services like Spotify.
\n
Dave is avoiding all such devices!
\n
\n
\n
\n
Old computing equipment:\n
\n
Dave has an old 132-column Anadex matrix printer with a Centronics interface in his attic - found recently when clearing it out.
\n
MrX remembered removable Diablo disks.
\n
Dave reminisced about writing software in Coral66 on a CTL Modular 1 computer in the 1970s, which also had removable disks.
\n
\n
\n
\n
Being back at work again:\n
\n
MrX is now in the office twice a week
\n
The Scotland mask mandate has ended but many people are still wearing them
\n
People are catching SARS-CoV-2 at work, and particularly from children who are back at school, but vaccination means the effects tend to be milder.
\n
\n
\n
\n
Hayfever (seasonal allergies):\n
\n
MrX is taking a 30C remedy (a remedy labeled 30C has been serially diluted 1:100 thirty times, so is extremely dilute)
\n
Dave still suffers from hayfever and takes Cetirizine through spring and summer
\n\n',225,0,1,'CC-BY-SA','conversation,Scots language,swither,peely-wally',0,0,1),
(3595,'2022-05-13','I am sure I changed my password last...???',641,'Pilot episode. Change your password','
Pilot episode. Change your password. Leave me feedback but be gentle...or not
\n',405,74,0,'CC-BY-SA','password, cybersecurity,password1234',0,0,1),
(3599,'2022-05-19','Linux Inlaws S01E56: Slackware - A User\'s Perspective',2676,'A discussion with a long-time Slackware user about this oldest Linux distro still alive','
In this episode Martin and Chris managed to ensnare a member of the Linux User Group\nFrankfurt (FraLUG) to talk about his history with Slackware, currently the\noldest Linux distribution still maintained. If you ever fancied to know more\nabout this grandfather of a distribution and its ins and outs, this is your\nshow. Plus we get to know more about one of Chris\' well-kept secrets...
\n',384,111,1,'CC-BY-SA','Linux, Slackware, Linux from Scratch, sed, LILO, Peter Jackson',0,0,1),
(3602,'2022-05-24','Hacker Stories April 20 22',1561,'origin story and trouble in school','
I guess I lost the document from Lanier Tech :( it was hilarious..
\n',36,0,1,'CC-BY-SA','Hacker Stories',0,0,1),
(3609,'2022-06-02','Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'s Faith',3238,'An in-depth discussion about Jails, Containers, religion and others sorts of confinement','
In this episode our two ageing heroes take a closer at operating system\n(OS) level virtualisation. The main different legacy virtualisation\ntechnologies like virtual machines (VMs) and this new-fangled approach is\nthat the OS kernel remains the same across virtualisation domains, thus giving\nthe hippsters and other followers of fashion a cheaper and potentially much\nfaster solution than virtualising the kernel and surrounding hawrdware and all\nthe rest of it. Plus more details on Martin\'s real faith. Don\'t miss out on\nthis episode if you\'re interested in any of these...
Install icons-in-terminal\nClone the nnn repo\nCompile nnn with make O_ICONS=1 from the root s
\n
To enable Nerdfont icons
\n
Download and install a patched Nerdfont.\nApply that font as your terminal emulator's font. This will vary from emulator to\nemulator, but usually involves editing a config file or changing a setting within a\nGUI menu system.\nClone the nnn repo\nCompile nnn with make O_NERD=1 from the root
\n
Note:
\n
Arch Linux users can check out the AUR packages nnn-icons and nnn-nerd.
\n
Set default applications via .config/mineapps.list
\n',36,74,1,'CC-BY-SA','passwords,password managers,Hardware Security',0,0,1),
(3630,'2022-07-01','Planning an RV Trip',1150,'Tools and suggestions for planning a long RV trip.','
This begins our series about our RV trip by looking at the planning process. We give a suggestion for a nice online course that is not too expensive, and offer some tips on using Google Maps in planning your trip.
\n',198,119,0,'CC-BY-SA','Travel, trip planning, Google Maps',0,0,1),
(3640,'2022-07-15','Expert DIR use',878,'We continue with DOS. This time it is mastering the DIR commands','
DIR can just be simple list of files and sub-directories, but you can so much more. We can use the information about Wildcards and Attributes to make DIR a kind of search function.
\n',198,117,0,'CC-BY-SA','DOS, early PC computing, directory listing',0,0,1),
(3650,'2022-07-29','Major Destinations',910,'Building a plan around major destinations, and using memberships to get discounted stays.','
We continue our look at the planning process by looking at how to build a plan around major destinations, and add memberships that give discounted stays like Escapees and Passport America.
\n',198,119,0,'CC-BY-SA','Travel, trip planning, Google Maps, Escapees, Passport America',0,0,1),
(3660,'2022-08-12','BASIC',485,'We continue our technological archeology to explore the old warhorse, DOS. This time it is BASIC.','
BASIC came bundled as a free programming language when you bought DOS, but it is also the language used for two key components, EDIT and HELP. You need BASIC, therefore, to run either of these key applications, such as on your Emergency Boot Disk.
\n',198,117,0,'CC-BY-SA','DOS, early PC computing, BASIC',0,0,1),
(3670,'2022-08-26','Changing Plans',988,'We look at some potential Covid-19 issues and consider alternatives','
We continue our look at the planning process as we discard one plan due to Covid-19 and turn to a different plan. And we introduce an RV-specific planning tool called RV Trip Wizard.
\n',198,119,0,'CC-BY-SA','Travel, Google Maps, RV Trip Wizard ',0,0,1),
(3680,'2022-09-09','EDIT',739,'More on DOS. This time it is EDIT','
EDIT is a key built-in applet that you can use to edit your AUTOEXEC.BAT and CONFIG.SYS files, which makes it a key addition to your Emergency Boot Disk.
\n',198,119,0,'CC-BY-SA','Travel, trip planning, full trip',0,0,1),
(3700,'2022-10-07','Introduction to Batch Files',882,'More on DOS. This time it is Introduction to Batch Files','
Batch files are an important topic to mastering DOS, and in this episode we begin exploring them. Batch files in DOS are similar to BASH scripts in Unix/Linux in that they let you run multiple commands from one file.
\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Batch Files',0,0,1),
(3710,'2022-10-21','Changing Plans Again',1262,'One more trip change, then on the road','
Once again we had to change plans due to some health issues that were not serious but had to be dealt with. But we finally got on the road and started traveling.
\n',198,119,0,'CC-BY-SA','Travel, trip planning',0,0,1),
(3720,'2022-11-04','Practicing Batch Files With ECHO',731,'More on DOS. This time it is using the ECHO command with batch files.','
This continues our look at batch files by demonstrating the use of the ECHO command. This command can be used to display things on the screen, or hide them, as you wish.
\n',198,117,0,'CC-BY-SA','DOS, early PC computing, batch files, ECHO',0,0,1),
(3730,'2022-11-18','Into Arizona',858,'Hitting our first major stop in Arizona.','
We get to our first major stop for a week in Topock, Arizona. From here we can check out places like Oatman, Arizona and Lake Havasu, Arizona. We make a few more mistakes, but learn from them.
\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona',0,0,1),
(3740,'2022-12-02','Batch File Variables; Nested Batch Files',730,'More on DOS. This time it is using variables in batch files, and nesting batch files.','
This final episode of the DOS series continues the look at batch files by first looking at how you can use variables in writing your batch files. Then we look at how batch files can be nested, that is, how one batch file can call another batch file, thus chaining batch files together.
\n',198,117,0,'CC-BY-SA','DOS, early PC computing, batch files, variables, nesting',0,0,1),
(3750,'2022-12-16','Southern Arizona',1022,'We move into Southern Arizona, near the Mexican border.','
We wrap up our stay in Topock, Arizona and move down to Ajo, Arizona, not far from the Mexican border. Kevin gets a head cold and takes it easy for a few days, but we still manage to get out and see some things. At the end we repair our steps and head off to the Tucson area.
\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona',0,0,1),
(3596,'2022-05-16','Extracting text, tables and images from docx files using Python',517,'In this episode, I describe how I used 2 python libraries to extract import data from docx files','
text = docx2txt.process(src, img_dest)\nwith open("data.txt", "wt") as f:\n f.write(text)\n
\n
document = docx.Document(src)\ntables = document.tables\ndata = []\nfor table in tables:\n table_data = []\n for row in table.rows:\n row_data = []\n for cell in row.cells:\n row_data.append(cell.text)\n table_data.append(row_data)\n data.append(table_table)\n\nfor i, table in enumerate(tables):\n with open(f"{i}.csv", "wt") as f:\n writer = csv.writer(f)\n writer.writerows(table)\n
\n',300,38,0,'CC-BY-SA','python,docx',0,0,1),
(3597,'2022-05-17','Good Idea Fairy Hunting',570,'Tracing my security woes to the source using \"Good Idea Fairy Hunting\"','
This is the beginning of a series where I am going to discuss how to handle and tackle security as a people problem. We often lose sight of the trees for the forest and vice versa. Let\'s get out from behind our desks and go meet the people that need our help, even if they don\'t know it yet.
\n',405,74,1,'CC-BY-SA','adminadmin,Lurking Prion,2022,cybersecurity,infosec',0,0,1),
(3598,'2022-05-18','Slackware 15 - 32 bit Operating System from day one.',3756,'The PRO\'s of using a Slackware 32 bit operating system','
\n',377,0,1,'CC-BY-SA','32bitOS, Security,Simplicity,Freedom,usercontrol',0,0,1),
(3601,'2022-05-23','Re: The Worst Car I Ever Had',356,'In the 1980\'s, out of ignorance, I bought a real dud of a car','\n
Introduction
\n
This episode was prompted by show 3542 from Beeza entitled The Worst Car I Ever Had. Here’s my story.
\n
I moved to Edinburgh in 1981, and before long bought myself a car - the first one I had owned. Before that I’d owned a series of Lambretta motor scooters and small to medium powered motorbikes. I’d been using a bicycle a lot after that.
\n
The car I bought was an oldish Peugeot 104, small, not very powerful, but it did the job. It was fine for driving around town and I used it to go and visit my parents in Norwich, England a few times, a long journey. I once drove north, up to Ullapool, a shorter drive, but it wasn’t the car for long journeys. Mostly it was used around town.
\n
As the Peugeot started to give me trouble I looked around for a replacement. I was visiting my parents and went to a car dealer in Norwich and was shown an Austin Maestro. It was newer than the Peugeot and seemed to be in good condition, so I bought it, trading in the Peugeot as I did so.
\n
The Maestro range was seen as reasonably good as far as I knew, but this one suffered from some design flaws, in my opinion.
\n
The car I bought was only a few years old and had a fairly low mileage. It was the HLE model with a 1.3 litre petrol engine. It had 4 doors and a hatch at the back giving access to a reasonable amount of luggage space (often such hatchbacks are called 5-door cars in the UK). All Maestro models had front-wheel drive, and this one had a manual gearbox. Automatic British cars were not common at that time.
\n
The Maestro had a bunch of economy features:
\n
\n
a 4-speed gearbox with some economy gear ratios
\n
an econometer on the dashboard with green and red LEDs indicating how economically the car was being driven
\n
\n
The Issues
\n
The Maestro seemed to have been designed to be driven as empty as possible. As soon as there were any passengers, or luggage, or both, the car was a nightmare to drive.
\n
There were models in the range that performed well, I think. Being passed by them on motorways and when trying to drive up any kind of hill showed this to be true. I’ve read that the standard 1.3 model was pretty good without the economy features, but I never experienced one.
\n
The problem was that the gap in gear ratios between the second and third gear was enormous, as if you’d accidentally skipped a gear. The fourth economy gear could only be resorted to on flat roads – or going downhill – or with a tail wind – or with the car completely empty.
\n
I was happy to find a link describing these problems when doing research for this show. The description of the car made me laugh, but also brought back memories of the extreme frustration I experienced with this car!
\n
So, I conclude that this particular Maestro was a failure. It might be the reason I got it at a good price; the previous owner was probably keen to get rid of it. Also the car dealer knew a sucker when he saw one, and I was that fool!
\n
I kept the car for a few years, did very few long journeys in it and eventually replaced it with a Vauxhall Astra Mark III, which was in a totally different league!
\n\n',225,0,1,'CC-BY-SA','Cars, automobiles, Austin Maestro',0,0,1),
(3603,'2022-05-25','Who the heck is Evil Steve? Part 1',852,'Security as a people problem: Who is actually attacking us? Meet Evil Steve.\r','
admin admin with Lurking Prion
\r\n
Episode 3: Who the heck is Evil Steve?
\r\n
Picking up from Episode 2: Good Idea Fairy Hunting we continue exploring the concept of security as a people problem. \r\nThis week we stop to take a moment to focus on the Who rather than the What is attacking us. In CyberSecurity, we tend to get caught up in things that happen to us, that we forget that it is actually a person attacking us. Learning more about who wants the information we have will tell us the ways they go about stealing it. This gives us information to better protect our assets and begin active threat hunting. The show is about 15 minutes long.
\r\n
Links to information about Threat Actors listed below:
\r\n',405,74,1,'CC-BY-SA','adminadmin,cyber security,security,threats,threat actors,Evil Steve',0,0,1),
(3612,'2022-06-07','Who is Evil Steve? Part 2',959,'We take a closer look at the types of Evil Steve\'s attacking us','
admin admin with Lurking Prion
\n
Episode 4: Who is Evil Steve? Part 2
\n
Picking up from Episode 3: Picking up from the last episode, we delve a bit more into the types of threat actors (people) that are attacking us. We explore the run of the mill data theft hacker to the more professional Advanced Persistent Threats (APTs). The show is about 16 minutes long.
\n
Links to information about Threat Actors listed below:
\n',405,74,1,'CC-BY-SA','adminadmin,cybersecurity,security,threats,threat actors,Evil Steve',0,0,1),
(3617,'2022-06-14','admin admin S01E05: To Do List - 2FA',874,'Making ourselves a less attractive target by implementing 2FA.','
Picking up from the last episode, we are now delving in to the security measures we can implement to make ourselves less attractive for Evil Steve. Two Factor Authentication (2FA) is at the top of the list.
\n',405,74,1,'CC-BY-SA','adminadmin,Lurking Prion,cybersecurity,security,threats,2FA,Evil Steve, two factor',0,0,1),
(3619,'2022-06-16','Linux Inlaws S01E58: Kubernetes and Friends and Sarah',4090,'The fun continues with a discussion of container orchestration frameworks, death (of containers) and','In this continuation of S01E57 our two chaps discuss how you can take containers from\nsingle instances to production-ready, scalable deployments handling large app stacks\nand that new-fangled hipster concept called micro-services. Using the once Google-owned project called Borg which later evolved into something now known as Kubernetes (k8s) as an example,\nMartin and Chris discuss typical challenges when using containers as the main infrastructure\nto modern workloads. Including such gory topics such as what happens if a container dies and\ndoesn\'t go to heaven, contradictions in terms such as ephemeral storage and why many k8s developers\nhave defected to VMware.\n
\n',384,111,1,'CC-BY-SA','Kubernetes, Mesos, cri-o, YAML, OpenShift, hpr3577',0,0,1),
(3626,'2022-06-27','The stuff Evil Steve doesn\'t want you to know S01E06: Use a Password Manager',1100,'Making ourselves a less attractive target by utilizing a password manager.','
The stuff Evil Steve doesn\'t want you to know with Lurking Prion. This is Season 1, Episode 6. Picking up from the last episode, we are now delving in to the security measures we can implement to make ourselves a less attractive for Evil Steve. After implementing 2FA, we should now be setting up and using a password manager. Then we look for and changed passwords involved in known breaches (haveibeenpwned - link in show notes). The show is approximately 19 minutes long.
\n',405,74,1,'CC-BY-SA','cybersecurity, security, 2FA, EvilSteve, password manager ,password, breach',0,0,1),
(3604,'2022-05-26','Everything You Always Wanted to Know About PEX Part 01- Let\'s Talk About PEX - Introduction ',782,'Introduction to PEX','
Everything You Always Wanted to Know About PEX
\n
Part 01- Let\'s Talk About PEX - Introduction
\n
Why? My story
\n\n
Why am I posting about plumbing on HPR? \"Of interest to hackers\"\n\n
I find it interesting
\n
We like to learn new things
\n
We like to understand\n\n
How things work
\n
How things break
\n
How to use non-standard approached to solve problems
\n
\n
Others can learn from my experience, troubleshooting process, etc...
\n
I had fun creating the episode titles.
\n
\n
Pinhole leaks in copper pipe\n\n
Causes – Note plumbing is around 40 years old and original to house
\n
Poor quality copper Shoddy installation
\n
Failure to de-bur pipe before soldering
\n
Not properly hung from joists\n\n
Pipe on pipe
\n
Pipe on steel wire
\n
\n
Bad soldering technique\n\n
Lumpy solder
\n
Flux residue
\n
Excessive flux
\n
\n
Hard water\n\n
Only some neighbors experiencing the same issue, and their houses were constructed by the same builder.
\n
\n
Learn more about copper pipe corrosion\n\n
How to Stop Copper Pipe Corrosion - This Old House YouTube Channel
Cut out damaged section and replace using SharkBite fittings
\n
Expensive
\n
Cut out damaged section and solder in new section of pipe
\n
Expensive
\n
Time consuming
\n
Many areas of corrosion visible
\n
Whack-a-mole - Where & when will next leak occur?
\n
\n
New copper\n\n
Expensive
\n
Difficult
\n
Time consuming
\n
\n
PVC\n\n
Still difficult – rigidity
\n
\n
PEX\n\n
Comparatively inexpensive
\n
Flexible and easy to install
\n
Can use existing copper pipe as support structure
\n
Can completely redesign with a manifold
\n
\n
\n\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3614,'2022-06-09','Everything You Always Wanted to Know About PEX Part 02- The Joy of PEX - What is it and how is it us',838,'Information about PEX and how it is used','
Everything You Always Wanted to Know About PEX
\n
Part 02- The Joy of PEX - What is it and how is it used?
Higher availability of a wider range of connectors at typical home improvement stores in the United States
\n
\n
Disadvantages\n\n
If PEX-B is kinked, that portion is no longer safe to use and it must be replaced.
\n
Can be more difficult to connect in tight places
\n
This can be remedied with the use of SharkBite press on fittings.
\n
Less resistant to damage from freezing.
\n
\n
\n
Connections are also easily removed
\n
Disadvantages
\n
Easily damaged by ultraviolet light from sunlight or even LED & fluorescent lights (Check manufacturer specifications. Most rated for only 30-60 days of sun exposure)\n\n
\n\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3624,'2022-06-23','Everything You Always Wanted to Know About PEX Parts 3 & 4',816,'Discusses plumbing code and installation','
Everything You Always Wanted to Know About PEX
\n
Part 03 – PEX and the City (Ordinances) - How to make certain your installation meets code
\n
This will be a short episode, but a very important one.
\n
Since we have people from around the world who listen to Hacker Public Radio, I cannot begin to speculate what your local building codes allow or prohibit. In the majority of states within the United States of America, a property owner can perform plumbing maintenance on their own residence. Otherwise you need to be a licensed plumber. That may not be true for all states, and there can be inspections required and sometimes even fines for code violations.
\n
Rules also vary for where PEX can be installed, how and how frequently it must be supported, and whether the work must be inspected or whether it requires a permit.
\n
The point of this section is to remind you to do your research to find out what the rules are in your specific region, and then be sure to follow them. When in doubt, consult a licensed plumber in your area.
\n
Part 04 – PEX, Lies, and Silicone Tape – My installation experience part 1
\n
If you have missed the previous episodes in this series, I encourage you to review them before continuing because they will provide valuable context around my plumbing adventures.
\n\n
Design – The best place to start.\n\n
Option 1 – Follow existing pipe
\n
Option 2 – Install manifold valve system for greater control
\n
Replacing everything or connecting to existing pipe or fixtures?
\n
\n
Materials\n\n
PEX-A –vs- PEX-B
\n
Decisions, decisions.
\n
PEX-B Wins
\n
Manifold
\n
Allows specific sections to be turned on and off independently
With proper planning you can reduce service outage
\n
Some steps can be done before shutting off water
\n
Access holes
\n
Running / connecting PEX sections
\n
\n
Assistance\n\n
While an individual installer can redo a house with PEX, it is not ideal. If you can get another person to help, it will make the process go much easier.
\n
\n\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3634,'2022-07-07','Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer',1667,'My PEX installation experience part 2','
Everything You Always Wanted to Know About PEX
\n
Part 05– PEX and the Single Installer – My PEX installation experience part 2
\n
Pulling PEX
\n\n
Much like pulling thick wire\n\n
My method\n\n
Used fish tape to pull mason\'s line
\n
Tied mason\'s line to PEX about 4 inches from end.
\n
Taped above & below with electrical tape
\n
Then tied line again closer to the end of PEX.
\n
Wrapped again with electrical tape
\n
\n
Pull extra
\n
Unroll and let it lay straight for 24 hours if \"curve memory\" is a problem
\n
Can be challenging and require an individual installer to go back and forth between the feed point and the pull point.
\n
\n
Supporting PEX\n\n
1\" and smaller PEX must be supported horizontally every 32 inches
\n
Vertically, it must be supported at every floor and midway between floors (every 4-6 feet)
To wood for spanning wall studs (I don\'t know why I kept saying \"Joist\" during the recording)
\n
Do not anchor to drywall
\n
\n
Insulate from wall if needed
\n
\n
Connecting to the main line\n\n
What to replace and what to use
\n
Size matters
\n
Plan to include manifold if needed
\n
\n
Connecting to water heater\n\n
Where/how to connect
\n
Pipe Unions?
\n
Protect from heat
\n
Shut-off valve
\n
Expansion tank
\n
Silicon tape or pipe dope
\n
\n
Connecting to endpoints\n\n
What to keep and what to replace
\n
Transition connectors
\n
SharkBite
\n
Solder
\n
Thread
\n
Glue
\n
\n
Exterior hose taps\n\n
Reuse or replace?
\n
Frost free / anti-siphon
\n
Anchor securely
\n
Help is better!
\n
\n
Turning it on!\n\n
If using a manifold turn on one section at a time, from the bottom up
\n
Open sink valves
\n
Ease it on a little at a time
\n
Then increase flow
\n
Turn off sink tap (Slowly) to let pressure build
\n
Keep watching for leaks
\n
Coordinate with a partner and communicate (cell phone?)
\n
\n
Afterwards\n\n
Cover any PEX exposed to light
\n
Watch for leaks
\n
Repair holes
\n
Run water daily to flush out bad taste
\n
Inspection?
\n
\n\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3760,'2022-12-30','Bookwyrm',825,'This episode looks at a relatively new but promising alternative to Goodreads that is firmly in the ','
Federated social media can open up some wonderful possibilities to reimagine some of the social apps we already use and find ways to do them better. In this episode I want to highlight a new contender for a Fediverse application that may be able to replace Goodreads. Is it up to the task? We\'ll look at the pluses and minuses in this episode.
\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Goodreads, library, Bookwyrm',0,0,1),
(3770,'2023-01-13','Tucson',908,'We move to Benson, a town just southeast of Tucson, where we will stay for a month.','
We wrap up our stay in Ajo, Arizona and move over to Benson, Arizona, not far from Tucson. Here we will stay for a month. And we don\'t run out of things to do. This was one of our favorite stops of the trip.
\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona',0,0,1),
(3790,'2023-02-10','Tucson, Part 2',778,'We continue our month-long stay in Benson, a town just southeast of Tucson.','
We wrap up our stay in Tucson, Arizona and move over to Benson, Arizona, not far from Tucson. Here we will stay for a month. And we don\'t run out of things to do. This was one of our favorite stops of the trip. In this episode we visit an old west movie set, Saguaro National Park, and tour a copper mine.
\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona, Tucson',0,0,1),
(3629,'2022-06-30','Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion',4365,'An interview with Eric Rescorla (Firefox CTO) on Browsers, the Internet and hard-core sci-fi','
\r\nIn this episode, Martin and Chris interview Eric Rescorla, the CTO of Firefox at Mozilla. After\r\ndiscussing the weather situation in the Kingdom formerly known as the UK, our two aging heros\r\ngo right into browsers, programming languages, the Mozilla ecosystem and internet history and future\r\nalike. This episode again is not for the faint-hearted as none of the gory details are spared: We learn about Chris\' t-shirt situation (and how you can kidnap apparel), why Google is so sucessful, data privacy and Internet monetization. Never mind rendering engines. Plus: more Rust marketing (Rebecca Rumbul: Take note :-). \r\n
\r\n',384,111,1,'CC-BY-SA','Firefox, rendering engines, Mozilla (Foundation and Corporation), Peter Watt, Rust',0,0,1),
(3636,'2022-07-11','The Importance of Data Reduction',2349,'I have a discussion about data reduction with special guest and author, R. Brady Frost','
The stuff Evil Steve doesn\'t want you to know with Lurking Prion. This is Season 1, Episode 7.
\n
In this episode, I have a discussion about data reduction with special guest and author, R. Brady Frost. The discussion revolves around the security risk of keeping too much data available, and things that can be done to mitigate those risks.
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,breach,data reduction,privacy',0,0,1),
(3639,'2022-07-14','Linux Inlaws S01E60: The Job Interview',3262,'An interview with Kris Jenkins from Confluent','
\r\n\r\nIn this episode, the Linux Inlaws interview a potential new recruit :-) call Kris Jenkins, from Kafka, an Apache project implementing a scalable distributed event streaming platform (don\'t know what that is? Listen to the show! :-) . A cautious warning: This episode contains strong philosophical / political views, language and insights which may change your views on messaging systems in general and Kafka in particular. Two hints: Chris shares his view on what a database *really* is and Kris Jenkins tries hard to convince our two aging heroes that he\'s the man for the job (teaser: he decided to stay at his current position as a dev advocate at Confluent after all). Plus: More on love, death and robots. Interested in the details? Then don\'t miss this show! \r\n
\r\n',384,111,1,'CC-BY-SA','Kafka, Confluent, distributed event platforms, databases, Redis, Love, Death, Robots, Zookeeper',0,0,1),
(3780,'2023-01-27','Fediverse Update May 2022',824,'This episode reports on some updates to the Fediverse that I ran across in May 2022','
One of the things I love about the Fediverse is that there is constant activity and development. As I mentioned in the previous report on Bookwyrm, it is not unusual to return to an app a few months later and see new features have been added that make it better. In this report I want to highlight three news stories that I think may be of interest.
\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Mastodon, Screen readers, WordPress',0,0,1),
(3608,'2022-06-01','Battling with English - part 5',927,'Confused homophones; misunderstanding words from other countries; Eggcorns','\n
Overview
\n
This time I have three main subjects to discuss, all of them dealing with misunderstandings of words:
\n
\n
Mistakes made with homophones, one group of examples\n
\n
The definition gets a little technical, see the Wikipedia description.
\n
\n
Misunderstandings of words from other languages\n
\n
Pundit
\n
\n
Looking at Eggcorns (a name chosen from a misspelling of acorn)\n
\n
Wikipedia: an alteration of a phrase through the mishearing or reinterpretation of one or more of its elements
Used hw:CARD=CODEC,DEV=0 derived from \'arecord -L\'
\n
hw:CARD=CODEC,DEV=0 USB Audio CODEC, USB Audio Direct hardware device without any conversions
\n
arecord manpage
\n
...\n\n-f --format=FORMAT\n\n Sample format\n Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE\n FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE\n S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE\n\n Some of these may not be available on selected hardware\n The available format shortcuts are:\n\n -f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100]\n -f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -f44100]\n -f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r48000]\n\n If no format is given U8 is used.\n\n-d, --duration=#\n Interrupt after # seconds. A value of zero means infinity. The default is zero, so if this option is omitted then the arecord process will run until it is killed.\n\n-t, --file-type TYPE\n File type (voc, wav, raw or au). If this parameter is omitted the WAVE format is used.\n\n...\n\n
'-s': silence mode; activate silence detection\n'-p': specify arguments for the silence mode\n'th=-40': threshold level (dB) to be considered silence\n'min=6': minimum number of seconds to be considered as splitpoint\n'rm': remove silence from splitted files
\n',318,0,0,'CC-BY-SA','audio, capture, vinyl, audacity, mp3splt, arecord, ffmpeg, wav, flac',0,0,1),
(3606,'2022-05-30','Infinity is just a big number and other proofs',561,'Ken proves Mathematically that programming is not easier with maths.','
Response to hpr3568
\n
Title PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy\n Artist BlacKernel\n Album Hacker Public Radio\n Comment https://hackerpublicradio.org Clean; in This episOde, blackeRnel Tries to help yoU undeRstand Enough about math and programming The license is CC-BY-SA\n Date 2022\n Track Number 3568\n Genre Podcast\n
\n
https://en.wikipedia.org/wiki/Mathematical_joke \nMathematicians are also shown as averse to making hasty generalizations from a small amount of data, even if some form of generalization seems plausible:
\n
An astronomer, a physicist and a mathematician are on a train in Scotland.\nThe astronomer looks out of the window, sees a black sheep standing in\na field, and remarks, "How odd. All the sheep in Scotland are black!" "No,\nno, no!" says the physicist. "Only some Scottish sheep are black." The\nmathematician rolls his eyes at his companions' muddled thinking and says,\n"In Scotland, there is at least one sheep, at least one side of which\nappears to be black from here some of the time."[Stewart, Ian (1995).\nConcepts of Modern Mathematics. ISBN 9780486134956.]\n
A mathematical proof is an inferential argument for a mathematical\nstatement, showing that the stated assumptions logically guarantee the\nconclusion.\n
BlacKernel @BlacKernel@nixnet.social Mar 21, 2022, 19:01.\n Saying you don't need to know math to do programming is like saying\n you don't need to know how to read in order to write. Technically\n true, but it makes it way easier.\n
\n
\n
Simplifying the statement
\n
Knowing math makes programming way easier.\n
\n
Rearrange and problem
\n
There are no humans that ever existed or will ever exist that will not\nfind programming easier having a knowledge of maths.\n
\n
I exist. I do not find programming easier despite my knowledge of maths.
\n
Q.E.D.
\n
other points
\n
\"Ability to think logically - which is what math is.\"
\n
This assumes that math is the only field where the ability to think logically exists. Math is a subset of logical thinking and not the other way around. I can think of hundreds of occupations that require logical thinking that do not require any maths. It would be difficult to argue this point as it could be argued, as most people are exposed to counting no matter what level of literacy they may have access to. So let us refer to studies with crows that shows that they do think logically - despite any math knowledge.
\"Is an example where you can read or write in a specific language but not necessarily doing both.\"
\n
Chinese written language can be understood by multiple spoken languages. However the nuance is greater if the writer and reader shared the same language/understanding.
\n
"Because math and computer are the same thing under the hood if you\nunderstand it then you understand the programming a lot better. But if you\nuse some other analogy .. you'll write programs that are perfectly fine\nand perfectly work, but it won't be as exact or as nuanced as it could be\nif you also knew math. That's what I was saying."\n
\n
\n
Computer CPU has a bunch of instruction sets in it. Tells the computer what transistor operation to perform
\n
Logical extension of the instruction set
\n
There is nothing in programming that is not covered by the instruction set.
\n
Same way in math depends on axioms
\n
\"They are the same thing, .. the exact same process\"
\n
\"Because they are the same thing under the hood, if you understand how to do math, then you\'ll understand how to make your programs better, because you can write your programs in a way that reflect the underlying structure of the computer which will make your programs run more efficiently as giving you insight into how errors may be occurring etc etc etc.\"
\n
\n
That may have been valid in the pioneering days of computers if we just have one chip with one instruction set. Nowadays programs run on systems that run in Java Virtual Machines, which run on docker containers, running on Virtual Machines, spread across multiple clusters, finally hitting different processors each with their own different instruction sets, then down to different cores.
\n
Turtles all the way down.
\n
No they are not. Math axioms do not change from chip manufacturer to chip manufacturer.
"You take Logical Deductions from those axioms, that's what math is.\n Math is a series of logical deductions or proofs utilizing previous\n proofs or axioms. That's all math is. Can be in different forms."\n
Flawed assumes infinity exists. I reject this as the proof is take a big number +1 keep adding to it. What you actually get is a even bigger integer and not infinity.
Infinity is our inability to think big, and math reflecting that shows a flaw in maths.
\n\n',30,0,0,'CC-BY-SA','math,programming,infinity',0,0,1),
(3621,'2022-06-20','Watching YouTube in 2022',1236,'A few of the channels that distracted me through COVID-19 and beyond','\n
Another YouTube list? Yes ;-)
\n
I found myself watching YouTube a lot during the worst of the pandemic, and as I saw the world falling apart in many ways. YouTube has been something of a lifeline in the past years, helping me find stuff I actually want to watch, which (mostly) doesn’t have all the fake crap that’s on TV. I must say though, that I loathe and detest the apparent trend towards #shorts - I really don’t see the point of them!
\n
The channels I chose at this time were to help me understand something of what was going on in the pandemic and in world politics, and a few gave me some distractions from it all.
\n
This is a fairly short list that I’m sharing; I could list quite a few more, but I thought some of these recommendations might be of interest to the HPR audience.
\n
Channels
\n\n
Just Have a Think
\n
\n
Dave Borlace, the host, talks about climate and sustainable energy.
\n
The episodes are well researched and explained clearly, and I find they can often give out some hope that we can lessen the effects of the climate change that is certainly coming.
\n
Recent episodes have covered: the IPCCSurvival Guide, plastic eating enzymes and CO2 removal from the oceans.
Matt Ferrell, the host, looks at how smart and sustainable technology impacts our lives.
\n
Another clear-sighted and well researched look at technology, particularly in the current world context. There’s also a podcast Still To Be Determined where Matt and his brother Sean have a conversation following on from the shows on YouTube.
\n
Recent episodes have covered:
\n
\n
An improved method of generating green hydrogen
\n
Using machine learning to boost renewable energy generation and reduce costs of wind farms
\n
Plastic recycling is not as we’ve been led to believe.
A channel devoted to education and analysis of current events from a Socialist perspective.
\n
My Socialist, anti-Capitalist sympathies fit well with the contents of this channel, and I’m learning from it. It’s very well done, and has obviously taken some effort to produce.
\n
Some recent episode titles:
\n
\n
What if we just stopped working?
\n
How Consulting firms secretly run entire countries
Channel description: Democracy at Work is a non-profit 501(c)3 that produces media and live events. Our work analyzes capitalism critically as a systemic problem and advocates for democratizing workplaces as part of a systemic solution. We seek a stronger, fuller democracy – in our politics and culture as well as in our economy - based on workers’ equal collaboration and shared leadership inside enterprises and throughout society.
\n
The insights shared by Prof. Richard D. Wolff in particular help me to understand a lot of what is going wrong in many countries in the world, though he concentrates on the USA. You will hear him speaking at events, on the radio in the USA and on other YouTube channels and podcasts. There are other presenters on the channel, particularly: Dr. Harriet Fraad (Capitalism Hits Home) and Prof. David Harvey (Anti-Capitalist Chronicles)
The quality of the workmanship is wonderful, as can be seen when he turns what look like ruined pieces of furniture into beautiful items. Some restorations are for clients, some for himself.
\n
Recent episodes have covered:
\n
\n
Restoration of an Art Noveau chair
\n
A mirror seat with water damage - the client doesn’t want it to look new though
From the channel description: I started this channel to share my ideas, creations, adventures and to show people how easy it is to live off the grid & save money.
\n
Marty, the host and his family live in the north of the south island of New Zealand (Marlborough Sounds1). Marty shows how he recovers old abandoned machines like tractors and excavators and puts them to use on his land. They are off-grid and their electricity comes from a turbine he built from an adapted scrap washing machine. I find it fascinating to watch the resourcefulness of the people in this part of the world.
\n
Some highlights in the past year:
\n
\n
Salvaging an Abandoned TD9 Bulldozer from the Forest. Will it start??
\n
Salvaging an Abandoned Vintage Tractor - David Brown 25
Lots of stuff of a technical nature, often involving the Raspberry Pi, but not exclusively.
\n
Lots of great projects and ideas to learn from. For example, he has championed the Turing Pi a board which can take multiple Raspberry Pi Compute Modules to form a Pi cluster.
From the description: Ocean Conservation Namibia is dedicated to the protection of Namibia’s marine wildlife. OCN was started by Naude and Katja Dreyer in January 2020 to create global awareness of ocean and plastic pollution and its horrible and avoidable impact on animals and specifically seals.
\n
The team manage to produce a brief daily video where they rescue seals which are entangled in plastic and other items. The seals find these things, such as spools or bundles of fishing line, and tend to play with them, and eventually the loop or spool gets stuck around their neck, which can cut them badly and eventually kill them.
In the audio I said Marlborough Sounds was in the North West of the South Island of NZ, but in fact it’s in the North East. See the Wikipedia article for more information.↩︎
\n\n\n\n',225,106,1,'CC-BY-SA','YouTube,channel',0,0,1),
(3607,'2022-05-31','The Best Eggs in the World',799,'Emergency Show: The Best Eggs in the World','
This is an Emergency show
\r\n
\r\nThis show is from the emergency show pool. \r\nYou are hearing this because there was a free slot that was not filled. \r\nHacker Public Radio is a community effort, that will only continue if people like you submit shows. \r\nIf you have not submitted a show this year, then please record an introduction about yourself, and how you got into tech. \r\nThen post it to, Hacker Public Radio dot org forward slash, upload.\r\n
\r\n
The Best Eggs in the World
\r\n
\r\nToday\'s show is brought to you by pokey\r\n
\r\n
\r\n
1/6 large onion
\r\n
3-5 medium mushrooms
\r\n
2 eggs
\r\n
1-2 slices of cheese
\r\n
2 pieces of toast
\r\n
Garlic Powder, Salt, Pepper, butter to taste.
\r\n
\r\n\r\n
\r\nIf you have comments, please leave them in the comments section for the show here at https://hackerpublicradio.org\r\nIf you had submitted a real episode of HPR, you wouldn\'t have found this in your feed today. :-P\r\n
\r\n',128,93,0,'CC-BY-SA','Emergency Show,Eggs,Cooking',0,0,1),
(3613,'2022-06-08','Man buys cheap Adirondack chair',453,'An anecdote about buying a cheap lawn chair and trying to get a part replaced.','
Part C (left front leg), one 30cm piece of unfinished fir, with a sort of fan-shaped piece attached with 2 screws, is duly replaced. The customer has been served. The prize is a wobbly chair and, in a few months time, some firewood. What we learned? I\'ll build my own chair next time.
\n',399,0,0,'CC-BY-SA','\"late capitalism\"',0,0,1),
(3891,'2023-07-03','HPR Community News for June 2023',6145,'HPR Volunteers talk about shows released and comments posted in June 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 6 comments in total.
Comment 1:\nKevin O'Brien on 2023-06-24:\n\"PIN Story\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Relocation of the HPR site
\n
A lot of work has gone into relocating HPR to a new server as well as\nmigrating to a static site. There is still work to do.
\n
\n
The main database has been moved from\nanhonesthost.com
\n
The static site generator written by Rho`n is being\nused to generate the entire new website (with a few exceptions).
\n
The remaining dynamic features (e.g. show submission and comment\nentry) are provided by a PHP interface
\n
There are outstanding issues with email on the server so at the\nmoment show submission needs manual intervention from the Janitors.
\n
The hpr mailing list is not working at present
\n
The way in which new shows are processed has had to be changed and\nshows containing pictures are not yet being rendered properly
\n
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3615,'2022-06-10','I am a troll and I\'m trolling HPR, trolling HPR, trolling HPR.',1608,'We got trolled and what we\'re going to do about it.','
In today\'s show Dave and I will read out the mail list thread we didn\'t cover in the Community News.
\n
Before we get to that, I wanted to inform you that we now know that the host in question was deliberately trolling HPR.
\n
I know this because they told me, and when I asked them to stop they went on to explain that they are a gadfly. I had to look that one up.
\n
Whatever they claim to be, the end effect for us is trolling.
\n
Both Josh and Myself have had some unnecessary stressful weeks for someone\'s idea of a joke.
\n
That said there have been some positives about this as well.
\n
Again we see the HPR community at its best in providing support and reasoned arguments.
\n
We have identified a possible loop hole in governance, that has been addressed by having a special advisory committee aka the auditor team of volunteers.
\n
And when we come up with a way of dealing with troll issues, we also get a mechanism to deal with DMCA take down requests, and other complaints.
\n
So what do we do with a troll ? Easy, just ignore them, or to put it another way \"Stay Calm and Go On\".
\n
This works well for comments but its not enough when the tactic is deliberate targeting of HPR.
\n
A lot of effort has gone into this attack:
\n
\n
First they built trust by posting technical shows. This is a similar tactic that we see spammers use.
\n
Then they submitted a series of shows that would cause HPR legal issues.
\n
They then did not respond to questions, presumably in the hope that we would delete the shows ourselves.
\n
\n
By moving the shows out to later in the queue we were able to avoid claims of \"censorship\", and they eventually removed the problem shows of their own accord.
\n
So what attack vector will be used next, and how will we deal with it ?
\n
I have no idea, but how to deal with it is also not so easy. We\'ll have to cross that bridge when we come to it.
\n
We do however need to tackle the risky situation of having problem content available on the website.
\n
So I suggest that we continue to post the shows as normal, if we get a complaint then the Janitors will contact the host as normal.
\n
Should they be unavailable, uncooperative, or disagree, then the Janitors can either move the show to the backup queue, or hide it depending on the severity of the complaint.
\n
In all cases we\'ll keep the special advisory committee aka the auditor team of volunteers in the loop to make sure all is above board.
\n
The community can then decide on the best course of action.
\n
So therefore I would like to propose the following changes to our policies.
Currently: \"We do not vet, edit, moderate or in any way censor any of the audio you submit, we trust you to do that.\"
\n
Proposed: \"We do not vet, edit, moderate or in any way censor any of the audio you submit, we trust you not to upload anything that will harm HPR.\"
\n
Add the line: \"Any material that is reported as harming HPR may be unlisted until such a time as the situation can be resolved.\"
\n',30,0,1,'CC-BY-SA','troll, policy change',0,0,1),
(3616,'2022-06-13','Filling free Slots from the Reserve Queue',899,'You can now submit shows to the Reserve Queue for when free slots are not filled on time.','
\nIn today\'s show the Janitors discuss how the erratic feast/famine nature of the queue may be helped by filling free slots in the main feed from a reserve queue.\n
\n
\nThe current Emergency Queue would be renamed to the Reserve Queue. \nIf a free slot in the calendar is not filled in time, then a show will be used from the Reserve Queue. \nShows will be taken from the Reserve Queue on a first in first out basis. \nHosts can either schedule a show for a particular slot or have their shows added to the Reserve Queue. \nEventually we will we work on a dedicated upload option, but for now hosts can pick a random slot and just make a note in the show notes that the show is intended for the Reserve Queue. \n
\n',225,0,1,'CC-BY-SA','HPR Scheduling, Queue, Reserve Queue',0,0,1),
(3622,'2022-06-21','My Network Setup.',1355,'How I\'ve Constructed My Home Network.','
Pi4 model B, 8Gig, Geekworm NASPi w/ SATA III 2.5\" 1TB
\n
\n
Server03, ArgonOne\n
\n
Pi4 model B, 8Gig, ArgonOne w/ m.2 Western Digital Blue 500Gig
\n
\n
Server04, DEVPi\n
\n
Pi4 model B, 4Gig
\n
\n
Server05, ZeroHero01\n
\n
Pi Zero 2 W w/ microSD 128Gig
\n
\n
\n
LAN.
\n
\n
VLAN: NUMBERS
\n
IP Block: 192.168.0.1/24
\n
Subnet Mask: 255.255.255.0
\n
Gateway: 192.168.0.1
\n
Broadcast: 192.168.0.255
\n
Group01: DEVICES\n
\n
192.168.0.02, Device02
\n
192.168.0.03, Device03
\n
192.168.0.04, Device04
\n
192.168.0.05
\n
192.168.0.06
\n
192.168.0.07
\n
192.168.0.08
\n
192.168.0.09
\n
\n
Group02: SGOTI\n
\n
192.168.0.10, Client01
\n
192.168.0.11
\n
\n
Group03: DHCP\n
\n
192.168.0.12
\n
192.168.0.13
\n
192.168.0.14
\n
192.168.0.15
\n
\n
\n
Resistance Network.
\n
\n
VLAN: NUMBERS
\n
IP Block: 192.168.2.1/27
\n
Subnet Mask: 255.255.255.224
\n
Gateway: 192.168.2.1
\n
Broadcast: 192.168.2.31
\n
Group01: SGOTI\n
\n
192.168.2.02
\n
192.168.2.03
\n
192.168.2.04
\n
192.168.2.05
\n
192.168.2.06
\n
\n
Group02: USER\n
\n
192.168.2.07
\n
192.168.2.08
\n
192.168.2.09
\n
192.168.2.10
\n
192.168.2.11
\n
\n
Group03: USER\n
\n
192.168.2.12
\n
192.168.2.13
\n
192.168.2.14
\n
192.168.2.15
\n
192.168.2.16
\n
\n
Group04: USER\n
\n
192.168.2.17
\n
192.168.2.18
\n
192.168.2.19
\n
192.168.2.20
\n
192.168.2.21
\n
\n
Group04: SERVERS\n
\n
192.168.2.22
\n
192.168.2.23
\n
192.168.2.24
\n
192.168.2.25
\n
192.168.2.26
\n
\n
Group05: DHCP\n
\n
192.168.2.27
\n
192.168.2.28
\n
192.168.2.29
\n
192.168.2.30
\n
\n
\n
T100 Network.
\n
\n
VLAN: NUMBERS
\n
IP Block: 192.168.3.1/27
\n
Subnet Mask: 255.255.255.224
\n
Gateway: 192.168.3.1
\n
Broadcast: 192.168.3.31
\n
Group01: SGOTI\n
\n
192.168.3.02
\n
192.168.3.03
\n
192.168.3.04
\n
192.168.3.05
\n
192.168.3.06
\n
\n
Group02: SERVERS\n
\n
192.168.3.07
\n
192.168.3.08
\n
192.168.3.09
\n
192.168.3.10
\n
192.168.3.11
\n
\n
Group03: DHCP\n
\n
192.168.3.12
\n
192.168.3.13
\n
192.168.3.14
\n
192.168.3.15
\n
192.168.3.16
\n
192.168.3.17
\n
192.168.3.18
\n
192.168.3.19
\n
192.168.3.20
\n
192.168.3.21
\n
192.168.3.22
\n
192.168.3.23
\n
192.168.3.24
\n
192.168.3.25
\n
192.168.3.26
\n
192.168.3.27
\n
192.168.3.28
\n
192.168.3.29
\n
192.168.3.30
\n
\n
\n
T1000 Network.
\n
\n
VLAN: NUMBERS
\n
IP Block: 192.168.4.1/27
\n
Subnet Mask: 255.255.255.224
\n
Gateway: 192.168.4.1
\n
Broadcast: 192.168.4.31
\n
Group01: SGOTI\n
\n
192.168.4.02
\n
192.168.4.03
\n
192.168.4.04
\n
192.168.4.05
\n
192.168.4.06
\n
\n
Group02: SERVERS\n
\n
192.168.4.07
\n
192.168.4.08
\n
192.168.4.09
\n
192.168.4.10
\n
192.168.4.11
\n
\n
Group03: DHCP\n
\n
192.168.4.12
\n
192.168.4.13
\n
192.168.4.14
\n
192.168.4.15
\n
192.168.4.16
\n
192.168.4.17
\n
192.168.4.18
\n
192.168.4.19
\n
192.168.4.20
\n
192.168.4.21
\n
192.168.4.22
\n
192.168.4.23
\n
192.168.4.24
\n
192.168.4.25
\n
192.168.4.26
\n
192.168.4.27
\n
192.168.4.28
\n
192.168.4.29
\n
192.168.4.30
\n
\n
\n
Skynet Network.
\n
\n
VLAN: NUMBERS
\n
IP Block: 192.168.5.1/28
\n
Subnet Mask: 255.255.255.240
\n
Gateway: 192.168.5.1
\n
Broadcast: 192.168.5.15
\n
Group01: SGOTI\n
\n
192.168.5.02
\n
192.168.5.03
\n
192.168.5.04
\n
192.168.5.05
\n
192.168.5.06
\n
\n
Group02: SERVERS\n
\n
192.168.5.07
\n
192.168.5.08
\n
192.168.5.09
\n
192.168.5.10
\n
192.168.5.11
\n
\n
Group03: DHCP\n
\n
192.168.5.12
\n
192.168.5.13
\n
192.168.5.14
\n
\n
\n',391,61,0,'CC-BY-SA','Networking, TP-Link Omada, Subnetting',0,0,1),
(3623,'2022-06-22','Internet Security - Child Edition',2487,'I have a discussion about Internet security with R. Brady Frost along with our sons','
The stuff Evil Steve doesn\'t want you to know with Lurking Prion. This is Season 1, Episode 8.
\n
In this episode, I have a discussion about Internet security with special guest and author, R. Brady Frost along with his son and mine. The discussion revolves around how our kids view Internet security and we discuss dangers they hadn\'t considered.
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,breach,data reduction,privacy',0,0,1),
(3649,'2022-07-28','Linux Inlaws S01E61: 20 years in review',4319,'The last 20 years in review','\r\n
In this episode, Martin and Chris take a closer look at twenty years of Linux Inlaws\r\nhistory. Why, you may ask, given the fact that this podcast has only been in existence\r\nfor roughly over two years, are we reviewing this history? The answer - of course - is\r\nstraight forward: by sheer coincidence our two heroes got hold of a future episode\r\nwhich traveled back in time from the future. If you ever wondered about time-travel,\r\nthe paradoxes associated with this and what the next twenty years have in store not\r\njust from a Linux Inlaws perspective, this episode is for you.
\r\n',384,111,1,'CC-BY-SA','Time-travel, DeLorean, D-Wave, Hello! Magazine, Calico Labs',0,0,1),
(3625,'2022-06-24','Shell Tips and Snippets - Collaborative Effort',1225,'Carl and special guests provide some shell tips and examples.','
Carl talks about a method to move function definitions to the bottom of a script using sed:
\n
#!/bin/sh\nsource <(sed '1,/^exit/ d' $0)\n\n__say "hello"\n\nexit\n\n__say()\n{\n echo $1\n}\n
\n
Guest Host #1 (scroll to the bottom to ruin the surprise) talks about the shift command using this example:
\n
startdate="$1" # Pick up date\nshift\ndays=0\n\n# Loop through args and create events\nwhile [ $1 ] ; do # as many times as you add a timestamp\n [ $1 != "off" ] && khal new $(date -j -v+"$days"d -f %Y-%m-%d +%Y-%m-%d $startdate) $1 8H Work\n let days++\n shift\ndone\n
\n
Guest Host #2 provides tips and examples on how to use variables safely and politely provide default values. One example of assigning a default value is:
\n
foo=${foo:-"blah"}\n
\n
Carl then closes out with the : (colon) shell builtin and provides a variation on the above default value:
\n
: ${foo:="blah"}\n
\n',380,42,0,'CC-BY-SA','shell',0,0,1),
(3628,'2022-06-29','Building a Mobile Computer Battlestation: Extended Power Supply',1235,'Mobile computer Battlestation part 1; 16 cell power supply and BMS','
At the end, I am a little disappointed in the performance. One of the cell banks was discharging quicker than the others, but I replaced it and it is much more efficient now.
\n
All the cells were salvaged from old laptops.
\n
Figure 0.1 \n Click the thumbnail to see the full-sized image
\n
Figure 0.2 \n Click the thumbnail to see the full-sized image
\n
Figure 0.3 \n
\n
Figure 1 \n Click the thumbnail to see the full-sized image
\n
Figure 2.0 \n Click the thumbnail to see the full-sized image
\n
Figure 2.1 \n Click the thumbnail to see the full-sized image
\n
Figure 2.2 \n Click the thumbnail to see the full-sized image
\n
Figure 2.3 \n Click the thumbnail to see the full-sized image
\n
Figure 3 \n Click the thumbnail to see the full-sized image
\n
Figure 4 \n Click the thumbnail to see the full-sized image
\n
Figure 5 \n Click the thumbnail to see the full-sized image
\n
Figure 6 \n Click the thumbnail to see the full-sized image
\n
Figure 7 \n Click the thumbnail to see the full-sized image
\n
Figure 8 \n Click the thumbnail to see the full-sized image
\n
Figure 9 \n Click the thumbnail to see the full-sized image
\n
Figure 10 \n Click the thumbnail to see the full-sized image
\n
Figure 11.0 \n Click the thumbnail to see the full-sized image
\n
Figure 11.1 \n Click the thumbnail to see the full-sized image
\n
Figure 12.0 \n Click the thumbnail to see the full-sized image
\n
Figure 12.1 \n Click the thumbnail to see the full-sized image
\n',401,0,0,'CC-BY-SA','computer,mobile,bms,power',0,0,1),
(3632,'2022-07-05','Intro to web scraping with Python',1915,'Using requests and Beautiful Soup to scrape websites','
A beginner introduction to web scraping with Python.
\n',78,25,0,'CC-BY-SA','python, web, internet',0,0,1),
(3633,'2022-07-06','The collective history of RAID controller brands',821,'Computer memory is a generic term for all of the different types of data storage technology that a c','
\n',129,0,0,'CC-BY-SA','memory, sdram,ddr, dram, ssd, hhd',0,0,1),
(3652,'2022-08-02','Registered memory',690,'Not to be confused with ECC memory, although memory modules often use both technologies.','
\n',129,0,0,'CC-BY-SA','R-Dimm,DD4,3DS',0,0,1),
(3635,'2022-07-08','A short podcast on a nice tool called system-monitoring-center',243,'This is a short podcast on a nice tool called system-monitoring-center','
\n',369,23,0,'CC-BY-SA','system-monitoring-center, linux',0,0,1),
(3638,'2022-07-13','Ken drops a bear on his android phone',316,'How to enable sftp using a sshd server on android/lineageos','
SimpleSSHD is an SSH2 server based on dropbear that supports scp, sftp, and rsync. It only supports public-key based authentication (no password/interactive auth except for bootstrapping). It does not use root, which means it must listen on a port over 1024 (defaults to port 2222).
\r\n',30,0,0,'CC-BY-SA','SimpleSSHD,SSH2,dropbear,android,lineageos,primitive ftpd',0,0,1),
(3642,'2022-07-19','Interview with a Hacker: Vitaliy',5954,'We go back ... WAY BACK to golden days of hacking','
Lost interview I never uploaded!
\n',36,0,1,'CC-BY-SA','interviews,hacking,pentesting',0,0,1),
(3645,'2022-07-22','How to set up a small Linux Wireguard VPN',855,'I set up a small VPN and wrote a blog post about it. This is just an audiorecording of that','
\n',369,61,0,'CC-BY-SA','wireguard,linux, vpn',0,0,1),
(3648,'2022-07-27','A response to tomorrows show',1682,'Ken brings the DeLorean up to 141.6Kph to address monochromec\'s comment on stats','\r\n
In today\'s show we discover that Hacker Public Radio is not a Podcast Hosting Platform.
\r\n
Each day your show will be heard by as many people as can squeeze into the main auditorium at FOSDEM, or between two and three Airbus A380-800. You know the big double decker passenger plane. Every month we have on average 33,584 downloads, that\'s about 40 fully loaded Airbus A380-800.
\r\n
\r\n
Podcast \"Hosting\" Sites, like Spotify, Apple Podcast or Google Podcasts, etc. do not host the media, they are essentially monetizing Hacker Public Radio content. And we are all absolutely fine with that because our shows are released under a Creative Commons Attribution-ShareAlike 3.0 Unported license.
\r\n
\r\n
Every one of those dots is a download that is not without cost, but is provided entirely free of charge to us by our kind hosting Provider AnHonestHost.com and the volunteer project the Internet Archive. Both of which donates terabytes of storage and data transfer to us for free.
\r\n
The people to thank are our own Josh Knapp over at AnHonestHost.com, who provides the Hacker Public Radio web site.
\r\n
And the Internet Archive which is an American digital library with the stated mission of \"universal access to all knowledge\", who provide hosting for the media.
\r\n',30,0,1,'CC-BY-SA','statistics,syndication,reality',0,0,1),
(3637,'2022-07-12','HPR feed to Sqlite',454,'First step in creating a static copy of HPR','
\n
Mailing list discussion - Source Code for the HPR website\n
\n
What are the best ways to reproduce the HPR site using a static site generator.
\n
I would like the DB to be made public, but I understand why that may not be possible
\n
\n
\n
One interesting thing I read during the discussion is Ken said Every thing needed to recreate an HPR site is in the feed
\n
\n
Challenge accepted\n
\n
A lot of my toy projects have been around RSS and podcasts
\n
I am working on a Episode describing a project I did looking for podcasts that have podfaded.
\n
I starting thinking about what data is in the feed and thinking through a process for using the RSS data to recreate the HPR site
\n',342,0,0,'CC-BY-SA','python, rss, sqlite',0,0,1),
(3916,'2023-08-07','HPR Community News for July 2023',4533,'HPR Volunteers talk about shows released and comments posted in July 2023','\n\n
New hosts
\n
\nWelcome to our new hosts: \n\n HopperMCS, \n Reto.\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 20 comments in total.
\n
Past shows
\n
There are 4 comments on\n3 previous shows:
\n
\n
hpr3876\n(2023-06-12) \"Recording An Episode For Hacker Public Radio\"\nby Ryuno-Ki. \n
\n
\n
\nComment 1:\nReto on 2023-07-01:\n\"Good information about recording\"
\n
hpr3883\n(2023-06-21) \"Emergency Show: How to demonstrate the power of condensing steam\"\nby Mike Ray. \n
Comment 1:\ndnt on 2023-07-29:\n\"Game mechanics\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
The HPR Static Site
\n
As mentioned in the last Community News episode, the HPR database and\nwebsite was moved to a new server, and the static site generator written\nby Rho`n was used to generated the non-interactive part of\nthe website.
\n
Since then, there has been a process of adapting the software to the\nnew configuration. Unfortunately Rho`n has not been\navailable during this process, but we are gradually learning our way\naround his excellent software and making changes to suit our needs.
A policy change is required in the use of the reserve queue. When\nthere are unfilled slots between 5 and 7 days in the future, episodes in\nthis queue will be used to fill them.
\n
This extra time is required because of the time it can take to\nprocess a show and load it to the Internet Archive.
\n
Bram Moolenaar, author of Vim\ndies
\n
There was an announcement from Bram\'s family today (2023-08-05) that\nhe died on August 3rd 2023 from a medical problem that\nworsened recently.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3643,'2022-07-20','My computing history and the software I use',3345,'Rambling about my computing history and tech stack. ','
I introduce myself by describing my computing history and tech stack. Disjointed rambling and tangentially related thoughts ensue.
\n',406,0,1,'CC-BY-SA','UNIX, Linux, first show, BSD, Android',0,0,1),
(3658,'2022-08-10','Linux Inlaws S01E62: HPR\'s inner workings',1975,'An overview of HPRs inner workings and stats based on a ludicrous claim by the Inlaws','
In this episode our two ageing heroes explore the inner workings of a podcast (or podcast hosting platform depending on your perspective) called Hacker Public Radio. Yes, the platform that the Inlaws have been using since the very inception of this rapidly growing FLOSS podcast content. Wondering what the heck this episode is all about, why exactly Martin and Chris are talking about this now and the importance of statistics, lies and damned lies? Then just listen to this episode. You may also find out the difference between mere caching and content syndication. Never mind HPR\'s inner workings.
\n',384,111,1,'CC-BY-SA','Lies, damned lies, stats, projections, CDNs, Ford, Ferrari, Monsters, Books',0,0,1),
(3679,'2022-09-08','Linux Inlaws S01E64: Non-profits in the US: A closer look at 501(c)s',2177,'The Ins and Outs of 501(c)s','
In this episode, Martin and Chris shed more light on the riveting subject of non-profit\nand not-for-profit organisations especially in the US with a special focus on the all-\nimportant topic of tax implications. Warning: Due to the fast-paced and gripping never\nmind explicit nature of this topic, people with sleeping disabilities or who are easily startled\n/ offended by graphic content should consult a member of the medical profession to ensure\nthat they are capable of handling this episode. You have been warned.
\n',384,111,1,'CC-BY-SA','501(c)3, 501(c)6, non-profits, not-for-profits, Church of Emacs, RMS, Serviettenknödel',0,0,1),
(3644,'2022-07-21','Pinball Machine Repair Tips',1483,'As a first show, I introduce myself and show some repairability tips for 90s pinball machines','
After the introduction, as this is my first show, i tell you how i got my current Pinball machine, an \"Indiana Jones, the Pinball adventure\" from Williams.
\n
I suggest tips to anyone trying to repair one, or simply to curious people out there.
\n',407,103,1,'CC-BY-SA','first show,pinball,repair,electronics,90s',0,0,1),
(3646,'2022-07-25','arm, slackware, forth oh my!',834,'a description of a laptop ','
Image 1 \n
\n
Image 2 \n
\n
Image 3 \n
\n
pi-top the company
\n
\n
make educational products using the rasp-pi
\n
uk based company 24 million $ funding 3 employees
\n
products\n
\n
pitop ceed
\n
pitop 2 laptop
\n
pitop 3 laptop
\n
pitop 4 case+ for rpi4
\n
robot kit, etc
\n
\n
\n
my pi-top 3
\n
\n
had a pi-top 2, keyboard was bad, battery was worse
\n
ebay purchase pi-top 3, wanted to try new form factor and see if the battery was better
\n
came with experimentor kit, included a slide in solderless breadboard, and an rpi!
\n
description
\n
modifications\n
\n
slackware install,lost some of the built in scripts that monitored the system, especially battery monitoring
\n
added a daughter board with an atmega328 running forth to do the battery monitoring
\n
added an rtc ds1307, installed via instructions from the sarpi website
\n
\n
pluses\n
\n
better keyboard, with better mechanical design
\n
better battery life, charging great
\n
better screen
\n
\n
minuses\n
\n
charging board seems closed source, that would be the keys to the kingdom
\n
old software hard to come by
\n
stuck in rpi3 form factor
\n
\n
plans\n
\n
+upgrade to slackware 15-64 bit+
\n
leave the rpi and go to a pineboard
\n
reverse engineer charging board?
\n
easier to modify case to accept new hardware
\n
\n
\n',326,0,0,'CC-BY-SA','raspberry pi, hardware',0,0,1),
(3653,'2022-08-03','Hello HPR Community',53,'Introducing myself to the HPR community','
Long time listener, first time caller...
\n',408,0,0,'CC-BY-SA','Introductions',0,0,1),
(3668,'2022-08-24','Linux Inlaws S01E63: John Hawley on kernel dot org and other shenanigans',5514,'An interview with John Hawley of kernel.org fame','
In this episode Martin and Chris host John Hawley of kernel.org fame. The\ndiscussion centers around Python, the royal British family and other FLOSS\ntopics such as some break-away colonies like the US, version control systems,\nwireless wikis and containers. Never mind Python. Did I mention Python? :-)\nAnd perhaps VMware. Ever wondered why early versions of git just gobbled up\nyour main memory? You may or may not find the answer in this episode. Or its\nouttakes...
\n',384,111,1,'CC-BY-SA','git, kernel.org, GSoC, Command Line Heroes, Zero Dark Thirty, trace cruncher',0,0,1),
(3654,'2022-08-04','Use the data in the Ogg feed to create a website.',807,'How much of of site can I make using only the data from the feed?','
Make a website using the HPR RSS Feed
\n
Welcome to part II of my experiment in how much can be done with the data ion the HPR feed
Picture of sign on the test day \n Click the thumbnail to see the full-sized image
\n
Picture of Masonic Lodge sign \n Click the thumbnail to see the full-sized image
\n',318,43,0,'CC-BY-SA','ham radio, ARRL, testing',0,0,1),
(3655,'2022-08-05','BSD for Linux users',4073,'I attempt to explain the wacky and wonderful world of BSD in a Linux friendly way','
UNIX, Linux, and BSD
\n
Linux was created by PC users attempting to use mainframe UNIX. BSD was created by mainframe UNIX users attempting to use a PC.
\n
BSD is what I like to call a “Pedigree UNIX”, meaning that it is a pure blooded descendant of AT&T UNIX. Although all of the original AT&T code has been re-written so a permissive license, the heritage persists.
\n
In contrast to Linux (which shares no original Bell Labs code), BSD was originally all Labs code.
\n
BSD in the wild
\n
BSD style licensing is quite simple to understand compared to the tome that is the GPL. Interpreting it usually goes something like follows:
\n
Do whatever the hell you want with this code, just don’t blame me when it breaks something and don’t claim you wrote it
\n
Permissive licensing means that various companies can put lipstick on the UNIX pig and falsely assert that it’s anything other than lipstick on the UNIX pig. Not that UNIX is a pig, but you cannot disguise a pig with lipstick. Those burdened with the gift of sight and knowledge can spot a UNIX system quite easily.
\n
\n
Apple software is basically stolen BSD
\n
Windows TCP/IP stack (and ftp/rcp/rsh/ssh/scp and other various non-trash networking protocols) is basically stolen BSD
\n
Sony PlayStation is basically stolen BSD
\n
Nintendo switch is basically stolen BSD
\n
a million others that I can’t be bothered to list because they’re either abandonware or are embedded in your e-toaster and internet enabled dishwasher so no one cares
\n
\n
Interacting with BSD guys
\n
Most Linux enthusiasts are missionaries. They are generally helpful and seek to guide the computing neophyte into the inner circle of FSF initiates.
\n
The BSD guys tend to be like hermits. They don’t care if you use their code, they only care that the code works for them. When you ask for help, a typical response will be “did you even read the error logs?” or “did you even RTFM? What about supplemental documentation? We didn’t write TFM just so you could go online and ask something clearly documented in TFM.”
\n
Not all BSD guys are bitter, but you really should consult available resources before asking questions
\n
Forking vs distros
\n
In Linux land, all the distros are basically the same with varying coats of paint. We call these distributions because all “implementations” of linux are nearly identical code bases built with varying compile time options.
\n
In BSD land, distros don’t exist. Free/Net/Open are entirely independent and don’t share a common upstream. They are forks of primordial BSD that run separate kernels, separate userlands, etc. Although code is shared amongst each other, a statically linked binary can’t simply be dumped from one to another and still run as it would in Linux land.
\n
Meta-distos of FreeBSD do exist but they are short lived unless they have corporate backers.
\n
Idiot’s guide to picking a BSD
\n
I want basically Linux desktop out of the box but with a BSD kernel so I can look cool when I post a neofetch screenshot to the /g/ desktop thread!!
\n
Selecting a FreeBSD fork that comes with a desktop is your goto. The currently maintained desktop distros are HelloSystems, GhostBSD, NomadBSD, and MidnightBSD.
\n
I want a viable desktop operating system
\n
FreeBSD with a non-GNOME DE is fairly reliable. I’ve had success with KDE, XFCE, and various tiling window managers. GNOME is too reliant on systemd so the port is janky.
\n
I want something to learn by example with
\n
OpenBSD is a great learning platform. The source code for userland utils is simple, short, and generally free from OS specific function calls. RTFM goes by the wayside when you easily RTFSC.
\n
I want to prevent foot shooting incidents
\n
OpenBSD eliminates many foot shooting scenarios by being a thorn in the side of the user who wants to do stupid things
\n
I want to run UNIX to an obscure device
\n
OpenBSD runs on a lot of architectures: i386, amd64, arm64, arm7, alpha, sparc64, risc64, ppc64, etc. The devs self-host these ports (ie build the release on a physical processor instead of cross compiling). This means that the alpha port is actually built on a VAX machine, the sparc port is actually built on a sparc machine, etc.
\n
NetBSD runs on everything.
\n
I can’t decide!!! Pick one for me!!!
\n
Just go with FreeBSD. It feels a lot like old Debian.
\n
Hardware
\n
Lenovo Thinkpads are bulletproof. Buy something on ebay. Dell desktops generally work quite well. Intel components are most stable. You will suffer less if you can find a pure Intel machine. The biggest things to look for are an intel CPU, intel wireless chipset, intel integrated graphics, and an intel sticker. Vpro vs no vpro doesn’t seem to make a difference in my anecdotal experience.
\n
But what about a GPU????
\n
no.
\n
FreeBSD
\n
Goal: general purpose, easy to use operating system
\n
Use cases: server, desktop, NAS, hypervisor
\n
Features:
\n
\n
Core OS\n
\n
system feels clean and organized.\n
\n
Everything required to boot the system is in /
\n
Everything not required to boot the system is in /usr/local
\n
\n
ZFS boot environments allow modification and upgrading without worrying
\n
Familiar enough to linux users
\n
System feels well integrated instead of hacked together like a GNU+/Linux
\n
\n
storage\n
\n
UFS is dead, long live ZFS (the only actually good RAID)
\n
Disk encryption via GELI and encrypted ZVOLS
\n
\n
Third party software\n
\n
Largest ports system of the BSDs
\n
Can install precompiled packages with the pkg utility or compile yourself via the ports tree
\n
\n
Jails\n
\n
Like a chroot but actually secure
\n
Like docker but without the aspect of downloading random stuff from github
\n
all jails share a kernel but have separate hostnames, ip addrs, etc
Goal: simplicity, portability, standardization, correctness, proactive security, and integrated cryptography
\n
Use Cases: Networking appliances, desktops, servers
\n
Merits:
\n
\n
Core OS\n
\n
webcam and microphone disabled by default
\n
\n
Security\n
\n
API changes to prevent foot shooting (ie strlcpy and strlcat because string functions in C are a memory leak waiting to happen).
\n
kernel is randomly relinked and randomized at boot time
\n
Memory protection\n
\n
W^X protection means that memory is either exclusively writable or exclusively executable
\n
malloc’d memory is randomly allocated (bonus: makes buggy programs segfualt loudly)
\n
\n
Crypto\n
\n
full disk encryption (including swap)
\n
various algos
\n
TCP/IP stack randomizes things to reduce predictibality
\n
\n
Xenocara\n
\n
X11 fork
\n
privilege separation (ie all Xsessions don’t run as root)
\n
\n
Pledge/unveil syscalls\n
\n
pledge restricts process capabilities, kernel kills misbehaving processes
\n
unveil restricts filesystem access to a minimul level
\n
\n
All of the standard daemons run in a chroot with privilege separation
\n
ASLR
\n
A million other things
\n
\n
Third party software\n
\n
Everything you need is in the base system. Some of what you want is available via ports or pkg_add
\n
\n
Subprojects:\n
\n
CARP, doas (like sudo but less spaghetti), OpenBSD httpd, LibreSSL, OpenBGPD, OpenNTPD, OpenSMTPD, OpenSSH, pf (the only easy to use firewall), spamd (email filter that plugs into pf), a million other things
UNIX and arch agnostic third party packing framework
\n
\n
virtualization\n
\n
xen
\n
nvmm (similar to kvm, works with qemu)
\n
\n
storage\n
\n
a bunch of filesystems, including journaling UFS and ZFS
\n
LVM
\n
\n
entirely POSIX compliant
\n
kernel is scriptable with Lua
\n
\n
Demerits:
\n
\n
haven’t used it enough to die the death of a thousand papercuts
\n
\n\n',406,0,1,'CC-BY-SA','BSD, UNIX, FreeBSD, OpenBSD, NetBSD',0,0,1),
(3663,'2022-08-17','How I got into Tech',358,'Follow-up episode about how I got into tech','
From deleting command.com in Windows 95 to tinkering with circuitpython, this is a brief introduction of how I got into tech
\n',408,29,0,'CC-BY-SA','tech, personal history, introductions',0,0,1),
(3662,'2022-08-16','2021-2022 New Years Show Part 1',11138,'The HPR community comes together to chat','
Hacker Public Radio New Years Eve Show 2021 - 2022
\n
Part 1
\n
2021-12-31T10:00:00Z
\n
Welcome to the 9th Annual Hacker Public Radio show. It is December the 31st 2021 and the time is 10 hundred hours UTC. We start the show by sending Greetings to Christmas Island/Kiribati and Samoa Kiritimati, Apia.
\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3667,'2022-08-23','2021-2022 New Years Show Part 2',11268,'The HPR community comes together to chat','
Hacker Public Radio New Years Eve Show 2021 - 2022
Dont use Balena Etcher, try instead https://bztsrc.gitlab.io/usbimager/ USBImager is a really really simple GUI application that writes compressed disk images to USB drives and creates backups. Available platforms: Windows, MacOS and Linux. Its interface is as simple as it gets, totally bloat-free. It is very small below 300 KB compared to more the than 130 MB of Etcher.
\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3656,'2022-08-08','Importance of Small toy projects',1149,'Toy projects are a great way to learn a new language, and a project I did just for fun.','
Sometimes the title is missing, so some of the CSS coloring doesn\'t work
\n
Excluded podcasts still occasionally show up on the list
\n
\n
Looking for more curated lists of podcast pages\n
\n
not search sites
\n
\n
Maybe scrape HPR podcast recommendation episodes
\n
\n
Example \n
\n',342,0,0,'CC-BY-SA','python, programming',0,0,1),
(3672,'2022-08-30','2021-2022 New Years Show Part 3',11934,'The HPR community comes together to chat','
Hacker Public Radio New Years Eve Show 2021 - 2022
\n
Part 3
\n
WebRTC with RPi Zero - resolution of the ribbon cable camera could be better.
\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3677,'2022-09-06','2021-2022 New Years Show Part 4',11653,'The HPR community comes together to chat','
Hacker Public Radio New Years Eve Show 2021 - 2022
Discussed a current creative project of Ken Fallon at length - discussed the importance of using FOSS for longevity of creative projects to avoid getting locked out by proprietary file formats.
\n
Ken uses paper + Google Docs... reminded of the Google Graveyard : Google Graveyard - https://killedbygoogle.com/
Jar Jar Binks is a Sith Lord aka The Darth Jar Theory
\n
theory goes that by prolonging the Clone Wars and helping Doku escape, he enabled the Empire to continue. Also, Palpatine was helped into power by his machinations.
\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3682,'2022-09-13','2021-2022 New Years Show Part 5',11161,'The HPR community comes together to chat','
Hacker Public Radio New Years Eve Show 2021 - 2022
\r\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3687,'2022-09-20','2021-2022 New Years Show Part 6',11137,'The HPR community comes together to chat','
Hacker Public Radio New Years Eve Show 2021 - 2022
\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3659,'2022-08-11','Developing an HPR static site generator',673,'Rho`n describes his approach to developing a static site generator for HPR','
Synopsis
\n
In this episode, I describe my ongoing attempt to develop a static site generator for the HPR website. As a search through the community mailing list will reveal, the idea for moving the HPR website has been rattling around for a few years. I have been interested in helping out with the website for a while, so when the latest round of discussion occurred I decided to give it a whirl.
\n
While I have read about various static site generators over the years, the only one I had any experience with was Template-Toolkit (TT2) when helping Ken Fallon and Dave Morriss develop the Free Culture Podcasts webpage. It is the tool Dave uses for various projects. Since they are the janitors for HPR, I figured a website generator based on the TT2 would be something relatively painless enough for them to use, and update when needed.
\n',293,0,0,'CC-BY-SA','HPR, static site generator, Perl, SQLite, Template Toolkit',0,0,1),
(3665,'2022-08-19','UNIX Is Sublime',3586,'I talk about all of the reasons I love UNIX','
UNIX is sublime
\n
Or, \"how to use a computer without hating yourself for it in the morning\"
\n
Or, \"Unix is basically a simple operating system . . .\"
\n
Or, \"My weariness and disdain for computers grow with each additional unit of knowledge\"
\n
Or, \"Worse is better\"
\n
Origins
\n
UNIX is not Multics
\n
Multics = Multiplexed Information and Computer Service
\n
UNIX = Uniplexed Information and Computing Service
\n
The name \'UNIX\' is a pun on the name \'Multics\'. Multics was entirely too large and complicated to be useful so the boys at Bell Labs cooked up something smaller, less complicated, and easier to use.
I know almost nothing about Multics and I\'m not sure if it\'s even worth learning. This is about UNIX, not Multics. Maybe I\'ll come back to it.
\n
Philosophy, implementations, ducks
\n
When I think of \"UNIX\", I do not think of the trademark. Instead, I think of the Unix philosophy. and the general design principles, interface, and behavior of a UNIX system.
\n
A better way of thinking about \"UNIX\" is as something \"POSIX-like\" rather than \"AT&T\'s commercial UNIX\". Example: although Linux and GNU are overly complicated, they pass the duck test for being a UNIX. Pedigree or not, you know a nix when you see one.
\n
Also, when I say \"UNIX\", I mean \"Free UNIX\". I have no interest in proprietary implementations that only exist for the purpose of restricting users and disempowering/discouraging sysadmins from becoming self-reliant.
\n
So what is the philosophy?
\n
\n
Do one thing and do it well
\n
Design programs that work together using text as the common interface
\n
KISS: Keep it simple, stupid
\n
Test early, test often
\n
\n
And additionally:
\n
\n
everything is a file or a process
\n
\n
Design
\n
10,000 Ft View
\n
UNIX is a multiuser time sharing networked operating system, running as an always online service. A UNIX system is a single mainframe computer running an operating system designed for multiple users to access concurrently over the network, equally (depending on implementation) sharing resources amongst the active users.
\n
In a traditional network setup, there is one mainframe UNIX machine with multiple dumb terminals connected to it over the network. None of the users touch the mainframe physically. Instead, they interact with it exclusively through their own dumb terms. These dumb terminals have minimal or no computing power of their own because all of the actual computation takes place on the mainframe. Built in networking is a given.
\n
As for the actual software running on the mainframe, it\'s quite simple to visualize. A Unix system is a flexible but organized stack of concepts, each depending on the concept below, all working together for the sole purpose of enabling the end user to play video games and watch videos online.
In order to fully explain why UNIX is sublime, I will start from the bottom and work my way upward. Before I discuss the shell, I will explain the multiuser aspects of the system. Then, after a long arduous journey of verbosity, explain how to actually use the thing.
\n
Kernel
\n
The kernel is something the user rarely interacts with. It abstracts all the hard parts away from the user. No more poking random memory addresses to load a program from tape.
\n
Multitasking
\n
In order to support multiple users, resource sharing was implemented. When a user\'s process requests CPU time, it\'s put into a rotational queue along with the other requests for CPU time. Round robin style concurrency is one of the easiest to implement but most modern systems use a weighted model that prioritizes processes owned by specific users. Memory and disk space are typically assigned hard limits to prevent system crashes. \"Ask your sysadmin if you need more resources.\"
\n
Virtual Memory
\n
Abstracting memory management from users is almost necessary in a multitasking system. The kernel must be the arbiter of all. The most interesting thing about virtual memory is that it doesn\'t actually need to be a RAM stick, but can be a swap partition on a disk or even a remote cloud provider if you\'ve actually lost your mind. This type of flexibility improves system stability. Instead of a kernel panic when memory runs out, the kernel can de-prioritize nonessential or idle processes by sending them to swap space.
\n
Paged Memory (logical memory)
\n
No more fragmented memories! The kernel maintains a page table that maps logical locations to physical locations. Instead one continuous chunk of memory, the kernel divides memory into small sections called \"pages\". When allocating memory, the kernel might not give a process continuous pages. The advantage of a paged memory scheme further enables multiuser computing. Example: When you have a large program like a web browser open, the pages that contains the unfocused tabs can be swapped out to disk without stalling the entire browser.
\n
Programming Interface pt. 0 (syscalls, kmods, drivers)
\n
When a process requests a resource, it sends a syscall to the kernel. The kernel then responds to the system call. This allows for privilege separation. Does your web browser need direct access to all memory? What about all files? Do we even want to write assembly every time we want to access a file? Syscalls are dual purpose: abstraction and security.
\n
Kernel modules are dynamic \"extensions\" that give the kernel new features (typically hardware support). The ability to dynamically load/unload modules as hardware changes increases uptime because it means a new kernel doesn\'t need to be compiled, installed, and booted into every time we plug in a different peripheral.
\n
Filesystem
\n
Hierarchical structure
\n
A UNIX filesystem is hierarchical. Each directory contains files or other directories, each with a specific purpose. This type of organization makes it very easy to navigate and manage a system. Each child directory inherits ownership and permissions unless otherwise specified (see Access Control).
\n
In order to visualize this, I imagine a tree-like structure descending from the root directory, /. The tree(1) program shows this type of hierarchy.
\n
Virtual Filesystems (logical filesystem)
\n
The idea behind virtual filesystems is, again, abstraction. Using the concept of a virtual file system, multiple disks can be presented to the user and programmer as a single unified filesystem. This means mounted local disks, NFS shares, and even the contents of a CDROM are presented as if the files contained therein are \"just on the big hard drive\".
\n
Additionally, using bind mounts, a directory can be mounted onto another directory as if it were just another filesystem.
\n
The final interesting thing about virtual filesystems is the concept of a ramdisk: mounting a section of memory so that it can be used as if it was an ordinary directory. <--Shoot foot here.
\n
Everything is a file
\n
Well, almost everything is presented as if it were a file. This greatly simplifies programming.
\n
Prime example: /dev/urandom is a random entropy generator presented as a file, making it very simple for a programmer to implement seeded RNG in a program.
\n
Another example: The kernel translates mouse input into a data stream that can be opened as a file. The programmer only needs to read from /dev/mouse0 instead of writing hundreds of mouse drivers for a clicky GUI.
\n
Exercise 1: Try running this command then wiggling your mouse:
Yet another way of \"mounting\" a file or directory to another file or directory is linking. There are two types of links: hard links and symbolic links.
\n
On UNIX, files are indexed by inodes (index nodes). Using links, we can make \"shortcuts\" to files.
\n
Hard linking adds a \"new index\" to a file. They share an inode. If the original file is removed, the file persists in storage because the secondary file created by a hard link still exists. Think \"different name, same file\"
\n
Symlinks are like pointers. A symlink points to the original file instead of the inode. If you remove the original file, the symlink breaks because it points to a file that points to an inode rather than simply pointing to an inode.
\n
Using links, we can make files more convenient to access as if we are \"copying\" files without actually copying files.
\n
Filename extensions
\n
On a UNIX system, file extensions are arbitrary. UNIX determines file type by reading the file headers. The file tells you exactly what type of file it is (just read it). The entire system does not break when a file extension doesn\'t match the expected contents of the file.
\n
Extensions only matter when you wilfully associate with the microsoft users leaving issues on your software repos. \"Not my OS, not my issue, it\'s open source so fork it if you don\'t like it\"
\n
Multiuser (timesharing)
\n
See also: Multitasking.
\n
Exercise 3: attempt to use Windows like a multiuser operating system and get back to me when you have realized that any and all claims made by microsoft about how their \"multi user enterprise system\" is in any way capable of competing with a genuine multi-user UNIX system are false advertising.
\n
Users, Groups
\n
A multiuser system needs a way to manage users and categorize them for access control purposes. Every user has a single user account and belongs to 0 or more groups. Sorting users into groups at the time of account creation makes is significantly easier than granting/revoking permissions user-by-user. Additionally, using something like rctl(8) on FreeBSD allows a systems administrator to allocate resources to specific users, groups, or login classes (like groups).
\n
Daemons (services)
\n
On a UNIX system, every process is owned by a user. In the case of a service, the process is owned by a daemon account. Daemon accounts have limited permissions and make it possible to run persistent services as a non-root user.
\n
Access Control
\n
Since UNIX was designed to be a multiuser system, access control is required. We know about users, we know about groups, but what about permissions?
\n
There are three types of operations that can be done to a file: read, write, and execute. Who can the admin grant these permissions to? The Owner, the Group, and the Other (all). This type of access control is called discretionary access control because the owner of the file can modify files at their own discretion.
\n
Actually using the thing
\n
Programming interface Pt. 1 (data streams)
\n
All UNIX utilities worth using use 3 data streams:
\n
\n
stdin\n
\n
read from it the same way you read from a file
\n
\n
stdout\n
\n
print to it the same way you print to a terminal (file)
\n
\n
stderr\n
\n
print to it the same way print to a file, read from it the same way you read from a file
\n
\n
env vars if you\'re a CGI programmer
\n
\n
Shell
\n
The shell is how a user actually interacts with a UNIX system. It\'s a familiar interface that allows a human user to interact with a computer using real human language.
\n
Explicitly telling the computer to do is infinitely less agonizing than dealing with a computer that tries to do what it thinks you want it to do by interpreting input from a poorly designed, overly engineered interface.
\n
The shell, in addition to being an interactive interface, is also scriptable. Although math is a struggle, shell scripting is a fairly simple way of automating tasks. Taping together interoperable commands you already know makes everything easier. My favorite aspect about writing POSIX shell scripts is knowing that shell is a strongly, statically typed language where the only datatype is string.
\n
Problem that are difficult or messy to solve in shell usually mean it\'s time to write another small C program for your specific needs. Adding the new program into the shell pipeline is trivial.
\n
Pipes
\n
Pipes, the concept that makes UNIX so scriptable. A shell utility that follows the UNIX philosophy will have a non-captive interface, write uncluttered data to stdout, read from stdin, and error to stderr. The | pipe character instructs programs to send their stdout to the next stdin in the pipeline instead of printing to the terminal.
\n
All standard command line utilities are interoperable and can be easily attached like building blocks. \"Meta programming\" has never been easier.
\n
Pipes make it so that every UNIX program is essentially a filter. Sure, you could just use awk, but I prefer shell.
\n
Bonus:
\n
\n
plaintext configuration files
\n
All logs are pretty much just a .csv
\n
OS vendor doesn\'t force you to upgrade to a newer version of spyware
\n
modular design means explorer.exe crashes don\'t take down your entire IT infrastructure
\n
Portable design means write once, run everywhere with minimal effort
\n
\n
Summary:
\n
UNIX is a non-simple modular operating system designed for 1970s big iron mainframes but we love it too much to let it go. Compared to minimal hobbyist operating systems, UNIX is BIG. Compared to commercial operating systems, free UNIX is small. Maybe slightly more than minimum viable but the papercuts are mild enough to forgive.
\n',406,0,1,'CC-BY-SA','UNIX',0,0,1),
(3657,'2022-08-09','Small time sysadmin',1568,'How I maintain my Linux Box, Part One.','\n
Creating Backups.
\n\n
\n
This script was trimmed to serve as an example.
\n
The three options shown (email, jop, dots) demonstrates, how to list items with case statements:
\n
\n
Single item/directory (jop).
\n
Multiple items in single directory (dots).
\n
Multiple items in multiple directories (email).
\n
\n
The text files created after the archive serves as an item list \nwith current permissions.
\n
tar --directory= /path/to/directory/ --create --file INSERT_ARCHIVE_NAME.tar /path/to/file;
\n
\n
#!/bin/bash\n#License: GPL v3\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program. If not, see <https://www.gnu.org/licenses/>.\n\n#Name: getoverhere.sh\n#Purpose:\n#Version: beta 0.07\n#Author: SGOTI (Some Guy On The Internet)\n#Date: Sat 29 Jan 2022 02:19:29 AM EST\n\n#variables:\nVAR_TBALL=\nVAR_TARGET=\nVAR_JUMP=\nVAR_VALUE=\n\n#start:\ncat << "EOT01"\nOptions:\n email |"${HOME}/.thunderbird/"\n jop |"${HOME}/Documents/joplin"\n dots |"${HOME}/.bashrc .vimrc .bash_aliases"\nEOT01\n\necho -e "What do you want to backup? : \\c."\nread VAR_VALUE\n\ncase ${VAR_VALUE} in\n "email" )\nVAR_TBALL="INSERT_EMAIL_NAME$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="msgFilterRules.dat"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/ImapMail/imap.mail.yahoo.com/"\n echo -e "Grabbing INSERT_EMAIL_NAME...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n sleep 1\n\nVAR_TBALL="INSERT_EMAIL_NAME$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="msgFilterRules.dat"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/ImapMail/imap.gmail.com/"\n echo -e "Grabbing INSERT_EMAIL_NAME...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n sleep 1\n\nVAR_TBALL="EMAIL_ARCHIVES$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="Mail/"\nVAR_JUMP="${HOME}/.thunderbird/*.default-release/"\n echo -e "Grabbing email EMAIL_ARCHIVES...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > EMAIL_ARCHIVES$(date +%m-%d-%Y).txt\n sleep 1\n\nVAR_TBALL="THUNDERBIRD_CALENDER$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="calenders/"\nVAR_JUMP="${HOME}/Documents/"\n echo -e "Grabbing email THUNDERBIRD_CALENDER...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > THUNDERBIRD_CALENDER$(date +%m-%d-%Y).txt\n sleep 1\n\nVAR_TBALL="THUNDERBIRD_ADDRESS_BOOK$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="address-book/"\nVAR_JUMP="${HOME}/Documents/"\n echo -e "Grabbing ${VAR_TARGET}...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > THUNDERBIRD_ADDRESS_BOOK$(date +%m-%d-%Y).txt\n sleep 1\n\nVAR_TBALL="THUNDERBIRD_ALL$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET=".thunderbird/"\nVAR_JUMP="${HOME}/"\n echo -e "Grabbing ${VAR_TARGET}...\\n"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > THUNDERBIRD_ALL$(date +%m-%d-%Y).txt ;;\n\n "jop" )\nVAR_TBALL="JOPLIN$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET="joplin/"\nVAR_JUMP="${HOME}/Documents/"\n echo "Grabbing ${VAR_TARGET}"\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n sleep 1\n echo -e "Creating List for ${VAR_TBALL}...\\n"\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} > JOPLIN$(date +%m-%d-%Y).txt ;;\n\n "dots" )\nVAR_TBALL="dots$(date +%m-%d-%Y).tar.gz"\nVAR_TARGET=".bashrc .vimrc .bash_aliases"\nVAR_JUMP="${HOME}/"\n echo "Grabbing ${VAR_TARGET}"\ntar -v -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET} ;;\n\n * )\n echo "Good Heavens..." ;;\nesac\nexit;\n
\n\n\n
Restoring from backups.
\n\n
\n
tar --extract --directory= /path/to/directory/ --file /path/to/file;
\n
A cp -v -t /path/to/directory *08-05-2022.tar.gz; command is used to \nsend the latest tarballs to the fresh install, from the backup drive.
\n
Now that you’ve seen the script above, I’ll just give a tar --extract example to keep things short and sweet.
\n',391,0,0,'CC-BY-SA','sysadmin, system maintenance, tar, backups',0,0,1),
(3664,'2022-08-18','Secret hat conversations',1070,'You\'ll need your tin hat for this one.','
The Tin Foil Hat often worn in the belief or hope that it shields the brain from threats such as electromagnetic fields, mind control, and mind reading.
FCC Caller ID Spoofing info: Spoofing is when a caller deliberately falsifies the information transmitted to your caller ID display to disguise their identity.
\n
FCC Call Blocking info: Call blocking is a tool used by phone companies to stop illegal and unwanted calls from reaching your phone. A second annual FCC report released in June 2021 found that many voice service providers and third-party analytics companies are improving their call blocking and labeling services and use new data to better detect robocalls. Billions of unwanted calls to American consumers are being blocked each year.
\n
The PinePhone Pro Explorer Edition is aimed at Linux developers with an extensive knowledge of embedded systems and/or experience with mobile Linux.
\n
Time-based one-time password (TOTP) is a computer algorithm that generates a one-time password (OTP) that uses the current time as a source of uniqueness. As an extension of the HMAC-based one-time password algorithm (HOTP), it has been adopted as Internet Engineering Task Force (IETF) standard RFC 6238.
\n
Matrix is an open standard for interoperable, decentralised, real-time communication over IP.
\n\n
Password Managers:Used by Some Guy On The Internet. \nBitwarden \nKeePassXC
\n\n',391,0,1,'CC-BY-SA','Tin hat, call spoofing',0,0,1),
(3936,'2023-09-04','HPR Community News for August 2023',3397,'HPR Volunteers talk about shows released and comments posted in August 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 21 comments in total.
\n
Past shows
\n
There are 5 comments on\n5 previous shows:
\n
\n
hpr3840\n(2023-04-21) \"Playing the Original Civilization\"\nby Ahuka. \n
\n
\n
\nComment 1:\nTuula on 2023-08-08:\n\"this brings back memories\"
Comment 1:\nTrey on 2023-08-30:\n\"Thank you for sharing.\"
Comment 2:\nKinghezy on 2023-08-31:\n\"Interesting topic\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Site Migration
\n
\n
The process of moving the HPR site to its new location and\nimplementing all of the features has been going on during August:
\n
\n
Working on updating links on documentation pages
\n
Moving RSS feeds from the dynamic part of the site to the static\nside
\n
Making the comment forms work the same as before
\n
Making tags clickable
\n
Fixing Unicode problems
\n
Fixing various small bugs like the calculation of when to show the\n\"Call for shows\" message\"\"
\n
\n
There are a number of problems yet to be tackled:
\n
\n
Making links to pictures and other supplementary files work
\n
Making links in comments clickable
\n
\n
We have had a number of very helpful problem reports, mainly\nthrough the #HPR channel on Matrix.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3666,'2022-08-22','One Weird Trick',997,'I talk about getting into or advancing in cybersecurity & how keyboards could trick malware.','
In this episode, I talk about getting in to the field of cybersecurity or moving up in the field. I also talk about how keyboards could keep malware from going Boom on your system.
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,malware, career',0,0,1),
(3669,'2022-08-25','My First Podcast: My Journey into the Computer World',1207,'How I was introduced into computers, Linux, robotics, programming, cibersecurity and more...','
Milestones in my Journey
\n\n
Studied Windows office and played online games
\n
Electronics
\n
Programming with Scratch
\n
Studied Javascript with Khan Academy
\n
Used Processing
\n
Learned Arduino and robotics
\n
Programmed with Visual Studio Code
\n
Learned Git
\n
Learned Windows Batch, VBS, registry, and others
\n
Introduction to Linux and disks with Tails
\n
Installation of Linux mint
\n
Installation of Debian
\n
Learned Apt, sudo, and other commands
\n
Discovered the Raspberry Pi
\n
Learned ssh, vnc, servers and networking with the Raspberry Pi
\n
Received a Thinkpad laptop and installed on it Bodhi Linux, Linux Lite and Alpine Linux
\n
Learned about erasure, recovery and encryption of data
\n
Learned more about Linux (Screen, network configuration, emacs, programming in C)
Helped a company with its computers and learned from it guys
\n
Introduction to Python and BSD
\n\n',410,29,0,'CC-BY-SA','linux, programming, cibersecurity, robotics, hardware',0,0,1),
(3678,'2022-09-07','\"Stupid Users\" ... no, not those users, the other \"stupid users\"',907,'Brady & I discuss stupid things done by those of us who really should know better.','
In this week\'s episode, I chat with R. Brady Frost about the little plumber vs the gigantic rock. Then we move in to a discussion about the fallacy of stupid users with some great stories of stupid things done by those of us who really should know better. The moral of the story, is that we are all human and nothing will ever change that. Instead, we need to be prepared for when humans are human.
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,users,stupid human tricks,customer service',0,0,1),
(3689,'2022-09-22','Linux Inlaws S01E65: TerminusDB',4071,'TerminusDB NoSQL database','
As part of the effort of turning the planet\'s premier Rust marketing podcast into a full-blown NoSQL show, in this episode Chris hosts some of the key people behind a NoSQL database called TerminusDB (Martin couldn\'t make it as he was firing, um, re-organising the Inlaw\'s marketing department once again). Luke (the CEO) and Gavin (CTO) of TerminusDB spill the beans on the history of the project, ontologies and why they still matter not only in a mobile-first world and why a website called DB Engines simply doesn\'t do the trick (putting it very diplomatically). Never mind the road ahead... (including quantum AI and some other fancy stuff - you heard it here first!). And also next week\'s lotto numbers (perhaps).
\n',384,111,1,'CC-BY-SA','TerminusDB, graph databases, Seshat, Rust, Carbon by Google, Substack',0,0,1),
(3671,'2022-08-29','Response to Episode 3655, \"BSD for Linux Users\"',674,'Claudio responds to binrc\'s episode on BSD for Linux Users and rambles on about other BSD stuff.','
All the information in this show is just what I have learned and what I think. Let us know if you have learned other things by recording your own show!
\n',399,45,0,'CC-BY-SA','\"sound editing\"',0,0,1),
(3675,'2022-09-02','Plan 9: An exercise in futility',4771,'I talk about the design of Plan 9 and how I use it','
Plan 9: An exercise in futility
\n
It is my right to exercise my futility wherever, whenever, and with whoever I please
\n
Some ideas about Plan 9:
\n
\n
It\'s like the uncanny valley of UNIX
\n
\n
\n
Cool, but useless
\n
\n
\n
Can you sum up plan 9 in layman\'s terms? It does everything Unix does only less reliably - Ken Thompson
\n
\n
\n
If you cannot imagine a use for a computer that does not involve a web browser, Plan 9 may not be for you - 9front FQA
\n
\n
\n
#d/0:28: null list in concatenation
\n
\n
History and description
\n
The boys at bell labs decide UNIX wasn\'t good enough so they decided to build something better: a distributed multiuser operating system composed of many machines. Many of the same ideas behind UNIX were pushed to absurd extremes. The idea that \"everything is a file\" is made blatantly apparent to everyone and sometimes, in my opinion, can feel \'overly-abstracted\'. Additionally, the concept of private namespaces makes the concept of virtual filesystems seem like \'baby\'s first filesystem abstraction\'.
\n
Just like UNIX, 9 started as a research operating system. Both are enjoyed by hobbyists, both are interesting ways of using a computer, both have a lot of fun in store. But the systems do diverge in one major aspect: UNIX is mainstream and 9 is still a research operating system. Plan 9 is currently distributed under the MIT license.
\n
\"What is plan 9?\", Taken directly from intro(1):
\n
\n
Plan 9 is a distributed computing environment assembled from separate machines acting as terminals, CPU servers, and file servers. A user works at a terminal, running a window system on a raster display. Some windows are connected to CPU servers; the intent is that heavy computing should be done in those windows but it is also possible to compute on the terminal. A separate file server provides file storage for terminals and CPU servers alike.
\n
\n
In practice, modern 9 users just run all of these services on a single machine because maintaining many machines to achieve a single usable \'operating system\' is unnecessary; the 9 user finds himself scared and alone without enough users (1 is rarely enough) to justify building a distributed environment.
\n
Use cases
\n
Intended: distributed multiuser network (ie not mainframe), later embedded since UNIX was too bad to be stopped
\n
Actual: Acting like a UNIX hipster, pretending that 9 is anything other than vaporware, imagining that you are gaining social credit by posting screenshots of abandonware on internet forums. See also: Operating System Tourism
\n
9 in the wild
\n
\n
Unicode is now a plague
\n
rfork
\n
9p\n
\n
leveraged by microsoft to discourage end users from actually running GNU+Linux as St Ignucius intended
\n
QEMU\'s VirtFS
\n
\n
various window managers for UNIX, written by people who like the ideas behind 9 but not enough to actually run 9
\n
\"cool idea, I\'m adding it to Linux\"
\n
\n
\n
private namespaces
\n
union directories
\n
see: docker
\n
\n
Design
\n
The goal of 9 was to build a distributed operating system that expands upon Unixy ideas, not to build something that\'s backwards compatible. \"We want to improve UNIX\" is mutually exclusive to \"we want to port UNIX to this wacky new kernel\". UNIX programs (and behemoths like FireFox) are difficult^impossible to port to 9 because of this design decision.
\n
Distributed operating systems
\n
Since 9 was designed to be a distributed operating system, many of the internals are oriented towards networking. On a single system installation, all three of the components that make a 9 network are working together in a client-server model. The filesystem is presented as a service, the CPU is presented as a service, and the terminal is presented as a service. This type of \"abstraction from the physical hardware\" makes it difficult to succinctly describe and explain 9.
\n
If you think about 9 as a heterogeneous network of machines the ideas start to make sense. If you think about 9 as a self-contained single-machine operating system the ideas only become more confusing.
\n
One thing that has helped me wrap my head around the client/server idea is actually thinking less. When running a MySQL server in a LAMP stack, the database server and client are running on the same machine. When writing a program, you instruct the client to access the database located at the address localhost. Despite the design intention to run the database as a separate machine, loopback device hacks ensue. The idea of client/server permeates 9.
\n
The filesystem? Presented as a server regardless of what physical machine it\'s located on. The CPU? Presented as a server regardless of what physical machine it\'s located on. The terminal? Presented as a server regardless of the physical machine it\'s located on.
\n
On a single machine 9 installation, all of these servers are running locally but accessed as if they were running remotely. Insanity ensues but at least it\'s easier to write code for.
\n
9p: the Plan 9 Filesystem Protocol
\n
9p is a networking protocol that makes this client/server model possible. Internally, the filesystem is served to the client over 9p. Many applications make use of 9p, including text editors, windowing systems, plumber, etc. In UNIX, everything is a file. In 9, everything is a filesystem accessed via 9p.
\n
Private Namespaces, Union Directories
\n
The most important aspect of 9: namespaces.
\n
Namespaces have caused me much confusion until recently. In 9, each process constructs a unique view of the filesystem. The phrase that gets stuck in my head is \"a private namespace is a per-process view of the filesystem\". The easiest way to think about namespaces is to think about a \"virtual directory\". Unix has \"virtual filesystems\", 9 has \"virtual directories\".
\n
The concept of namespaces allows a user to pull resources from all over the network and present them as \"a single local filesystem\" with absolute disregard for where these resources are actually coming from. In order to construct a namespace, union directories are used. A union directory is a directory made of several directories bound to the same directory. This concept is similar to a bind mount on UNIX.
\n
The kernel keeps separate mount table for each process. Using namespaces, a user or admin can create more secure isolated environments (similar to a chroot).
\n
Processes and their children are grouped together so that inheritance of the namespace occurs. These process groups can be customized.
\n\n
The \'per-process namespace\' concept can be confusing to UNIX users at first, especially when binding (ie mounting) resources. When I first started using 9 I was very confused when I bound something in one terminal, switched to another, then became disoriented as the thing I just bound seemingly stopped existing. My big example is mounting the boot partition or a filesystem over ssh:
\n
# In this window, I have bound the boot partition.\n# It behaves expectedly.\nterm% 9fs 9fat\nterm% lc /n\n9/ 9fat/ other/ ssh/\nterm% lc /n/9fat\n9bootfat 9pc64 oldplan9.ini plan9.ini\n9pc efi/ pbs.bak\nterm%\n
\n
# In this other window, the boot partition doesn't seem to be mounted.\n# This causes much confusion for the end user.\nterm% lc /n\n9/ 9fat/ other/ ssh/\nterm% lc /n/9fat\nterm%\n
\n\n
Files
\n
The second most important aspect of 9: \"Everything is a file\" taken to absurdist absolutes. The kernel presents hardware devices as files bound to /dev. Within the namespace, devices are just files. Outside the namespace, devices are named with a leading # to help distinguish between pseudo-files and devices. These physical devices are bound to /dev/ and presented as files for easy administration, access, and programming. Presenting everything as a file accessible via 9p greatly reduces the total number of system calls.
\n\n
Examples of \"Everything is a file\":
\n
# The clipboard in 9 is called /dev/snarf\n# We can easily write and read from this clipboard\nterm% cat /dev/snarf\nSYNOPSIS\n#include <u.h>\n\n#include <libc.h>\n\n#include term%\nterm% fortune > /dev/snarf\nterm% cat /dev/snarf\nIf at first you succeed, try to hide your astonishment.\nterm%\n
\n
# The display in 9 is called /dev/screen\n# We can easily take a screenshot\nterm% file /dev/screen\n/dev/screen: plan 9 image, depth 32, size 1366x768\nterm% cat /dev/screen | topng > screenshot.png\nterm% file screenshot.png\nscreenshot.png: PNG image\nterm%\n
\n\n
Message oriented filesystem
\n
Continuing with the idea that \"everything is a filesystem\", processes can offer services to other processes by placing virtual files into other processes\' namespaces. File I/O on this special virtual file becomes interprocess communication. This is similar to a UNIX socket but significantly less difficult to program against because all of the hard parts have been abstracted: it\'s just simple file I/O.
\n
Virtual filesystem (with more special files)
\n
The /proc filesystem presents processes as a files in a filesystem. This makes writing programs that manage process extremely easy by reducing the total number of system calls to simple file I/O. The /proc filesystem allows users to manage processes using standard command line utilities like cat(1) and ls(1).
\n
Linux borrowed the idea of a /proc filesystem.
\n
Unicode
\n
Although the implementation is not fully internationalized, UTF-8 is fully there. Unicode is fully backwards compatible with ASCII. Thanks to ⑨, we now have people writing exclusively with primitive hieroglyphics instead of words.
\n
Portability
\n
Just like UNIX, 9 was designed with portability in mind. 9 is written in a strange dialect of ANSI C which means it\'s portable. Although the system is self hosting, images are rarely built on a self hosting environment. Instead, the end user will download a generic amd64 or i386 image, cross compile for the obscure target architecture, wrap it up in an install image, then burn that image to an install disk. After installation, it is generally a good idea to recompile the entire operating system so that your copy is self-hosted.
\n
The compiler suite is quite clever in that each compiler is named according to the target architecture, the object files are named according to the target architecture, etc. The alnum prefix/extensions are also shared by the various linkers and assemblers.
Multiple filesystems are supported, most suck. The only one the average tourist has heard of is FAT. The one I use is cwfs64x(4). cwfs is a strange filesystem. Every night, it makes a dump of the filesystem. You can access these dumps by running:
\n
9fs dump\ncd /n/dump/YYYY/MMDD/\n
\n
And, managing the file server (trying to uncorrupt cwfs), all while the kernel is spraying error messages
\n
term% con -C /srv/cwfs.cmd\nhelp\ncheck tag\ncheck ream\ncheck free\ncheck\n
\n
After my system crashes, and after consulting fs(8), the above commands seem to solve my corruption problems. Not always. But sometimes.
\n
The cache is a WORM: Write Once Read Many filesystem. Traditionally, the \"fast\" hard drives would be backed up to tape archives. In the modern era, we have a WORM partition. The worm partition stores data forever so it will eventually get full and need cleaning. It is possible to run without a WORM but it\'s a bad idea. Built in version control.
\n
Data integrity not guaranteed.
\n
Secstore
\n
stores various passwords to nvram. BIOS integrety not gauranteed. If you don\'t like thrashing the nvram and it\'s limited write ops, an partition can be created and mouted as if it were nvram.
\n
Factotum
\n
stores various passwords in memory (like ssh-agent)
9front is really the only \'usable\' one because the QOL modifications add important things like general stability, git client, mercurial, ssh, various emulators, audio, WiFi, and USB support.
\n
Using 9
\n
What does the 9 experience actually look like in 2022? You put 9 in a VM, posted a screenshot, shutdown the VM, then continued using Ubuntu because you can\'t play video games or easily watch videos online in 9.
\n
Hardware support in 9front is expanding but still limited. Refer to the list of supported hardware. I run 9front on a Thinkpad x220 and it seems to just work. Some people run it on a Raspi but I\'m not sure why. It works quite well with KVM and QEMU if you\'re an OS tourist. I see no reason to add a dmesg because it will either work or it won\'t.
\n
Available software
\n
GNU might not be UNIX but 9 isn\'t even trying to be UNIX-like.
\n
GUI
\n
Unlink UNIX, 9 was designed with graphics in mind. Some people have said that the 9 GUI looks similar to a smalltalk machine but I think it\'s just the only good stacking window manager. A three button mouse is necessary for using 9front. Shift-rightclick emulates middle click.
\n
Rio
\n
Rio is the Plan 9 windowing system. It\'s the successor to 8½ window manager. Rio is lightweight compared to X11 because access to graphical hardware is built into the kernel and using files+namespaces to access input devices.
\n
The most brief way of explaining rio is to think of it as a rectangle multiplexer, where each rectangle is served a file interface (9p). Although rectangles might seem counterintuitive at first, thinking less hard makes it easier to use. I still have difficulty efficiently using a mouse-centric interface after using terminal interfaces almost exclusively for many years. I dislike the windows way of using a mouse but the 9 way seems to make quite a lot of sense when I \"think less hard\" and allow the intuition to take control.
\n
The argument for mouse-centric computing and text editing is that it\'s faster. Of course, the average vim user is editing text faster than the speed of thought but most people aren\'t the average vim user. Instead, they only know how to use arrow keys to move a cursor. Without memorizing hundreds of vim bindings (and forgetting the names and birth dates of your family members in the process), obviously a mouse is faster.
\n
Mouse controls are confusing at first because they follow the \"click and hold, hover to option, release\" to select an option. They look something like follows:
\n
\n
Right click (window management controls)\n
\n
New
\n
Resize
\n
Move
\n
Delete
\n
Hide
\n
\n
Middle click (text manipulation controls)\n
\n
cut
\n
paste
\n
snarf (copy highlighted text)
\n
plumb (send highlighted text to process, or, more effectively: open file with appropriate program)
\n
look (search for highlighted text)
\n
send (run highlighted text as a shell command)
\n
scroll (toggle autoscroll/noautoscroll)\n
\n
The left click button is used to select text and windows.
\n
\n
\n
\n
The concept of mouse-chording is also prominent in rio but it\'s even more difficult to explain without a visual demonstration.
\n
Rio and it\'s windows also support UNIX style keyboard shortcuts:
\n
\n
^-u deletes from cursor to start of line
\n
^-w deletes word before cursor
\n
^-h deletes the character before the cursor
\n
^-a moves the cursor to the start of the line
\n
^-e moves the cursor to the end of the line
\n
^-b moves the cursor back to the prompt
\n
^-f is the autocomplete key, functionally equivalent to tab completion
\n
^? (DEL key) is the equivalent to ^-c on UNIX
\n
\n
Additionally, in a text window, the arrow keys and PgUp/PgDown keys behave as expected. The home/end keys scroll the window to the top/bottom of the text buffer respectively.
\n
These text windows have a built in pager so there is no more or less command. I can\'t decide if I like built in paging but it\'s definitely a thing to think about.
\n
The colorscheme of rio is dull and pastel and this is intentional. Less vibrant color schemes seem to fade away and become less obvious. Color themes like Tango, Linux Console, Solarized, all of KDE, and WIndows XP are very obvious but not in a good way. Bright colors are subtly distracting and make it difficult to concentrate. When I\'m configuring a UNIX system with dwm, I borrow Rio\'s color theme because it\'s an anti-theme. Give it time. It\'s charming in it\'s own way. Modifying the source code for rio allows for custom color themes. It\'s possible but you will be laughed at. Setting a wallpaper is also possible but I don\'t do this because my windows are always covering the dull gray background.
\n
As for X11, the equis X11 server can only be run via linux compat layers. The lack of a viable X server is yet another reason 9 has no programs.
\n
Command Line Utilities
\n
The shell on 9 is called rc(1). It\'s like any other shell you\'ve used except that you expect it to be bourne-like but it isn\'t. Standard UNIX shell concepts like pipes, file redirects, && and ||, etc. Scripting is not POSIX-like at all so reading the man page and various scripts written in rc is the only way to learn.
\n
Other various UNIX utilities exist and function as expected (although some of the ones you would like are missing). awk, grep, sed, cat, tar, gzip, ed, etc are present.
\n
Editors
\n
There are three primary ways of editing text on 9: ed(1), sam(1), and acme(1). There is no vi aside from the MIPS emulator, there is no emacs except for a man page explaining why there is no emacs.
\n
I have primarily used acme in the past, but sam is a much better editor.
\n
sam is a lot like a graphical version of ed. I still need to learn ed because it\'s the standard editor. Some of the standard vi commands are available and regex works. I like sam quite a lot but it seems to corrupt files when the system crashes.
\n
acme is a window manager, file browser, terminal emulator, and email client that some people use as a text editor. The coolest part about acme is the ability to write arbitrary editor and system commands in the menu bar, highlight them, then middle click to execute those commands.
\n
(Some of the ) Supported Networking Protocols
\n
\n
IMAP\n
\n
good luck
\n
\n
NTP
\n
IRC\n
\n
ircrc
\n
other non-default implementations exist
\n
\n
FTP
\n
HTTP\n
\n
mothra is the standard web browser. It does not support CSS or all of the HTML tags. Obviously, javascript is unsupported.
\n
abaco exists. I\'ve used it a few times. It renders slightly better than mothra but is a pain to use.
\n
Various inferno vaporware exists but the ports don\'t work
\n
NetSurf has been ported to 9front by leveraging components of APE. It almost works
\n
hget, like curl
\n
\n
SSH\n
\n
it only works in conjunction with the vt(1) command.
\n
sshfs
\n
sshnet for proxying traffic
\n
\n
VNC
\n
Various torrent software (magnet links not supported)
\n
Drawterm\n
\n
no, good luck, you will be laughed at
\n
\n
Of course, 9p
\n
\n
A Security aside
\n
Various server implementations for these protocols exist but you really shouldn\'t use them on the WAN as they are ancient, unmaintained, unaudited, and easy to exploit. Prime example: the /g/entoomen found a path traversal vulnerability in the 9front httpd server, then leveraged that vuln to exploit a vuln in the authentication system. Not that the boys back home did anything malicious with this bug . . . but the ability to pwn a system by sending cleverly crafted GET requests should tell you enough about the current state of security in 9.
\n
\n
Firewall\n
\n
no
\n
\n
Disk Encryption\n
\n
unreliable
\n
\n
Access control\n
\n
what?
\n
\n
filesystem\n
\n
cwfs has an poorly documented special user called none that is allowed to connect to fossil, cwfs, and maybe hjfs without a password. Set the nonone option in cwfs if you are even thinking about putting 9 on the internet.
\n
\n
\n
Don\'t even think about putting 9 on the internet
\n
UNIX compat layer (ape)
\n
APE is the ANSI POSIX Emulator. It doesn\'t work and is almost entirely empty. Lots of tiny programs to write, not much interest in writing lots of tiny program. There is a general attitude among 9 users that \"9 is unique\" porting POSIX libs to 9 would ruin the appeal. I almost think I agree with this sentiment.
\n
Emulation
\n
\n
Linux\n
\n
don\'t
\n
\n
GameBoy
\n
GameBoyAdvance
\n
NES
\n
SNES
\n
Sega MegaDrive/Genesis
\n
c64
\n
vmx, a PC emulator (effectively virtualization)\n
\n
It\'s slow
\n
it almost works
\n
it crashes your system
\n
cwfs gets corrupted
\n
\"runs\" OpenBSD, Linux, and ancient Windows with graphics support
\n
\n
and also various emulators for obscure architectures
\n
\n
VCS
\n
\n
Mercurial used to come with 9front but it has been removed.
\n
CVS does exist but not in the base system.
\n
A native git implementation exists and is in the base system. It\'s bare bones but it mostly works.
9 ships a program called mk(1). Syntax (in the simplest ways) is identical to UNIX make(1).
\n
The Absurdities of 9 C
\n
Plan 9 C is syntactically similar to ANSI C but it varies. The stdlibs on 9 are much simpler than the POSIX monster.
\n
/* POSIX C example */\n#include <stdio.h>\n\nint main(){\n printf("hello, world\\n");\n return 0;\n}\n
\n
/* 9 C example */\n#include <u.h>\n#include <libc.h>\n\nvoid main(){\n print("hello, world\\n");\n exits(0);\n}\n
\n
u.h contains CPU specific instructions, libc.h contains all of the system calls, time functions, math functions, unicode functions, and print functions. In contrast to POSIX, functions in 9c return strings instead of ints.
\n
# Compiling on UNIX\n$ cc main.c\n$ ./a.out\nhello, world\n$\n
\n
# Compiling on 9\n% 6c main.c\n% 6l main.6\n% 6.out\nhello, world\n%\n
\n
In the 9 compiler example, I\'m using the amd64 compiler and linker. Notice how the 6 persists as the prefix/suffix to help developers remember which architecture this specific program is written for. Instead of unspecific object files with a .o suffix, the object file\'s suffix is actually representative of what types of opcodes the file contains. Similarly, after linking, the 6. prefix tells us that the binary is for an amd64 processor.
\n
And also, the simplest UNIX program with buffers: read from stdin and write directly to stdout:
In 9, stdin is file descriptor 0, stdout is 1, and stderr is 2.
\n
And, the binary sizes betwen the two. You probably recognize a.out, this one was compiled with GCC. 6.out is an amd64 Plan 9 binary compiled on 9.
\n
$ ls -sh ./*.out\n4.0K ./6.out\n 28K ./a.out\n
\n
Binaries on plan 9 are statically linked. It\'s somewhat strange to see that a statically linked binary is smaller than a dynamically linked one. Even compiling the plan 9 source on Linux using plan9port yeilds a large binary: 40K.
\n
I have not written 9C in a long time so I cannot say much more with confidence and authority. Refer to C Programming in Plan 9 from Bell Labs for more information.
\n
The acid(1) debugger exists but it\'s hard to use if you\'re not fluent in assembly.
\n
Ancient Go
\n
Ancient Go once ran on 9. In 2022, you\'re better off just writing C and rc.
\n
WiFi
\n
Some wifi cards are supported on 9front. My thinkpad x220 uses the iwl drivers. The FQA is somewhat vague when it comes to actually using the drivers. Good luck :)
\n
Why isn\'t 9 more popular if it supposedly improves on \"bad Unix ideas\"?
\n
\n
Unix is \'just good enough\'
\n
9 is not \'better enough\' to beat out \'just good enough\'
\n
Porting software is difficult^impossible because 9 was deliberately written to be not backwards compatible.\n
\n
\"If you port it, they will come\"
\n
\n
9 is uncomfortable to use if you have Unix muscle memory
\n
no modern web browser
\n
no video games (I\'m pretty sure there are doom and quake source ports though)
\n
multimedia consumption is hard
\n
no GNU
\n
\n
Why do people use 9 if it\'s so bad?
\n
I can\'t be sure about all other ~20 Plan 9 fans in the world, but for myself, it\'s purely out of a genuine curiosity and love for computing. My motivation for learning obscure, unnecessary, and quite frankly boring things related to computers is that it brings me some sense of satisfaction/accomplishment/enjoyment. Linux stopped being fun for me when I came to the realization that all distributions are fundamentally the same. I started exploring the BSD world only to realize that all UNIX-like operating systems are fundamentally the same. Although BSD remains a store of fun for me, I occasionally feel burned out on UNIX even if it\'s an abstract idea/experience/codebase I cherish.
\n
When I sit down at a computer my goal is always to discover something new, learn a new concept, explore alternative paradigms, and, most of all, to have fun in the process.
\n
For most people, 9 is a tourist experience. For me, it\'s the final frontier. Although I have yet to learn as much about 9 as I have about UNIX, every time I swap hard drives and boot into 9 I feel a sense of coming home. Sometimes I think I am wilfully resisting becoming a 9 expert because it will result in me struggling to find the next non-bad OS paradigm to explore.
\n
And when I think about \"using a computer\", what do I really do on the computer? I learn about it, learn about the software running on it, and proceed to write about it so that I can reinforce the ideas in a Feynman-esque way. I\'m not really providing a real tangible value to the world because it\'s purely a \"hey, here\'s the things I learned the hard way so you don\'t have to\".
\n
Conclusion:
\n
\n
How do I do xyz on 9?
\n
\n
don\'t. search engines won\'t help. Man pages won\'t help. /sys/doc might help. Reading the source code won\'t help. have fun :)
\n
Or consider:
\n
term% vt -xb\nterm% ssh user@host\n$ tmux a\n$ reset\n# some commands\n$ reset\n# some commands\n$ reset\n
\n',406,0,1,'CC-BY-SA','UNIX, Plan 9',0,0,1),
(3688,'2022-09-21','Education, Certifications, and sipping on the Socials',1820,'I discuss the value of an Education, certifications, and a positive Social Media presence.','
I have had a lot of questions over the years about how to proceed with a career, education, and certifications. So, I give my take on these and what they mean relative to my life experiences. Individual mileage may vary. I also discuss the need to have a public facing social media presence that is active and consistent. Hide the private Socials and search to see what actually shows up when searching for yourself. Your future employers will. Just sayin\'.
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,socialmedia,education,certifications',0,0,1),
(3674,'2022-09-01','Emergency Show posted in 2012. MUD',1241,'In today\'s show klaatu drags us through the mud with his somewhat belated descovery.','
\nMUD \nFrom Wikipedia, the free encyclopedia \nA MUD ( originally Multi-User Dungeon, with later variants Multi-User Dimension and Multi-User Domain), is a multiplayer real-time virtual world, usually text-based. MUDs combine elements of role-playing games, hack and slash, player versus player, interactive fiction, and online chat. Players can read or view descriptions of rooms, objects, other players, non-player characters, and actions performed in the virtual world. Players typically interact with each other and the world by typing commands that resemble a natural language. \nhttps://en.wikipedia.org/wiki/Multi-User_Dungeon\n
\n\n
\nTinTin++, aka tt++, is a free MUD client for Mac OS X, Linux, and Windows. The Windows port named WinTin++ (using the PuTTY derived mintty terminal) is available for those who do not use Cygwin (A Linux/Unix emulator for Windows) and runs on Windows Xp, Windows Vista, and Windows 7. Besides MUDs, TinTin++ also works well with MUSH, Rogue, BBS, and Linux servers. \nhttp://tintin.sourceforge.net/\n
\n\n
\nAncient Anguish \nFrom Wikipedia, the free encyclopedia \nAncient Anguish, abbreviated AA, is a fantasy-themed MUD, a text-based online role-playing game. Founded in 1991 by Balz \"Zor\" Meierhans and Olivier \"Drake\" Maquelin, it opened to the public on February 2, 1992. It is free to play, but has been supported by player donations since 1994. \nhttps://en.wikipedia.org/wiki/Ancient_Anguish\n
\n',78,0,0,'CC-BY-SA','RPG,MUD,TinTin++,WinTin++',0,0,1),
(3681,'2022-09-12','Rust 101 Episode 3: Functionally Insane',2481,'In this episode BlacKernel teaches you how to make functions and for loops in rust','
In this episode BlacKernel is back! (Although a lot more loopy than I remember being while recording)
\n
And teaching you how to make functions, for loops, and match statements in Rust.
\n
Points covered in this episode:
\n
\n
isize and usize number types in rust
\n
fn (function) declarations with arguments and return types
\n
match statements both bare and part of variable assignment
\n
for _ in 1..x loops. That is for loops over an iterator variable across a range of integers. \n
\n',396,25,1,'CC-BY-SA','rust, for loop, for, match, functions, loops, usize, isize, programming, tutorial',0,0,1),
(3697,'2022-10-04','Mis-information, Dis-information, and Fake News. You are a product and target for all of it.',4297,'Brady and I discuss Mis-information, Dis-information, and Fake News.','
Brady and I discuss Mis-information, Dis-information, and Fake News. We discuss what it is, how it is used, and we are all a product and target for all of it. We discuss ways to avoid deception which leads to a philosophical discussion about truth, morals, and ethics. Brady takes a moment on the couch discussing how understanding the matrix for what it is can affect you on a personal level.
Snopes \n(almost everything including politics, history, science, and technology) \nSnopes is one of the oldest fact-checking websites on the internet and it was started by David and Barbara Mikkelson in 1994. Apart from its huge repository of debunked stories, Snopes still tackles fake news and misinformation in a smart way. As fake information is getting more sophisticated in its language and tone, users are easily falling for it. So to counter the misinformation, Snopes offers detailed explanations from genuine sources (like WHO, CDC) and sets the facts straight. \nhttps://www.snopes.com/
\n
Politifact \n(all about fact-checking political claims) \nPolitiFact is one of the largest political fact-checking newsrooms in the US and for its impressive work in 2008, the website was awarded Pulitzer Prize for National Reporting. It’s run by the prestigious Poynter Institute (founder of International Fact-Checking Network) and reporters from the independent Tampa Bay Times. \nhttps://www.politifact.com/
\n
FactCheck.org \n(political claims, rhetorics, deception, and lies) \nPrimarily deals with political claims and rhetorics. However, the website also tries to bring accountability to public officials by exposing deception and their lies. It’s an attempt to bring more factual accuracy to the public discourse which is not just limited to politics, but also extends to TV ads, speeches, interviews, and news releases. \nhttps://www.factcheck.org/fake-news/
\n
ProPublica \n(deep dive for hidden truth) \nProPublica is an independent investigative online newsroom. More than a fact-checking website, but a portal where you can dive deep and find the hidden truth. For its far-reaching work in the public interest, ProPublica has been awarded several Pulitzer Prizes for public service, explanatory reporting, national reporting, and investigative journalism. As for the coverage, it goes beyond politics and looks into healthcare, education, finances, criminal justice and more. The website is funded by the Knight Foundation, MacArthur Foundation, Ford Foundation, and other few philanthropic institutes. \nhttps://www.propublica.org/
\n
OpenSecrets \n(politics) \nOpenSecrets finds the effects of money lobbying into electoral politics and fact-checks political speeches and claims. It tracks how a politician is being funded and who are the firms that are funneling money into politics. It was started by the Center for Responsive Politics (CSR) way back in 1983. And as a result of the long operation, OpenSecrets has now one of the largest public databases of donors and political beneficiaries. \nhttps://www.opensecrets.org/
\n
Washington Post Fact Checker \n(critical analysis to what politicians have said this week) \nFact-checking column under diplomatic correspondent, Glenn Kessler. It does not fact-check every claim on politics and economy, instead the website offers critical analysis to what politicians have said this week. It tries to underline facts and context against a seemingly factful narrative. \nhttps://www.washingtonpost.com/news/fact-checker/
\n
Full Fact \n(Fact-checking website focused on the UK and Europe) \nA one-stop online portal where you can find information on a wide variety of topics. Full Fact is quick to debunk claims with well-resourced articles and by citing research papers by academics and professionals. So, no matter if it’s a post about technology, medicine or some supernatural power, Full Fact sets the facts straight in a timely manner. It’s a team of independent fact-checkers and campaigners who find a multitude of viral posts from social media and expose them to counter misleading people on the internet. Full Fact runs a “Viral Posts on Facebook” page where it lists out all the outrageous claims and debunks them with detailed explanation and authentic sources. \nhttps://fullfact.org/ and for most recent https://fullfact.org/latest/
\n
Alt News \n(fake claims and political misinformation in India) \nAlt News is also one of the few fact-checking websites in India which is certified by IFCN (International Fact-Checking Network). It’s run by Pravda Media Foundation and offers its fact-checking service in both English and Hindi. As for funding, Alt News primarily relies on user donations and other independent media trusts. The website is also in partnership with WhatsApp for busting fake news on its chat platform. Apart from that, Alt News regularly debunks claims made on social media platforms covering science, education, and society at large. \nhttps://www.altnews.in/
\n
BOOM FactCheck \n(fact-checking website in India) \nThis is a fact-checking website in India that exposes fake news on digital platformsIt. BOOM is a signatory of the IFCN Code of Principles and sticks to a high standard of fact-checking methodology. The website is run by Data journalist, Govindraj Ethiraj who earlier worked at Bloomberg. And like other fact-checking websites, Boom also relies on ads and user donations. Apart from this, Boom has a tie-up with WhatsApp to fight the war of misinformation. Boom offers its service in three languages i.e. English, Hindi, and Bengali. Further, it covers the current news cycle, political rhetorics, viral claims made on social media, urban legends, myths, and rumors. \nhttps://www.boomlive.in/
\n
SM Hoax Slayer \n(fake information on social media platforms) \nSM Hoax Slayer is quick to debunk the claim and update the users through its social media channels. According to the founder, the project started as a place to puncture harmless lies, pranks, and rumors, but soon it developed into a full-fledged fact-checking website. Many mainstream newspapers and media houses including Aaj Tak and Navbharat Times cite SM Hoax Slayer as a reliable source for busting fake news. Coming to funding, SM Hoax Slayer is mostly run by volunteers and funded by user donations and ads. \nhttps://smhoaxslayer.com/
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,misinformation,disinformation,fakenews',0,0,1),
(3706,'2022-10-17','The Future of Technology',3054,'A philosophical look at the future of technology.','
Brady and I discuss people and technology; where it was, where we are, and where we are going. Put on your philosophy hats!
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,socialmedia,technology,philosophy,future',0,0,1),
(3716,'2022-10-31','How I got in to Tech',531,'My journey in to technology','
I share my story about how I got in to technology.
\n',405,29,1,'CC-BY-SA','career,technology',0,0,1),
(3683,'2022-09-14','Add a favourite to OSMAnd',97,'Ken keeps forgetting how to add a favourite to OSMAnd','
I keep forgetting how to add a favorite to OSMAnd, so I\'ve recorded this show to remind myself how to do it.
\n\n\n
Search for a location, either in the Hamburger Menu or clicking the Magnifying glass icon
\n
Type in your address and select the place
\n
The screen will appear with a Locator Pin
\n
On the bottom click Add and Save
\n
You can optionally include them in a group
\n\n\n\n\n\n\n\n\n
\nAbout https://en.wikipedia.org/wiki/OsmAnd \n\nOsmAnd is a map and navigation app for Android and iOS. It uses the OpenStreetMap map database for its primary displays, but is an independent app not endorsed by the OpenStreetMap Foundation\n
\n\n\n',30,0,0,'CC-BY-SA','OSMAnd, OSM, Open Street Maps, Android',0,0,1),
(3685,'2022-09-16','Budget and an Android app',122,'Zoho docs for budgeting','
WakeOnLAN is the protocol name given to the so-called Magic Packet technology, developed by AMD and Hewlett Packard for remotely waking up a remote host that may have been automatically powered-down because of its power management features. Although power management allows companies and individuals to cut power usage costs, it presents a problem for IT departments especially in being able to quickly and efficiently remotely manage PC\'s, especially during off-hours operation when those PC\'s are most likely to be in a suspended or standby state, assuming power management features are enabled.
\n
\n',129,0,0,'CC-BY-SA','Wake on Lan, wol',0,0,1),
(3686,'2022-09-19',' Followup for HPR3675: Clarifications on the path traversal bug',2335,'installing a plan 9 cpu+web server, namespaces to the rescue, web app security models and more','
Followup for HPR3675: Installing a Plan 9 CPU server, Plan 9 web server, clarifications on the path traversal bug, private namespaces to the rescue, web application security models
Hostowner is similar to root but not quite. In our configuration, hostowner is close to being equivalent to a root user. The user= line in our bootprompt sets the hostowner.
\n
For automatic booting (aka not entering a password at the physical machine every time we power it in), we need to add the hostowner\'s key to nvram.
\n
term% nvram=/dev/sdF0/nvram auth/wrkey\nbad nvram des key\nbad authentication id\nbad authentication domain\nauthid: <ExampleUser>\nauthdom: cirno\nsecstore key: <press the return key if you do not want to type this at boot time>\npassword: <make it 8 chars>\n
\n
Configure auth server
\n
In order to connect to the system over the network, the new user must be added to the auth server.
\n
term% auth/keyfs\nterm% auth/changeuser <ExampleUser>\nPassword: <what you put earlier>\nConfirm password:\nAssign new Inferno/POP secret? [y/n]: n\nExpiration date (YYYYMMDD or never) [never]: never\nPost id:\nUser's full name:\nDepartment #:\nUser's email address:\nSponsor's email address:\nuser <ExampleUser> installed for Plan 9\n
\n
Configure permissions
\n
/lib/ndb/auth is similar to a /etc/sudoers. This configuration for the new user allows him to execute commands as other users except for the sys and adm users (but sys and adm are more like groups but who cares).
\n
append to /lib/ndb/auth
\n
hostid=<ExampleUser>\n uid=!sys uid=!adm uid=*\n
\n
then reboot
\n
Test if it worked with drawterm
\n
The 9front version of drawterm must be used as it supports the better crypto in 9front. Other drawterm versions probably won\'t work.
\n
$ /opt/drawterm -u <ExampleUser> -h example.com -a example.com -r ~/\n
\n
Configure rc-httpd
\n
edit /rc/bin/rc-httpd/select-handler
\n
this file is something like /etc/httpd.conf on a UNIX system.
\n
#!/bin/rc\nPATH_INFO=$location\n\n switch($SERVER_NAME) {\n case example.com\n FS_ROOT=/sys/www/$SERVER_NAME\n exec static-or-index\n\n case *\n error 503\n}\n
\n
To listen on port 80 and run the handler on port 80:
cpu% cd\ncpu% mkdir /sys/www && cd www\ncpu% hget http://werc.cat-v.org/download/werc-1.5.0.tar.gz > werc-1.5.0.tgz\ncpu% tar xzf werc-1.5.0.tgz\ncpu% mv werc-1.5.0 werc\n\n# ONLY DO THIS IF YOU *MUST* RUN THE THINGS THAT ALLOW WERC TO WRITE TO DISK\n# EG. DIRDIR, BLAGH, ETC\n# DON'T DO THIS, JUST USE DRAWTERM OVER THE NETWORK\n# HTTP CLIENTS SHOULD NEVER BE ALLOWED TO WRITE TO DISK\n# PLEASE I BEG YOU\ncpu% cd .. && for (i in `{du www | awk '{print $2}'}) chmod 777 $i\n\ncpu% cd werc/sites/\ncpu% mkdir example.com\ncpu% mv default.cat-v.org example.com\n
Test the website. Werc is fiddly. Werc is archaic. Werc is fun.
\n\n
Path traversal vulnerabilities in old versions of rc-httpd
\n
Using release COMMUNITY VS INFRASTRUCTURE, an old release with old rc-httpd, I have done the above steps. In current releases this bug no longer exists. Use current releases.
\n
The vulnerability
\n
# get list of werc admin users\n[root@localhost]# curl http://cirno/..%2f..%2f/etc/users/admin/members\npwn\n# get that werc user's password\n[root@localhost]# http://cirno/..%2f..%2f/etc/users/pwn/password\nsupersecret\n
\n
Wait, the passwords for werc are stored in plain text? Let\'s log in
This is what happens when you have path traversal vulnerabilities, an authentication vulnerability in your CMS, and share login/passwords
\n
How the static-or-cgi handler works
\n
rc-httpd calls various handler scripts that decide what to do with requests. In the example configuration for werc, rc-httpd is instructed to call the static-or-cgi script.
\n
I will compile these archaic rc scripts into pseudo code for the listener.
\n
The static-or-cgi handler (the handler specified in the httpd config) is simple:
Adding a sanitizer. By comparing the encoded url against an actual hypothetical file path and exiting if there is a mismatch, all %2f funny business is avoided.
\n\n
Other (optional) bad config options in werc
\n
rc-httpd aside, a bad werc config can still lead to website defacement if your non rc-httpd webserver has a path traversal vulnerability.
\n
Additionally I have modified the DAC for /sys/www to allow werc, a child process of rc-httpd to write to disk. rc-httpd runs as the none user so it\'s not typically allowed to write to disk unless explicitly permitted. I do not allow this on my 9 webserver because it\'s the worst idea in the history of all time ever.
\n
I enabled the dirdir and blagh modules as if I were the type of admin who does a chmod -R 777 /var/www/htdocs because that\'s what the wordpress installation guide told me to do so I could have a cool and easy way to modify my website from the browser.
\n
Let\'s pretend that I\'m not the admin of this system and scrape the werc config just to see if the hypothetical badmin has these modules enabled.
\n
# get config\n[root@localhost]# curl http://cirno/..%2f..%2f/sites/cirno/_werc/config\nmasterSite=cirno\nsiteTitle='Werc Test Suite'\nconf_enable_wiki\nwiki_editor_groups admin\n
\n
Hmmm, looks like these modules are enabled so we can assume that httpd is allowed to write to disk. Let\'s modify cirno/index.md to warn the admin. As a funny joke. Totally not a crime under the Computer Fraud and Abuse Act. Totally not an inappropriate way to warn admins about a vulnerability.
\n
[root@localhost]# curl -s cirno | pandoc --from html --to plain\nquotes | docs | repo | golang | sam | man | acme | Glenda | 9times |\nharmful | 9P | cat-v.org\n\nRelated sites: | site updates | site map |\n\nWerc Test Suite\n\n- › apps/\n- › titles/\n\nSECURITY ADVISORY:\n\nlol this guy still hasn't figured out the ..%2f trick\n\nPowered by werc\n
\n
Modifying werc to support password hashing
\n
Adding password hashes isn\'t too difficult. Being constrained by time, I have not done this quite yet. Reading the source code, all it takes is modifying 2 werc scripts: bin/werclib.rc and bin/aux/addwuser.rc
\n
% echo 'supersecret' | sha1sum -2 512\n
\n\n
Private namespaces to the rescue
\n
Luckily enough, the webserver runs as the none user with it\'s own namespace.
\n
Comparing the hostowner\'s namespace and none user\'s namespace
\n
I grab the namespace from the system console (ie not from drawterm) and from the listen command, then run a diff (unix style) to show the differences.
\n
cpu% ns | sort > cpu.ns\ncpu% ps -a | grep -e 'listen.*80' | grep -v grep\nnone 355 0:00 0:00 132K Open listen [/net/tcp/2 tcp!*!80]\ncpu% ns 355 | sort > listen.ns\ncpu% diff -u listen.ns cpu.ns\n--- listen.ns\n+++ cpu.ns\n@@ -6,17 +6,29 @@\n bind /amd64/bin /bin\n bind /mnt /mnt\n bind /mnt/exportfs /mnt/exportfs\n+bind /mnt/temp/factotum /mnt/factotum\n bind /n /n\n bind /net /net\n bind /root /root\n+bind -a '#$' /dev\n bind -a '#I' /net\n+bind -a '#P' /dev\n+bind -a '#S' /dev\n bind -a '#l' /net\n+bind -a '#r' /dev\n+bind -a '#t' /dev\n+bind -a '#u' /dev\n+bind -a '#u' /dev\n bind -a '#¤' /dev\n bind -a '#¶' /dev\n+bind -a '#σ/usb' /dev\n+bind -a '#σ/usbnet' /net\n bind -a /rc/bin /bin\n bind -a /root /\n+bind -b '#k' /dev\n bind -c '#e' /env\n bind -c '#s' /srv\n+bind -c /usr/pwn/tmp /tmp\n cd /usr/pwn\n mount -C '#s/boot' /n/other other\n mount -a '#s/boot' /\n@@ -26,4 +38,4 @@\n mount -a '#s/slashmnt' /mnt\n mount -a '#s/slashn' /n\n mount -aC '#s/boot' /root\n-mount -b '#s/factotum' /mnt\n+mount -b '#s/cons' /dev\n
\n
The major difference is that the hostowner (equivalent to root user) has a lot more things bound to his namespace:
\n
\n
\'#$\' PCI interfaces
\n
\'#P\' APM power management
\n
\'#S\' storage devices
\n
\'#r\' realtime clock and nvram
\n
\'#t\' serial ports
\n
\'#u\' USB
\n
\'#σ\' /shr global mountpoints
\n
\'#k\' keyboard
\n
/tmp directories
\n
\'#s\' various special files relating to services
\n
\n
The listen process in question is fairly well isolated from the system. Minimal system damage can be caused by pwning a process owned by none.
\n\n
Closing
\n
An argument could be maid that the rc-httpd vulnerability was \"not a bug\" because \"namespaces are supposed to segregate the system\".
\n
I disagree on this point. Namespaces are good and all but security is a multi-layer thing. Relying on a single security feature to save your system means relying on a single point of failure. Chroot escapes, namespace escapes, container escapes, and VM escapes are all things we need to be thinking about when writing software that touches the internet. Although unlikely, getting pwnd in spite of these security methods is still possible; all user input is dangerous and all user input that becomes remote code execution always results in privilege escalation no matter how secure you think your operating system is. Each additional layer of security makes it harder for attackers to get into the system.
\n
For example, when I write PHP applications, I consider things in this order:
\n\n
don\'t pass unnecessary resources into the document root via symlinks, bind mounts, etc.
\n
never ever use system() in a context where user input can ever be passed to the function in order to avoid shell escapes
\n
sanitize all user input depending on context. Ex: if the PHP program is directly referencing files, make a whitelist and compare requests to this whitelist. If the PHP process is writing to a database, use prepared statements.
\n
fire up a kali linux vm and beat the test server half to death
\n
iterate upon my ignorance
\n
doubly verify DAC just to be sure
\n
re-check daemon configs to make sure I\'m not doing anything stupid
\n
FINALLY: rely on SELinux or OpenBSD chroots (depending on prod env) to save me if all else failed
\n\n
And of course the other things like firewalls (with whitelists for ports and blacklists for entire IP address blocks), key based ssh authentication, sshd configurations that don\'t make it possible to enumerate users, rate limiters, etc.
\n
Each layer of security is like a filter. If you have enough layers of filters it would take an unrealistic amount of force to push water through this filter. Although no system is perfectly safe from three letter agencies, a system with multiple layers of security is typically safe from drive-by attacks.
\n
Final exercise: intentionally write a php script that does path traversal. Run this on a system with SELinux. Try to coax /etc/passwd out of the server. Now try php-fpm instead of mod_php or vice-versa. You\'ll be surprised when even MAC doesn\'t protect your system.
\n
Even now, after spending almost a month and a half worth of after work hacker hours almost exclusively on 9, I enjoy it more than when I began and even more than when using it in semi-regular spurts in years past. The purpose of research operating systems is to perform research, be it about the design of the system otherwise. Where would we be without private namespaces? How can I use this idea in the real world? What would the world look like if we had real distributed computing instead of web browsers (which are the new dumb terminal)? Is there a use case for this in the real world? What can we learn from single layer security models? What can we do to improve the system?
\n
Plan 9 is perfect for this type of research. I\'m considering writing an httpd in C and a werc-like (minus the parts I don\'t like) in C and modifying the namespace for the listener so that I can run a webserver on 9 without pulling in /bin in order to reduce the possibility of a shell escape.
\n
I think that in order to improve ourselves, we must be critical of ourselves. We must be critical of the things we enjoy in order to improve them and learn something new in the process. For software especially, there is no such thing as perfection, only least bad. And my final thought:
\n
\n
Criticism: This program/OS/whatever sucks
\n
\n
\n
Response: I know, help me fix it.
\n
\n',406,0,1,'CC-BY-SA','Plan 9, private namespaces, security, research operating systems',0,0,1),
(3695,'2022-09-30','How I watch youtube with newsboat',663,'Using youtube\'s channel RSS feeds to watch youtube from the command line','
How I watch youtube with newsboat
\n
I find that the youtube web ui is designed to keep users on the site by feeding them an unending stream of information. Bright colors, distracting thumbnails, peanut galleries, etc. I prefer to consume my videos in the same way I consume everything else: via RSS.
\n
RSS is my favorite way of aggregating things that other people have made because it allows me, the user, to interact with their things
\n
The only dependencies not on a standard UNIX system are newsboat and a video player. I also use yt-dlp to download videos for later viewing. I like mpv but you can substitute your own.
\n
$ sudo $pkgmrg install newsboat mpv yt-dlp
\n
Getting RSS feeds from youtube
\n
Youtube (currently) provides RSS feeds for channels.
\n
Finding Youtube channel ID
\n
Sometimes channels have vanity URLs that can make it difficult to find the channel ID. Other times, the URL contains the channel ID. All youtube channel IDs start with the string UC so we can easily grep for them.
\n
$ curl https://www.youtube.com/c/RMCRetro | grep --color "href=\\"https://www.youtube.com/channel/UC\\""\n[ lots of nonsense ]\nhref="https://www.youtube.com/channel/UCLEoyoOKZK0idGqSc6Pi23w"\n[ lots of nonsense ]
\n
In order to turn this channel ID into something useful, we create the following URL:
The export format is a CSV that contains the channel IDs for all of our subscriptions.
\n
Channel Id,Channel Url,Channel Title\nUCLEoyoOKZK0idGqSc6Pi23w,http://www.youtube.com/channel/UCLEoyoOKZK0idGqSc6Pi23w,RMC - The Cave
\n
Newsboat url list
\n
Newsboat reads it’s list of URLs from ~/.config/newsboat/urls. Every url we add to this list will be automaticlly fetched. You can make separate URL lists for your list of videos and list of standard text based RSS feeds
\n
If you have an exported CSV, you can easily modify it so that newsboat will accept it as a list of URLs by deleting row 1, column 1+comma, and replacing the comma between the URL and channel name with a tab character. Doing a sed \'s/channel\\//feeds\\/videos.xml?channel_id=/g\' on the file is an easy way to replace the website URL with the feed url. Newsboat only reads the first field of every row so the channel name can be kept for easier subscription management.
\n
http://www.youtube.com/feeds/videos.xml?channel_id=UCLEoyoOKZK0idGqSc6Pi23w RMC - The Cave
\n
Newsboat config
\n
In order to play videos, we need to add some macros to the newsboat config file at ~/.config/newsboat/config
\n
Mine looks like this.
\n
# load URLS on launch\nauto-reload yes\n\n# vim binds\nbind-key j down\nbind-key k up\nbind-key j next articlelist\nbind-key k prev articlelist\nbind-key J next-feed articlelist\nbind-key K prev-feed articlelist\nbind-key G end\nbind-key g home\nbind-key d pagedown\nbind-key u pageup\nbind-key l open\nbind-key h quit\nbind-key a toggle-article-read\nbind-key n next-unread\nbind-key N prev-unread\nbind-key D pb-download\nbind-key U bashow-urls\nbind-key x pb-delete\n\n# macro setup\nbrowser linkhandler\nmacro , open-in-browser\n\n# launch video player\nmacro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler\n\n# download video\nmacro d set browser "yt-dlp"; open-in-browser ; set browser linkhandler\n\n# download audio only\nmacro a set browser "yt-dlp --embed-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler
\n
Video demo
\n
This is a demo of using newsboat with videos. In order to execute the macros, you type , then v or whatever other letter you set the macro to.
\n
video in webm format your web browser or operating system does not support free video codecs :(
\n
A url list to get you started
\n
https://www.youtube.com/feeds/videos.xml?channel_id=UC3ts8coMP645hZw9JSD3pqQ Andreas Kling\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA Computerphile\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC15BJjhPr4d5gTClhmC4HRw Elliot Coll\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCxQKHvKbmSzGMvUrVtJYnUA Learn Linux TV\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ LockPickingLawyer\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCl2mFZoRqjw_ELax4Yisf6w Louis Rossmann\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA Luke Smith\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA Mental Outlaw\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w Modern Vintage Gamer\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCLEoyoOKZK0idGqSc6Pi23w RMC - The Cave\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC4rqhyiTs7XyuODcECvuiiQ Scott The Woz\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC5I2hjZYiW9gZPVkvzM8_Cw Techmoan\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q Technology Connections\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC8uT9cgJorJPWu7ITLGo9Ww The 8-Bit Guy\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw The Linux Experiment\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCFMx-JitepTttWc-ABHhu8A This Week in Retro\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCsnGwSIHyoYN0kiINAGUKxg Wolfgang's Channel\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCJ8V9aiz50m6NVn0ix5v8RQ decino
\n',406,0,1,'CC-BY-SA','newsboat, RSS, youtube',0,0,1),
(3956,'2023-10-02','HPR Community News for September 2023',2470,'HPR Volunteers talk about shows released and comments posted in September 2023','\n\n
New hosts
\n
\nWelcome to our new hosts: \n\n Noodlez, \n hobs.\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 8 comments in total.
hpr3948\n(2023-09-20) \"Cleaning up my mancave and talking about Creativity\"\nby knightwise.
\n
\n
Comment 1:\nKevin O'Brien on 2023-09-24:\n\"TUCOWS\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
FOSDEM 2024
\n
\n
FOSDEM 2024 will take place on Saturday 3rd and Sunday 4th of\nFebruary 2024 in Brussels, Belgium. It will be at the usual location,\nthe ULB (Université libre de Bruxelles).
\n
Neither Ken nor Dave will be attending this time.
\n
If anyone wishes to apply for a stand on HPR\'s behalf, and if\npeople want to help out doing the key speaker interviews, please get in\ntouch.
\n
\n
Site migration
\n
\n
During September effort has gone into fixing broken links in the\nstatic site templates and the database itself.
\n
There are still more links to correct however.
\n
Each show page now contains a link to the version of the show\nuploaded to the Internet Archive. If there are HPR links in older shows\nthat have not been updated yet, this copy can be used instead.
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3691,'2022-09-26','Starship.rs the best prompt I don\'t use',1529,'Bash prompts','
\n',78,0,0,'CC-BY-SA','bash,ps1,terminal,linux',0,0,1),
(3698,'2022-10-05','Spectrogram',949,'Edit audio as a spectrogram','
Here\'s a view of my voice. The bright spots at the bottom of the image are my voice, and the bright burst at the top is a click caused by saliva.
\n\n
Here\'s me inhaling. Notice how sparse this is compared to my voice.
\n\n
One thing I fail to mention in the episode is that there are network monitors that render network activity as a spectrogram, too. If you don\'t have a Wi-Spy, it\'s worth looking at.
\n',78,0,0,'CC-BY-SA','audio',0,0,1),
(3726,'2022-11-14','Breaches ever reaching',251,'A short episode about the reaching effects of breaches and forgotten accounts','
A short episode about the reaching effects of breaches and accounts you may have forgotten about.
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,breach,data reduction,privacy',0,0,1),
(3692,'2022-09-27','What is a real hacker?',1840,'I discuss the issue of what makes a real hacker with my my son','
In this episode, I discuss the ever prominent question of \"What is a real hacker?\" in explicitly explicit language. So enjoy the discussion and give me your thoughts. This topic always gets peoples feathers ruffled, so agree, disagree? Leave your thoughts or post your own segment on HPR!
\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,hacking,hacker',0,0,1),
(3693,'2022-09-28','Fixing the automatic cutoff mechanism to an electric mower',274,'Rho`n describes fixing the safety mechanism to his electric mower','
Synopsis
\n\n
In this episode, Rho`n fixes the safety mechanism to his Neuton electric mower. Recently the automatic cutoff mechanism was getting finicky. Needing to pull the safety bar back just the correct amount to keep the mower running. Often needing to keep hands on both the left and right sides of the safety bar to prevent the mower from turning off.
\n
After opening up the housing holding the safety bars, it appeared that the tension spring which causes the bars to disengage from the switch when the bars are released was loose. This would allow the prong that the bars push into the switch contact to slip off the contact and slide overtop of the switch—turning off the mower. After tightening the coils and putting it back in place, the issue was resolved.
\n\n',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,repair',0,0,1),
(3694,'2022-09-29','Robo Tripping Ravelords of the Apocalypse',616,'Organic Synthesis of Human and Machine Occurs Post Cosmic Event ','\r\n
In the aftermath of the cosmic event that destroyed all computers below a certain die size, more robust machines emerge from the ashes.
\r\n\r\n
\r\n',401,0,0,'CC-BY-SA','beam,righttorepair,robots,mechatronics,apocalypse',0,0,1),
(3699,'2022-10-06','Old and new videogames/board games with guest binrc',2552,'We will dive into our favorite games or others with interesting mechanics.','
\n',407,0,1,'CC-BY-SA','games,guest,videogames,board games',0,0,1),
(3701,'2022-10-10','ReiserFS - the file system of the future',1171,'The history and future of ReiserFS, its involvement with DARPA, a sordid murder and Kernel politics','
\n
ReiserFS – The file system of the future
\n
Intro: Welcome to HPR; What I do; How I got in to computing; How I got in to Slackware and discovered ReiserFS
\n
A history of ReiserFS: Previous episode; Brief recap; A brief history; Lessons learned and experiences gained; Some tools to use
\nReiserFS is a general-purpose, journaling file system initially designed and implemented by a team at Namesys led by Hans Reiser and licensed under GPLv2. Introduced in version 2.4.1 of the Linux kernel, it was the first journaling file system to be included in the standard kernel. ReiserFS was the default file system in Novell\'s SUSE Linux Enterprise until Novell decided to move to ext3 on October 12, 2006, for future releases. \n\nNamesys considered ReiserFS version 3.6 which introduced a new on-disk format allowing bigger filesizes, now occasionally referred to as Reiser3, as stable and feature-complete and, with the exception of security updates and critical bug fixes, ceased development on it to concentrate on its successor, Reiser4. Namesys went out of business in 2008 after Reiser\'s conviction for murder. The product is now maintained as open source by volunteers. The reiserfsprogs 3.6.27 were released on 25 July 2017. \n\nReiserFS is currently supported on Linux without quota support. It has been discussed for removal from the Linux kernel since early 2022 due to a lack of maintenance upstream, and technical issues inherent to the filesystem, such as the fact it suffers from the year 2038 problem; it was deprecated in Linux 5.18, with removal planned for 2025.\n
\n',411,0,0,'CC-BY-SA','hans reiser, reiserfs, reiser4, reiser5, slackware, linux, intro, darpa, acorn, amiga, commodore',0,0,1),
(3702,'2022-10-11','Easter Ogg',3722,'From Scotland, another chat between MrX and Dave Morriss','\n
Died September 8th 2022 at Balmoral Castle, Scotland, aged 96
\n
State funeral 2022-09-19
\n
\n
\n
\n
Navigation by phone:\n
\n
Dave’s phone battery out of charge on the outskirts of Liverpool on the way to OggCamp.
\n
MrX’s old Garmin GPS used weird routes when travelling
\n
Dave once met a lost driver going down Donkey Lane1 to the pedestrian railway crossing due to bad GPS directions
\n
\n
\n
\n
Domestic stuff:\n
\n
Dave’s house has been painted. It’s covered in harling (aka rough-cast or pebble-dash in England) which has very sharp stones embedded in it, and this paint covers these sharp stones.
\n
Plumbing issues: stopping a dripping tap, replacing the washer, or with modern taps the module.
\n
Advisability of calling in a plumber!
\n
\n
\n
\n
COVID-19, and related:\n
\n
The virus has not gone, even though there are many who pretend that it has.
\n
MrX and MrsX visited St Bees for a wedding with a Cèilidh and MrX caught COVID there, though it wasn’t serious. MrsX did not catch it!
\n
Immunology is hard to understand! Some cold-like illnesses may be caused by other corona viruses and may help protect against SARS-CoV-2.
\n
Dave has an Immunology book, but hasn’t read it yet! See the links for details.
\n
MrX mentioned Richard J Murphy in the context of being realistic about COVID-19 and continuing to take precautions.
\n
Reluctance to go shopping. Dave makes a weekly trip, wearing a mask. MrX uses Click and Collect.
\n
Dave has lost weight so some of his clothes are too big. MrX has trouble finding smaller sized clothes when shopping.
\n
\n
\n
\n
Old technology:\n
\n
MrX recently found a box in his wardrobe with six Psion 3c Organisers in it, in various states of disrepair. From these a functioning organiser was made, which is in regular use.
Dave had a Psion Series 5mx for a time, as did MrsX. Dave’s failed either because of a screen fault or a failure of the ribbon cable connecting to the screen.
\n
The Series 3c, and the later 3mx, have an Easter Egg available through a particular key sequence. This is a rendition of the anthem “Jerusalem”, and is included at the end of this episode (and is responsible for the show title).
\n
Dave had had a Psion Organiser II at work in the early days of organisers, but it was not particularly useful.
\n
MrX had an Atari Portfolio. He describes it as: a dreadful machine running DOS 2.11 \nIt regularly crashed, losing all its memory. I decided to ditch it after having to type out my contacts list every time it crashed.
\n
MrX also had a Nokia N810, an Internet Tablet running Linux.
\n
Dave couldn’t quite remember at the time of recording, but he bought a used Nokia 770 on eBay, which was the predecessor of the N810. This was also a Linux-based system, but it didn’t last more than a couple of weeks sadly.
\n
Both bought - and still have - the ASUS Eee PC. Dave’s is the 1005HA model.\n
\n
MrX still uses his from time to time
\n
Dave is thinking about installing a BSD flavour on his, but doesn’t use it often. It currently has CrunchBang installed.
Dave runs it on his desktop (and laptop) as well as two phones. The phones run KDE Connect and are configured to tell the desktop when a message arrives!
\n
\n
\n
\n
HPR New Year show:\n
\n
HonkeyMagoo (of the Linux LUGCast podcast) does a lot of the work with the recording in conjunction with Ken. He divides up the audio into shows, and in past years has prepared show notes.
\n
This year a LUGCast listener HPLovecraft did the notes, and they are very good!
\n
\n
\n
Postscript
\n
MrX found the Easter Egg, mentioned during our chat, on his Psion Series 3C, recorded it via Audacity, and sent me the resulting Easter Ogg! It has been appended to the main recording.
Donkey Lane is a public right of way, possibly since the 1700’s. It starts as a pedestrian-only pathway then turns into a narrow tarmac-covered roadway with a pedestrian-only railway crossing.↩︎
\n\n\n\n',225,0,1,'CC-BY-SA','chat, old technology, organiser',0,0,1),
(3705,'2022-10-14','The Year of the FreeBSD Desktop',4155,'I talk about configuring FreeBSD as a desktop OS and give tips for those coming from Linux','
Choose the correct arch for your system. amd64 is probably the one you want if you know nothing about computer architectures.
\n
you will have a lot of options:
\n
\n
*-bootonly.iso is a netinstall image that is for burning to a CD
\n
*-disc1.iso is a supplementary CD image for *-bootonly.iso
\n
*-dvd1.iso is a complete DVD image with extra packages
\n
*-memstick.img is a complete image for burning to a USB stick
\n
*-mini-memstick.img is a netinstall image for burning to a USB stick
\n
\n
I typically download and use one of the compressed memstick images. The mini image is fine but you probably want the regular memstick image if this is the first time you\'ve ever installed FreeBSD. It alleviates some of the stress that comes with installing wireless drivers.
\n
To burn a memstick image, use the disk destroyer program:
Because this is hardware specific, it\'s a homework assignment for the audience.
\n
Installation
\n
FreeBSD has a menu driven installer that walks the user through various steps:
\n
1. set keymap (leave default if you don\'t know)
\n
2. set hostname
\n
3. select sets
\n
There are many sets to choose from. New users probably want to install all of them. I typically only install the lib32 set and add the rest later.
\n
4. Partitioning
\n
bsdinstall makes it easy to partition your drives. The Auto(ZFS) option is probably what you want as the default UFS configuration is unjournaled.
\n
In the Auto(ZFS) menu, for a single hard drive installation, you want to stripe one disk. Select your hard drive.
\n
If you want full disk encryption, select the Encrypt Disks option.
\n
You also want to bump up the swap size to ram*1.5 as a general rule (so, for 4g of ram you will set 6g of swap, for 8g or ram you set 12g swap). If you selected Encrypt Disks, you should also select Encrypt Swap
\n
When you are done, proceed with the installation. You will gt a confirmation message asking if you want to destroy the disk(s) you selected. This is your last chance to go back.
\n
If you selected Encrypt Disks, you will be presented with a password prompt. This is the disk encryption password, not any user password.
\n
5. Wait for sets to install
\n
6. Configure root user
\n
After the sets are installed, you will set a root password.
\n
7. Network Config
\n
If your wireless card is supported, all the hard parts are already done for you. If your wireless card is not supported, you might need to plug in an ethernet cable and compile the drivers into the kernel.
\n
Select your card (em* is ethernet, wifi cards are named after their drivers)
\n
If you choose wifi, the installer will scan for networks and give you a menu to select one. If the network is encrypted, you will be presented with a password prompt.
\n
8. Time and date setup
\n
9. Service setup
\n
You will be presented with a menu that enables/disables services on system startup. You probably want all of them except local_unbound.
\n
10. Security config
\n
The next menu enables/disables security features. If nothing else, select disable_sendmail and clear_tmp
\n
11. Add users
\n
Simply add your user. You might want to add him to the wheel group if you plan on using sudo. I set my shell to tcsh but you can always change this later. A
\n
12. Final configuration
\n
You may want to install the handbook or modify any configurations you\'ve made so far. This will take some time. When you are done, apply the config and exit.
\n
13. Manual config
\n
Before you reboot the system and exit the installer, you are given a last opportunity to make any manual configurations. This is rarely needed for the average desktop user.
Before we begin modifying the system, we need a better editor.
\n
The pkg utility is used in a nearly identical way to any Linux package manager. The syntax pkg $verb $object persists. Verbs include install, remove, update, upgrade, search, etc.
\n
Because the only editors installed by default are vi, ed, and ee, let\'s install vim.
See rc.conf(5) and /etc/defaults/rc.conf for more information on what you can do.
\n
Snapshotting a sane fresh installation
\n
At this point, it is wise to take a recursive snapshot of your FreeBSD installation. This provides us with an easy way to roll back to a fresh, known working system configuration.
\n
root@fbsd# zfs snapshot -r zroot@freshinstall\nroot@fbsd# zfs list - tsnapshot\n
\n
If the system becomes unrepairable, we can simply rollback instead of reinstalling with a simple command:
Using zfs snapshots before and after making any potentially dangerous configuration changes saves a lot of headache in the long run because zfs is accessible from the recovery shell. Rollback with caution, user data may be lost.
\n
Homework assignment: write a series of cron jobs that automatically takes snapshots (and cleans up the old ones) of user data as a form of last line of defense version control
\n\n
Graphical user interfaces
\n
Install graphics drivers
\n
This varies depending on your GPU.
\n
root@fbsd# pkg install drm-kmod\n
\n
After installing this package, you will see a message on how to enable the driver for your specific hardware:
\n
For amdgpu: kld_list="amdgpu"\nFor Intel: kld_list="i915kms"\nFor radeonkms: kld_list="radeonkms"\n
\n
To enable one of these, you will need to add a line to your /etc/rc.conf. The earlier you place this line in the file, the sooner the kmods will load. For intel graphics, for example, you will add the following line:
\n
# /etc/rc.conf\n# -----------------\n[ lots of other stuff ]\n\n# intel graphics drivers\nkld_list="i915kms"\n
\n
To load the kmod on the fly (for larger resolution vt), run:
\n
root@fbsd# kldload i915kms\n
\n
You will also need to add your non-root user to the video group.
\n
root@fbsd# pw groupmod video -m $user\n
\n
Audio
\n
(hopefully) audio will just work. Supported audio interfaces are enumerated in man snd(4) and details on enabling/disabling drivers in /boot/lodaer.conf are also explained.
\n
To manage volume, use the mixer command. For example, setting the mic volume to 50% and the speaker volume to 95%:
\n
user@fbsd% mixer mic 50:50\nuser@fbsd% mixer vol 95:95\n
\n
The mixertui command can also be used. This program functions similarly to alsamixer on Linux.
\n
Depending on your hardware, the volume keys on your keyboard might not work. Adding a keybinding to a shell script is the usual solution and should be familiar to anyone who uses a desktop free window manager.
\n
Getting xorg
\n
root@fbsd# pkg install xorg\n
\n
The twm window manager is included with xorg by default. We can use it for testing our xorg configuration, mouse support, etc before continuing with larger desktop environments. Early troubleshooting always prevents foot shooting. Test early, test often.
\n
root@fbsd# startx\n
\n
Desktop Environments
\n
Refer to The handbook\'s instructions on desktops for instructions on non-suckless (ie suckmore setups). I have tested some of them on FreeBSD. KDE and Xfce are reliable. GNOME is mostly reliable. If you are running a big DE, you might have to modify polkit rules to do things like reboot the system from the GUI. Many larger desktops rely on FreeDesktop.org components. I personally do not like dbus so instead I use the suckless tools.
\n
But, for the sake of completeness, I will install a few for the masses. I installed each one of these independently and sequentially on the same system using zfs snapshots to roll back to a bare bones system without any DE installed.
This is how I use FreeBSD (and how I use most computers). I wrote a makefile that modifies the compile options so that the tools will build on FreeBSD and (optionally) adds the theme I use. You can find my suckless duct tape in this git repo.
\n
I also use xdm because it\'s small and fast.
\n
user@fbsd% sudo pkg install xdm\nuser@fbsd% sudo service xdm enable\n
\n
\n
A final note on desktops
\n
Sometimes desktops behave unexpectedly on FreeBSD (ie users cannot manage power settings, reboot the system, etc). Make sure your login user is in the wheel group (it\'s your computer, you probably are already in the wheel group) and most of the issues will be resolved. For users you don\'t want in the wheel group, you\'ll need to write a few polkit rules.
\n
Additionally, big desktops are typically compiled without the graphical components for modifying network connections.
\n
Similar to Arch or Gentoo, there is a bit of legwork left to the end user. You\'ll never know what you might learn about systems administration if you don\'t wilfully give yourself the opportunity.
\n
Shell tweaks
\n
I like colors in the shell for systems I use regularly. I also like aliases. We can modify our csh configuration file to automatically do the fancy for us.
\n
# ~/.cshrc\n# -----------------\n[ lots of stuff ]\n\n# prompt section\nif ($?prompt) then\n # An interactive shell -- set some stuff up\n #set prompt = "%N@%m:%~ %# "\n #set prompt = "%{\\033[31m%}%N@%m:%~ %#%{\\033[0m%} "\n set prompt = "%{\\033[1m%}%N@%m:%~ %#%{\\033[0m%} "\n set promptchars = "%#"\n\n set filec\n set history = 1000\n set savehist = (1000 merge)\n set autolist = ambiguous\n # Use history to aid expansion\n set autoexpand\n set autorehash\n set mail = (/var/mail/$USER)\n\n if ( $?tcsh ) then\n bindkey "^W" backward-delete-word\n bindkey -k up history-search-backward\n bindkey -k down history-search-forwarrd\n bindkey "^R" i-search-back\n endif\nendif\n\n# alias section\nalias la ls -aF\nalias lf ls -FA\nalias ll ls -lAF\nalias ls ls -GF\nalias lc ls -GF\n
If you install a large DE, most of the applications are pulled in as well. If not, you can always use xargs to pull in hundreds of gigabytes of programs:
Do a few package searches. What you want is probably there. If not, time to start porting :)
\n
Once you have everything configured how you want it, it\'s a good time to take another zfs snapshot.
\n\n
Quickstart
\n
Init system
\n
Instead of systemd, FreeBSD uses rc scripts for starting and stopping services. Everything is pretty much shell scripts. To modify the startup process, you simply edit /etc/rc.conf in a text editor.
\n
For systemctl like starting/stopping/enabling, you can do the following:
\n
root@fbsd# service sshd enable\nroot@fbsd# service sshd start\nroot@fbsd# service sshd restart\nroot@fbsd# service sshd stop\nroot@fbsd# service sshd disable\nroot@fbsd# service sshd onestart\nroot@fbsd# service sshd status\n
\n
Each service has it\'s own init file so sometimes a specific service might take different arguments than the standard ones you might expect.
\n
Networking
\n
Network interfaces are configured classically using ifconfig(8). If you want a network interface to persist across reboots, you add the information in /etc/rc.conf.
\n
WiFi is managed with wpa_supplicant. Refer to man wpa_supplicant.conf(8) for more information.
FreeBSD uses tcsh(1) as the default shell and includes sh(1) for bourne-like compatibility. You can install bash if you want.
\n
Package management
\n
There are two primary ways of managing software: binary packages and ports. Don\'t mix them if you don\'t know what you\'re doing, it can cause problems.
\n
To be brief: ports are like Gentoo. You spend a lot of time watching compiler output. The following programs help: synth, portmaster, poudriere.
\n
to be verbose: here is a quick guide on using the binary package management system:
As you can see, the syntax is nearly identical to dnf or apt.
\n
Filesystem
\n
The hierarchy of FreeBSD is slightly different than a typical Linux system. Refer to man hier(7) for more information.
\n
The biggest difference is that FreeBSD a logically organized system. For example: On Linux, everything seems to end up in /bin (which is a symlink to /usr/bin). Additionally, /sbin is just a symlink to /usr/sbin. On FreeBSD, the system is more organized. For example:
\n
/bin contains everything required to boot the system and /sbin contains everything required for fundamental administration.
\n
/usr/bin contains most everything else
\n
/usr/local contains everything installed by the package management system.
\n
User installed programs are configured in /usr/local/etc. This might be confusing at first but you\'ll get the hang of it.
\n
This logical separation might cause confusion when compiling software from source on FreeBSD but it\'s not too difficult to solve if you already know how about linker options and makefile modification.
\n
As for filesystems, apparently ext2, ext3, and ext4 have read/write support using the ext2fs(5) driver. I probably wouldn\'t boot from them but this exists. UFS is not journaled by default, proceed with caution. ZFS is very good.
\n
ZFS non-starter
\n
ZFS is cool because we can create partitions on a whim. Here is some shell output demonstrating listing datasets, creating datasets with a quota, destroying datasets, creating and using encrypted datasets, etc.
Really, I think FreeBSD is a viable desktop operating system for the types of people who already use Linux in a terminal-centric capacity. After all, UNIX is UNIX.
Editor\'s Note: This section was included from the comment sent by binrc.
\n',406,0,1,'CC-BY-SA','FreeBSD',0,0,1),
(3704,'2022-10-13','Follow up to hpr3685 :: Budget and an Android app',104,'I add a calendar to the budget spreadsheet in LibreOffice','
\n',318,0,0,'CC-BY-SA','Budget, spreadsheet, LibreOffice, OpenOffice',0,0,1),
(3708,'2022-10-19','Insomnia as a Hobby',466,'Fighting insomnia? Enjoy it...with a few tricks!','
I struggle with insomnia, instead of dreading it - I rather enjoy it now...here\'s how!
\n',389,0,0,'CC-BY-SA','insomnia,podcasts,librivox',0,0,1),
(3713,'2022-10-26','Bash snippet - short-circuit evaluation in Bash Boolean expressions',1000,'Found I could do this in Bash, so wanted to share!','\n
Preamble
\n
This is a case where I came upon a thing in Bash I had never considered before and was pleased and surprised that there was a way of doing what I wanted to do! If this is completely obvious to you, apologies, but it wasn’t to me!
\n
Overview
\n
Many programming languages have the concept of short-circuit evaluation in Boolean expressions. What this means is that in an expression such as:
\n
A AND B
\n
if A is false then the whole expression must be false, and B doesn’t have to be evaluated. That is because both arguments to AND have to be true for the overall result to be true.
\n
If A is true on the other hand, then B has to be evaluated to determine if the overall result is true.
\n
Similarly with:
\n
A OR B
\n
if A is true then the whole expression must be true and B can be skipped without evaluation. This is because only one argument to OR needs to be true to return a true result.
\n
If A is false on the other hand, then B has to be evaluated to determine if the overall result is false.
\n
Both of these expressions are evaluated from left to right. This is not a given in all languages. Some use special operators such as \'and_then\' and \'or_else\' which explicitly perform short-circuiting and left-to-right evaluation.
\n
Definition
\n
In simple terms, short-circuiting is where the evaluation of an expression is stopped as soon as its outcome is determined.
Short-circuit evaluation, minimal evaluation, or McCarthy evaluation (after John McCarthy) is the semantics of some Boolean operators in some programming languages in which the second argument is executed or evaluated only if the first argument does not suffice to determine the value of the expression: when the first argument of the AND function evaluates to false, the overall value must be false; and when the first argument of the OR function evaluates to true, the overall value must be true.
\n
\n
This article contains a table entitled Boolean operators in various languages which shows details of how various programming and scripting languages cater for this feature.
\n
Use case
\n
I was writing a Bash script in which I wanted to ask questions about various steps - should they be done or not? Alternatively, I wanted to be able to set an option to run without interaction and assume the answer is \'yes\' to all questions.
\n
I’d encountered short-circuit evaluation before in Pascal and Perl so I wondered if I could use it in Bash.
The requirement was that if YES was set to 1 I didn’t want the function to be called at all.
\n
I was a little surprised, and very happy, to find that this is what happens.
\n
Here is the full example from the script that started me thinking about this issue - and therefore caused me to make this show:
\n
#\n# We need a show directory. If it doesn't exist then we'll create it because\n# other scripts will use it.\n#\nif [[ ! -d $SHOWDIR ]]; then\n echo "${red}There is no directory for show $show${reset}"\n\n #\n # If the -Y option was not chosen ask with 'yes_no'. It -Y was chosen\n # we're to go ahead regardless. This relies on the fact that Bash\n # "short-circuits" logical expressions like this.\n #\n if [[ $YES -eq 1 ]] || yes_no 'Create directory? %s ' 'N'; then\n mkdir "$SHOWDIR"\n _silent "${green}Directory created for show $show${reset}"\n else\n _silent "${yellow}Not changed${reset}"\n fi\nfi
\n
Notes:
\n
\n
I have a Bash function that defines colours which is included into this script. That’s why you see \'echo \"${red}...${reset}\"\' in the above. I also have a function to turn off colour by setting the relevant variables to empty strings.
\n
The \'yes_no\' function takes a prompt string with an (optional) \'%s\' placeholder for the expected inputs and default. This is followed by the default: \'N\'.
\n
The function \'_silent\' writes the message given as its argument, depending on the setting of a \'SILENT\' variable set earlier.
\n
\n
Should it be used?
\n
Case 1
\n
Bash uses short-circuiting in other contexts. This was discussed in the Bash Tips series, episode 10 with the example:
\n
[ -e /some/file ] || exit 1
\n
Here the test is performed using \'-e\' to determine if \'/some/file\' exists. The result is either true or false. If the test returns true then the overall result of the or is true and the evaluation is short-circuited so that the \'exit 1\' is not invoked. If the test is false then the second expression has to be evaluated to determine the overall result, so the \'exit 1\' is invoked and the script exits.
\n
Incidentally, the \'[ -e file ]\' construct is actually an instance of the test command so could be written:
\n
test -e /some/file || exit 1
\n
You might be familiar with command pipelines which use this technique, such as:
\n
sudo apt update && sudo apt upgrade
\n
If the \'apt update\' is successful the \'apt upgrade\' is run. If it fails then the second command is not run.
\n
Case 2
\n
We have seen the example that prompted me to make this show:
\n\n',225,42,1,'CC-BY-SA','Bash,Boolean expression,short-circuit evaluation',0,0,1),
(3703,'2022-10-12','McCurdy House Tour',767,'operat0r brings us on a House Tour','
\n',36,0,1,'CC-BY-SA','ASMR',0,0,1),
(3707,'2022-10-18','Recovering a Massive 3.5 HP Electric Motor from a Treadmill',1006,'Retrieval of future robot parts in the field','
Figure 1 - trash \n Click the thumbnail to see the full-sized image
\n
Figure 2 - close-up \n Click the thumbnail to see the full-sized image
\n
Figure 3 - screen \n Click the thumbnail to see the full-sized image
\n
Figure 3 - parts collected \n Click the thumbnail to see the full-sized image
\n
Figure 5 - scrap iron \n Click the thumbnail to see the full-sized image
\n
Figure 6 - size comparison \n Click the thumbnail to see the full-sized image
\n',401,0,1,'CC-BY-SA','beam,righttorepair,robots,mechatronics',0,0,1),
(3709,'2022-10-20','Relationships to games and console generations',568,'Some ramblings about what next generation consoles used to mean to games, gamers and game developers','
I talk about my views on how much of an impact technological jumps\nused to make on gaming in previous decades vs this decade.
\n',412,0,0,'CC-BY-SA','Video Games, Game Consoles',0,0,1),
(3715,'2022-10-28','Secret hat conversations, Part 2.',3899,'Twin Tin Hats, feat. archer72.','
\n
Quantum computing
\n
\n
Quantum\ncomputing is a type of computation whose operations can harness the\nphenomena of quantum mechanics, such as superposition, interference, and\nentanglement. Devices that perform quantum computations are known as\nquantum computers. Though current quantum computers are too small to\noutperform usual (classical) computers for practical applications,\nlarger realizations are believed to be capable of solving certain\ncomputational problems, such as integer factorization (which underlies\nRSA encryption), substantially faster than classical computers.
\n
Today’s quantum\nsystems only include tens or hundreds of entangled qubits, limiting\nthem from solving real-world problems. To achieve quantum practicality,\ncommercial quantum systems need to scale to over a million qubits and\novercome daunting challenges like qubit fragility and software\nprogrammability.
\n
Quantum\ncomputers, if they mature enough, will be able to crack much of\ntoday\'s encryption. That\'ll lay bare private communications, company\ndata and military secrets. Today\'s quantum computers are too rudimentary\nto do so. But data surreptitiously gathered now could still be sensitive\nwhen more powerful quantum computers come online in a few years.
\n
Simple\npasswords can be cracked using brute force; this is where an\nattacker uses tools that try every possible password until the correct\none is found. This generally done using a dictionary attack, where an\nattacker will try known passwords and words until they find the one that\nunlocks an account. There are databases available on the internet that\ncontain personal names as well as dictionary and slang words, in scores\nof languages, along with passwords found in data breaches, and\nmore.
\n
\n
Encryption.
\n
\n
The Advanced\nEncryption Standard (AES) specifies a FIPS-approved cryptographic\nalgorithm that can be used to protect electronic data. The AES algorithm\nis a symmetric block cipher that can encrypt (encipher) and decrypt\n(decipher) information. Encryption converts data to an unintelligible\nform called ciphertext; decrypting the ciphertext converts the data back\ninto its original form, called plaintext. The AES algorithm is capable\nof using cryptographic keys of 128, 192, and 256 bits to encrypt and\ndecrypt data in blocks of 128 bits.
\n
The National Security Agency (NSA) reviewed all the AES\nfinalists, including Rijndael, and stated that all of them were secure\nenough for U.S. Government non-classified data. In June 2003, the U.S.\nGovernment announced that AES could be used to protect classified\ninformation: For cryptographers, a cryptographic \"break\" is anything\nfaster than a brute-force attack – i.e., performing one trial decryption\nfor each possible key in sequence. A break can thus include results that\nare infeasible with current technology. Despite being impractical,\ntheoretical breaks can sometimes provide insight into vulnerability\npatterns. The largest successful publicly known brute-force attack\nagainst a widely implemented block-cipher encryption algorithm was\nagainst a 64-bit RC5 key by distributed.net in 2006.
Enable Two-Factor authentication whenever possible. While a great\npassphrase will help secure you and the Commonwealth’s data, a second\nfactor makes it that much more difficult for hackers to gain\naccess.
"I don't blame anyone who doesn't want to fill their house with cameras and\n microphones, but I also don't blame anyone who's willing to trade some of their\n data with a company they feel comfortable with in order to bring some new\n convenience and utility into their lives. It's nearly impossible to navigate\n today's age without making trades like that on a daily basis."
\n\n
What is Web\nScraping? Web scraping is an automatic method to obtain large\namounts of data from websites.
\n
What is Machine\nLearning? Machine Learning, as the name says, is all about machines\nlearning automatically without being explicitly programmed or learning\nwithout any direct human intervention. This machine learning process\nstarts with feeding them good quality data and then training the\nmachines by building various machine learning models using the data and\ndifferent algorithms.
\n\n',391,0,1,'CC-BY-SA','Tin hat, Quantum computing, Encryption, Conspiracy',0,0,1),
(3981,'2023-11-06','HPR Community News for October 2023',3085,'HPR Volunteers talk about shows released and comments posted in October 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 8 comments in total.
\n
Past shows
\n
There are 4 comments on\n3 previous shows:
\n
\n
hpr3941\n(2023-09-11) \"Interview with Yosef Kerzner\"\nby operat0r. \n
\n
\n
\nComment 2:\ndnt on 2023-10-02:\n\"Great interview!\"
\n
\nComment 3:\nWindigo on 2023-10-24:\n\"Great conversation\"
Comment 1:\nkdmurray on 2023-10-28:\n\"Great Series\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Site migration
\n
\n
Fixed the code that computes the number of days to the next free\nslot.
\n
\n
Donating to the Internet\nArchive
\n
\n
There is currently a gift matching campaign which can double the\nimpact of donations! Donate now\nto show appreciation for the service that hosts a lot of HPR content for\nus.
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3800,'2023-02-24','NIST Quantum Cryptography Update 20221008',928,'An update on the preparations for quantum computing','
The process NIST initiated in 2016 continues as it looks for\nencryption algorithms that will be secure against the anticipated\narrival of practical quantum computing. In this update I report on the\nfirst 4 Candidates to be Standardized, and the timeline for completion.\nIt is coming faster than you may have realized.
\n',198,74,0,'CC-BY-SA','NIST, Encryption, quantum computing',0,0,1),
(3810,'2023-03-10','Clifton, Arizona',963,'We move to another Arizona town, Clifton.','
We have left the Tucson area and moved up into the mountains to\nClifton, Arizona, a mining town. Arizona is a major source of Copper for\nthe U.S., and Clifton has one of the larger open pit mines in the world,\nand the largest in the U.S.
\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona, Clifton',0,0,1),
(3820,'2023-03-24','Introduction to Gaming',991,'How I first got started with Computer Strategy Games','
This starts out the series on Computer Strategy Games, and we begin\nwith the game that got me hooked, the first Civilization game created by\nSid Meier and published by Microprose. Though it is pretty old now, it\nis still fond in my heart, and in the hearts of so many other gamers. If\nthis comes across as a love letter, so be it. We will also in this\nseries look at where you can obtain old games, and where you can find\nmore information about the games I cover.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization',0,0,1),
(3830,'2023-04-07','Into New Mexico',856,'We move to another state, New Mexico.','
We made a change in our itinerary and instead of going up into the\nmountains of New Mexico we went down to the area of the border of\nMexico. Our first stop was in Deming, NM for a few days, the on to\nAnthony, NM for a longer stay of nearly three weeks. Anthony is located\nbetween Las Cruces, NM, and El Paso, Texas, so it was a convenient\nlocation for visiting both of the places, and we did so. In hindsight,\nwe liked Las Cruces and the New Mexico part a lot better than El\nPaso.
\n',198,119,0,'CC-BY-SA','Travel, RV life, New Mexico, Deming, Anthony, Las Cruces, El Paso',0,0,1),
(3840,'2023-04-21','Playing the Original Civilization',899,'Hints on playing the game that started it all','
This game is pretty old, but I found that wen I started a game\nrecently to prepare for this episode that it was still as addictive as\never. I won\'t claim it is essential for everyone to run out and get it,\nbut if you did happen to find a copy somewhere and play it, you might\nfind you enjoy it. In this episode I give a few hints about getting\nstarted with this game.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization',0,0,1),
(3850,'2023-05-05','New Mexico 2',822,'We finish our stay in New Mexico and head to Presidio, Texas.','
We finished our stay in Anthony with a Saturday trip into Las Cruces\nto see the local market and the museums, more hiking, and a trip to see\nNative American Petroglyphs. We also went into El Paso to check out the\nzoo. It was fine, but we confirmed that we don\'t really like going into\nEl Paso. We are not much on driving in big cities any longer,\nparticularly in a big truck. Then it was time to move on to our next\nstop, Presidio, Texas. This is so close to the border that a 5 minute\nwalk takes you to the Rio Grande.
\n',198,119,0,'CC-BY-SA','Travel, RV life, New Mexico, Anthony, Las Cruces, El Paso, Presidio',0,0,1),
(3860,'2023-05-19','Civilization II',923,'The game I spent the most time on: Civilization II','
This game is not quite as old, and it did make some changes. But the\nsame \"One-more-turn\" addictiveness is still there. I can\'t tell you many\ntimes I started a game, and the next thing I knew the Sun was coming up\noutside my window. I\'m too old to do that any more, but if I start\nanother game of Civ II I will be right back in it.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization II',0,0,1),
(3870,'2023-06-02','Texas',765,'We wrap up our trip in Texas before heading back home to Michigan','
Our stay in Presidio was a nice one, and we enjoyed the companionship\nat the RV park. This gave us access to the Big Bend Ranch State Park,\nand we had a few good outings there. But we wanted to visit the Big Bend\nNational Park, which was not as reachable as we would like, so we booked\na few days in Alpine, Texas. This turned out to be fortuitous for an\nimportant repair. And after seeing the National Park it was time to head\nback to Michigan. We had a long but very nice trip, but as always at the\nend of a trip we look forward to being back in our home and sleeping in\nour bed.
\n',377,0,0,'CC-BY-SA','Cars, EV\'s, Terrorists, Hydrogen, Fusion, Power Systems',0,0,1),
(3712,'2022-10-25','The last ever CCHits.net Show',5756,'The team talk about the nearly 12 years of producing CCHits.net.','
Over 12 years ago, Jon \"The Nice Guy\"\nSpriggs went to a \"Pod Crawl\" with (among others) Dave \"The Love Bug\" Lee, where he\npitched the idea of a daily music promotion show, with a twist - it\nwould all be automated, and use text-to-speech to introduce\neverything.
\n
The first show was released\non 2010-10-24 and the last ever show (this one) was released on\n2022-10-12.
\n
Over the twelve years, Jon would go on to meet to meet Yannick and Ken Fallon, both\nof whom would go on to shape changes (big and small) to CCHits.
\n
This year, the cracks started to re-appear in the architecture\nunderneath CCHits - between APIs shutting down that were used to load\ntracks to CCHits, and the general framework being used to write CCHits\nnot receiving the care and attention it needed... and the team finally\ndecided to stop adding new tracks, and let the process build the last\nfew shows.
\n
This podcast gives you a peek behind the curtain to the team involved\nin the system, and gives you some of the high- and low-lights in the 12\nyears the site ran for.
\n',413,0,0,'CC-BY','music,creative commons,podcast',0,0,1),
(3724,'2022-11-10','My top Android apps',579,'I walk through the top apps on my phone','
Quick reference of band and privilege restrictions
\n
\n
\n',318,0,0,'CC-BY-SA','Android, Android apps, Mobile phone, Custom launcher',0,0,1),
(3725,'2022-11-11','How to use OSMAnd with Public Transport ',124,'Ken shows you how to use this mapping tool to display transit routes in your area.','
\r\n \r\nMap of Dublin showing the Temple Bar tourist area. A red arrow points to where you can change the profile.\r\n
\r\n
\r\n \r\nWith the Configure Map > Profile selection menu open, a red square surrounds the Bus icon to indicate the \"public transport\" profile is now selected.\r\n
\r\n
\r\n \r\nThe map now opens to show more information about public transport is now displayed on the map. This is highlighted with a red square. \r\nClicking the bustop (highlighted with a red circle ) will show more information about the routes available at this location.\r\n
\r\n
\r\n \r\nOnce the transport stop is selected, a list of all the routes that service this location are displayed. Along with other routes that are available within a short distance.\r\n
\r\n
\r\n \r\nClicking any of the routes numbers/names will give a zoomed out map showing in red the route many of the stops towards it\'s source and destination.\r\n
\r\n',30,0,0,'CC-BY-SA','OSMAnd, OSM, Maps, Public Transport',0,0,1),
(4001,'2023-12-04','HPR Community News for November 2023',0,'HPR Volunteers talk about shows released and comments posted in November 2023','\n\n
These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 6 comments in total.
hpr3995\n(2023-11-24) \"Creating Your Own Internet Radio Streaming Device\"\nby Claudio Miranda.
\n
\n
Comment 1:\nbittin on 2023-11-24:\n\"another tip\"
\n
\n\n
Mailing List discussions
\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the Mail List which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\nMailman.\n
\n
The threaded discussions this month can be found here:
This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.
\n\n
Any other business
\n
Example section
\n
\n
Bulleted list item 1
\n
Bulleted list item 2
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3714,'2022-10-27','The News with Some Guy On the Internet',609,'Threat Analysis','
Threat Analysis; your\nattack surface.
\n
The Hacker News
\n
New\nChinese Malware Attack Framework Targets Windows, macOS, and Linux\nSystems.
\n
A previously undocumented command-and-control (C2) framework dubbed\nAlchimist is likely being used in the wild to target Windows, macOS, and\nLinux systems.
\n
\"Alchimist C2 has a web interface written in Simplified Chinese and\ncan generate a configured payload, establish remote sessions, deploy\npayloads to the remote machines, capture screenshots, perform remote\nshellcode execution, and run arbitrary commands,\" Cisco Talos said in a\nreport shared with The Hacker News. Written in GoLang, Alchimist is\ncomplemented by a beacon implant called Insekt, which comes with remote\naccess features that can be instrumented by the C2 server.”
\n
\"Since Alchimist is a single-file based ready-to-go C2 framework, it\nis difficult to attribute its use to a single actor such as the authors,\nAPTs, or crimeware syndicates.\"
\n
The trojan, for its part, is equipped with features typically present\nin backdoors of this kind, enabling the malware to get system\ninformation, capture screenshots, run arbitrary commands, and download\nremote files, among others.
\n
Alchimist C2 panel further features the ability to generate first\nstage payloads, including PowerShell and wget code snippets for Windows\nand Linux, potentially allowing an attacker to flesh out their infection\nchains to distribute the Insekt RAT binary. The instructions could then\nbe potentially embedded in a maldoc attached to a phishing email that,\nwhen opened, downloads and launches the backdoor on the compromised\nmachine. What\'s more, the Linux version of Insekt is capable of listing\nthe contents of the \".ssh\" directory and even adding new SSH keys to the\n\"~/.ssh/authorized_keys\" file to facilitate remote access over SSH.
\n
The Hacker News
\n
Hackers\nUsing Vishing to Trick Victims into Installing Android Banking\nMalware.
\n
Malicious actors are resorting to voice phishing (vishing) tactics to\ndupe victims into installing Android malware on their devices.
\n
The Dutch mobile security company said it identified a network of\nphishing websites targeting Italian online-banking users that are\ndesigned to get hold of their contact details.
\n
Telephone-oriented attack delivery (TOAD), as the social engineering\ntechnique is called, involves calling the victims using previously\ncollected information from the fraudulent websites.
\n
The caller, who purports to be a support agent for the bank,\ninstructs the individual on the other end of the call to install a\nsecurity app and grant it extensive permissions, when, in reality, it\'s\nmalicious software intended to gain remote access or conduct financial\nfraud.
\n
What\'s more, the infrastructure utilized by the threat actor has been\nfound to deliver a second malware named SMS Spy that enables the\nadversary to gain access to all incoming SMS messages and intercept\none-time passwords (OTPs) sent by banks.
\n
The new wave of hybrid fraud attacks presents a new dimension for\nscammers to mount convincing Android malware campaigns that have\notherwise relied on traditional methods such as Google Play Store\ndroppers, rogue ads, and smishing.
\n
The Hacker News
\n
64,000\nAdditional Patients Impacted by Omnicell Data Breach - What is Your Data\nBreach Action Plan?
\n
Founded in 1992, Omnicell is a leading provider of medication\nmanagement solutions for hospitals, long-term care facilities, and\nretail pharmacies. On May 4, 2022, Omnicell\'s IT systems and third-party\ncloud services were affected by ransomware attacks which may lead to\ndata security concerns for employees and patients. While it is still\nearly in the investigation, this appears to be a severe breach with\npotentially significant consequences for the company.
\n
Omnicell began informing individuals whose information may have been\ncompromised on August 3, 2022. Hackers may be able to access and sell\npatient-sensitive information, such as social security numbers, due to\nthe time delay between the breach and the company\'s report of affected\npatients.
\n
The type of information that may be exposed are:
\n
\n
Credit card information.
\n
Financial information.
\n
Social security numbers.
\n
Driver\'s license numbers.
\n
Health insurance details.
\n
\n
The healthcare industry is one of the most targeted sectors globally,\nwith attacks doubling year over year. And these costs are measured in\nmillions or even billions of dollars - not to mention increased risks\nfor patients\' privacy (and reputation).
\n
The Washington Post
\n
How to\nprotect schools getting whacked by ransomware.
\n
Ransomware gangs are taking Americans to school. So far this year,\nhackers have taken hostage at least 1,735 schools in 27 districts; the\nmassive Los Angeles Unified School District is their latest target.
\n
Ransomware hackers breach computers, lock them up, steal sensitive\ndata and demand money to release their hold on organizations’ critical\nsystems. These criminals often attack schools because they are\nprofitable targets. If all ransomware victims refused to pay, the\nattacks would stop. Indeed, paying up might be illegal: The Treasury\nDepartment released guidance last year noting that giving money to\nglobal criminal organizations can violate sanctions law.
\n
The trouble is, saying no isn’t always easy. Los Angeles didn’t\ncapitulate, and the criminals leaked a trove of data — a consequence\nthat can prove more or less serious depending on the sensitivity of the\nstolen information.
\n
“Because we can,” said a representative of the ransomware gang that\ntook down Los Angeles Unified School District, explaining the\ncollective’s motivations to a Bloomberg News reporter. Schools’ task is\nto turn “can” to “can’t” — or, at least, to make success pay a whole lot\nless.
\n
CNET News.
\n
Verizon\nAlerts Prepaid Customers to Recent Security Breach.
\n
Verizon notified prepaid customers this week of a recent cyberattack\nthat granted third-party actors access to their accounts, as reported\nearlier Tuesday by BleepingComputer. The attack occurred between Oct. 6\nand Oct. 10 and affected 250 Verizon prepaid customers.
\n
The breach exposed the last four digits of customers\' credit cards\nused to make payments on their prepaid accounts. While no full credit\ncard information was accessible, the information was enough to grant the\nattackers access to Verizon user accounts, which hold semi-sensitive\ndata such \"name, telephone number, billing address, price plans, and\nother service-related information,\" per a notice from Verizon.
\n
Account access also potentially enabled attackers to process\nunauthorized SIM card changes on prepaid lines. Also known as SIM\nswapping, unauthorized SIM card changes can allow for the transfer of an\nunsuspecting person\'s phone number to another phone.
\n
From there, the counterfeit phone can be used to receive SMS messages\nfor password resets and user identification verifications on other\naccounts, giving attackers potential access to any account they have, or\ncan guess, the username for. Consequently, Verizon recommended affected\ncustomers secure their non-Verizon accounts such as social media,\nfinancial, email and other accounts that allow for password resets by\nphone.
\n',391,0,0,'CC-BY-SA','Threat Analysis, Security Breach, Ransomware, Data Breach, TOAD',0,0,1),
(3717,'2022-11-01','Video editing with Shotcut on a low end PC',695,'In this episode I explain how I use the shotcut video editor to edit video on a low end PC.','
Useful\nShortcut keys for the Shotcut video editor
\n
C = copy\nV = paste\nA = duplicate\nX = ripple delete\nCtrl + X = ripple delete but send to clipboard\nS = split
\n
Tip not covered in my\nPodcast
\n
Splits are not fixed and can be adjusted. Once you\'ve split up clips\nand put them in the right order on the timeline you can still adjust the\ncut point even though you previously split the clip because the clip is\nreferenced to the original file in the playlist.
\n
Introduction
\n
Hello and welcome Hacker Public Radio audience my name is Mr X\nwelcome to this podcast. As per usual I\'d like to start by thanking the\npeople at HPR for making this podcast possible. HPR is a Community led\npodcast provided by the community for the community that means you can\ncontribute to. The HPR team have gone to great deal of effort to\nsimplify and streamline the process of providing podcasts. There are\nmany ways to record an episode these days using phones tablets PCs and\nalike. The hardest barrier is sending in your first show. Don\'t get too\nhung up about quality, it\'s more important just to send something in.\nThe sound quality of some of my early shows wasn\'t very good. If I can\ndo it anyone can and you might just get hooked in the process.
\n
Well it\'s been almost a year since I\'ve sent in a show. Looking at\nthe HPR site my last episode was back in November 2021. I suspect like\nmany others life has become more complicated and I find I have much less\nspare time and because I have much less spare time I have much less time\nto pursue my hobbies and because of this I have less to speak about and\nbecause of this I have less time to record what I\'ve been doing and it\nall turns into to vicious circle. Fortunately I recently had some time\noff work and had a lovely holiday. During the holiday I ended up\nrecording some video which I decided I wanted to edit. I\'ve done some\nvideo editing in the past using various video editing packages. The best\nand most recent of which is shotcut.
\n
Specific details and\nequipment
\n
Video resolution 1920 x 1080, Codec h264 mpeg-4, Frame rate 30 frames\nper second.
\n
Computer Dell Optiplex 780. Fitted with 4 GB of internal RAM and\nonboard video graphics card.
\n
Shotcut version 22.06.23 Shotcut is a free open-source cross-platform\nvideo editor licenced under the GNU general public licence version\n3.0
\n
This episode will only cover basic shotcut video editing techniques.\nShotcut contains many advanced features and effects that will not be\ncovered in this episode. A lot of the workflow I’ll share with you today\nis intended to get around limitations imposed by my low spec PC
\n
I\'ll try my best to cover the video editing process in this podcast\nusing words alone; however I am conscious that an accompanying video\nwould make it easier to follow along.
\n
Shotcut workflow
\n
Start by creating a folder to hold all the required media files.\nAudio tracks and sound effects can be added to this folder later. Make\nsure all your video files are using the same frame rate in my case 30\nframes per second.
\n
Open each video file in VLC one at a time going through each video\nfile looking for the best portions of video. Make a note of where the\nbest portions of the video are by writing down the start and end points\nin minutes and seconds.
\n
I do this because the interface of VLC is more responsive than\nshortcut and the resolution of displayed video is far greater than the\npreview in shortcut. This makes it quicker and easier to find the best\nportions of video.
\n
Open shortcut and make sure the new project is set to the same frames\nper second as the media files you\'re working with, in my case 30 frames\nper second. You can check the frame rate of your project by looking at\nthe selected video mode in the new projects window. If you select\nautomatic it will ensure the project resolution and frame rate\nautomatically match that of your media files.
\n
Start by adding all the video files to the playlist, this can be done\nin a number of ways for example it can be done by clicking on the open\nfile button in the top toolbar or within the open files menu.\nAlternatively you can drag and drop files into the playlist. I find this\nto be the easiest way to add media files to a project. Once this is done\nsave your project.
\n
Drag the first file from the Playlist to the timeline making sure\nthat the start of the video starts at 0 seconds.
\n
Click on the timeline in the position where the first start point of\ninterest is needed. Use the S key to split the video at this point.\nDon\'t worry about being too accurate as this can be moved at a later\nstage.
\n
Repeat this process for the end point of interest.
\n
Repeat this again for all the other sections of start and end points\nof interest.
\n
Remove the unwanted sections of video by clicking on a section then\nhitting the delete key. This will remove the unwanted section leaving an\nempty space behind.
\n
Once all the unwanted sections are removed click on the sections of\nvideo and pull them to the left to close the gaps up. I find it useful\nto leave some space between the good sections of video as it makes it\neasier to see where splits are and makes it easier later on to rearrange\nthe order of the individual clips.
\n
Check the start and end points of the remaining sections of video to\nsee that the start and end points stop in the correct place. You can do\nthis by clicking the play button on the preview window. The video start\nand end points can be adjusted by dragging the section left or right in\nin the timeline section; this is where leaving spaces Between each\nsection of video can be handy as it allows for fine tuning.
\n
Add a new blank video track to the timeline to hold the next video.\nNote this wasn\'t required when adding the first video track but it is\nneeded for each subsequent track. A video track can be added by right\nclicking on an empty portion of the timeline and selecting add video\ntrack. Alternatively use the ctrl + I key.
\n
Drag your second video from the playlist onto the newly created blank\nvideo track in the timeline. As before make sure that the start of the\nvideo starts at 0 seconds.
\n
Before previewing any section of the second video track click the\nsmall eye shaped hide icon in the left section of the first video track\nlabelled output. This will prevent previewing both video tracks at the\nsame time.
\n
Repeat the process above of chopping the second video track into\nsections using the S key to split the video up. Remove the unwanted\nsections. Finally adjust the start and end points of the remaining\nsections.
\n
Repeat the steps above to add the remaining video files one at a time\nfrom the playlist to the timeline.
\n
When complete you end up with separate video tracks in the timeline\neach containing good sections of video.
\n
At this stage I can\'t be too specific about how to continue as there\nare a number of different options depending on your particular Project.\nYou can for example start by combining the good sections of video into\none video track by dragging them from one track to another then add if\nrequired an audio track or you can add the audio track first and then\ntry to sync things up to the audio track moving bits and pieces of video\ninto one video track remembering to hide the unwanted sections of video\nby clicking on the small hide eye icons. Don\'t do too much editing\nwithout saving the project. If you get a message about low memory save\nthe project then reopen it.
\n
To export the final video click on the export button in the toolbar.\nI pick the default option, this creates an H.264/AAC MP4 file suitable\nfor most users and purposes. You can check the frame rate is the same as\nyour original media files by clicking on the advanced tab. Click the\nexport file button and give it a file name. It may take some time to\ncreate the export file. This will be dependent on the speed of your\ncomputer and the length and resolution of your project.
\n
While Shotcut is far from perfect on my puny PC it is surprisingly\nusable and stable and is the best option I’ve found so far.
\n
Finally here are some general shotcut tips I have when doing video\nediting on a puny PC with limited ram, slow processor and built in\ngraphics card such as mine.
\n
General Tips\nwhen working with a low powered PC
\n
Close all open applications leaving only shortcut open this helps\nwith RAM usage
\n
Shortcut is surprisingly stable with a feeble PC such as mine. I\nwould still recommend saving your project regularly as it is quick and\nvery easy to do.
\n
If you get a message about running out of RAM then try not to do too\nmuch more editing before saving the project. Once saved close shotcut\nand then reopen it. The longer your project is and the higher your\nproject resolution the more RAM you will need.
\n
When you are about to export your final video save the project close\nshortcut reopen shotcut and immediately export your project as any\nprevious editing may be taking up precious ram.
\n
Be patient when clicking on the timeline to repositioned the play\nhead. Always wait for the preview window to update. This can sometimes\ntake a few seconds.
\n
When trying to sync video to audio you need to zoom in in quite a\nlong way before getting an audio preview. When doing this and moving the\nplay head you\'ll get a choppy version of the audio with this it is still\nperfectly possible to find the beat of the music allowing you to sync\nyour video to the music. If this doesn\'t seem to work for you then try\nzooming in closer.
\n
Ok that\'s about it for this podcast. Hope it wasn\'t too boring and it\nmade some sense. If you want to contact me I can be contacted at\nmrxathpr at googlemail.
\n
Thank you and goodbye.
\n',201,0,0,'CC-BY-SA','workflow, tips, video, editing, application',0,0,1),
(3719,'2022-11-03','HPR News',594,'InfoSec; the language of security.','
Typosquatting, as an attack, uses modified or misspelled domain\nnames to trick users into visiting fraudulent websites; the heart of\nthis attack is domain name registration. Typosquatting is deployed by\nscammers to defraud unaware users. Attackers will attempt to: mimic\nlogin pages, redirect traffic, download malware, and extort users.
First, authentication. This is the process of verifying the\nvalidity of something; in our case, user credentials/identity. The most\ncommon way to authenticate is: USERNAME and PASSWORD.\nThis is just a single layer (single-factor authentication) and isn’t\nenough to discourage attackers.
\n
Second, 2FA (Two-factor Authentication). 2FA increases the\ndifficulty for attackers by providing users an additional layer of\nsecurity to accomplish authentication. Common 2FA methods are: TOTP/OTP\n(theOne Time Password), Authenticator\nApplications (Bitwarden, KeePassXC,...), and Security Keys (Yubikey). This works similar to ATMs;\nto authenticate the user must provide both knowledge (account\nPIN) and a physical object (bank card).
\n
Last, but not least, MFA (Multifactor Authentication). Similar to\n2FA, MFA offers users security with the addition of biometrics\n(fingerprint scan, retina scan, facial recognition, and voice\nrecognition). Attackers must overcome the knowledge factor, Possession\nfactor, Inherence/Biometric factor, Time factor, and sometimes Location\nfactor.
\n',391,0,0,'CC-BY-SA','InfoSec, Typosquatting, SFA, 2FA, MFA, Security',0,0,1),
(3718,'2022-11-02','Making Ansible playbooks to configure Single Sign On for popular open source applications',239,'A small introduction into my latest project when I spoke at the recent Nextcloud 2022 conference.','
This is a recording of a short introduction into my latest\nproject.
\n
To help sysadmins everywhere the Onestein organization (an\norganization specialized in Odoo implementations) invested 4 month of\nresearch to create a set of easy to use Ansible playbooks to configure\nsingle sign on (SSO) for popular open source applications to enable them\nto authenticate to a Keycloak server as the central identity\nprovider.
\n',369,61,0,'CC-BY-SA','ansible, playbooks, sso, keycloak, single sign on',0,0,1),
(3735,'2022-11-25','i3 Tiling Window Manager',953,'i3 Tiling Window Manager with a bonus KDE Plasma integration','
What is i3?
\n
\n
Lightweight tiling window manager
\n
Configured with 2 files\n
\n
~/.config/i3/config
\n
/etc/i3status.conf
\n
\n
\n
Multi-monitor\nsupport
\n
Monitor properties
\n
xrandr -q | grep HDMI
\n
\n
HDMI-A-0 disconnected primary (normal left inverted right x axis y\naxis)
\n
\n
xrandr --prop | grep HDMI
\n
\n
HDMI-A-0 disconnected primary (normal left inverted right x axis\ny axis)
## dualmonitor.sh\n\n #!/bin/bash\n echo '1 for on 2 for off'\n read monitor\n if [ $monitor == 1 ]; then\n xrandr --output HDMI-A-0 --auto --left-of eDP\n elif [ $monitor == 2 ]; then\n xrandr --output HDMI-A-0 --off\n fi
\n
Top keybindings
\n
Mod + O --> Open Firefox\nMod + Enter --> Open Terminal\nMod + M --> Open the Mutt email client\nMod + Shift + M --> Open the Sylpheed email client\n\nMod1 + D --> Open Dmenu\nMod1 + T --> Open Tenacity
\n',318,11,0,'CC-BY-SA','i3wm, window manager, lightweight apps, KDE, KDE Plasma',0,0,1),
(3722,'2022-11-08','Bash snippet - plurals in messages',513,'How to use English singular and plural words in messages','\n
Overview
\n
Have you ever written a Bash script (or any shell script) where you\ngenerate a message like \'Found 42 files\' and the day comes\nwhen it reports \'Found 1 files\'?
\n
Have you been irritated by this? I have, and I go to lengths to deal\nproperly with (English) plurals in my Bash scripts.
\n
Method 1
\n
The simplest solution would be to use an \'if\'\nstatement:
The string being displayed with echo contains a command\nsubstitution (\'$(command)\') which returns\n\'file\' or \'files\' depending on the value\ngiven.
\n
The first two arguments can be more complex than plain strings:
The GNU project has developed a set of utilities called the GNU\ngettext utilities consisting of tools and documentation for\ntranslation. This is a large subject which is not suitable for a short\nHPR episode such as this one.
\n
Among the tools is \'ngettext\' which performs the\nfunction we have been discussing - choosing among plural forms. It also\nimplements translations if desired (and translation files are provided\nas part of the software being developed).
\n
We will not discuss the translation topic here, but the choice of\nplurals is something that can be used in Bash scripts.
\n
The \'ngettext\' tool takes three mandatory\nparameters:
\n
\n
MSGID - the singular form of the text
\n
MSGID-PLURAL - the plural form of the text
\n
COUNT - the value used to make the singular/plural\nchoice
\n
\n
There are other optional parameters and options but they are not\nrelevant here.
\n
The tool can be used in exactly the same way as the\n\'pluralise\' example above.
Whether you use this or a Bash function is your choice.
\n
Conclusion
\n
I have been using ngettext in my scripts since I\ndiscovered it. If you also need to provide messages in your projects in\nother languages then this might be a good idea.
\n
I admit that my understanding of the GNU gettext project\nis superficial, so, on reflection it might be better to use a Bash\nfunction, since I don’t currently need all of the features GNU\ngettext provides.
\n
Links
\n
\n
The\npluralise function. Either add it to the script you’re\ndeveloping or use the \'source\' command to load it.
\n\n',225,42,1,'CC-BY-SA','Bash, plural, ngettext',0,0,1),
(3723,'2022-11-09','HPR News',722,'News for the Community, by the Community.','
HPR News.
\n
Threat Analysis;\nyour attack surface.
\n
Wireless\nkey fobs compromised in European nations (France, Spain, and\nLatvia). On October 10, 2022, European authorities arrested 31\nsuspects across three nations. The suspects are believed to be related\nto a cybercrime ring that allegedly advertised an “automotive diagnostic\nsolution” online and sent out fraudulent packages to their victims. The\nfraudulent packages contained malware and once installed onto the\nvictims vehicle, the attackers were able to unlock the vehicle, start\nthe ignition, then steal the vehicle without the physical key fob.\nEuropean authorities confiscated over €1 million in criminal assets\n(malicious software, tools, and an online domain).
\n
Microsoft\nOffice 365 has a broken encryption algorithm. Microsoft Office 365\nuses an encryption algorithm called “Office 365 Message Encryption” to\nsend and receive encrypted email messages. The messages are encrypted in\nan Electronic Codebook (ECB). The U.S. National Institute of Standards\nand Technology (NIST) reported, \"ECB mode encrypts plaintext blocks\nindependently, without randomization; therefore, the inspection of any\ntwo ciphertext blocks reveals whether or not the corresponding plaintext\nblocks are equal\". Emails can be harvested today then decrypted later\nfor future attacks.
\n
User Space.
\n
Netflix\ncrackdown on freeloaders. Netflix is testing in Argentina, the\nDominican Republic, El Salvador, Guatemala, and Honduras Chile, Costa\nRica and Peru different\nefforts to crackdown on freeloaders. The term “freeloaders” covers\nthe multiple users sharing a single Netflix account from different\nlocations. Netflix plans to charge an additional $3.00 - $4.00 per\nsubaccount.
\n
Samsung\nimplements private blockchain to link user devices. While claiming\nthe private blockchain, “has nothing to do with cryptomining”, the Knox\nMatrix security system links all your devices together in a private\nblockchain instead using a server based group verification system. The\nsystem, Knox Matrix, is suppose to allow devices to “manage themselves”\nby auto updating, caching updates for other devices then distributing\nthe updates to other devices on the private blockchain.
10/100Mbps Ethernet (optional, on expansion board)
\n
\n
Storage:
\n
\n
on-board 16Mb (2MB) or 128Mb (16MB) XSPI NOR flash memory.
\n
microSD - supports SDHC and SDXC
\n
\n
Expansion Ports:
\n
\n
USB 2.0 OTG port
\n
26 GPIO Pins, including SPI, I2C and UART functionality. Possible\nI2S and GMII expansion.
\n
Dual lane MiPi CSI port, located at USB-C port, for camera\nmodule.
\n
\n
Audio:
\n
\n
mic (optional, on camera module)
\n
speaker (optional, on camera module)
\n
\n
\n',391,0,0,'CC-BY-SA','Malware, Security Breach, Hardware, Tablets',0,0,1),
(3727,'2022-11-15','Expanding your filesystem with LVM',1480,'Rho`n describes adding a new hard drive to his work computer and expanding its filesystem','
Synopis
\n
I installed a new 1TB Crucial MX500 SSD into my work computer. While\nwe are mostly a Windows based business, as the IT guy I do get a bit of\ndiscretion when updating my own machine (i.e. I get to solve all the\nproblems I create). Last year, I decided to run the Pop!_OS distribution\nof Linux on my work computer and run Windows in a VM on it. Recently the\nWindows image had grown and was causing disk space notifications. This\nprompted the additional hard drive.
\n
During the initial installation of Pop!_OS, I remember deciding not\nto bother with installing Linux Volume Management (LVM). I have used it\nin the past, but I am still much more comfortable with the old style\ndevice mapping and mounting disk partitions to directories. I even\nrationalized that if I needed to add more space, I will just add a new\ndisk with one big partition and map it to the home directory.
\n
Now a year later I am adding a new HD and thinking, I really hate all\nthe space that is most likely going to be wasted once I move the Windows\nimage to the new drive. Ok, I guess I should figure out how to install\nLVM, and use it to manage the space on both drives. Luckily there a\nnumber of good blogs to be found on adding LVM to an existing system.\nThe following are the steps and commands I used to accomplish my\ngoal.
\n
Commands
\n
Most of the following commands need to be run as root. I decided to\nchange to root user instead of typing sudo before every command. The\nbasic steps to creating a single filesystem sharing the storage space\nbetween two physical disk partitions are:
\n\n
Let LVM know about the new disk.
\n
In my case, create a volume group and add the new disk and its full\nstorage space to it.
\n
Copy the disk partition with the root filesystem from the origin\ndisk to the new volume group
\n
Expand the root filesystem on the volume group to the full size of\nthe volume group.
\n
Update system configuration to boot with the root filesystem on the\nnew volume group.
\n
Let LVM know about the old root disk partition.
\n
Add the old root partition to the volume group.
\n
Expand the root filesystem on the volume group to include the new\nspace in the volume group.
\n\n
root@work# pvcreate /dev/sdb\n\nroot@work# pvdisplay\n "/dev/sdb" is a new physical volume of "931.51 GiB"\n --- NEW Physical volume ---\n PV Name /dev/sdb\n VG Name\n PV Size 931.51 GiB\n Allocatable NO\n PE Size 0\n Total PE 0\n Free PE 0\n Allocated PE 0\n PV UUID wRBz38-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n\nroot@work# vgcreate workvg /dev/dsb\n No device found for /dev/dsb.\nroot@work# vgcreate workvg /dev/sdb\n Volume group "workvg" successfully created\nroot@work# vgdisplay\n --- Volume group ---\n VG Name workvg\n System ID\n Format lvm2\n Metadata Areas 1\n Metadata Sequence No 1\n VG Access read/write\n VG Status resizable\n MAX LV 0\n Cur LV 0\n Open LV 0\n Max PV 0\n Cur PV 1\n Act PV 1\n VG Size 931.51 GiB\n PE Size 4.00 MiB\n Total PE 238467\n Alloc PE / Size 0 / 0\n Free PE / Size 238467 / 931.51 GiB\n VG UUID 67DSwP-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n\nroot@work# pvdisplay\n --- Physical volume ---\n PV Name /dev/sdb\n VG Name workvg\n PV Size 931.51 GiB / not usable 1.71 MiB\n Allocatable yes\n PE Size 4.00 MiB\n Total PE 238467\n Free PE 238467\n Allocated PE 0\n PV UUID wRBz38-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n\nroot@work# lvcreate -n root -L 931.51 workvg\n Rounding up size to full physical extent 932.00 MiB\n Logical volume "root" created.\n\nroot@work# cat /dev/sda3 >/dev/mapper/workvg-root\ncat: write error: No space left on device
\n
Hmmm why can\'t it copy the smaller disk onto a larger one?
\n
root@work# pvdisplay\n --- Physical volume ---\n PV Name /dev/sdb\n VG Name workvg\n PV Size 931.51 GiB / not usable 1.71 MiB\n Allocatable yes\n PE Size 4.00 MiB\n Total PE 238467\n Free PE 238234\n Allocated PE 233\n PV UUID wRBz38-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n\nroot@work# lvdisplay\n --- Logical volume ---\n LV Path /dev/workvg/root\n LV Name root\n VG Name workvg\n LV UUID srXpUd-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n LV Write Access read/write\n LV Creation host, time work.example.com, 2022-10-18 08:46:34 -0400\n LV Status available\n # open 0\n LV Size 932.00 MiB\n Current LE 233\n Segments 1\n Allocation inherit\n Read ahead sectors auto\n - currently set to 256\n Block device 253:1
\n
Whoops, the default unit for the lvcreate is MB, and I forgot to add\nG to my size. A good reason to always include units in whatever you do\n:) Also, pay attention to any reports printed at the end of a successful\ncommand. When I scrolled back I realized it told me the size it\ncreated.
\n
root@work# lvextend -l +100%FREE /dev/workvg/root\n Size of logical volume workvg/root changed from 932.00 MiB (233 extents) to 931.51 GiB (238467 extents).\n Logical volume workvg/root successfully resized.\n\nroot@work# lvdisplay\n --- Logical volume ---\n LV Path /dev/workvg/root\n LV Name root\n VG Name workvg\n LV UUID srXpUd-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n LV Write Access read/write\n LV Creation host, time work.example.com, 2022-10-18 08:46:34 -0400\n LV Status available\n # open 0\n LV Size 931.51 GiB\n Current LE 238467\n Segments 1\n Allocation inherit\n Read ahead sectors auto\n - currently set to 256\n Block device 253:1\n\nroot@work# cat /dev/sda3 >/dev/mapper/workvg-root\n\nroot@work# mkdir /media/new-root\n\nroot@work# mount /dev/mapper/workvg-root /media/new-root\n\nroot@work# df -h\nFilesystem Size Used Avail Use% Mounted on\n/dev/sda3 450G 421G 5.6G 99% /\n/dev/sda1 497M 373M 125M 76% /boot/efi\n/dev/sda2 4.0G 3.4G 692M 84% /recovery\n/dev/mapper/workvg-root 450G 421G 5.7G 99% /media/new-root
\n
Ok, the LV volume is resized but the filesystem now needs to expanded\nto use the new disk space
\n
root@work# umount /media/new-root/\n\nroot@work# resize2fs /dev/mapper/workvg-root\n\nresize2fs 1.46.5 (30-Dec-2021)\nPlease run 'e2fsck -f /dev/mapper/workvg-root' first.\n\nroot@work# e2fsck -f /dev/mapper/workvg-root\ne2fsck 1.46.5 (30-Dec-2021)\nPass 1: Checking inodes, blocks, and sizes\nInode 7210086 extent tree (at level 2) could be narrower. Optimize<y>? yes\nPass 1E: Optimizing extent trees\nPass 2: Checking directory structure\nPass 3: Checking directory connectivity\nPass 4: Checking reference counts\nPass 5: Checking group summary information\n\n/dev/mapper/workvg-root: ***** FILE SYSTEM WAS MODIFIED *****\n/dev/mapper/workvg-root: 827287/29974528 files (1.2% non-contiguous), 112395524/119870981 blocks\n\nroot@work# resize2fs /dev/mapper/workvg-root\nresize2fs 1.46.5 (30-Dec-2021)\nResizing the filesystem on /dev/mapper/workvg-root to 244190208 (4k) blocks.\nThe filesystem on /dev/mapper/workvg-root is now 244190208 (4k) blocks long.\n\nroot@work# mount /dev/mapper/workvg-root /media/new-root\n\nroot@work# df -h\nFilesystem Size Used Avail Use% Mounted on\n/dev/sda3 450G 421G 5.5G 99% /\n/dev/mapper/workvg-root 916G 421G 449G 49% /media/new-root
\n
Much better. Now we need to get the computer to boot using LVM and\nthe new drive. Need to make sure /etc/fstab is updated to\npoint to the new root filesystem.
\n
Make some in-memory filesystems available under the new root:
\n
root@work# mount --rbind /dev /media/new-root/dev\nroot@work# mount --bind /proc /media/new-root/proc\nroot@work# mount --bind /sys /media/new-root/sys\nroot@work# mount --bind /run /media/new-root/run\n\nroot@work# chroot /media/new-root\n\nroot@work# cat /etc/fstab\n# /etc/fstab: static file system information.\n#\n# Use 'blkid' to print the universally unique identifier for a\n# device; this may be used with UUID= as a more robust way to name devices\n# that works even if disks are added and removed. See fstab(5).\n#\n# <file system> <mount point> <type> <options> <dump> <pass>\nPARTUUID=949a09f0-xxxx-xxxx-xxxx-xxxxxxxxxxxx /boot/efi vfat umask=0077 0 0\nPARTUUID=bbcc2068-xxxx-xxxx-xxxx-xxxxxxxxxxxx /recovery vfat umask=0077 0 0\nUUID=9f1f68bb-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 noatime,errors=remount-ro 0 0\n/dev/mapper/cryptswap none swap defaults 0 0\n\nroot@work# vi /etc/fstab\n\nroot@work# cat /etc/fstab\n# /etc/fstab: static file system information.\n#\n# Use 'blkid' to print the universally unique identifier for a\n# device; this may be used with UUID= as a more robust way to name devices\n# that works even if disks are added and removed. See fstab(5).\n#\n# <file system> <mount point> <type> <options> <dump> <pass>\nPARTUUID=949a09f0-xxxx-xxxx-xxxx-xxxxxxxxxxxx /boot/efi vfat umask=0077 0 0\nPARTUUID=bbcc2068-xxxx-xxxx-xxxx-xxxxxxxxxxxx /recovery vfat umask=0077 0 0\n/dev/mapper/workvg-root / ext4 noatime,errors=remount-ro 0 0\n/dev/mapper/cryptswap none swap defaults 0 0\n\nroot@it05:/media/new-root/etc/initramfs-tools# lsinitramfs /boot/initrd.img-$(uname -r) | grep lvm\netc/lvm\netc/lvm/lvm.conf\netc/lvm/lvmlocal.conf\netc/lvm/profile\netc/lvm/profile/cache-mq.profile\netc/lvm/profile/cache-smq.profile\netc/lvm/profile/command_profile_template.profile\netc/lvm/profile/lvmdbusd.profile\netc/lvm/profile/metadata_profile_template.profile\netc/lvm/profile/thin-generic.profile\netc/lvm/profile/thin-performance.profile\netc/lvm/profile/vdo-small.profile\nscripts/init-bottom/lvm2\nscripts/local-block/lvm2\nscripts/local-top/lvm-workaround\nscripts/local-top/lvm2\nusr/lib/udev/rules.d/56-lvm.rules\nusr/lib/udev/rules.d/69-lvm-metad.rules\nusr/sbin/lvm\n\nroot@it05:/# update-initramfs -u\nupdate-initramfs: Generating /boot/initrd.img-5.19.0-76051900-generic\ncryptsetup: WARNING: Resume target cryptswap uses a key file\nkernelstub.Config : INFO Looking for configuration...\nkernelstub.Drive : ERROR Could not find a block device for the a partition. This is a critical error and we cannot continue.\nTraceback (most recent call last):\n File "/usr/lib/python3/dist-packages/kernelstub/drive.py", line 56, in __init__\n self.esp_fs = self.get_part_dev(self.esp_path)\n File "/usr/lib/python3/dist-packages/kernelstub/drive.py", line 94, in get_part_dev\n raise NoBlockDevError('Couldn\\'t find the block device for %s' % path)\nkernelstub.drive.NoBlockDevError: Couldn't find the block device for /boot/efi\nrun-parts: /etc/initramfs/post-update.d//zz-kernelstub exited with return code 174\n\nroot@it05:/# lsblk -f\nNAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS\nsda\n├─sda1\n│ vfat FAT32 D499-28CF\n├─sda2\n│ vfat FAT32 D499-2B97\n├─sda3\n│ ext4 1.0 9f1f68bb-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n└─sda4\n swap 1 1758e7a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n └─cryptswap\n swap 1 cryptswap\n e874c9cc-xxxx-xxxx-xxxx-xxxxxxxxxxxx [SWAP]\nsdb LVM2_m LVM2 wRBz38-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx\n└─workvg-root\n ext4 1.0 9f1f68bb-xxxx-xxxx-xxxx-xxxxxxxxxxxx 448.6G 46% /\n\nroot@it05:/# df -h\nFilesystem Size Used Avail Use% Mounted on\n/dev/mapper/workvg-root 916G 421G 449G 49% /\ntmpfs 7.8G 0 7.8G 0% /dev/shm\ntmpfs 1.6G 2.4M 1.6G 1% /run\n\nroot@it05:/# mount /dev/sda1 /boot/efi\n\nroot@it05:/# update-initramfs -u\n\nupdate-initramfs: Generating /boot/initrd.img-5.19.0-76051900-generic\ncryptsetup: WARNING: Resume target cryptswap uses a key file\nkernelstub.Config : INFO Looking for configuration...\nkernelstub : INFO System information:\n\n OS:..................Pop!_OS 22.04\n Root partition:....../dev/dm-1\n Root FS UUID:........9f1f68bb-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n ESP Path:............/boot/efi\n ESP Partition:......./dev/sda1\n ESP Partition #:.....1\n NVRAM entry #:.......-1\n Boot Variable #:.....0000\n Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash\n Kernel Image Path:.../boot/vmlinuz-5.19.0-76051900-generic\n Initrd Image Path:.../boot/initrd.img-5.19.0-76051900-generic\n Force-overwrite:.....False\n\nkernelstub.Installer : INFO Copying Kernel into ESP\nkernelstub.Installer : INFO Copying initrd.img into ESP\nkernelstub.Installer : INFO Setting up loader.conf configuration\nkernelstub.Installer : INFO Making entry file for Pop!_OS\nkernelstub.Installer : INFO Backing up old kernel\nkernelstub.Installer : INFO Making entry file for Pop!_OS
\n
ok, moment of truth, can i reboot into the new root filesystem
\n
root@it05:/# shutdown -r now\nRunning in chroot, ignoring request.\n\nroot@it05:/# exit\nroot@work# shutdown -r now
\n
Whoot! Success. Booted right back up, and can verify running from new\nLV
\n',293,0,0,'CC-BY-SA','LVM, Linux Volume Management, hard drive, SSD',0,0,1),
(3728,'2022-11-16','Pinebook Pro review',2917,'I talk about the Pinebook Pro (and bricking various other arm devices)','
Why the PBP?
\n
Lately I\'ve been thinking a lot about power consumption when it comes\nto computing. Intuitively, I know that arm devices pull significantly\nless power than amd64 machines but I\'ve never really tested this in the\nreal world. So, some preliminary power consumption stats:
\n
\n
big amd64 laptops (thinkpad x220 and t490) pull at most 65\nwatts
\n
small arm SOCs typically pull at most 15 watts
\n
most android phones pull at most 18 watts
\n
Pentium 4 pulls at most 250 watts
\n
\n
These numbers are fairly easy to find: just look at the power supply\nfor a MAXIMUM OUTPUT value or something similar. This is the point at\nwhich the power supply fails so we can safely assume this is the maximum\npower draw for any given computer. Of course, this is DC output and not\nAC output and anyone who knows anything about electricity knows that\nconverting AC to DC is expensive but these values are useful as a\ngeneral estimate. I\nwrote something similar about computer power consumption some time\nago
\n
My goal in all of this was to find a self contained computer that\nruns UNIX, doesn\'t take much power, isn\'t a consumption rectangle\n(smartphone), and can be charged from both AC with a rectifier and\nstored DC without an inverter. Charging from existing stored power was\nprobably the most novel consideration. Everything else is a given.
\n
A few obvious answers come to mind:
\n
\n
Raspberry\nPi 4 is not self contained and using a pitop in public is a good way\nto get the bomb squad called on you
\n
beaglebone black is good\ntoo but neither self contained nor popular enough for wide OS\nsupport
\n
Pinebook\nPro is self contained and is supported by some of the operating\nsystems I\'d like to run
\n
\n
The PBP is an obvious choice. It\'s an open hardware ARM laptop that\ncan be charged via a barrel cable (AC->DC) or via USB-C. Charging\nfrom USB-C is a very useful feature because it means I can easily choose\nbetween charging from the mains where efficiency loss is acceptable and\ncharging from a DC source where efficiency loss is unacceptable.
\n
The actual use case is \"what computer can I run off of a old car\nbattery or the alternator in my car without burning power with an\ninverter?\". I\'ll revisit this use case in a later section.
\n\n
Initial notes
\n
I took these notes immediately upon opening the PBP. They remain\nunedited because I want to be honest on the first impressions.
\n
shipping
\n
I was worried about DHL dropping my package out of a plane. Or\nleaving it out in the rain. Or having one of the employees use it as a\nsoccer ball. Or having the thing get stuck in customs. It ended up\narriving safely and was packaged well. Two boxes within a padded\nenvelope within another envelope. Surprising for DHL.
\n
hardware impressions
\n
\n
Touchpad sucks and trackpad scrolling sucks (it\'s probably just\nKDE). Installing synaptics drivers allegedly fix this problem.
\n
keyboard is comfortable, clickly, full sized despite being a\nchicklet keyboard. I don\'t like that the <ctl> and\n<fn> keys are backwards when compared to a thinkpad.\nI really like the thinkpad keyboard layout.
\n
Shift+enter seems to type the M character. My muscle\nmemory for key chording is now broken. This appears to be a fundamental\ndesign flaw with KDE.
\n
Passively cooled, gets a bit warm.
\n
display is sharp (IPS) and almost too high resolution for my eyes\n(1920x1080 instead of 1366x768). I can fix this in software.
\n
enabling/disabling mic/wifi/camera through the keyboard is confusing\nand (seemingly) does not perform the \"kill switch\" via hotplugging like\nthe Thinkpad X220\'s wifi kill switch.
\n
Charger comes with both US and EU prongs.
\n
\n
software impressions
\n
\n
it\'s manjaro :(
\n
it\'s KDE :(
\n
it comes with mpv :)
\n
bluez instead of bluetoothd :(
\n
firewalld instead of UFW <3
\n
no vim, no vi, and no ed on the standard installation so this is\ncompletely useless and unusable.
\n
firefox config uses google as the default search engine
\n
It didn\'t come with RHEL7 or so obviously I hate it
\n
It didn\'t come with BSD so obviously I hate it
\n
Terminal color scheme is one of the worst I\'ve seen in my life
\n
\n
Secondary notes
\n
From my next available free day, largely unedited:
\n
software
\n
\n
I still don\'t like manjaro. I still don\'t like pacman.
\n
On the default manjaro installation, the\nmanjaro-arm-flasher tool seems to create bootable SD cards\n(nice for the insurance policy)
\n
when updating (lots of network IO throughput), the wireless card\nseems to stutter.
\n
I Can\'t boot another OS using the stock firmware. I need to flash\nthe \"SPI flash\" (fancy ARM guy terminology for nvram) with newer\nversions of u-boot that are more hacker friendly (ie the ones that don\'t\nrequire a serial display).
I\nfound some fedora specific instructions that are actually just PBP\nspecific Using the u-boot and idb from fedora, The screen flashes\nwith garbled nonsense when loading a kernel but at least I can see the\noutput from u-boot. Different kernels show different garbled nonsense so\nit\'s a bit of fun. The keyboard does not work in u-boot. The system will\nnow also boot from the SD card (although it seems the system will always\nboot from EMMC once before allowing booting from the sd card).
\n
Armbian and NetBSD seem to boot just fine from the sd card. I\'m\nkeeping a sd card with the stock Manjaro image as an insurance\npolicy.
\n
Because the keyboard does not work in u-boot, I ordered the pine64\nserial over 3.5mm audio jack cable so that I can (hopefully) fix this in\nthe future. The system still boots automatically but I\'d really like to\npass options to my bootloader to do things like enter single user mode,\nrun an fsck at boot time, boot various versions of kernels, etc.
\n\n
OS Support
\n
I will not use Arch. You cannot force me. You cannot coerce me. You\ncannot even bribe me. I will use anything other than Arch as long as\nit\'s not ubuntu.
\n
Sadly, BSD is not \"super easy\" on the PBP like most other SBCs but\nI\'ve never stepped down from a challenge. Even sadder, no Plan 9 ported\nto PBP either. Running a \"distro based on a distro based on a distro\nbased on arch\" is the antithesis of my computing philosophy. Luckily\nenough, there is a big list\nof operating systems that run on the PBP. Most of these are distros\nbased on distros based on distros. OpenBSD instantly appeals to me but\nthere is no support for graphical TTYs as of yet (installation must be\nperformed over serial) so this is a non-starter. NetBSD also appeals to\nme but no wifi in 9.x, only in -CURRENT. A wide selection of actually\nusable software, take your pick.
NetBSD seems to work just fine but 9.x doesn\'t yet ship the broadcom\ndrivers. These drivers are present in the -CURRENT branch but the issue\nwith -CURRENT is that it\'s not entirely stable. Additionally, the\nbootloader does not come with the system.
To get around the no wifi issue, a dongle is required. I use an\nAtheros AR9271 USB->WiFi dongle. To get around no RJ45\nport, I use a USB->RJ45 adapter. I have an ASIX ax88772\ndongle (UGREEN branded but I\'m not sure that matters). Both of these\ndongles seem to work with every single operating system and hardware\nconfiguration I\'ve tried them with.
\n
Arm is strange, so we must boot from an SD card (running any OS, in\nmy case NetBSD) in order to burn an image to the internal storage.
\n
From a separate machine, the options passed to dd\nare important.
# PKG_PATH="https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/aarch64/9.3/All/" pkg_add pkgin\n# sed -i'' -e 's/9.0/9.3/g' /usr/pkg/etc/pkgin/repositories.conf\n# pkgin install vim git mozilla-rootcerts mozilla-rootcerts-openssl
\n
The rest is NetBSD specific and I\'ve avoided getting into it here\nbecause it doesn\'t have anything to do with the PBP.
\n\n
Performance
\n
The PBP has 6 cores (2 fast, 4 slow) and 4gb ram. The cpu is fairly\nslow but entirely usable. On large procedural jobs like software\ncompilation, it\'s painful. For concurrent jobs, it\'s mostly fine.
\n
Compiler performance
\n
As expected, the PBP is slower when it comes to compilation than a\nstandard amd64 machine. Surprisingly enough, NetBSD was significantly\nslower than Manjaro. This is likely due to the Linux kernel knowing how\nto better handle multiple CPUs with varying speeds.
\n
sequential jobs
\n
I used plan9port\nbecause it\'s a fairly large but portable project. Compilation is largely\nsequential, invokes many standard shell utilities, and involves extra\npreprocessor steps to convert 9 C into something a standard UNIX\ncompiler like GCC or Clang can compile.
\n
On a T490 - 8th gen Core i7 (4 cores, 8 threads, 4.8GHz, vPro for\nmaximum thermal output):
\n
real 232.51 (~4 minutes)\nuser 188.07\nsys 65.01
\n
On an X220 - 2nd gen Core i5 (2 cores, 4 threads, 2.6GHz, vPro for\nmaximum thermal output):
\n
real 249.98 (~4 minutes)\nuser 220.33\nsys 65.52
\n
On the PBP (2 2.0GHz cores + 4 1.5GHz cores, no CPU fan for maximum\nthermal output) (running stock Manjaro image):
\n
real 1355.27 (~22 minutes)\nuser 1178.47\nsys 347.71
\n
On the PBP (2 2.0GHz cores + 4 1.5GHz cores, no CPU fan for maximum\nthermal output) (running NetBSD):
\n
real 3715.24 (~60 minutes)\nuser 1946.84\nsys 3435.29
\n
concurrent jobs
\n
I used vim because it can be\nbuilt in parallel without causing any issues.
\n
Same 8th gen Core i7 (make -j7):
\n
real 27.36\nuser 170.21\nsys 11.30
\n
Same 2nd gen Core i5 (make -j7, approaching the\nexponential decay of marginal returns on concurrent processing):
\n
real 77.07\nuser 292.46\nsys 10.00
\n
On the PBP (make -j7) (running stock\nManjaro image):
\n
real 220.60\nuser 1145.40\nsys 59.90
\n
On the PBP (make -j7) (running\nNetBSD):
\n
real 319.30\nuser 1560.87\nsys 255.33
\n
Web browser testing
\n
Because the PBP has similar hardware specifications to the adware\nsubsidized craptops sold by google, I thought it would be a good idea to\ncompare web browser performance on these systems as well.
JetStream 2.1 is a JavaScript and WebAssembly benchmark suite focused\non the most advanced web applications. It rewards browsers that start up\nquickly, execute code quickly, and run smoothly. For more information,\nread the in-depth analysis. Bigger scores are better.
I don\'t have an chromesumption book to test against, so all I can say\nis that the PBP is slower than a workhorse amd64 machine when it comes\nto interpreting javascript.
\n\n
Conclusion
\n
Did the PBP fulfill it\'s\nneeds?
\n
The intended use case was \"UNIX machine I can charge from an existing\nbattery or alternator\". This immediately invokes ideas of \"why would I\neven need wifi support?\"
\n
Ultimately, I ended up flashing a bad image to the SPI flash chip and\nI cannot get the system to boot (or even show signs of life). I have\nattempted to enter maskrom mode to re-flash the SPI but I am\nunsuccessful. There are a few other things I need to try. I\'ll update\nthis if I ever get it functional again.
\n
I did not have the opportunity to test the machine in the exact\nenvironment I got it for but it was fun before I bricked it. Again, a\nplace for updates.
\n
Who is the PBP for?
\n
HACKERS!
\n
Obviously, the types of people who are interested in pine64 devices\nand similar SBCs are already computer owners (if not computer hoarders).\nIt\'s unlikely that the PBP will become my (or anyone\'s) primary computer\nbut that doesn\'t mean that it\'s useless. The entire point of arm SBCs is\nto have fun so why not have fun?
\n
Just don\'t flash your SPI if you want it to work as expected.
\n\n
Some final thoughts on\nopen hardware
\n
Oftentimes, before purchasing freedom centric hardware, I search for\na few reviews so that I can set my expectations correctly. Oftentimes\nthese reviews are very epidermal: they\'re not even skin deep.\nThese reviewers are consumers producing reviews for a consumer audience,\nnot hackers producing in-depth reviews for hacker audience. These types\nof reviews are frustrating for me but fundamental flaws seem to shine\nthrough the lack of thoroughness.
\n
I think that the general negative reviews on open hardware largely\nstem from unrealistic expectations. The community seems to over-hype\nmany of these devices out of ignorance, stating that $freedomDevice is\nthe $proprietaryAlternative killer, the end all be all device that will\nusher in the year of the Linux $deviceCategory. Oftentimes, it seems\nlike the high expectations fall flat when confronted with the reality of\nopen hardware: it\'s either way too expensive or way too\nexperimental.
\n
It seems like many of these devices are lacking both developer time\nand users who are both enthusiastic and knowledgeable. Pitfalls of\nmobile UNIX include bad power management, difficulty hotplugging\nwireless chipsets, graphical interfaces attempting to cope with the fact\nthat they don\'t have a physical keyboard, etc. There is still much work\nto be done. As for users, it seems that the most enthusiastic users\nalways have the impression that $linuxDevice will have 1:1 feature\nparity with $proprietaryDevice. Maybe it\'s just that the loudest users\nare heard or that we only want to hear utopian dreams of a free software\nfuture.
\n
A prime example of this conflict between expectations and reality:\nLinux smartphones. It doesn\'t help when many linux smartphones over the\nyears were advertised as a viable android competitor rather than\nanything other than what they actually were: an arm board attached to a\ntouch screen and a modem.
\n
I oftentimes ask myself \"what is open source worth?\". How much money\nare you willing to throw at an idea you like? Surely, money thrown at an\nidea you like is being used better than money thrown at an idea you\ndon\'t like. In many cases, it seems like open hardware devices are more\nexpensive than their proprietary counterparts for a few reasons. The two\nlargest reasons are small batch manufacturing and the fact that open\nhardware isn\'t subsidized by pre-installed adware (in the case of nearly\nevery device that comes pre-loaded with proprietary software).
\n
What is open source worth? A few extra dollars, a few extra hours of\nconfiguration, a few extra papercuts, and a clean conscious knowing that\nI didn\'t pay for yet another windows license I will never use and will\nnever get a refund for. Open source is worth investing in because the,\nalbeit slow, improvements to open hardware and software have wider\nimplications than just \"buying a laptop with Linux pre installed\".
\n
Future projects
\n
\n
something with the raspi
\n
NetBSD in depth
\n
\"why is my lightbulb running android?\" and other Internet-Of-Terror\nideas
\n
turning a router into a general purpose computing device (probably\nMIPS because where else am I going to find a MIPS CPU? Might as well do\nsomething novel instead of $arm-project-1209)
\n
\n',406,0,1,'CC-BY-SA','Open Hardware, Pine64',0,0,1),
(3734,'2022-11-24','Inetd: the internet super-server',1008,'I talk about inetd and give an example of how to write a service for it','
Inetd, the internet\nsuper-server
\n
Inetd is slowly becoming one of my favorite daemons. It makes writing\nprograms that talk over the network super easy. Inetd handles all of the\nhard socket stuff and allows admins to write simple UNIX-ey programs.\nInetd is useful because it allows us to write services that only run\nwhen they are requested in order to reduce total system load.
\n
How inetd works
\n
Inetd can be conceptualized as a sort of \"wrapper daemon\". Inetd is\nalways running despite the fact that many of it\'s sub-services are\nnot always running.
\n
Inetd listens on a specific port. When it gets a request, it handles\nall of the hard socket parts. This request is then passed to one of our\ninetd services
\n
We will use a simple server that echoes the request back to the user\nas an example. We will call this inetd service\nechod
\n
Inetd passes requests to echod as text.\nechod will read from stdin and write to stdout. Everything\nwritten to stdout is passed to the client. echod will then\nexit.
\n
echo server example
\n
I use OpenBSD on my webserver. Sadly, systemd sockets have replaced\ninetd on many linux systems. systemd sockets are entirely painful to\nuse. I can\'t verify that these examples will work on non-OpenBSD systems\nbut the openbsd-inetd package is available on a wide\nvariety of debianoiads.
\n
Let\'s write out out echod service and the configuration\nfiles required to get it working.
\n
Edit /etc/inetd.conf
\n
# port socket type protocol wait/nowait user server program server arguments(optional)\n9999 stream tcp nowait daemon /opt/echod/echod.sh
\n
And our echod service file, located at\n/opt/echod/echod.sh:
Be sure to chmod +x echod.sh and\nrcctl enable inetd && rcctl start inetd or it won\'t\nrun.
\n
Testing
\n
Sometimes you can use curl to test a service but I will use netcat\ninstead because it doesn\'t assume http.
\n
$ echo "foobar" | nc -N localhost 9999\nfoobar\n$
\n
You can also use telnet to test the service:
\n
$ telnet localhost 9999\nTrying 127.0.0.1...\nConnected to localhost.\nEscape character is '^]'.\nfoo\nfoo\nfoobar\nfoobar\necho back\necho back\n^]\ntelnet> Connection closed.\n$
This finger server only allows information from users who have a home\ndirectory in /home/ to be displayed. It also has hard-coded\nfilenames it looks for. Example output looks something like:
\n
$ finger binrc@localhost\n[localhost/127.0.0.1]\nbinrc@openbsd.my.domain\n\nhttps://0x19.org\n\nWorking on an HPR episode\n\nbinrc.nospam@nospam.protonmail.com\n\nNo .pgpkey\n\n$
\n
Gopher server example
\n
Currently, I am working on a gopher server that runs through inetd to\nlearn more about how gopher works (and to write a gopher server that\ndoesn\'t allow for path traversal). I have yet to add autoindex support\nbut I thought it would be good to include anyway because it really\ndemonstrates how simple it can be to write an inetd service. You can download the source code\nfor my gopher server from my gitlab.
\n
This gopher server reads input from standard in and prints the\nrequested file to standard out. Writing an inetd service can be as easy\nas writing an application specific version of cat(1).
\n
Giving the service SSL
\n
You can pair inetd with relayd to make any inetd service use ssl. In\nthis example, I am symlinking my existing httpd certs obtained with acme.sh
log connection\n\ntcp protocol "echod" {\n tls keypair "example.com:9998"\n}\n\nrelay "echod" {\n listen on example.com port 9998 tls\n protocol "echod"\n forward to 127.0.0.1 port 9999\n}
\n
After enabling and starting relayd, it will now be listening on port\n9998. When it receives traffic on 9998, it\nwill perform all of the fancy cryptography stuff and pass the request to\nlocalhost:9999. Since relayd is listening on\n9999 and passing requests on 9999 to the echo\nserver, we are now running an echo server with ssl.
\n
Conclusion
\n
Do I run inetd in production? No, not really. I have in the past but\nI haven\'t needed it seeing as finger, echo, and gopher are dead\nprotocols. Even if inetd is largely useless in the modern era, it\'s\nstill fun to play with.
\n',406,0,1,'CC-BY-SA','BSD, inetd',0,0,1),
(3729,'2022-11-17','Contributing to SuperTuxKart',914,'Explaining the workflow to contribute to this foss game with media assets','
This time I tried a \"car rambling podcast\", where I record while I\ndrive and stop the recording only when reaching the destination
\n',407,0,1,'CC-BY-SA','computer graphics,supertuxkart,audio production,assets,contribution,blender,3d model,krita,hand draw',0,0,1),
(3732,'2022-11-22','My experience owning an Atari Jaguar',1976,'I talk about my experience with the Atari Jaguar and Jaguar CD','
My experience owning and playing the Atari Jaguar and Jaguar CD.
\n',412,0,0,'CC-BY-SA','atari jaguar, video games, atari',0,0,1),
(3731,'2022-11-21','Speech recognition in Kdenlive',332,'A brief description of how you can use speech recognition to transcribe your clips in Kdenlive','
Recently I returned to Kdenlive after about a 10-year break, and was\npleased to discover the speech recognition feature.
SMITE is a free-to-play online MOBA (Multiplayer Online Battle Arena)\nand ARTS (action real-time strategy) game developed by Titan Forge Games\nand published by Hi-Rez Studios. The game is currently available on PC,\nXbox One, PlayStation 4 and Nintendo Switch. Players choose from a large\nselection of playable gods, immortals, and creatures from ancient\nmythology and join session-based arena combat. Each of the playable\ncharacters have their own unique abilities and fighting styles. This\nsession-based arena combat is mostly 5 players against another set of 5\nplayers, but there are several other Game Modes with different rules and\nobjectives, and the goal in most of them is to defeat the Titan located\nin the opposite team\'s base while protecting your own Titan.
\n
Smite wiki:\nThe most comprehensive source of SMITE information maintained by the\ncommunity.
\n',391,0,1,'CC-BY-SA','Smite, MOBA, Arena, Bastet, Gaming',0,0,1),
(3737,'2022-11-29','Review of KOBO Libra H20 e-reader',708,'Rho`n talks about his new KOBO Libra H20 e-reader','
Introduction
\n
I have wanted an e-ink based e-reader for a while. Reading on my\ncomputer is ok. Reading on my phone is doable, but is very annoying. If\nI don\'t keep my finger on the screen, it will go blank and then I have\nto make sure and press the power button to bring the screen back to life\nbefore it locks. A tablet would probably be a nice compromise, but I\nreally wanted to try out an e-ink display, and didn\'t want the potential\ndistractions of a more multi-purpose device. I wanted not only and e-ink\ndisplay, but also one that ran a linux operating system, and a reader\nthat I could potentially put a different Linux distribution on, or\nmodify myself somehow. When asked what I wanted for Christmas this year\nby my wonderful girlfriend, I sent her a link to the KOBO Libra H20.
\n
KOBO Libra H20 specification
\n
\n
processor - Freescale i.MX6 SLL 1 GHz
\n
RAM - 512 MB
\n
hard drive - 8GB
\n
display - 7 inch HD 300 PPI E Ink touchscreen with 1680 x 1264\nresolution
\n
dimensions - 6.3 by 5.7 by 0.3 inches (HWD) and 6.8 ounces or 159\nby 144 by 7.6 mm and 192g
\n
battery - 1200 mAh. Good battery life. Currently I use it\ninfrequently, and have charged it maybe 4 or 5 times of the last\nyear
\n
Connectivity -WiFi 802.11 b/g/n and Micro USB. I have it\nconnected to my home network. Have only used WiFi to update the OS. I\nuse the USB port to transfer books I\'ve downloaded to my computer, and\nto charge the Kobo.
\n
\n
Calibre ebook management
\n
I knew about Calibre, but had never used it. So far it has been a\ngreat e-book manager. Has very nice features for editing meta data and\norganizing my books. It will also transfer the books to the Libra H20\nand update its internal database. One thing I found is KOBO does have\nits own EPUB format that it uses to optimize display of books. In\nparticular, it fixes an issue where images in standard EPUB format don\'t\nscale to the size of the page. Calibre has a plugin system, and a 3rd\nparty plugin is available that will convert a standard EPUB format to\nKePUB when you transfer the book to the e-reader.
\n
Conclusion
\n
I have been enjoying my KOBO reader. It can feel a little slow at\ntimes, especially rendering pdf files where the page is a picture of the\ntext and not made up of electronic characters, and it does render images\nin standard epub format a bit small at times. Other than these two\nthings, it is very easy to read in all lighting settings, and I enjoy\nreading using the KOBO.
Metasyntactic words are vocables such as \"foo\", \"bar\", \"baz\", \"blah\", and so on.
\n',78,0,0,'CC-BY-SA','linguistics, programming, syntax',0,0,1),
(3746,'2022-12-12','Cpuinfo',894,'How to get CPU info on Linux','
Various ways to get information about your CPU on Linux.
\n',78,0,0,'CC-BY-SA','cpu,utilities,programming',0,0,1),
(3739,'2022-12-01','Multipactors for the masses.',1587,'Seemingly advanced artefacts of one\'s locale are tangled whims upon exponential inspiration. ','
I found an copy of an old video. This episode is just a verbal\ntranscription of that lecture.
\n
\n
Electrostatic containment.
\n
Fusor.
\n
Riggatron.
\n
Multipactor.
\n
\n
Robert Murray Smith has got some thoroughly practical and useful\ninstructional material on Youtube. His channel is his name. He is keen\nto transmit knowledge and to stimulate innovation.
\n
I just looked up the books which he has written, and one of them is\non the subject of this episode:
\n
Beyond The Fusor: A New Design For A Table Top Fusion Reactor And\nHow To Build It \nby Robert Murray-Smith.
\n',398,0,1,'CC-BY-SA','fusor,riggatron,multipactor,electrostatic ',0,0,1),
(3756,'2022-12-26','Verify yourself on Mastodon with PGP and Keyoxide',1940,'Verify your Mastodon account using GnuPG and Keyoxide.org','
Keyoxide is a project that parses a PGP key and makes its data available to Mastodon for identity verification.
\r\n\r\n',78,0,0,'CC-BY-SA','pgp, gnupg, crypto, identity',0,0,1),
(3754,'2022-12-22','GOD probably will use a Chromebook',2250,'A Squirrels Rebuttal of GNU World Order episode 489 Cloud Services','\r\n
How using a Chromebook could eventually result in Mankind creating\r\nGOD in his own image.
\r\n
A brief discussion of my attempt to emulate Google Services from a\r\nChromebook on a Devuan equipped Lenovo Laptop and how all of this will\r\neventually result in mankind actually creating a real GOD who will be\r\nmasters of EVERYTHING.
\r\n
A Squirrels perspective on life, the universe and everything - even\r\nCloud Services and the lie that is A.I.
\r\n',377,0,1,'CC-BY-SA','Chromebooks,Cloud_Services,gnuworldorder,GOD,ALIENS,SQUIRRELS',0,0,1),
(3745,'2022-12-09','Pinecil walkthrough',525,'Details of the Pinecil soldering iron menu with a secret menu','
Pinecil – a RISC-V powered, open and versatile soldering iron. It can\nbe powered via USB-C PD as well as a DC5525 jack, and runs\ncommunity developed software. Moreover, it is compatible with\npopular TS-100 tips. All this at half the price of the\ncompetition.
\n',318,0,0,'CC-BY-SA','soldering, soldering iron, Pinecil, menu',0,0,1),
(3749,'2022-12-15','Making your own parts',855,'3D printers are useful for making your own custom parts and I talk about the parts I\'ve made.','
The part I made moments before the show is available at Thingiverse.\nHere is a screenshot of modeling it in Blender followed by the piece installed on the microphone holder.
P.S. uses of \"scheduled tasks\" jump from 2 to 4 because #3 had\ncorruption in the recording.
\n',414,0,0,'CC-BY-SA','Kmymoney',0,0,1),
(3748,'2022-12-14','The Squirrels gift to HPR',569,'The Squirrels have modified Bash Podder to do something different','
Humans,
\n
Download the following compressed tar file containing the Squirrels\nPodcast thingie.
Microsoft “misconfigured” an Azure\nBlob Storage server causing a security breach. Attackers were able\nto access unauthorized customer data; business transactions and other\ninteractions between Microsoft and its customers. SOCRadar, a cyber security company, is\ncalling the security breach “BlueBleed”. SOCRadar discovered the breach\non September 24, 2022 Microsoft is downplaying the security breach but\nsecurity researcher Kevin Beaumont isn\'t buying it. Mr. Beaumont suggest\nMicrosoft dropped the ball on informing its customers, and federal\nregulators, of the security breach in a timely manner.
McAfee’s Mobile Research Team identified multiple apps containing\nmalware on the Google Play Store. After install, the malicious android\napps automatically run services without the user knowing or interacting\nwith the app. That’s right, they auto run after install. These malicious\napps then disguise themselves by changing their icon to the “Google\nPlay” icon and renaming to themselves to “Google Play” or “Settings”.\nThe malicious apps quickly create permanent malicious services. McAfee’s\nMobile Research Team demonstrates the resilience of the malware by using\nkill\n-9 on the service processes. More malicious processes generate\nimmediately as if nothing happened.
Director of security research at SafeBreach, Tomer Bar stated, \"The\ncovert self-developed tool and the associated C2 commands seem to be the\nwork of a sophisticated, unknown threat actor who has targeted\napproximately 100 victims.\"
\n
Based on the metadata found within a malicious document, this seems\nto be a LinkedIn-based spear-phishing attack, which ultimately leads to\nthe execution of a PowerShell script via a piece of embedded macro\ncode.
\n
\"The Macro drops \'updater.vbs\' creates a scheduled task pretending\nto be part of a Windows update, which will execute the updater.vbs\nscript from a fake update folder under\n\'%appdata%\\local\\Microsoft\\Windows,\'\"said Tomar.
\n
Currently 32 security vendors and 18 anti-malware engines have\nflagged the decoy document and the PowerShell scripts as malicious.
\n
The findings come as Microsoft has taken\nsteps to block Excel 4.0 (XLM or XL4) and Visual Basic for\nApplications (VBA) macros by default across Office apps, prompting\nthreat actors to pivot to alternative\ndelivery methods.
Nearly 3 million Illinois & Wisconsin patients are caught in a\nhospital data breach. Advocate Aurora Health, which operates 27\nhospitals, said in a statement, “the breach may have exposed information\nincluding a patients\' medical provider, type of appointments, medical\nprocedures, dates and locations of scheduled appointments, and IP\naddresses”. The system blamed the breach on its use of pixels, computer\ncode that collects information on how a user interacts with a website,\nincluding products developed by Google and Facebook\'s parent company\nMeta that make the collected data accessible to those companies.
\n
The health care industry\'s use of pixels has come under wide\ncriticism from privacy advocates who warn that the technology\'s use\nviolates federal patient privacy law. A report\npublished in June by The Markup found many of the country\'s top-ranked\nhospitals used the Meta Pixel, collecting and sending sensitive patient\ninformation to the social media company.
Texas has filed a lawsuit against Google claiming the tech behemoth\ntook users’ biometric data without permission. Texas Attorney General Ken Paxton,\nclaims Google is illegally data harvesting Texans using features and\ndevices such as: Google Photos, Google Assistant, and Nest Hub Max. Google\nspokesman José Castañeda \nis willing to take the argument to court, “AG Paxton is once again\nmischaracterizing our products in another breathless lawsuit,”.
\n
\n
\n',391,0,0,'CC-BY-SA','Malware, Security Breach, Meta, HPR News',0,0,1),
(3744,'2022-12-08','Advent of code Day 1 - 4',308,'Talking about my experience of advent of code so far','
\n',382,0,0,'CC-BY-SA','advent of code, aoc, java',0,0,1),
(3742,'2022-12-06','Battery',626,'The wikipedia article on the Battery','
A battery converts chemical energy into electrical energy by a\nchemical reaction. Usually the chemicals are kept inside the battery. It\nis used in a circuit to power other components. A battery produces\ndirect current (DC) electricity (electricity that flows in one\ndirection, and does not switch back and forth).
\n
Using the electricity from an outlet in a building is cheaper and\nmore efficient, but a battery can provide electricity in areas that do\nnot have electric power distribution. It is also useful for things that\nmove, such as electric vehicles and mobile phones.
\n
Batteries may be primary or secondary. The primary is thrown away\nwhen it can no longer provide electricity. The secondary can be\nrecharged and reused.
\n',30,43,0,'CC-BY-SA','battery, cell, ham, wikipedia',0,0,1),
(3747,'2022-12-13','Twitter and Dinner with the Humans',1614,'I talk about Twitter after dinner with some Humans','
\n',377,0,1,'CC-BY-SA','Dinner,Humans,Twitter',0,0,1),
(3751,'2022-12-19','Using Noisetorch',427,'Noisetorch is a program for Linux that creates a virtual microphone that removes background sounds.','
\n',194,0,0,'CC-BY-SA','audio,podcasting,microphone,linux',0,0,1),
(3755,'2022-12-23','Synergy over ssh',1495,'Control your other PC securely using synergy over ssh','
In today\'s show we will talk about installing synergy so that you can\ncontrol the keyboard and mouse of another computer securely over\nssh.
\n
Install synergy on both computers as root
\n
# dnf install synergy\n# apt install synergy
\n
The main pc is pc_middle and it is the one with the\nkeyboard and mouse we intend to use for all the computers.
\n
The only other pc in this configuration is, one on the right which we\ncall pc_right
\n
On pc_middle create a configuration file. I put it in\n~/etc/synergy-work.conf
\n
section: screens\n pc_middle:\n pc_right:\nend\n\nsection: links\npc_middle:\n right = pc_right\npc_right:\n left = pc_middle\nend
\n
On pc_middle add entry to ~/.ssh/config to\nallow portforwarding back, for the synergy port\n24800
\n
Host pc_right\n Hostname 192.168.0.150\n RemoteForward 127.0.0.1:24800 127.0.0.1:24800 # send back from the client to me
\n
On pc_middle run synergy server in the foreground with\ndebug enabled
\n
[user@pc_middle ~]$ synergys --debug DEBUG --no-daemon --server --address 127.0.0.1 --config ~/etc/synergy-work.conf --name pc_middle --log /tmp/synergy-work.conf.log\n[2022-12-03T16:29:05] DEBUG: opening configuration "~/etc/synergy-work.conf"\n[2022-12-03T16:29:05] DEBUG: configuration read successfully\n[2022-12-03T16:29:05] DEBUG: XOpenDisplay(":0")\n[2022-12-03T16:29:05] DEBUG: xscreensaver window: 0x00c00001\n[2022-12-03T16:29:05] DEBUG: screen shape: 0,0 5760x2160 (xinerama)\n[2022-12-03T16:29:05] DEBUG: window is 0x05e00004\n[2022-12-03T16:29:05] DEBUG: adopting new buffer\n[2022-12-03T16:29:05] DEBUG: opened display\n[2022-12-03T16:29:05] WARNING: LANGUAGE_DEBUG Poll result 0\n[2022-12-03T16:29:05] DEBUG: registered hotkey ScrollLock (id=ef14 mask=0000) as id=1\n[2022-12-03T16:29:05] NOTE: started server, waiting for clients\n[2022-12-03T16:29:05] DEBUG: event queue is ready\n[2022-12-03T16:29:05] DEBUG: add pending events to buffer\n[2022-12-03T16:29:05] DEBUG: screen "pc_middle" shape changed
On the other keyboard that is connected to the pc_right\n(see note below †)
\n
user@pc_right:~$ synergyc --debug INFO --no-daemon --name pc_right 127.0.0.1\n[2022-12-03T16:38:59] NOTE: started client\n /build/synergy-3N7yN5/synergy-1.8.8-stable+dfsg.1/src/lib/synergy/ClientApp.cpp,404\n[2022-12-03T16:38:59] NOTE: connecting to '127.0.0.1': 127.0.0.1:24800\n /build/synergy-3N7yN5/synergy-1.8.8-stable+dfsg.1/src/lib/client/Client.cpp,146\n[2022-12-03T16:38:59] NOTE: connected to server\n /build/synergy-3N7yN5/synergy-1.8.8-stable+dfsg.1/src/lib/synergy/ClientApp.cpp,294
\n
Back on pc_middle, you should see the the log that you\nhave connected
\n
[2022-12-03T16:40:15] DEBUG: Opening new socket: 18FC73A0\n[2022-12-03T16:40:15] NOTE: accepted client connection\n[2022-12-03T16:40:16] DEBUG: received client "pc_right" info shape=0,0 5760x2160 at 2787,1371\n[2022-12-03T16:40:16] NOTE: client "pc_right" has connected
\n
† Note: If you tried to run the client synergyc over the\nssh connection on pc_middle it will connect, but the mouse\nwill never move to the other screen.
\n
Now from the pc_middle, you should be able to\nmove the mouse over to the pc_right screen.
\n
Now using the keyboard and mouse on the pc_middle, you\nshould now be able to move the mouse and type on the\npc_right screen.
\n
The logs on the pc_middle, should show you information\nabout switching from one computer to the other.
\n
[2022-12-03T17:05:18] INFO: switch from "pc_middle" to "pc_right" at 0,225\n[2022-12-03T17:05:18] INFO: leaving screen\n[2022-12-03T17:05:18] WARNING: LANGUAGE_DEBUG Poll result 0\n[2022-12-03T17:05:18] DEBUG: open clipboard 0\n[2022-12-03T17:05:18] DEBUG: ICCCM fill clipboard 0\n[2022-12-03T17:05:18] DEBUG: available targets: text/plain (654), UTF8_STRING (445), STRING (31), TEXT (444)\n[2022-12-03T17:05:18] DEBUG: added format 0 for target UTF8_STRING (445) (8 bytes)\n[2022-12-03T17:05:18] DEBUG: close clipboard 0\n[2022-12-03T17:05:18] INFO: screen "pc_middle" updated clipboard 0\n[2022-12-03T17:05:18] DEBUG: open clipboard 1\n[2022-12-03T17:05:18] DEBUG: ICCCM fill clipboard 1\n[2022-12-03T17:05:18] DEBUG: available targets: text/plain (654), UTF8_STRING (445), STRING (31), TEXT (444), text/html (653)\n[2022-12-03T17:05:18] DEBUG: added format 1 for target text/html (653) (113 bytes)\n[2022-12-03T17:05:18] DEBUG: added format 0 for target UTF8_STRING (445) (5 bytes)\n[2022-12-03T17:05:18] DEBUG: close clipboard 1\n[2022-12-03T17:05:18] INFO: screen "pc_middle" updated clipboard 1\n[2022-12-03T17:05:18] DEBUG: sending clipboard 0 to "pc_right"\n[2022-12-03T17:05:18] DEBUG: sent clipboard size=20\n[2022-12-03T17:05:18] DEBUG: sending clipboard 1 to "pc_right"\n[2022-12-03T17:05:18] DEBUG: sent clipboard size=138\n[2022-12-03T17:05:19] INFO: switch from "pc_right" to "pc_middle" at 5757,583\n[2022-12-03T17:05:19] INFO: entering screen\n[2022-12-03T17:05:19] DEBUG: send xscreensaver command: 582 0 0
\n
Back on pc_right you can close the client by holding\nControl and pressing C, or Ctrl+C for short.
\n
The logs on the pc_middle, should show you that the\nclient disconnected.
\n
[2022-12-03T16:40:18] NOTE: client "pc_right" has disconnected\n[2022-12-03T16:40:18] DEBUG: Closing socket: 18FC73A0
\n
As we are running over ssh, there is no need to configure\n--enable-crypto but you can if you wish.
\n
Now that everything is working correctly you can make it easier to\nstart.
\n
As we saw before (†) the client needs to be run from the physical X\nSession that you see on the second computer.
\n
On pc_right create a new bash script file eg:\nnano ~/bin/start-synergy-client.bash
IPv4 network standards reserve the entire address block 127.0.0.0/8\n(more than 16 million addresses) for loopback purposes.
\n
\n
If you are confused, then just think of it like you when your boss\nsays \"I\'m going home now, you should also go home.\"
\n
It\'s clear that they mean \"I\'m going to my home now,\nand you should also go to your home.\"
\n
So the address 127.0.0.1 on pc_middle is only available\non pc_middle, and equally the address 127.0.0.1 on\npc_right is only available on pc_right.
\n
The server is listening on its loopback address 127.0.0.1 on\npc_middle, while the client is listening on its loopback\naddress 127.0.0.1 on pc_right
\n
It is the RemoteForward configuration that creates a ssh\ntunnel that is doing the heavy lifting.
\n
RemoteForward 127.0.0.1:24800 127.0.0.1:24800
\n
It tells the Remote (in this case pc_right ) to listen\nto the port 24800 its loopback address.
\n
This is where the client on pc_right will be talking\nto.
\n
The ssh connection will then Forward any packets back to the other\nside (in this case pc_middle )
\n
And to send to the port 24800 its loopback address.
\n
And on that address the server is listening.
\n',30,0,0,'CC-BY-SA','synergy,ssh,port forward,tunnel',0,0,1),
(4021,'2024-01-01','HPR Community News for December 2023',0,'HPR Volunteers talk about shows released and comments posted in December 2023','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3752,'2022-12-20','It only took me 2 years to record using some \'new\' hardware',582,'the why and what of some new recording hardware','
FUTURO-48462 Night Wrist Support SIOC, Helps Provide Nighttime\nRelief of Carpal Tunnel Symptoms, Breathable, One Size - Navy \nhttps://smile.amazon.com/dp/B0057D86QA
Lunix LX3 Cordless Electric Hand Massager with Compression, 6\nLevels Pressure Point Therapy Massager for Arthritis, Pain Relief,\nCarpal Tunnel and Finger Numbness, Shiatsu Massage Machine with\nHeat \nhttps://smile.amazon.com/dp/B07QNFWY7J
\n
The Original 1 inch Thick Comfort Anti Fatigue Floor Mat, Perfect\nfor Kitchens and Standing Desks (Black, 20x30x1-Inch)
\n
Electric Stand up Desk Frame - FEZIBO Dual Motor and Cable\nManagement Rack Height Adjustable Sit Stand Standing Desk Base\nWorkstation (Frame Only)
\n
\n',36,0,1,'CC-BY-SA','rsi, carpal tunnel and ergonomics\nhealth,rsi,carpal tunnel,ergonomics',0,0,1),
(3753,'2022-12-21','Some thoughts on \"Numeronyms\"',716,'AKA alphanumeric acronyms, alphanumeric abbreviations, or numerical contractions','\n
Overview
\n
I have recently been wondering about the use of abbreviations which\nare built from the first letter of a word followed by a number and the\nlast letter. The number represents the count of letters between the\nstart and end letter. Thus accessibility becomes\na11y. This came to light (to me anyway) during an email\nexchange with Mike Ray regarding the accessibility issues on the tag\nindex page on the HPR site. The website issues were resolved, but I was\nleft wondering how useful the term a11y is, or whether it\njust jars with me!
\n
According to the Wikipedia article\nthis type of word is known as a numeronym, but they may also be\nreferred to as alphanumeric acronyms, alphanumeric\nabbreviations, or numerical contractions.
\n
As the Wikipedia article notes these types of abbreviations are\nalmost always used to refer to their computing sense — such as\ng11n for globalisation — in the context of computing,\nnot the general context.
\n
Looking at a11y as an\nexample
\n
While I sympathise with the motivation behind using\n\'a11y\' to mean accessibility, I do find it odd and\ncounter-intuitive. I often find myself pondering the acceptability of\nthis type of abbreviation. How many other words in common English fit\npatterns like this I wonder? Quite a few I would expect. How does this\naffect the admissibility of such abbreviations?
\n
Not only are they adventurously strange to my simple brain, but I\nfind them to be aesthetically displeasing. My experiments with the\nstandard Linux dictionary looking for words that fit this pattern I find\naffirmatively supportive of this view. I describe this experiment\nlater.
\n
Algebraically, it is to be expected that there are many dictionary\nwords of 13 characters which start with \'a\' and end with\n\'y\'. Looking at them allegorically, such numeronyms convey\nlittle meaning except in very limited contexts since the motivation\nseems to be to reduce the need to type long words. Alternatively, if\nthey were accepted by data entry software and expanded automatically a\nbetter case could be made for applicability, but only one word could be\nassigned to a numeronym.
\n
In my mind there is a certain artificiality in the use of these\nabbreviations.
\n\n
You might wonder at the weird rambling nature of the above section -\nthis was my (small) joke to try and use many of the words that match the\na11y pattern.
\n
Here’s the result of transforming them:
\n
\n
While I sympathise with the motivation behind\n\'a11y\' to mean accessibility, I do find it odd and\ncounter-intuitive. I often find myself pondering the a11y\nof this type of abbreviation. How many other words in common English fit\nthese patterns I wonder? Quite a few I would expect. How does this\naffect the a11y of such abbreviations?
\n
Not only are they a11y strange to my simple brain, but I\nfind them to be a11y displeasing. My experiments with the\nstandard Linux dictionary looking for words that fit this pattern I find\na11y supportive of this view. I describe this experiment\nlater.
\n
A11y, it is to be expected that there are many\ndictionary words of 13 characters which start with \'a\' and\nend with \'y\'. Looking at them a11y, such\nnumeronyms convey little meaning except in very limited contexts since\nthe motivation seems to be to reduce the need to type long words.\nA11y, if they were accepted by data entry software and\nexpanded a11y a better case could be made for\na11y, but only one word could be assigned to a\nnumeronym.
\n
In my mind there is a certain a11y in the use of these\nabbreviations.
\n
\n\n
Make your own numeronyms
\n
The following piece of Bash scripting scans the file\n/usr/share/dict/words and picks out words which match the\na11y pattern (after removing those ending in\n\'s). It writes the word and the numeronym\ngenerated from it, which it computes, though it’s unnecessary in this\ncase because they all generate the same numeronym. I did it this way\nbecause I wanted to apply the algorithm to other words:
Numeronyms don’t appeal to me. Notwithstanding my little jokes above,\nI know the proposal is not to replace all longer words\nwith them; this would cause chaos! However, as a means of denoting long\nwords this seems wrong.
\n
I assume that their evolution occurs like this:
\n
\n
We use a word often in a particular context
\n
The word is long and not easy to type
\n
For the sake of speed and to avoid typographic errors we make a\nnumeronym
\n
We then tell the world that \"i18n\" (as an example)\nmeans internationalisation.
\n
Those in the know have no problems with it but many people who\nencounter it later puzzle over it - as I am doing here!
\n
\n
It seems fair to say that this obscure process has fulfilled the need\nto abbreviate this awkwardly long word - in the limits of the context\nwhere it has evolved. However it has not conveyed information very well;\nit has mainly benefited those who write (or read) documentation relating\nto the context.
\n
Many editor and word processor applications have the facility of\nexpanding abbreviations like this, in my experience. I would prefer to\nuse this rather than embed the coded abbreviation into the language.
\n
On the other hand, I’m OK with\nPneumonoultramicroscopicsilicovolcanoconiosis being replaced by\nP43s!
\n
I will confess that I had a similar reaction to XKCD’s “Up Goer Five”\nidea. He explains the Saturn 5 - “Explained using only the ten\nhundred words people use the most often”.
\n
Maybe you disagree with me! If so, feel free to add a comment to this\nshow — or indeed, record a show of your own!
git-annex allows managing large files with git, without storing the\nfile contents in git. It can sync, backup, and archive your data,\noffline and online.
\n',391,0,0,'CC-BY-SA','Raspberry Pi, single board computers, haskell',0,0,1),
(3758,'2022-12-28','First sysadmin job - war story',1685,'How I got my first job as a sysadmin and a story about NFS','
I love show notes, but I don\'t have any this time.
\r\n\r\n
\r\nHow Norrist moving into a new IT Linux Admin career. Can he solve the mystery of the NFS issues he inherited ?\r\n
',342,0,0,'CC-BY-SA','career, nfs, php',0,0,1),
(3763,'2023-01-04','The Baader-Meinhof Phenomenon',767,'A look into this psychological phenomenon ','
Baader-Meinhof Phenomenon
\n
This is a psychological experience.
\n
When I describe it in full, if you are of any age, you will almost\ncertainly think \"oh yes, that has happened to me.\"
\n
For older listeners, the name Baader-Meinhof might be memorable as a\nname given to a group who liked to call themselves the \'Red Army\nFaction.\'
\n
The name Baader-Meinhof, after two notable members of the group, was\ngiven to it by journalists.
\n
In the late sixties, all through the seventies, and even into the\neighties, the Red Army Faction were responsible for a number of\nterrorist attacks in and around East and West Germany. One person\'s\nterrorist is another person\'s freedom fighter, but we will not get into\nthat discussion.
\n
This psychological phenomenon was given the name, after a man wrote a\nletter to a newspaper in 1994 pointing out that he had recently heard\nthe name, Baader-Meinhof, and thereafter, seemed to hear or see it again\nand again.
\n
Following that, many people wrote to the same newspaper making\nsimilar comments, about recently heard names, usually nouns, which were\nthen noticed by them frequently.
\n
The phenomenon was also given the name \'Frequency Illusion\' in\n2005.
\n',282,0,1,'CC-BY-SA','Baader-Meinhof Phenomenon',0,0,1),
(3773,'2023-01-18','My Public Speaking Rules',1055,'Some tips on public speaking for technical talks or lectures.','
Public Speaking
\n
For many people, public speaking is a very traumatic thing.
\n
It is not something that has ever held any great terror for me. That\nis especially true now I am totally blind.
\n
My Public Speaking Rules
\n
These are some rules I live by when public speaking. These apply to\nthings like technical talks or lectures. Not necessarily to after dinner\nspeaking, or the speech you might give as the best man at a wedding.\nThose things are different entirely:
\n\n
NEVER start a talk with an apology for being a bad public\nspeaker. You will be implanting in the audience the subconscious\nsuggestion that they are about to sit through a talk given by a bumbling\nidiot with limited knowledge of the published subject.
\n
Three part rule. A talk about a technical or serious subject\nshould be divided into these three parts
\n
\n
tell them what you are going to be talking about
\n
the meat of the talk
\n
summarise what you just told them.
\n
\n
This was given to me a very long time ago by a retired lecturer from\nthe London School of Economics.
\n
The people in the audience wanted to be there. So there is little\nor no hostility in the room. And much empathy.
\n
Don\'t rush yourself. Pace the talk. Rushing can be a nasty\nfeedback loop which makes your pace increase and your level of\nconfidence plummet.
\n
Don\'t be afraid of pauses, or silence. These moments can give you\nbreathing space to summarise in your own mind where you are at, whether\nthe last thing you said needs amplification, and what is to come\nnext.
\n
Don\'t be afraid of the \'ums and erms.\' But keep it to a minimum.\nSilence is better than verbal ticks.
\n
Keep humour to a minimum. Depends on the kind of event. If you\nare the best man at a wedding, you are supposed to inject humour,\nprobably at the expense of the groom.
\n
You don\'t need to pick out one audience member to talk to. You\nare just as effective if you are focused on the back wall. Talking to\njust one member of the audience, particularly if they are right at the\nfront, is probably not a good look. Glancing round the room helps to\nmake everybody feel included.
\n\n
Notes
\n
I probably broke some of my rules, in particular inserting verbal\nticks early in the podcast. I think I improved focus as I went on.
\n
I inserted some humour, including some comments about my family\nChristmas, but then it is, well, Christmas.
\n
I am almost never happier than when I am learning new things.
\n
I am fiercely proud of, and amazed at the amount of things I know\nabout a lot of subjects. I am a knowledge sponge.
\n
The one thing that does make me happier than learning, is sharing\nwhat I know. Which I often do in a tone which suggests I am just amazed\nat the fact I know this stuff at all.
\n
Remember, the things you don\'t yet know are more important than the\nthings you already know. That is true for everybody. So share your\nknowledge in good spirit, keeping arrogance out of the picture.
\n',282,0,1,'CC-BY-SA','public speaking,',0,0,1),
(3783,'2023-02-01','Accessibility, and Navigating the HPR Web Pages with a Screen Reader',1304,'Mike puts the HPR Web Site to the test.','
Accessibility,\nand Navigating the HPR Web Pages with a Screen Reader
\n
Some time in the last year there has been some discussion on the HPR\nmailing list about some of the problems I was having, particularly with\nthe tags page, on the HPR site.
\n
Here is a show in which you can hear both me and my screen reader, as\nI navigate the HPR home page, and then the HPR tags page.
\n
Dave Morriss has made a nice job of fixing the issues I had, and made\nthe tags page a lot more friendly for blind and visually impaired\nusers.
\n
It\'s quite a long podcast, and it took a lot of editing. So most of\nthe polish wore off by the time I \'finished\' it and decided enough was\nenough.
\n',282,0,1,'CC-BY-SA','Accessibility, HPR, Screen Reader',0,0,1),
(3764,'2023-01-05','My text-focused journey into tech',1151,'My journey into technology covering some of the prose-writing technology I\'ve used along the way.','
enistello can be reached by email: \nenistello@tuta.io \nOr on Mastodon: \n@ensitello@fosstodon.org
\n',415,0,0,'CC-BY-SA','text,emacs,linux,mac,distraction-free,vim,prose,plain text',0,0,1),
(3765,'2023-01-06','Fixing clock events in GBA pokemon cartridges',823,'Tinkering with the RTC (Real Time Clock) hardware on Gameboy Advance cartridges','
Pokemon games for the GBA (Game Boy Advance) have an internal RTC\nchip with a coin battery to keep track of the time when the console is\npowered off. \nWhat happens when the internal battery runs dry? How to fix it? \nIs this enough to completely restore calendar-based events?
\n',407,103,0,'CC-BY-SA','nintendo,gba,swapping battery,RTC clock,savefile editing,game boy advance',0,0,1),
(3767,'2023-01-10','LP article from Wikipedia',2561,'LP article from Wikipedia about the long playing vinyl record and its history.','
In 1954, the Recording Industry Association of America (RIAA)\nintroduced a standard equalization curve to be used by all record\nmanufacturers.
\n
\n',318,0,1,'CC-BY-SA','audio, vinyl, record, media, history',0,0,1),
(3768,'2023-01-11','Jeep Ignition Repair',631,'Replacing ignition on my 1999 Jeep Wrangler','
I should have started by removing these two screws
\n
\nClick the thumbnail to see the full-sized image
\n\n
But I actually started with two of these screws, removed the knee board, then removed the third screw
\n
\nClick the thumbnail to see the full-sized image
\n\n
I removed the ignition assembly by removing these three screws. There is a large bump on the bottom, this is where the spring that lifts the ignition locking mechanism goes
\n
\nClick the thumbnail to see the full-sized image
\n\n
\nClick the thumbnail to see the full-sized image
\n\n
The piece of ignition that had broken
\n
\nClick the thumbnail to see the full-sized image
\n\n
Replacement part. The marked part is very delicate and will snap easily
Proxmox VE is a complete open-source platform for enterprise\nvirtualization. With the built-in web interface you can easily manage\nVMs and containers, software-defined storage and networking,\nhigh-availability clustering, and multiple out-of-the-box tools on a\nsingle solution.
Dynamic DNS service; dynamically update DNS records without the need\nfor human interaction. Connect to your home/local network from a remote\nnetwork using a domain name instead of an IP address.
You can use the virt-install command to create virtual\nmachines and install operating system on those virtual machines from the\ncommand line. virt-install can be used either interactively\nor as part of a script to automate the creation of virtual\nmachines.
The virt-manager application is a desktop user\ninterface for managing virtual machines through libvirt. It primarily\ntargets KVM VMs, but also manages Xen and LXC (linux containers).
\n
virt-install is a command line tool which provides an\neasy way to provision operating systems into virtual machines.
\n
virt-viewer is a lightweight UI interface for\ninteracting with the graphical display of virtualized guest OS. It can\ndisplay VNC or SPICE, and uses libvirt to lookup the graphical\nconnection details.
\n
virt-clone is a command line tool for cloning existing\ninactive guests. It copies the disk images, and defines a config with\nnew name, UUID and MAC address pointing to the copied disks.
\n
virt-xml is a command line tool for easily editing\nlibvirt domain XML using virt-install’s command line options.
\n
virt-bootstrap is a command line tool providing an easy\nway to setup the root file system for libvirt-based containers.
KVM (for Kernel-based Virtual Machine) is a full virtualization\nsolution for Linux on x86 hardware containing virtualization extensions\n(Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko,\nthat provides the core virtualization infrastructure and a processor\nspecific module, kvm-intel.ko or kvm-amd.ko.
\n
Using KVM, one can run multiple virtual machines running unmodified\nLinux or Windows images. Each virtual machine has private virtualized\nhardware: a network card, disk, graphics adapter, etc.
A port forward is a way of making a computer on your home or\nbusiness network accessible to computers on the internet, even though\nthey are behind a router or firewall. It is commonly used in gaming,\nsecurity cameras, home automation, and the Internet of Things (IoT).\nPort forwards are setup in your router. A forwarded port is also known\nas open. After you have forwarded a port you have an open port.
I installed XeroLinux on an older I mac I had, mostly due to 2\nfactors,
\n\n
I had the hardware and
\n
A review I saw touted the MAC like interface from a modified KDE\nPlasma base.
\n\n
As a Plasma user, how could I resist.
\n
I had previously installed Fedora 36 on the MAC and was receiving\nrandom hardware issues at boot time, I wanted to see if the issue\npersisted on and Arch base, and since I had never used Arch, this was a\nperfect test case.
\n
The install:
\n
\n
Power on the MAC and (if you have a MAC keyboard) press and hold the\nOption key. This presented me with 2 options, boot into fedora, or to\nthe EFI partition on my USB with XeroLinux installer.
\n
Select the EFI USB device
\n
I was then presented with 4 menu options, XeroLinux installer, REFI\nboot options, MAC OS and reboot
\n
I chose to boot into the Installer
\n
In the GUI installer I was first given the options to install\nseveral fixes for virtual environments including Qemu and VMWare as well\nas an install option
\n
Next I was greeting (literally with a welcome screen proclaiming\n“Welcome Fellow Linux Nerds” )
\n
\n
I am at home...lol
\n
After selecting language, time zone and Keyboard layouts, The disk\npartitioning options are presented (and in much less confusing verbage\nthan Fedora) and you are given choice of what swap partition type to\nuse, No Swap, Swap no hibernate swap with hibernate and swap to file\nalso a choice of file system, xfs, btrfs of ext4. I chose xfs the\ndefault, and since this is just a toy, not a high availability/high\ncapacity server, there is no need for BTRFS, and if I am happy with the\nstate of the system, I may well use it as a media server or Plex server\nand in that case I’ll need the larger file capacity of XFS Also\navailable are the file system encryption check box and a manual\npartition options
\n
Under the user account setup, it detected and offered to set the\nmachine name as MAcPro51, which is fine, it’ll help me id the device on\nmy network, VS a unique name I would then have to come up with but would\ninevitably also contain “MAC” The page also included check boxes to\nvalidate password strength (forcing strong passwords, an auto-login\noption and an option to “reuse user password as root password. Obviously\nfor SUDO purposes, this would not be recommended, but in my situation, I\ndid chose it and the strong passwords validation
\n
The next screen verifies all the selections and when next is clicked,\nA pop-up wants you to confirm again that you want to make the changes\nselected.
\n
(insert jeopardy music while the install happens)
\n
During the install, there is a button to observe what is actually\ngoing on in the background, partitioning, file copies, compiles,\netc \nFirst boot and login \nWell poop,I see a message in the boot screens referring to a hardware\nissue in CPU0 bank 8, there might be a hardware issue, it IS and older\nIntel MAC after all…
\n
Step one is, as always, update the system
\n
Picture 1 \n Click the thumbnail to see\nthe full-sized image
\n
Yes, that is a silhouette of the MST3K guys, I’m using a 720 P TV as\nmy monitor and watch movies when I’m in my home office. 121 packages are\nready fro update including Kernel 5.19.12
\n
(more jeopardy Music)
\n
next stop: install proprietary driver , open source drivers and\nnon-preinstalled apps All this went very smoothly, as though the distro\nmaintainers had put lots of work and thought into it. To say I’m\nimpressed is an understatement so far.
\n
Also there’s a handy dandy “Post install system config button, let’s\nsee what that does…
\n
Picture 2 \n Click the thumbnail to see\nthe full-sized image
\n
Man, all kinds of goodies to play with!!
\n
With such goodies as Yakuake, Avanti browser and KDE connect\npreinstaled, the only thing I really needed was a decent office suite,\nLibre office, of course…
\n
The XeroLinux “Hello” app is quite a setup, offering all the tools\nyou need to get up and running. With an app browser very similar to\nDiscover, used by Fedora, finding LibreOffice was easy, tick a check\nbox, a few dependencies needed confirmation, click install and poof,\ndone.
\n
I was able to seamlessly browse the internet and watched a full\nlength Jackie Chan movie on Netflix with no issues or buffering,\nLibre-office Calc opened in about 5 seconds, only marginally slower than\nmy regular I7 desktop PC running Fedora 35.
\n
The hardware
\n
2010 MACPRO5.1 with dual Intel Xeon 12 core processors running at\n2.5Ghz and 32 GB ram and an ATI Radeon HD 5770 I bought the MAC at a\nlocal college surplus auction with no hard drive, and installed a 500GB\n“spinning rust” hard drive I happened to have laying around.
\n
As older hardware, it’s still fairly quiet and crash free, so far.\nWith a modest up time of 5 days.
\n
Picture 3 \n Click the thumbnail to see\nthe full-sized image
\n
Picture 4 \n Click the thumbnail to see\nthe full-sized image
\n',365,0,0,'CC-BY-SA','xero linux, distro review, linux distro, ',0,0,1),
(4046,'2024-02-05','HPR Community News for January 2024',0,'HPR Volunteers talk about shows released and comments posted in January 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3771,'2023-01-16','How I eliminated pain naturally',1186,'I describe how I managed to eliminate pain from carpal tunnel syndrome and osteoarthritis.','
\n',383,0,0,'CC-BY-NC-SA','elliptical,ergonomics,pain,natural,Microsoft,Logitech,Elecom',0,0,1),
(3792,'2023-02-14','Learning to read music, part one',1404,'In which we learn to read music by going for a walk','
Although many people can create music easily enough on their\ncomputers, not as many can read the traditional stave-and-dots notation\nthat have been in use for hundreds of years.
\n
In less than half an hour, you can grasp the basics of reading music\nin a way that\'s as natural as putting one foot in front of the\nother.
\n
I\'d advise either printing out the handout from https://enistello.info or\nhaving it on a screen you can see easily while outdoors. But it\'s not\nessential!
\n
Keep your eyes (and ears) peeled for part two of this series on\nHacker Public Radio, when I\'ll cover more complex rhythms and you\'ll\nlearn a lot more about pitch in written music.
The book I mention in this episode is The Songlines, by Bruce\nChatwin, published in 1987, and available from all good bookshops. Don\'t\nbuy it from Amazon, it only encourages them.
\n',415,0,0,'CC-BY-SA','music,self-learning,auto-didactic',0,0,1),
(3772,'2023-01-17','Adventures with a small solar panel',1663,'I have a look at a cheap solar panel and learn a bit about how it works, and doesn\'t work.','
Solar panels are not like other sources of electricity that we are\nused to using, such as the mains or batteries. In this episode I recount\nwhat I have learned from playing with a small few-watt solar panel and\nhow to coax useful electricity out of it. Some multimeters were harmed\nin the making of this episode.
\n',268,0,0,'CC-BY-SA','solar,electricity,power,electronics',0,0,1),
(3781,'2023-01-30','The Joule Thief',791,'Using the Joule Thief to suck energy out of flat batteries','
The Joule Thief is a delightfully simple circuit that can light an\nLED that requires 2V or more from a battery that is depleted to 1V or\nless. There are three components in addition to the battery and LED: an\nNPN transistor, a resistor and a double wound inductor. The key thing\nabout the inductor is that the same core shares two windings but in\nopposite directions.
\n
The explanation of how it works is simple enough, as long as you\nalready understand how inductors and transistors work. In other words,\nit isn\'t simple at all! In short, the double wound inductor and\ntransistor conspire to generate a transient high voltage spike and so\nturn LED on and off so rapidly that the human eye cannot perceive\nit.
\n
The idea of such a circuit is approaching its centenary but the name\nitself is only around 20 years old. I recommend you check out Big Clive\'s web site as it was\nhe who came up with the name \"Joule Thief\". I also recommend this video in\nwhich he constructs a circuit using some ninja-level soldering\nskills.
\n',36,93,1,'CC-BY-SA','cooking,hacking,fail',0,0,1),
(3774,'2023-01-19','Emergency Show posted in 2014. Chump Car Report',1500,'The racing series for $500 cars.','
\nFrom Wikipedia, the free encyclopedia \nThe Optima Batteries ChumpCar World Series is a series of automotive endurance races held on paved road race courses across North America. The races range in length from 6 to 36 hours. The name is a parody of Champ Car, a defunct open wheel professional racing series. Races are sanctioned throughout the United States, as well as in Canada and Mexico. Teams are encouraged, but not required, to decorate their cars with themes.\n
\nI am using dimensional analysis. \n(1.97 miles X 60 seconds X 60 minutes) / (110 seconds lap time X 1 minute X 1 hour) = 64.47 MPH for one lap. \nnow it\'s your turn! A slower lap took 120 seconds - how fast was Jonny going?\n
\n\n
\n Editor\'s Note 2023-01-23: All of the above chumpcar.com links seem to be dead. They have been replaced with links from the WayBack Machine (archive.org).\n
\n',209,0,1,'CC-BY-SA','Racing, Chump Car World Series, MonsterB, Portland Oregon, sounds, boring',0,0,1),
(3775,'2023-01-20','Emergency Show posted in 2014. How to make a punch-card computer',850,'How to make a punch-card computer from stuff from the kitchen','\n
How to make a punch-card computer
\n\n
In this show we are going to make a punch-card computer out of stuff from your kitchen.
\n\n
Most of the materials are things you would otherwise have thrown away.
\n\n
What you will need
\n\n
\n
An empty breakfast cereal box.
\n
Some bamboo barbecue skewers, eight for an eight bit computer, nine for a nine bit etc. These things come in cheap packs of many skewers. Or you could clean up used skewers.
\n
Scissors or a sharp craft knife.
\n
Some glue. Preferably washable PVA glue if you care about your clothes or have a small child \'helping\'.
\n
Some pieces of card which you can write on, the number corresponds to the \'bit-ness\' of the computer. If you used eight skewers, you need eight bits of card. These need to be slightly narrower than the cereal box. They could be made from other cereal boxes sliced up. A height of about four inches, ten centimetres is good.
\n
An enquiring mind and temporarily suspended credulity.
\n
\n\n
What to do
\n\n
Step 1:
\n\n
Prepare the case of the computer.
\n\n
Cut off the box flaps at the top where the cereal was poured out.
\n\n
The computer will eventually be used standing up in the usual position with the open end at the top.
\n\n
Step 2:
\n\n
Making a chute at the bottom.
\n\n
You need to make a sort of chute at the bottom so that stuff that falls down into the box will slide out the front.
\n\n
Do this by cutting a horizontal line across the width of the box about four or five inches, about eight centimetres from the bottom edge of the box.
\n\n
Now cut down the front edges of the box from the horizontal slit to the bottom.
\n\n
This will make a flap that you can fold down by putting your hand inside and pushing it out.
\n\n
Hinge it down and make a fold in this flap about half an inch (one centimetre) from the front edge of the flap.
\n\n
Coat the inside of the flap, above the fold, with glue. Now push the flap back up and press the folded (gluey) portion of the flap against the inside of the back of the box. You could use some sticky tape to hold it down while it dries.
\n\n
When the glue has dried you will be able to see how this now forms a chute at the bottom of the box.
\n\n
Step 3:
\n\n
Now draw a horizontal line across the front side of the box about an inch, or 2.5 centimetres from the open end.
\n\n
Now is the trickiest part because you will need to do some arithmetic. Pity you don\'t have a computer, right?
\n\n
You need to measure out a number of points across this line which correspond to the bit-ness of your computer. So if you are making an eight bit computer, you need eight marks spaced equally across this line, that\'s nine gaps across.
\n\n
When you have done this you are going to pierce holes in the box with either one of the BBQ skewers or something sharper. You need for the skewers to pass right through the box and out the back side, in the same position as accurately as possible. This might be easier if you draw and measure out the same points on the back panel and push holes through from both sides.
\n\n
Either way what you are aiming for is to make the path through the box as accurately level and equi-distant as possible. The skewers should pass through the box and remain parallel.
\n\n
Step 4:
\n\n
We are now going to make the punched cards.
\n\n
Create the same number of cards as the bit-ness of your computer. So an eight bit computer will require eight cards.
\n\n
The cards will be almost as wide as the inside of the box, and tall enough to write stuff on but not high enough to show their bottom edges through the chute hole at the bottom of the computer. And not so tall that when they fall to the bottom they get wedged between the chute and the back wall of the computer.
\n\n
Laying each card flat on the table, draw a horizontal line across the card about\nthe same distance from its top edge as you drew the line into which you punched holes in the body of the computer.
\n\n
You will need to measure out the same number of holes across this as the holes across your computer. Again accuracy is important if the computer is to work smoothly.
\n\n
Make each hole in the punched cards large enough that the skewers you used pass through the hole with no resistance. A hand-held single hole punch is good for this.
\n\n
The holes need to line up when the stack of cards is held flat in a pack.
\n\n
Step 5:
\n\n
Programming your punched cards.
\n\n
Take each card in turn and change all but one of the holes into a slot from the holes to the top of the card.
\n\n
For example, for card one, in an eight bit computer, leave hole zero (left-most for little-endian) as it is and for holes 1 to 7 cut from each side of the hole to the top edge, removing the little bit of card.
\n\n
So when a card is done it will look a bit like a comb with one hole somewhere along the row, corresponding to which bit the card represents.
\n\n
For the next card cut all the holes except the one to the right of the last one.
\n\n
When you have done this and placed the cards in a stack, you will see that what you have is a stack of cards, each of which has 1 intact hole and bit-ness minus 1 slots.
\n\n
Step 6:
\n\n
Loading the program into your computer.
\n\n
Holding the cards together in a stack, feed them into the top of the computer, with the punches at the top closest to the open top end of the box.
\n\n
Holding the cards in place so that their holes line up with the holes in the box, push skewers through from the front of the box, through the corresponding holes and slots in the stack of cards.
\n\n
Now when you stand the computer up, what you have is a box containing a stack of punched cards, each of which is only held in place by one skewer.
\n\n
And if you cut the cards to be very close to the width of the box, the cards will sit straight without drooping down at one end.
\n\n
Step 7:
\n\n
Getting some data out of your computer.
\n\n
Before you loaded the cards into the computer, you wrote some data on them, right?
\n\n
If you have an eight bit computer and you have eight kids, you will never forget their birthday again. Write the name and birthday of each child on a card and write their name above the skewer hole on the box, using the hole which corresponds to their card, the one with the intact (not a slot) in it.
\n\n
When you pull that skewer out, the corresponding card is no longer held in the box, and it drops down and slides out of the chute. Pity it\'s not quite as much fun as getting nice crisp bank notes out of a cash-machine.
\n\n
Finally, take a magic-marker and write \'Windows Vista\' on the front of the box. And it might be a good idea to snip off the sharp ends of the bamboo skewers before you put your eye out or damage a small child.
\n\n
Troubleshooting
\n\n
Problem: When I pull out a skewer, no card drops out.
\n\n
Possible causes: There is too much friction between the cards or between the outer edges of the card and the sides of the box. When you load the cards, try to spread them apart a bit. And make the cards a few millimetres narrower than the box. Or the holes and slots in the cards are too small and there is too much friction between the edges of a slot and a skewer.
\n\n
Conclusion
\n\n
This is a totally pointless activity and you need to get out more.
\n\n
I remember seeing this somewhere when I was a very small child. Either in a book or on TV. I think it may have been my slightly older brother who made it. I have the vaguest recollection of a cereal box with some of my mum\'s knitting needles sticking out.
\n\n
If you used eight bamboo skewers, you are now the proud owner of an eight bit computer with eight bits of random access memory.
\n\n
A slight drawback is that each time you ask for output (pull out a skewer) the data bit you asked for is no longer inside the computer\'s memory. So you will have to \'reboot\' every five minutes (sound familiar?).
\n\n
And because of the way it works, eight bits does not mean 256 different cards.
\n\n
But it\'s fun and a young kid will delight in pulling out a skewer to make a card drop out. There is glue involved as well.
\n\n
Mike
\n',282,0,0,'CC-BY-SA','home-made computer, glue, fun, kids',0,0,1),
(3777,'2023-01-24','Running Haiku on Bhyve, the BSD Hypervisor',531,'Claudio talks about installing and running Haiku R1/beta4 on Bhyve','
\n',152,0,0,'CC-BY-SA','freebsd,haiku,beos,bhyve,vmbhyve,bsd,virtualization,hypervisor',0,0,1),
(3778,'2023-01-25','A Squirrel Beeing on Google Products and Google Security',1223,'I made a \'beeing\" podcast about Google products, interoperability and their lousy security','
I have a discussion about my Android \"WIPING\" and how it affected my\n2 factor authorization with Google. Further I \"beein\" some more about\nAndroid not being able to authenticate against a known chromebook using\nGOOGLE SECURITY, what a \"beeing\" , \"beeing\"!!!!
\n
And I also cover Google\'s lousy support for chromebooks through\nAndroid, not sharing bandwidth via the cell communication channels. I\ncover easytether and ask why Google hasn\'t given chromebooks the same\nbandwidth access any Android phone would have??? WHY???
\n
Google is so piggish and stupid that Android and chromebooks are\nalmost as if they were separate companies who are in competition with\neach other instead of two products from the same company.
\n
I also cover the overbearing Android growth via QR codes and programs\nlike healio.
\n',377,0,1,'CC-BY-SA','Android, chromebooks, easytether, cellphones, bandwidth,beeing,sucks, QRcodes, healio',0,0,1),
(3779,'2023-01-26','Just Because You Can Do a Thing... ',198,'Just because you can do a thing, does that mean you should?','
Hello Hacker Public Radio fans. This is Trey, and I am throwing this\nrecording together for several reasons:
\n\n
The queue of shows is abysmally sparse. There are far more\nopenings for shows in the next few weeks than there are shows\nposted.
\n
This show is a pitiful excuse for why I haven\'t posted any shows\nrecently
\n\n
If you like what you hear on Hacker Public Radio, please express your\ngratitude by recording your own show. It doesn\'t need to be long, or\nsound professional, or anything. Introduce yourself and share something\nyou find interesting.
\n
If you do not like any or all of what you hear on Hacker Public\nRadio, then it is the perfect opportunity for you to take a few minutes\nand record a short (or long) podcast of your own which \"fills the gap\"\nof what you might feel is needed on HPR.
\n
Alright. Enough preliminaries.
\n
A long time ago, at an undisclosed university far, far away, I took\nmy first class about Ethics. One of the things I remember most was the\nquestion of \"Just because you can do a thing, does that mean you should\ndo the thing?\"
\n
This was applied to many different scenarios - from nation states\nbuilding weapons of mass destruction, to authoring computer viruses, and\neven to saying what you are thinking at any given moment.
\n
It should quickly become obvious that you should not always do a\nthing simply because you can do it. And today, I would like to relate\nthat to DIY home improvement projects, especially as we work our way up\nin years.
\n
For regular listeners, you may recall my series \"Everything You\nAlways Wanted to Knox about PEX\" recorded and shared in May through July\nof 2022 (hpr3604, hpr3614, hpr3624 & hpr3634). In\nthis series, I recounted the process of replumbing my home using PEX\nwith helpful advice for anyone else who wants to try it. What I did not\nrealize at the time I was doing the project was the toll that doing so\nmuch work overhead, by myself, was taking on my old shoulder joints. It\nwas only one straw, but a rather significant one, which eventually broke\nthe camel\'s back. Or, in my case, resulted in several severe tears in my\nrotator cuff and bicep tendon.
\n
Therapy was marginally effective, and surgery was eventually required\nto put things back together the way they belonged. My effort to save\nmoney and do the project myself \"Because I could\" helped lead to\nsignificantly more expenses and more than a year of recovery.
\n
I am not sharing this for sympathy, but rather because I learned\nsomething important. Now that I am getting older, as I decide which\nprojects I should do myself and which to pay professionals to do, it is\nimportant to factor in the potential impact on my body, my mind and\nthose around me, even if all goes well.
\n
Just because you can do a thing does not necessarily mean you should\ndo a thing.
\n
Unless that \"Thing\" is recording a podcast for HPR. THAT is something\nyou can and should do.
\n',394,0,0,'CC-BY-SA','aging, diy, health',0,0,1),
(3782,'2023-01-31','Content Format article from Wikipedia',300,'Wikipedia article on the various types of content formats','
\n',318,0,0,'CC-BY-SA','media, formats, encoding',0,0,1),
(3784,'2023-02-02','Two factor authentication without a phone number',1107,'Diving into privacy-aware and offline methods to generate one time passwords','
Many services implement 2FA (Two factor authentication) by sending\nyou a OTP (One Time Password) using an SMS with a random code, but this\nforces you to give them your valuable phone number. What alternatives do\nexist?
\n
Let\'s dive into the HOTP,\nused by some banks years ago through a physical token and the recent TOTP,\nwhich both let you generate completely offline codes without\nusing any phone number or any other personal detail. They use the HMAC technique usually\nwith a SHA-1 one-way hashing function, but other hashing functions can\nbe used too.
use TOTP in KeepassXC for a desktop generator guide
\n
\n
Let\'s keep Webauthn maybe for a\nfuture episode, I\'m still exploring it and have to do more research.
\n',407,74,0,'CC-BY-NC-SA','2FA, OTP, TOTP, HOTP, security',0,0,1),
(3787,'2023-02-07','It shouldn\'t crackle like that',584,'Rho`n describes fixing the wiring to a ceramic Christmas tree','\n
Synopsis
\n
The Friday before Christmas, my partner\'s mother called and asked if I had a short indoor extension cord she could borrow. When I arrived at her house, she showed me her display of ceramic Christmas trees for which she needed the extension cord. These decorations have two pieces. A base which holds a small light bulb, and then the tree which sits over the light and has translucent colored plastic \'Christmas lights\' which are illuminated by the light bulb inside the tree. There were four ceramic trees of varying heights—from 14\" (~36 cm) to 6\" (~15 cm) tall. While helping to arrange each of the trees electrical cords and plugging them into the extension cable, one of the trees wouldn\'t stay lit. If you turned the base or moved the cord it would light back up, but then go out once you took pressure off the cord. I could also hear crackling at times when moving the cord—not a sound you want to hear in an electric ornament.
\n
After separating the pieces and turning over the base, I could see not only the sparks, but why it was sparking. At some point, one of wires had come lose from the light socket and was taped back in place with what looks like duct tape. The ornament was made in the 1950s. I\'m not sure when the repair was made. It is an ornament that has been passed through the family over the years. The plastic which held the wire in place had failed over the years, and the tape was also failing from the electric sparks that would occur when the wire was moved around. You could see burn marks on the tape around the wire.
\n
At first I thought I may be able to fix the side with the bad wiring. Maybe solder the wire onto the socket to give it a good electrical connection, and then use electrical tape to cover the hole where the socket casing had failed, but in the process of taking the wire out and removing all the old duct tape, the socket\'s electrical contact fell apart. This was for the best, the whole socket needed replacing, but I wasn\'t sure I could find a replacement socket that would fit through the hole in the ceramic base.
\n
While doing my last minute Christmas shopping on Christmas Eve, I stopped at one of the big box hardware stores to browse the electrical section and see if I could find a replacement socket that might work. Of course I hadn\'t brought either the old socket or the light bulb, but I found a small rack with replacement sockets that looked like it might work. The candelabra style socket replacement looked like the correct size—for both the light bulb and the hole in the base of the ornament.
\n
Once I was home, I tested the fit of the light bulb, and the socket was the correct size. It was just a little to big for the hole in the base, but I was hoping I could just grind off some of the raised plastic lettering and maybe a little off the sides of the socket here and there to get it to fit in the base. I was leery of using my Dremel tool to make the hole bigger in the ceramic base. I didn\'t want it to crack or chip the finish. I ended up doing both. Grinding down some of the plastic on the replacement socket and grinding out the hole in the ceramic base.
\n
A bit of electrical tape wrapped around the new socket created a snug fit between the hole in the ornament\'s base and the socket. I then hot glued the socket to the inside of the base to provide extra stability. Next step was attaching the old cord to the new socket. The cord was in good shape except where it was connected to the old socket. I evened up the end of the cord, then stripped it, and then connected the cord to the new socket with wire nuts.
\n
After flipping over the base and screwing in the light bulb, I tested the repair. Success!
\n \n
\n',293,0,0,'CC-BY-SA','Christmas, electrical, safety',0,0,1),
(3788,'2023-02-08','Nitecore Tube torch',397,'I have owned one of these for many years and find it very useful','\n
Introduction
\n
This torch (aka flashlight) came up during the recording of\nthe Community News for May 2022. I have owned an example of this device\nsince 2016. It’s been extensively reviewed elsewhere but I thought I’d\nbriefly tell you about my experiences.
\n
Nitecore Tube (V1)
\n\n
I bought this from Amazon after seeing a video of it on the Big\nClive YouTube channel. It was under £10. This version is no longer\navailable but there is a version 2 for a similar price. I haven’t tried\nthis one.
\n
The Nitecore Tube is a small plastic-bodied torch with fittings for a\nkey ring. I have not been keen to keep it on my keyring for fear of\ndamage from the keys, so I keep it always in my shirt pocket.
\n
The torch is controlled through a rubber-like button on one side, and\nhas a micro USB port on the edge which is covered by a rubber cap.
\n
While charging, a blue LED can be seen inside the body of the torch,\nwhich turns off when the charging process is complete.
\n
The torch can operate at a number of brightness levels and has a\nlock mode:
\n
\n
Single press - turns the low light level on and off
\n
Double press - turns on the permanent high level mode, a single\npress for off
\n
Single press and hold for more than 1 second - temporary high\nmode
\n
Press and hold when in low mode increases in brightness in\nsteps
\n
Press and hold for more than 5 seconds when in high mode will lock\nthe torch against accidental button presses. The light blinks to show\nit’s locked. Press and hold to return to normal.
\n
\n
Usage
\n
I don’t use this torch a huge amount. The fact that it’s always in my\npocket means I have a source of quite bright light when I need one. The\nlower level light is useful for moving around in the dark or in a gloomy\nplace. The brighter level I tend to use to read labels on jars, bottles\nand other containers. For some reason, these labels are often designed\nwith minimal contrast (like a dull orange lettering on a purple\nbackground) which my eyes just can’t cope with. The Nitecore is my\nsaviour with this sort of stuff!
\n
I don’t charge it very often, but it is easy to do it with a phone\ncharger - I have several micro USB cables around, so it’s no\nproblem.
\n
Conclusion
\n
This is a great little device. I have other torches for when I need a\nstronger, more broadly illuminating light source. I wouldn’t be carrying\nany of these around with me though. The Nitecore is small and compact\nenough that I can keep it on me all the time.
\n
If I lost this one, or it died, I’m pretty sure I’d get another!
\n\n\n',225,0,1,'CC-BY-SA','torch,flashlight,rechargeable,Lithium Ion',0,0,1),
(3789,'2023-02-09','Common lisp portable games including acl2 formal logic',3220,'Describing exploratory libre common lisp portable games I am using acl2 formal methods in modules of','
Source I was looking through while talking WIP: \ngopher://gopher.club/1/users/screwtape/car-game
\n',416,0,0,'CC-BY-SA','common-lisp,acl2,asdf3,formal-methods,game,programming',0,0,1),
(3791,'2023-02-13','My Hardware Problem - Keyboards',1418,'I\'m always looking for new computer hardware. This is about my keyboards','
I discuss my quest for the perfect keyboard for me.
Noise reduction applied\r\n\r\n\r\n',417,57,0,'CC-BY-SA','Keyboards, Ducky, Razer, Red Dragon, Cherry, Kailh, MX, Keycaps, HyperX, Pudding',0,0,1),
(3793,'2023-02-15','RE: Zen_Floater2',1127,'GOD probably will use a Chromebook.','
samsung:\r\nGalaxy Chromebook Go 14inch, Silver, Wi-Fi.
\r\n
\r\n
wikipedia:\r\nArtificial intelligence is intelligence—perceiving, synthesizing, and\r\ninferring information—demonstrated by machines, as opposed to\r\nintelligence displayed by non-human animals and humans.
\r\n
wikipedia: In\r\nmonotheistic thought, God is usually viewed as the supreme being,\r\ncreator, and principal object of faith. God is typically conceived as\r\nbeing omnipotent, omniscient, omnipresent, and omnibenevolent, as well\r\nas having an eternal and necessary existence.
\r\n
wikipedia:\r\nIn economics and industrial design, planned obsolescence (also called\r\nbuilt-in obsolescence or premature obsolescence) is a policy of planning\r\nor designing a product with an artificially limited useful life or a\r\npurposely frail design, so that it becomes obsolete after a certain\r\npre-determined period of time upon which it decrementally functions or\r\nsuddenly ceases to function, or might be perceived as\r\nunfashionable.
\r\n
wikipedia:\r\nEugenics. In the decades following World War II, with more emphasis on\r\nhuman rights, many countries began to abandon eugenics policies,\r\nalthough some Western countries (the United States, Canada, and Sweden\r\namong them) continued to carry out forced sterilizations.
\r\n
\r\n',391,0,1,'CC-BY-SA','Tin hat, chrome book, Artificial intelligence',0,0,1),
(3795,'2023-02-17','2022-2023 New Years Show Episode 1',5022,'2022 - 2023 new years show where people come together and chat the year away ','
Episode #1
\n
Welcome to the 11th Annual Hacker Public Radio show. It is December\nthe 31st 2022 and the time is 10 hundred hours UTC. We start the show by\nsending Greetings to Christmas Island/Kiribati and Samoa Kiritimati,\nApia. Chatting with Honkey, Mordancy, Joe, Ken, and others
\n
Discussed: pi hole, podman, RPIs, Pfsense, and netminers new micro\npc
Civilizations around the world have been celebrating the start of\neach new year for at least four millennia. Today, most New Year’s\nfestivities begin on December 31 (New Year’s Eve), the last day of the\nGregorian calendar, and continue into the early hours of January 1 (New\nYear’s Day).
We lead with an alternative point of view, providing bold, smooth\ncups of coffee to our people. We find fresh ways to enjoy coffee, and we\nfoster community along the way. Disrupting the status quo interests us,\nso we create edgy, sarcastic content. We live to rebel against blah\nbeans—and a boring, lackluster life.
Ogg is a multimedia container format, and the native file and stream\nformat for the Xiph.org multimedia codecs. As with all Xiph.org\ntechnology is it an open format free for anyone to use.
FLAC stands for Free Lossless Audio Codec, an audio format similar\nto MP3, but lossless, meaning that audio is compressed in FLAC without\nany loss in quality. This is similar to how Zip works, except with FLAC\nyou will get much better compression because it is designed specifically\nfor audio, and you can play back compressed FLAC files in your favorite\nplayer (or your car or home stereo, see supported devices) just like you\nwould an MP3 file.
Kubuntu is a free, complete, and open-source alternative to\nMicrosoft Windows and Mac OS X which contains everything you need to\nwork, play, or share. Check out the Feature Tour if you would like to\nlearn more!
A\ncontainer is a standard unit of software that packages up code and\nall its dependencies so the application runs quickly and reliably from\none computing environment to another. A Docker container image is a\nlightweight, standalone, executable package of software that includes\neverything needed to run an application: code, runtime, system tools,\nsystem libraries and settings.
Snort is the foremost Open Source Intrusion Prevention System (IPS)\nin the world. Snort IPS uses a series of rules that help define\nmalicious network activity and uses those rules to find packets that\nmatch against them and generates alerts for users.
\n
Snort can be deployed inline to stop these packets, as well. Snort\nhas three primary uses: As a packet sniffer like tcpdump, as a packet\nlogger — which is useful for network traffic debugging, or it can be\nused as a full-blown network intrusion prevention system. Snort can be\ndownloaded and configured for personal and business use alike.
In addition to blocking advertisements, Pi-hole has an informative\nWeb interface that shows stats on all the domains being queried on your\nnetwork.
\n
\n
nlnetlabs:\nUnbound Unbound is a validating, recursive, caching DNS resolver. It\nis designed to be fast and lean and incorporates modern features based\non open standards.
dietpi: DietPi is an extremely\nlightweight Debian OS, highly optimised for minimal CPU and RAM resource\nusage, ensuring your SBC always runs at its maximum potential.
\n
servethehome:\nProject Tiny Mini Micro, cool 1 liter pc builds.
\n
filezilla: The\nFileZilla Client supports FTP, FTP over TLS (FTPS), and SFTP.
\n
redhat:\nConfigure a Network Team Using the Text User Interface,\nnmtui.
\n
howtogeek:\nManage Linux Wi-Fi Networks With Nmtui.
freedos: FreeDOS is a\ncomplete, free, DOS-compatible operating system. While we provide some\nutilities, you should be able to run any program intended for\nMS-DOS.
\n
reactos: Imagine running your\nfavorite Windows applications and drivers in an open-source environment\nyou can trust.
playonlinux:\nPlayOnLinux is a piece of software which allows you to easily install\nand use numerous games and apps designed to run with Microsoft®\nWindows®.
\n
protondb: Proton is a new\ntool released by Valve Software that has been integrated with Steam Play\nto make playing Windows games on Linux as simple as hitting the Play\nbutton within Steam.
\n
libreoffice: LibreOffice\nis a free and powerful office suite.
\n
linuxmint: Linux Mint is a\ncommunity-driven Linux distribution based on Ubuntu, bundled with a\nvariety of free and open-source applications.
\n
xfce: Xfce or XFCE is a free and\nopen-source desktop environment for Linux and other Unix-like operating\nsystems.
\n
crunchbang: CrunchBang was a\nDebian GNU/Linux based distribution offering a great blend of speed,\nstyle and substance.
toastmasters\nToastmasters International is a nonprofit educational organization that\nteaches public speaking and leadership skills through a worldwide\nnetwork of clubs.
BASIC BASIC\n(Beginners\' All-purpose Symbolic Instruction Code) is a family of\ngeneral-purpose, high-level programming languages designed for ease of\nuse. The original version was created by John G. Kemeny and Thomas E.\nKurtz at Dartmouth College in 1963.
\n
IRC IRC\nis short for Internet Relay Chat. It is a popular chat service still in\nuse today.
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3804,'2023-03-02','2022-2023 New Years Show Episode 2',5224,'2022 - 2023 new years show where people come together and chat','
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3814,'2023-03-16','2022-2023 New Years Show Episode 3',7265,'2022 - 2023 new years show where people come together and chat','
Episode #3
\n
\n
wikipedia:\nThe Drunkard\'s Walk: How Randomness Rules Our Lives.
\n
wikipedia:\nLactose intolerance is a common condition caused by a decreased ability\nto digest lactose, a sugar found in dairy products.
\n
uncyclopedia:\nA tree hugging hippy is a hippy who hugs trees often found in Bezerkley,\nCalifornia. Many people think that there is much more to say about tree\nhugging hippies than just the fact that they hug trees, but reality is,\nthat there is not really very much more to say about tree hugging\nhippies than that they hug trees.
\n
merriam-webster:\nA vegetarian is a person who does not eat meat : someone whose diet\nconsists wholly of vegetables, fruits, grains, nuts, and sometimes eggs\nor dairy products.
\n
merriam-webster:\nA vegan is a strict vegetarian who consumes no food (such as meat, eggs,\nor dairy products) that comes from animals.
\n
wikipedia:\nLiberalism is a political and moral philosophy based on the rights of\nthe individual, liberty, consent of the governed, political equality and\nequality before the law. Liberals espouse various views depending on\ntheir understanding of these principles.
\n
wikipedia:\nConservatism is a cultural, social, and political philosophy that seeks\nto promote and to preserve traditional institutions, practices, and\nvalues. The central tenets of conservatism may vary in relation to the\nculture and civilization in which it appears.
\n
ssa: Social Security is\ncommitted to helping maintain the basic well-being and protection of the\npeople we serve. We pay benefits to about 64 million people including\nretirees, children, widows, and widowers. From birth, to marriage, and\ninto retirement, we are there to provide support throughout life\'s\njourney.
\n
wikipedia:\nIn physiology, dehydration is a lack of total body water, with an\naccompanying disruption of metabolic processes. It occurs when free\nwater loss exceeds free water intake, usually due to exercise, disease,\nor high environmental temperature. Mild dehydration can also be caused\nby immersion diuresis, which may increase risk of decompression sickness\nin divers.
\n
wikipedia:\nAn emergency medical technician (EMT), also known as an ambulance\ntechnician, is a health professional that provides emergency medical\nservices. EMTs are most commonly found working in ambulances. In\nEnglish-speaking countries, paramedics are a separate profession that\nhas additional educational requirements, qualifications, and scope of\npractice.
\n
wikipedia:\nPost-traumatic stress disorder (PTSD) is a mental and behavioral\ndisorder that can develop because of exposure to a traumatic event, such\nas sexual assault, warfare, traffic collisions, child abuse, domestic\nviolence, or other threats on a person\'s life.
\n
anxiety:\nAnxiety is the mind and body\'s reaction to stressful, dangerous, or\nunfamiliar situations. It\'s the sense of uneasiness, distress, or dread\nyou feel before a significant event.
\n
alcoholism:\nAlcoholism is a condition that develops over time as someone continues\nto abuse alcohol. The result of alcoholism is the inability to control\nthe urge to drink alcohol.
\n
neomutt:\nNeoMutt is a text-based application which interacts with users through\ndifferent menus which are mostly line-/entry-based or page-based.
\n
gnu:\nemacs is an extensible, customizable, free/libre text\neditor — and more.
\n
wikipedia: Usenet\nis a worldwide distributed discussion system available on computers. It\nwas developed from the general-purpose Unix-to-Unix Copy (UUCP) dial-up\nnetwork architecture.
\n
wikipedia:\nGoogle+ (pronounced and sometimes written as Google Plus; sometimes\ncalled G+) was a social network owned and operated by Google. The\nnetwork was launched on June 28, 2011, in an attempt to challenge other\nsocial networks, linking other Google products like Google Drive,\nBlogger and YouTube.
\n
techandcoffee: A virtual\nwater cooler for the world of tech.
\n
wikipedia:\nYahoo! Messenger (sometimes abbreviated Y!M) was an\nadvertisement-supported instant messaging client and associated protocol\nprovided by Yahoo!. Yahoo! Messenger was provided free of charge and\ncould be downloaded and used with a generic \"Yahoo ID\" which also\nallowed access to other Yahoo! services, such as Yahoo! Mail.
\n
discord: A place that makes it\neasy to talk every day and hang out more often.
\n
telegram: Telegram is a\ncloud-based mobile and desktop messaging app with a focus on security\nand speed.
\n
IRC IRC\nis short for Internet Relay Chat. It is a popular chat service still in\nuse today.
\n
mintCast The podcast by the\nLinux Mint community for all users of Linux.
\n
distrohoppersdigest:\nWe are three Blokes who love Linux and trying out new stuff.
samsclub: Sam’s Club is a\nmembership warehouse club, a limited-item business model that offers our\nmembers quality products.
\n
walmart: Walmart Inc. is an\nAmerican multinational retail corporation that operates a chain of\nhypermarkets, discount department stores, and grocery stores from the\nUnited States, headquartered in Bentonville, Arkansas.
\n
target: Target Corporation is\nan American big box department store chain headquartered in Minneapolis,\nMinnesota.
\n
mcdonalds:\nMcMuffin is a family of breakfast sandwiches sold by the international\nfast food restaurant chain McDonald\'s.
\n
joinmastodon: Social\nnetworking that\'s not for sale.
\n
ciachef: You love food. And\nyou’re pretty sure you want to make it your life. If this sounds like\nyou, then The Culinary Institute of America is the only place you need\nto be.
\n
fda:\nA food allergy is an abnormal immune response to food. The symptoms of\nthe allergic reaction may range from mild to severe.
\n
healthline:\nSpend less time in the kitchen: Choose which meals to cook first based\non cook times.
\n
wikipedia:\nBeekeeping is the maintenance of bee colonies, commonly in man-made\nbeehives.
\n
veganfriendly:\nThe Ethics of Veganism: Ethical Reasons to Go Vegan.
\n
worldwildlife:\nBeef production has several distinct and significant impacts on the\nenvironment.
\n
xess:\nHow to install, test, and use your new XS40 or XSP Board.\n
\n
ebay: SBC ISA\n386 SX40 single computer cpu card OMNI-300 4MB.
\n
\n
linuxmint: Linux Mint is a\ncommunity-driven Linux distribution based on Ubuntu, bundled with a\nvariety of free and open-source applications.
\n
linuxliteos: Linux Lite\nis a Linux distribution based on Debian and Ubuntu created by a team of\nprogrammers led by Jerry Bezencon.
\n
sparkylinux: SparkyLinux is a\ndesktop-oriented operating system based on the Debian operating\nsystem.
\n
ubuntu: Ubuntu is a Linux\ndistribution based on Debian and composed mostly of free and open-source\nsoftware.
\n
snapcraft: Snaps are\ncontainerised software packages that are simple to create and install.\nThey auto-update and are safe to run.
\n
slackware: Slackware is a\nLinux distribution created by Patrick Volkerding in 1993.
\n
archlinux: Arch Linux is an\nindependently developed, x86-64 general-purpose Linux distribution that\nstrives to provide the latest stable versions of most software by\nfollowing a rolling-release model.
\n
gnu: GNU GRUB is a\nMultiboot boot loader. It was derived from GRUB, the GRand Unified\nBootloader, which was originally designed and implemented by Erich\nStefan Boleyn.
\n
wikipedia:\nMavis Beacon Teaches Typing is an application software program designed\nto teach touch typing.
\n
wikipedia:\nMicrosoft Windows is a computer operating system developed by\nMicrosoft.
\n
wikipedia:\nList of Microsoft 365 applications and services.
\n
freedos: FreeDOS is a\ncomplete, free, DOS-compatible operating system. While we provide some\nutilities, you should be able to run any program intended for\nMS-DOS.
\n
blackberry:\nBlackBerry was a brand of smartphones and\nother related mobile services and devices.
\n
wikipedia: OS/2\n(Operating System/2) is a series of computer operating systems,\ninitially created by Microsoft and IBM under the leadership of IBM\nsoftware designer Ed Iacobucci.
\n
pcom: The PCOM\nnetwork account is used to logon to on-campus computers and to\nauthenticate off-campus users.
\n
wikipedia: The\nInternational Business Machines Corporation (IBM), nicknamed Big Blue,\nis an American multinational technology corporation headquartered in\nArmonk, New York, with operations in over 175 countries. It specializes\nin computer hardware, middleware and software and provides hosting and\nconsulting services in areas ranging from mainframe computers to\nnanotechnology.
\n
wikipedia: The\nIBM RT PC (RISC Technology Personal Computer) is a family of workstation\ncomputers from IBM introduced in 1986. These were the first commercial\ncomputers from IBM that were based on a reduced instruction set computer\n(RISC) architecture.
\n
wikipedia: The\nPersonal System/2 or PS/2 is IBM\'s second generation of personal\ncomputers. Released in 1987, it officially replaced the IBM PC, XT, AT,\nand PC Convertible in IBM\'s lineup.
\n
wikipedia:\nToken Ring is a computer networking technology used to build local area\nnetworks. It was introduced by IBM in 1984, and standardized in 1989 as\nIEEE 802.5.
\n
wikipedia:\nA Network Termination Device (NTD) is a customer-side network interface\ndevice used by the Australian National Broadband Network (NBN). Network\ntermination devices provide multiple bridges for customers to access the\nNBN.
\n
wikipedia:\nThe Internet protocol suite, commonly known as TCP/IP, is a framework\nfor organizing the set of communication protocols used in the Internet\nand similar computer networks according to functional criteria. The\nfoundational protocols in the suite are the Transmission Control\nProtocol (TCP), the User Datagram Protocol (UDP), and the Internet\nProtocol (IP).
\n
rtx: The Raytheon Company is a\nmajor U.S. defense contractor and industrial corporation with core\nmanufacturing concentrations in weapons and military and commercial\nelectronics.
\n
wikipedia:\nIn electronics, a wafer (also called a slice or substrate) is a thin\nslice of semiconductor, such as a crystalline silicon (c-Si), used for\nthe fabrication of integrated circuits and, in photovoltaics, to\nmanufacture solar cells.
\n
wikipedia: A\ntransistor is a semiconductor device used to amplify or switch\nelectrical signals and power. The transistor is one of the basic\nbuilding blocks of modern electronics.
\n
wikipedia: A\nresistor is a passive two-terminal electrical component that implements\nelectrical resistance as a circuit element. In electronic circuits,\nresistors are used to reduce current flow, adjust signal levels, to\ndivide voltages, bias active elements, and terminate transmission lines,\namong other uses.
wikipedia: A\nsecretarial pool or typing pool is a group of secretaries working at a\ncompany available to assist any executive without a permanently assigned\nsecretary. These groups have been reduced or eliminated where executives\nhave been assigned responsibility for writing their own letters and\nother secretarial work.
\n
debian: Debian, also known as\nDebian GNU/Linux, is a Linux distribution composed of free and\nopen-source software, developed by the community-supported Debian\nProject, which was established by Ian Murdock on August 16, 1993.
\n
nobaraproject: The Nobara\nProject, to put it simply, is a modified version of Fedora Linux with\nuser-friendly fixes added to it.
\n
getfedora: Fedora Linux is a\nLinux distribution developed by the Fedora Project. Fedora contains\nsoftware distributed under various free and open-source licenses and\naims to be on the leading edge of open-source technologies.
\n
suckless: dwm is a\ndynamic window manager for Xorg.
\n
wikipedia:\nThe ThinkPad X series is a line of laptop computers and convertible\ntablets produced by Lenovo with less power than its other counterparts.\nIt was initially produced by IBM until 2005.
\n
newsgroups:\nUsenet is a very popular platform, and Newsgroups are a crucial part of\nIt because Users to interact with each other, share and share\nstuff.
\n
wikipedia:\nThe Gopher protocol (/ˈɡoʊfər/) is a communication protocol designed for\ndistributing, searching, and retrieving documents in Internet Protocol\nnetworks.
\n
wikipedia:\nGemini is an application-layer internet communication protocol for\naccessing remote documents, similar to the Hypertext Transfer Protocol\n(HTTP) and Gopher.
\n
github:\nAmfora aims to be the best looking Gemini client with the most\nfeatures... all in the terminal. It does not support Gopher or other\nnon-Web protocols - check out Bombadillo for that.
\n
circumlunar:\nYou can use the following Gemini clients to connect to this server via\nthe Gemini protocol and access the full range of content.
\n
wikipedia:\nDial-up Internet access is a form of Internet access that uses the\nfacilities of the public switched telephone network (PSTN) to establish\na connection to an Internet service provider (ISP) by dialing a\ntelephone number on a conventional telephone line.
\n
youtube:\nThe FCC and Federal marshals raid a pirate radio station in Knoxville\nTennessee.
\n
fish:\nnewsgroup for discussion by recovering sysadmins.
\n
thunderbird:\nThunderbird is an open source project, which means anyone can contribute\nideas, designs, code, and time helping fellow users.
\n
wikipedia:\nEternal September or the September that never ended is Usenet slang for\na period beginning around 1993 when Internet service providers began\noffering Usenet access to many new users.
\n
wikipedia: BBM,\nalso known by its full name BlackBerry Messenger, was a proprietary\nmobile instant messenger and videotelephony application included on\nBlackBerry devices that allows messaging and voice calls between\nBlackBerry OS, BlackBerry 10, iOS, Android, and Windows Mobile\nusers.
\n
opensuse: openSUSE, formerly\nSUSE Linux and SuSE Linux Professional, is a Linux distribution\nsponsored by SUSE Linux GmbH and other companies.
wikipedia: M.2,\npronounced m dot two and formerly known as the Next Generation Form\nFactor (NGFF), is a specification for internally mounted computer\nexpansion cards and associated connectors. M.2 replaces the mSATA\nstandard, which uses the PCI Express Mini Card physical card layout and\nconnectors.
\n
oggcamp: OggCamp is an\nunconference celebrating Free Culture, Free and Open Source Software,\nhardware hacking, digital rights, and all manner of collaborative\ncultural activities and is committed to creating a conference that is as\ninclusive as possible.
\n
mass:\nIt is illegal for private citizens to use, possess, or sell fireworks in\nMassachusetts, or to purchase them legally elsewhere and then transport\nthem into the state. The law prohibits any article designed to produce a\nvisible or audible effect.
\n
wikipedia:\nThe COVID-19 pandemic, also known as the coronavirus pandemic, is an\nongoing global pandemic of coronavirus disease 2019 (COVID-19) caused by\nsevere acute respiratory syndrome coronavirus 2 (SARS-CoV-2). The novel\nvirus was first identified in an outbreak in the Chinese city of Wuhan\nin December 2019.
\n
cdc:\nVaccination often already covered under employee health plans Improves\nmorale Benefits to Employees: Reduces absences due to sickness and\ndoctor visits Improves health Convenience Improves morale Benefits will\nvary based on investment by employers in championing vaccination and\nnumber of employees vaccinated.
\n
wikipedia:\nThe McDonnell F-101 Voodoo is a supersonic jet fighter which served the\nUnited States Air Force (USAF) and the Royal Canadian Air Force\n(RCAF).
\n
wikipedia:\nThe Raytheon MIM-23 HAWK (\"Homing all the way killer\") is an American\nmedium-range surface-to-air missile.
\n
wikipedia: C-4\nor Composition C-4 is a common variety of the plastic explosive family\nknown as Composition C, which uses RDX as its explosive agent.
\n
wikipedia:\nThe Boeing C-97 Stratofreighter was a long-range heavy military cargo\naircraft developed from the B-29 and B-50 bombers.
\n
wikipedia:\nThe Boeing B-29 Superfortress is an American four-engined\npropeller-driven heavy bomber, designed by Boeing and flown primarily by\nthe United States during World War II and the Korean War.
truckstop:\nLong-Haul Trucking: Everything You Need to Know.
\n
bodhilinux: Bodhi Linux, a\nlightweight distribution featuring the fast & fully customizable\nMoksha Desktop. The 64-bit is built on top of Ubuntu (20.04).
\n
stormos: Storm OS is a\nLinux distribution based on Arch, and LFS (Linux from Scratch)!
\n
stormdos: a\nmultitasking 32-bit operating system written in Free Pascal (FPK, http://www.freepascal.org ) and\ndistributed under GNU GPL v2 license and SDK files under GNU Lesser GPL\nv2.1.
sourceforge:\nTitan Linux is an all new distro built on the Debian Stable branch. It\'s\na fully functional yet minimal KDE Plasma desktop experience focusing on\nusability and performance with a wide range of hardware support out of\nthe box.
\n
wikipedia:\nDyslexia, also known until the 1960s as word blindness, is a disorder\ncharacterized by reading below the expected level for one\'s age.\nDifferent people are affected to different degrees. Problems may include\ndifficulties in spelling words, reading quickly, writing words,\n\"sounding out\" words in the head, pronouncing words when reading aloud\nand understanding what one reads.
\n
wikipedia: The\nDiagnostic and Statistical Manual of Mental Disorders, Fifth Edition\n(DSM-5), is the 2013 update to the Diagnostic and Statistical Manual of\nMental Disorders, the taxonomic and diagnostic tool published by the\nAmerican Psychiatric Association (APA). In the United States, the DSM\nserves as the principal authority for psychiatric diagnoses.
\n
wikipedia:\nIn 1994, DSM-IV was published, listing 410 disorders in 886 pages. The\ntask force was chaired by Allen Frances and was overseen by a steering\ncommittee of twenty-seven people, including four psychologists.
\n
wikipedia: The\nthyroid, or thyroid gland, is an endocrine gland in vertebrates. In\nhumans it is in the neck and consists of two connected lobes.
wikipedia:\nMajor depressive disorder (MDD), also known as clinical depression, is a\nmental disorder characterized by at least two weeks of pervasive low\nmood, low self-esteem, and loss of interest or pleasure in normally\nenjoyable activities.
healthline:\nLow testosterone in males is common as they get older. Symptoms can be\nsubtle, but there is treatment available if the symptoms affect your\nlifestyle.
\n
wikipedia:\nEndocrinology (from endocrine + -ology) is a branch of biology and\nmedicine dealing with the endocrine system, its diseases, and its\nspecific secretions known as hormones. It is also concerned with the\nintegration of developmental events proliferation, growth, and\ndifferentiation, and the psychological or behavioral activities of\nmetabolism, growth and development, tissue function, sleep, digestion,\nrespiration, excretion, mood, stress, lactation, movement, reproduction,\nand sensory perception caused by hormones.
\n
wikipedia:\nNephrology (from Greek nephros \"kidney\", combined with the suffix -logy,\n\"the study of\") is a specialty of adult internal medicine and pediatric\nmedicine that concerns the study of the kidneys, specifically normal\nkidney function (renal physiology) and kidney disease (renal\npathophysiology), the preservation of kidney health, and the treatment\nof kidney disease, from diet and medication to renal replacement therapy\n(dialysis and kidney transplantation).
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3824,'2023-03-30','2022-2023 New Years Show Episode 4',7209,'2022 - 2023 new years show where people come together and chat','
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3834,'2023-04-13','2022-2023 New Years Show Episode 5',7186,'2022 - 2023 new years show where people come together and chat','
wikipedia:\nThe Kirby Company is a manufacturer of vacuum cleaners and home cleaning\naccessories, located in Cleveland, Ohio, United States. It is a division\nof Right Lane Industries.
\n
lugcast: We are an open\nPodcast/LUG that meets every first and third Friday of every month using\nmumble.
\n
wikipedia:\nThe PlayStation Portable (PSP) is a handheld game console developed and\nmarketed by Sony Computer Entertainment.
\n
wikipedia:\nRammstein is a German Neue Deutsche Härte band formed in Berlin in 1994.\n
\n
Goodluck with all the rest of the band/music chatter. I can\'t\nunderstand any of it.
wikipedia:\nSyphilis is most commonly spread through sexual activity.
\n
wikipedia:\nDeath was an American death metal band formed in Altamonte Springs,\nFlorida, in 1984 by Chuck Schuldiner. Death is considered to be among\nthe most influential bands in heavy metal music and a pioneering force\nin death metal.
\n
wikipedia:\nDeath is a Detroit rock band formed in Detroit, Michigan in 1971 by\nbrothers Bobby, David, and Dannis Hackney.
\n
wikipedia:\nBitLocker is a full volume encryption feature included with Microsoft\nWindows versions starting with Windows Vista.
slackware: Slackware is a\nLinux distribution created by Patrick Volkerding in 1993.
\n
puppylinux: Puppy Linux is\nan operating system and family of light-weight Linux distributions that\nfocus on ease of use and minimal memory footprint.
\n
tails: Tails, or The Amnesic\nIncognito Live System, is a security-focused Debian-based Linux\ndistribution aimed at preserving privacy and anonymity.
\n
debian: Debian, also known as\nDebian GNU/Linux, is a Linux distribution composed of free and\nopen-source software, developed by the community-supported Debian\nProject, which was established by Ian Murdock on August 16, 1993.
\n
wikipedia:\nTrusted Platform Module (TPM, also known as ISO/IEC 11889) is an\ninternational standard for a secure cryptoprocessor, a dedicated\nmicrocontroller designed to secure hardware through integrated\ncryptographic keys.
\n
pine64:\nROCK64 is a credit card sized Single Board Computer powered by Rockchip\nRK3328 quad-core ARM Cortex A53 64-Bit Processor and support up to 4GB\n1600MHz LPDDR3 memory.
wikipedia: rsync\nis a utility for efficiently transferring and synchronizing files\nbetween a computer and an external hard drive and across networked\ncomputers by comparing the modification times and sizes of files.
\n
funkwhale: Listen to your\nmusic, everywhere. Upload your personal library to your pod, share it\nwith friends and family, and discover talented creators.
\n
mumble: Mumble is a free,\nopen source, low latency, high quality voice chat application.
\n
youtube:\nErnie (The Fastest Milkman In The West).\n
ironmaiden: Iron Maiden\nare an English heavy metal band formed in Leyton, East London, in 1975\nby bassist and primary songwriter Steve Harris.
\n
wikipedia:\nKamelot is an American power metal band from Tampa, Florida, formed by\nThomas Youngblood, in 1987.
\n
wikipedia:\nNightwish is a Finnish symphonic metal band from Kitee.
\n
wikipedia: Kitee\nis a town and a municipality of Finland. It is located in the province\nof Eastern Finland and is part of the North Karelia region.
\n
wikipedia:\nEvanescence is an American rock band founded in Little Rock, Arkansas in\n1995 by singer and musician Amy Lee and guitarist Ben Moody.
\n
wikipedia:\nDeep Purple are an English rock band formed in London in 1968.
\n
wikipedia:\nPink Floyd are an English rock band formed in London in 1965.
\n
wikipedia:\nBlack Sabbath were an English rock band formed in Birmingham in 1968 by\nguitarist Tony Iommi, drummer Bill Ward, bassist Geezer Butler and\nvocalist Ozzy Osbourne.
\n
toastmasters\nToastmasters International is a nonprofit educational organization that\nteaches public speaking and leadership skills through a worldwide\nnetwork of clubs.
\n
bbc: The British Broadcasting\nCorporation is the national broadcaster of the United Kingdom, based at\nBroadcasting House in London.
\n
matrix: An open network for\nsecure, decentralized communication.
\n
wikipedia:\nThe General Data Protection Regulation is a Regulation in EU law on data\nprotection and privacy in the EU and the European Economic Area.
\n
wikipedia:\nThe Gopher protocol (/ˈɡoʊfər/) is a communication protocol designed for\ndistributing, searching, and retrieving documents in Internet Protocol\nnetworks.
\n
wikipedia:\nGemini is an application-layer internet communication protocol for\naccessing remote documents, similar to the Hypertext Transfer Protocol\n(HTTP) and Gopher.
\n
wikipedia:\nSlipknot is an American heavy metal band formed in Des Moines, Iowa, in\n1995 by percussionist Shawn Crahan, drummer Joey Jordison and bassist\nPaul Gray.
\n
wikipedia:\nAfter Forever was a Dutch symphonic metal band with strong progressive\nmetal influences. The band relied on the use of both soprano vocals and\ndeath growls.
\n
metallica: Metallica is an\nAmerican heavy metal band.
\n
wikipedia:\nQueen are a British rock band formed in London in 1970 by Freddie\nMercury (lead vocals, piano), Brian May (guitar, vocals) and Roger\nTaylor (drums, vocals), later joined by John Deacon (bass).
\n
wikipedia: Brexit\n(a portmanteau of \"British exit\") was the withdrawal of the United\nKingdom (UK) from the European Union (EU) at 23:00 GMT on 31 January\n2020 (00:00 1 February 2020 CET). The UK is the only sovereign country\nto have left the EU or the EC.
\n
imdb: A WWII\nbomb group commander must fill the shoes of his predecessor and get the\nperformance rating up to snuff.
\n
wikipedia:\nTwelve O\'Clock High is a 1949 American war film about aircrews in the\nUnited States Army\'s Eighth Air Force, who flew daylight bombing\nmissions against Germany and Occupied France during the early days of\nAmerican involvement in World War II.
\n
wikipedia:\nThe Boeing B-17 Flying Fortress is a four-engined heavy bomber developed\nin the 1930s for the United States Army Air Corps (USAAC).
\n
IRC IRC\nis short for Internet Relay Chat. It is a popular chat service still in\nuse today.
\n
wikipedia:\nNext Unit of Computing (NUC) is a line of small-form-factor barebone\ncomputer kits designed by Intel.
\n
plex: With\nour easy-to-install Plex Media Server software and Plex apps on the\ndevices of your choosing, you can stream your video, music, and photo\ncollections any time, anywhere, to whatever you want.
\n
ubuntu: Ubuntu is a Linux\ndistribution based on Debian and composed mostly of free and open-source\nsoftware.
\n
ebay: Buy & sell\nelectronics, cars, clothes, collectibles & more on eBay, the world\'s\nonline marketplace.
\n
amazon:\nAmazon Renewed is your trusted destination for pre-owned, refurbished\nproducts.
\n
wikipedia: Ryzen\nis a brand of multi-core x86-64 microprocessors designed and marketed by\nAMD for desktop, mobile, server, and embedded platforms based on the Zen\nmicroarchitecture.
\n
wikipedia:\nApple M1 is a series of ARM-based systems-on-a-chip (SoCs) designed by\nApple Inc. as a central processing unit (CPU) and graphics processing\nunit (GPU) for its Mac desktops and notebooks, and the iPad Pro and iPad\nAir tablets.\n
\n
wikipedia: The\nApple M2 is an ARM-based system on a chip (SoC) designed by Apple Inc.\nas a central processing unit (CPU) and graphics processing unit (GPU)\nfor its Mac notebooks and the iPad Pro tablet.
\n
\n
wikipedia: A\nsystem on a chip or system-on-chip (SoC /ˌˈɛsoʊsiː/; pl. SoCs\n/ˌˈɛsoʊsiːz/) is an integrated circuit that integrates most or all\ncomponents of a computer or other electronic system.
\n
wikipedia:\nARM (stylised in lowercase as arm, formerly an acronym for Advanced RISC\nMachines and originally Acorn RISC Machine) is a family of reduced\ninstruction set computer (RISC) instruction set architectures for\ncomputer processors, configured for various environments.
wikipedia:\nFelix Unger (born 2 March 1946 in Klagenfurt, Austria) is a heart\nspecialist who served as the president of the European Academy of\nSciences and Arts for three decades.
\n
geekflare:\nHow to create APT Proxy using a Raspberry PI with apt-cacher-ng?
\n
gpd: The world\'s smallest\n6800U handheld Exclusive performance optimization tool Support SteamOS\nsystem.
\n
pine64:\nROCK64 is a credit card sized Single Board Computer powered by Rockchip\nRK3328 quad-core ARM Cortex A53 64-Bit Processor and support up to 4GB\n1600MHz LPDDR3 memory.
\n
wikipedia:\nDigital subscriber line (DSL; originally digital subscriber loop) is a\nfamily of technologies that are used to transmit digital data over\ntelephone lines.
\n
wikipedia:\nWindows Subsystem for Linux (WSL) is a feature of Windows that allows\ndevelopers to run a Linux environment without the need for a separate\nvirtual machine or dual booting.
\n
wikipedia: In\ncomputing, a virtual machine (VM) is the virtualization/emulation of a\ncomputer system.
\n
wikipedia: A\nChromebook (sometimes stylized in lowercase as chromebook) is a laptop\nor tablet running the Linux-based ChromeOS as its operating system.
\n
virtualbox: VirtualBox is a\npowerful x86 and AMD64/Intel64 virtualization product for enterprise as\nwell as home use.
\n
wikipedia:\nTelemetry is the in situ collection of measurements or other data at\nremote points and their automatic transmission to receiving equipment\n(telecommunication) for monitoring.
\n
gnu:\nPublished software should be free software. To make it free software,\nyou need to release it under a free software license.
wikipedia:\nRansomware is a type of malware from cryptovirology that threatens to\npublish the victim\'s personal data or permanently block access to it\nunless a ransom is paid off.
\n
wikipedia:\nInternet Explorer (formerly Microsoft Internet Explorer and Windows\nInternet Explorer, commonly abbreviated IE or MSIE) is a discontinued\nseries of graphical web browsers developed by Microsoft which was used\nin the Windows line of operating systems.
\n
wikipedia:\nMicrosoft Edge is a proprietary, cross-platform web browser created by\nMicrosoft.
\n
oggcamp: OggCamp is an\nunconference celebrating Free Culture, Free and Open Source Software,\nhardware hacking, digital rights, and all manner of collaborative\ncultural activities and is committed to creating a conference that is as\ninclusive as possible.
\n
penguicon: A happy place\nwhere hackers, makers, foodies, open source software junkies, anime\nbuffs, and science fiction fans of all ages and backgrounds come\ntogether.
\n
mozillafestival:\nMozFest is a unique hybrid: part art, tech and society convening, part\nmaker festival, and the premiere gathering for activists in diverse\nglobal movements fighting for a more humane digital world.
\n
fosdem: FOSDEM is a free\nevent for software developers to meet, share ideas and collaborate.
\n
wikipedia:\nA hybrid integrated circuit (HIC), hybrid microcircuit, hybrid circuit\nor simply hybrid is a miniaturized electronic circuit constructed of\nindividual devices, such as semiconductor devices (e.g. transistors,\ndiodes or monolithic ICs) and passive components (e.g. resistors,\ninductors, transformers, and capacitors), bonded to a substrate or\nprinted circuit board (PCB).
\n
wikipedia: A\nreal-time clock (RTC) is an electronic device (most often in the form of\nan integrated circuit) that measures the passage of time.
wikipedia: Blue\nlaws, also known as Sunday laws, Sunday trade laws and Sunday closing\nlaws, are laws restricting or banning certain activities on specified\ndays, usually Sundays in the western world.
\n
wikipedia: A\ncensus is the procedure of systematically acquiring, recording and\ncalculating information about the members of a given population.
\n
businesspundit:\nThe Commercialization Of Our 25 Favorite Holidays
\n
wikipedia:\nLeave It to Beaver is an iconic American television situation comedy\nabout an American family of the 1950s and early 1960s.
\n
wikipedia:\nThe COVID-19 pandemic, also known as the coronavirus pandemic, is an\nongoing global pandemic of coronavirus disease 2019 (COVID-19) caused by\nsevere acute respiratory syndrome coronavirus 2 (SARS-CoV-2). The novel\nvirus was first identified in an outbreak in the Chinese city of Wuhan\nin December 2019.
\n
who:\nCOVID-19 transmission and protective measures.
\n
forbes:\nCDC: 10 Ways To Dine Safely At A Restaurant With Coronavirus\nAround.
subway: Subway is an\nAmerican multinational fast food restaurant franchise that specializes\nin submarine sandwiches, wraps, salads and drinks.
\n
dominos: Domino\'s Pizza, Inc.,\ntrading as Domino\'s, is a Michigan-based multinational pizza restaurant\nchain founded in 1960 and led by CEO Russell Weiner.
\n
mcdonalds:\nMcDonald\'s Corporation is an American multinational fast food chain,\nfounded in 1940 as a restaurant operated by Richard and Maurice\nMcDonald, in San Bernardino, California, United States.
\n
wikipedia: In\npublic health, social distancing, also called physical distancing, is a\nset of non-pharmaceutical interventions or measures intended to prevent\nthe spread of a contagious disease by maintaining a physical distance\nbetween people and reducing the number of times people come into close\ncontact with each other.
\n
wikipedia:\nDue to the COVID-19 pandemic, a number of non-pharmaceutical\ninterventions colloquially known as lockdowns (encompassing stay-at-home\norders, curfews, quarantines, cordons sanitaires and similar societal\nrestrictions) have been implemented in numerous countries and\nterritories around the world.\n
bbc:\nCovid-19: What is the new three tier system after lockdown?
\n
wikipedia:\nA telephone directory, commonly called a telephone book, telephone\naddress book, phonebook, or the white and yellow pages, is a listing of\ntelephone subscribers in a geographical area or subscribers to services\nprovided by the organization that publishes the directory.
\n
cdc:\nIt’s important to keep your blood sugar levels in your target range as\nmuch as possible to help prevent or delay long-term, serious health\nproblems, such as heart disease, vision loss, and kidney disease.
\n
wikipedia: Whisky\nor whiskey is a type of distilled alcoholic beverage made from fermented\ngrain mash.
\n
wikipedia:\nPowerade is a sports drink created, manufactured and marketed by The\nCoca-Cola Company.
\n
katexic:\nbusthead (bust-head). noun. Cheap, strong liquor, usually of the illegal\nvariety.
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3844,'2023-04-27','2022-2023 New Years Show Episode 6',7254,'2022 - 2023 new years show where people come together and chat','
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3854,'2023-05-11','2022-2023 New Years Show Episode 7',7194,'2022 - 2023 new years show where people come together and chat','
Episode #7
\n
\n
huffpost:\nVintage Slang Terms For Being Drunk Are Hilarious A Century Later.
\n
theshrimpfarm:\nRed Cherry Shrimp are one of the simplest animals to breed in the\naquarium.
\n
wikipedia:\nThis is a family tree of the Habsburg family.\n
\n
youtube:\nTHE HABSBURG: Their Inbred Family Tree was a Circle!- Explained with\nReal Life Faces.
\n
\n
ancestry: Ancestry helps you\nunderstand your genealogy.
\n
wikipedia: The\nAK-47, officially known as the Avtomat Kalashnikova (Russian: Автомат\nКалашникова, lit.\n
\n
wikipedia:\nMikhail Timofeyevich Kalashnikov, IPA: 10 November 1919 – 23 December\n2013) was a Soviet and Russian lieutenant general, inventor, military\nengineer, writer, and small arms designer.
wikipedia: The\nGulag was the government agency in charge of the Soviet network of\nforced labour camps which were set up by order of Vladimir Lenin,\nreaching its peak during Joseph Stalin\'s rule from the 1930s to the\nearly 1950s.
\n
techandcoffee: A virtual\nwater cooler for the world of tech.
\n
wikipedia: A\nhippie, also spelled hippy, especially in British English, is someone\nassociated with the counterculture of the 1960s, originally a youth\nmovement that began in the United States during the mid-1960s and spread\nto different countries around the world.
\n
wikipedia: In\nmodern English, cult is a term, by some considered pejorative, for a\nsocial group that is defined by its unusual religious, spiritual, or\nphilosophical beliefs and rituals, or its common interest in a\nparticular personality, object, or goal.
\n
wikipedia: A deity\nor god is a supernatural being who is considered divine or sacred.
wikipedia:\nDoogie Howser, M.D. is an American medical sitcom that ran for four\nseasons on ABC from September 19, 1989, to March 24, 1993, totaling 97\nepisodes.
\n
wikipedia:\nGoogle+ (pronounced and sometimes written as Google Plus; sometimes\ncalled G+) was a social network owned and operated by Google. The\nnetwork was launched on June 28, 2011, in an attempt to challenge other\nsocial networks, linking other Google products like Google Drive,\nBlogger and YouTube.
\n
wikipedia:\nGoogle Hangouts is a discontinued cross-platform instant messaging\nservice developed by Google.
\n
wikipedia: Mr.\nRobot is an American drama thriller television series created by Sam\nEsmail for USA Network.
\n
kali: Kali Linux is an\nopen-source, Debian-based Linux distribution geared towards various\ninformation security tasks, such as Penetration Testing, Security\nResearch, Computer Forensics and Reverse Engineering.
\n
crunchbang: CrunchBang was a\nDebian GNU/Linux based distribution offering a great blend of speed,\nstyle and substance.
\n
bunsenlabs: BunsenLabs\nLinux Beryllium is a distribution offering a light-weight and easily\ncustomizable Openbox desktop.
pcbway: Professional PCB\nprototype with guaranteed quality for PCB prototype, We can produce\nhigh-quality PCBs with competitive price both for prototypes and low\nvolumes.
\n
mouser: Mouser Electronics\nstocks the world’s widest selection of semiconductors and electronic\ncomponents.
\n
wikipedia: An\nanalog computer or analogue computer is a type of computer that uses the\ncontinuous variation aspect of physical phenomena such as electrical,\nmechanical, or hydraulic quantities to model the problem being\nsolved.
\n
olfconference: OLF\n(formerly known as Ohio LinuxFest) is a grassroots conference for the\nGNU/Linux/Open Source Software/Free Software community that started in\n2003 as a large inter-LUG (Linux User Group) meeting and has grown\nsteadily since.
\n
joinmastodon: Mastodon is\nfree and open-source software for running self-hosted social networking\nservices.
\n
wikipedia:\nWhose Line Is It Anyway? is a short-form improvisational comedy show\noriginating as a British radio programme, before moving to British\ntelevision in 1988.
\n
wikipedia:\nA Doctor of Philosophy (PhD, Ph.D., or DPhil; Latin: philosophiae doctor\nor doctor philosophiae) is the most common degree at the highest\nacademic level awarded following a course of study.
\n
wikipedia:\nDeadpan, dry humour, or dry-wit humour is the deliberate display of\nemotional neutrality or no emotion, commonly as a form of comedic\ndelivery to contrast with the ridiculousness or absurdity of the subject\nmatter.
\n
wikipedia:\nAlzheimer\'s disease (AD) is a neurodegenerative disease that usually\nstarts slowly and progressively worsens. It is the cause of 60–70% of\ncases of dementia.
\n
wikipedia:\nSarcasm is the caustic use of words, often in a humorous way, to mock\nsomeone or something.
\n
distrohoppersdigest:\nWe are three Blokes who love Linux and trying out new stuff.
microsoft:\nMicrosoft OneNote. Your digital notebook.
\n
microsoft:\nUse Snipping Tool to capture screenshots.
\n
gimp: GIMP is a free and\nopen-source raster graphics editor used for image manipulation and image\nediting, free-form drawing, transcoding between different image file\nformats, and more specialized tasks.
\n
krita: Krita is a professional FREE\nand open source painting program.
wikipedia:\nPokémon (an abbreviation for Pocket Monsters in Japan) is a Japanese\nmedia franchise managed by The Pokémon Company, founded by Nintendo,\nGame Freak, and Creatures.
wikipedia:\nBallooning, sometimes called kiting, is a process by which spiders, and\nsome other small invertebrates, move through the air by releasing one or\nmore gossamer threads to catch the wind, causing them to become airborne\nat the mercy of air currents and electric fields.
\n
dictionary:\nSportsball is a mildly critical or humorous term used by people who\nadmit they don’t know or care about sports.
\n
wikipedia:\nThelyphonida is an arachnid order comprising invertebrates commonly\nknown as whip scorpions or vinegaroons (also spelled vinegarroons and\nvinegarones).
\n
wikipedia:\nSolifugae is an order of animals in the class Arachnida known variously\nas camel spiders, wind scorpions, sun spiders, or solifuges.
\n
wikipedia:\nBanana spider (many types of banana spider).
\n
tullamoredew:\nTullamore Dew, rendered in most branding as Tullamore D.E.W., is a brand\nof Irish whiskey produced by William Grant & Sons.
\n
wikipedia:\nThe Yellowstone Caldera, sometimes referred to as the Yellowstone\nSupervolcano, is a volcanic caldera and supervolcano in Yellowstone\nNational Park in the Western United States.
\n
wikipedia:\nA superstition is any belief or practice considered by non-practitioners\nto be irrational or supernatural, attributed to fate or magic, perceived\nsupernatural influence, or fear of that which is unknown.
wikipedia: A\nferal cat or a stray cat is an unowned domestic cat (Felis catus) that\nlives outdoors and avoids human contact: it does not allow itself to be\nhandled or touched, and usually remains hidden from humans.
\n
wikipedia:\nThe following list of cat breeds includes only domestic cat breeds and\ndomestic and wild hybrids.
\n
skullcandy: Discover life\nat full volume with headphones, earbuds, speakers & more.
jitsi: Jitsi Free &\nOpen Source Video Conferencing Projects.
\n
atari: The\nnew Atari VCS™ Wireless Classic Joystick includes features like paddle\ncontrol, rumble, LED light effects, and a second fire button to give\nretro gaming new life.
\n
ebay:\nOEM Original Atari 7800 Pro Line Joystick Controller.
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3864,'2023-05-25','2022-2023 New Years Show Episode 8',7396,'2022 - 2023 new years show where people come together and chat','
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3874,'2023-06-08','2022-2023 New Years Show Episode 9',7380,'2022 - 2023 new years show where people come together and chat','
Episode #9
\n
\n
wikipedia: MS-DOS\nis an operating system for x86-based personal computers mostly developed\nby Microsoft.
\n
freedos: FreeDOS is a\ncomplete, free, DOS-compatible operating system. While we provide some\nutilities, you should be able to run any program intended for\nMS-DOS.
\n
wikipedia: Linux\n(/ˈliːnʊks/ (listen) LEE-nuuks or /ˈlɪnʊks/ LIN-uuks) is a family of\nopen-source Unix-like operating systems based on the Linux kernel, an\noperating system kernel first released on September 17, 1991, by Linus\nTorvalds.
\n
wikipedia:\nToken Ring is a computer networking technology used to build local area\nnetworks. It was introduced by IBM in 1984, and standardized in 1989 as\nIEEE 802.5.
\n
wikipedia:\nThe BNC connector (initialism of \"Bayonet Neill–Concelman\") is a\nminiature quick connect/disconnect radio frequency connector used for\ncoaxial cable.
tp: TP-Link Vastly Expands\nSmart Home Lineup With Tapo Full Home Security Solutions, Tapo Robot\nVacuums and Various Matter Compatible Products.
\n
cisco: Cisco Systems, Inc.,\ncommonly known as Cisco, is an American-based multinational digital\ncommunications technology conglomerate corporation headquartered in San\nJose, California.
\n
wikipedia: The\nInternational Business Machines Corporation (IBM), nicknamed Big Blue,\nis an American multinational technology corporation headquartered in\nArmonk, New York, with operations in over 175 countries. It specializes\nin computer hardware, middleware and software and provides hosting and\nconsulting services in areas ranging from mainframe computers to\nnanotechnology.
wikipedia:\nVM (often: VM/CMS) is a family of IBM virtual machine operating systems\nused on IBM mainframes System/370, System/390, zSeries, System z and\ncompatible systems, including the Hercules emulator for personal\ncomputers.
\n
wikipedia:\nDisk partitioning or disk slicing is the creation of one or more regions\non secondary storage, so that each region can be managed\nseparately.
\n
wikipedia: The\nIBM System/360 is a family of mainframe computer systems that was\nannounced by IBM on April 7, 1964, and delivered between 1965 and\n1978.
\n
wikipedia: The\nIBM System/370 (S/370) is a model range of IBM mainframe computers\nannounced on June 30, 1970, as the successors to the System/360\nfamily.
wikipedia:\nThe Internet protocol suite, commonly known as TCP/IP, is a framework\nfor organizing the set of communication protocols used in the Internet\nand similar computer networks according to functional criteria.
\n
wikipedia:\nThe Open Systems Interconnection protocols are a family of information\nexchange standards developed jointly by the ISO and the ITU-T. The\nstandardization process began in 1977.
\n
perl: Perl is a highly capable,\nfeature-rich programming language with over 30 years of\ndevelopment.
\n
wikipedia: An\nFTP server is computer software consisting of one or more programs that\ncan execute commands given by remote client(s) such as receiving,\nsending, deleting files, creating or removing directories, etc.
\n
wikipedia: The\nDefense Advanced Research Projects Agency (DARPA) is a research and\ndevelopment agency of the United States Department of Defense\nresponsible for the development of emerging technologies for use by the\nmilitary.
\n
wikipedia: The\nAdvanced Research Projects Agency Network (ARPANET) was the first\nwide-area packet-switched network with distributed control and one of\nthe first networks to implement the TCP/IP protocol suite.
\n
wikipedia: A\nmodulator-demodulator or modem is a computer hardware device that\nconverts data from a digital format into a format suitable for an analog\ntransmission medium such as telephone or radio.
\n
wikipedia: Telnet\n(short for \"teletype network\") is a client/server application protocol\nthat provides access to virtual terminals of remote systems on local\narea networks or the Internet.
\n
wikipedia:\nRemote Function Call is a proprietary SAP interface.
\n
icannwiki: BBN (Bolt,\nBeranek and Newman Inc.), now Raytheon BBN Technologies, is one of the\nleading Research and Development companies in the United States,\ndedicated to providing high-technology products and services to\nconsumers.
\n
wikipedia:\nA punched card (also punch card or punched-card) is a piece of stiff\npaper that holds digital data represented by the presence or absence of\nholes in predefined positions.
\n
wikipedia:\nPunched tape or perforated paper tape is a form of data storage that\nconsists of a long strip of paper in which holes are punched.
\n
wikipedia: A\nteleprinter (teletypewriter, teletype or TTY) is an electromechanical\ndevice that can be used to send and receive typed messages through\nvarious communications channels, in both point-to-point and\npoint-to-multipoint configurations.
wikipedia: Unix\n(/ˈjuːnɪks/; trademarked as UNIX) is a family of multitasking, multiuser\ncomputer operating systems that derive from the original AT&T Unix,\nwhose development started in 1969 at the Bell Labs research center by\nKen Thompson, Dennis Ritchie, and others.
\n
wikipedia:\nWang Laboratories was a US computer company founded in 1951 by An Wang\nand G. Y. Chu.
wikipedia:\nMagnetic-core memory was the predominant form of random-access computer\nmemory for 20 years between about 1955 and 1975.
\n
BASIC BASIC\n(Beginners\' All-purpose Symbolic Instruction Code) is a family of\ngeneral-purpose, high-level programming languages designed for ease of\nuse. The original version was created by John G. Kemeny and Thomas E.\nKurtz at Dartmouth College in 1963.
\n
wikipedia:\nMicrosoft BASIC is the foundation software product of the Microsoft\ncompany and evolved into a line of BASIC interpreters and compiler(s)\nadapted for many different microcomputers. It first appeared in 1975 as\nAltair BASIC, which was the first version of BASIC published by\nMicrosoft as well as the first high-level programming language available\nfor the Altair 8800 microcomputer.
\n
wikipedia: A\nfloppy disk or floppy diskette (casually referred to as a floppy, or a\ndiskette) is an obsolescent type of disk storage composed of a thin and\nflexible disk of a magnetic storage medium in a square or nearly square\nplastic enclosure lined with a fabric that removes dust particles from\nthe spinning disk.
\n
wikipedia: A\ntape drive is a data storage device that reads and writes data on a\nmagnetic tape.
\n
wikipedia: In\ncomputer engineering, microarchitecture, also called computer\norganization and sometimes abbreviated as µarch or uarch, is the way a\ngiven instruction set architecture (ISA) is implemented in a particular\nprocessor.
\n
wikipedia: A\nmicrosleep is a sudden temporary episode of sleep or drowsiness which\nmay last for a few seconds where an individual fails to respond to some\narbitrary sensory input and becomes unconscious.
wikipedia: Clevo\nis a Taiwanese OEM/ODM computer manufacturer which produces laptop\ncomputers exclusively.
\n
\n
wikipedia:\nRapid transit or mass rapid transit (MRT), also known as heavy rail or\nmetro, is a type of high-capacity public transport generally found in\nurban areas.
\n
wikipedia:\nCracker Jack is an American brand of snack food that consists of\nmolasses-flavored, caramel-coated popcorn, and peanuts, well known for\nbeing packaged with a prize of trivial value inside.
sheilaswheels: We keep\nour Sheilas happy by supplying fabulous 5 Star Defaqto rated car and\nhome insurance, and that\'s helped us to become one of the UK\'s leading\ndirect insurers.
\n
nestle:\nYorkie was launched in 1976 by Rowntree\'s of York hence the name.
\n
wikipedia:\nJoyriding refers to driving or riding in a stolen vehicle, most commonly\na car, with no particular goal other than the pleasure or thrill of\ndoing so or to impress other people.
\n
oggcamp: OggCamp is an\nunconference celebrating Free Culture, Free and Open Source Software,\nhardware hacking, digital rights, and all manner of collaborative\ncultural activities and is committed to creating a conference that is as\ninclusive as possible.
\n
ubuntu: Ubuntu is a Linux\ndistribution based on Debian and composed mostly of free and open-source\nsoftware.\n
wikipedia:\nidenti.ca was a free and open-source social networking and blogging\nservice based on the pump.io software, using the Activity Streams\nprotocol.
\n
wikipedia:\nGNU social (previously known as StatusNet and once known as Laconica) is\na free and open source software microblogging server written in PHP that\nimplements the OStatus standard for interoperation between\ninstallations.
\n
wikipedia:\nFriendica (formerly Friendika, originally Mistpark) is a free and\nopen-source software distributed social network.
\n
lugcast: We are an open\nPodcast/LUG that meets every first and third Friday of every month using\nmumble.
\n
toastmasters\nToastmasters International is a nonprofit educational organization that\nteaches public speaking and leadership skills through a worldwide\nnetwork of clubs.
\n
wikipedia:\nMotorola, Inc. (/ˌmoʊtəˈroʊlə/) was an American multinational\ntelecommunications company based in Schaumburg, Illinois, United\nStates.
IRC IRC\nis short for Internet Relay Chat. It is a popular chat service still in\nuse today.
\n
zoom: Unified communication and\ncollaboration platform.
\n
jitsi: Jitsi Free &\nOpen Source Video Conferencing Projects.
\n
joinmastodon: Mastodon is\nfree and open-source software for running self-hosted social networking\nservices.
\n
wikipedia:\nKaren Sandler is the executive director of the Software Freedom\nConservancy, former executive director of the GNOME Foundation, an\nattorney, and former general counsel of the Software Freedom Law\nCenter.
\n
fosdem: FOSDEM is a free\nevent for software developers to meet, share ideas and collaborate.
\n
southeastlinuxfest:\nThe SouthEast LinuxFest is a community event for anyone who wants to\nlearn more about Linux and Open Source Software.
\n
olfconference: OLF\n(formerly known as Ohio LinuxFest) is a grassroots conference for the\nGNU/Linux/Open Source Software/Free Software community that started in\n2003 as a large inter-LUG (Linux User Group) meeting and has grown\nsteadily since.
\n
linuxfests: A home for\neducational programs focused on free and open source software &\nculture.
\n
wikipedia:\nNotacon (pronounced \"not-a-con\") was an art and technology conference\nwhich took place annually in Cleveland, Ohio from 2003 to 2014.
\n
penpalworld: a place where\nyou can meet over 3,000,000 pen pals from every country on the\nplanet.
openssl: The OpenSSL Project\ndevelops and maintains the OpenSSL software - a robust,\ncommercial-grade, full-featured toolkit for general-purpose cryptography\nand secure communication.
wikipedia: The\nKroger Company, or simply Kroger, is an American retail company that\noperates (either directly or through its subsidiaries) supermarkets and\nmulti-department stores throughout the United States.
\n
wikipedia:\nProsopagnosia, more commonly known as face blindness, is a cognitive\ndisorder of face perception in which the ability to recognize familiar\nfaces, including one\'s own face, is impaired, while other aspects of\nvisual processing and intellectual functioning remain intact.
\n
wikipedia:\nT-Mobile is the brand name used by some of the mobile communications\nsubsidiaries of the German telecommunications company Deutsche Telekom\nAG in the Czech Republic, Poland, the United States and by the former\nsubsidiary in the Netherlands.
\n
stackexchange:\nWhere did the phrase \"batsh-t crazy\" come from?
\n
wikipedia: A\nconspiracy theory is an explanation for an event or situation that\nasserts the existence of a conspiracy by powerful and sinister groups,\noften political in motivation, when other explanations are more\nprobable.
\n
brigs: At Brigs, we want\neveryone to get exactly what they\'re craving!
dominos: Domino\'s Pizza,\nInc., trading as Domino\'s, is a Michigan-based multinational pizza\nrestaurant chain founded in 1960 and led by CEO Russell Weiner.
\n
wikipedia:\nLoitering is the act of remaining in a particular public place for a\nprolonged amount of time without any apparent purpose.
\n
wikipedia:\nPsychiatric hospitals, also known as mental health hospitals, behavioral\nhealth hospitals, are hospitals or wards specializing in the treatment\nof severe mental disorders, such as schizophrenia, bipolar disorder,\neating disorders, dissociative identity disorder, major depressive\ndisorder and many others.
\n
wikipedia:\nTherapist is a person who offers any kinds of therapy.
\n
\n
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(3884,'2023-06-22','2022-2023 New Years Show Episode 10',10355,'2022 - 2023 new years show where people come together and chat','
westernunion:\nNotify your bank before using a credit or debit card when\ntraveling.
\n
ftc:\nWhat To Know About Credit Freezes and Fraud Alerts.
\n
wikipedia:\nMastercard Inc. (stylized as MasterCard from 1979–2016, mastercard from\n2016–2019) is the second-largest payment-processing corporation\nworldwide.
\n
wikipedia:\nEurocard was a credit card, introduced in 1964 by a Swedish banker in\nthe Wallenberg family as an alternative to American Express.
\n
visitsweden:\nCurrency, credit cards and money in Sweden.
\n
wikipedia:\nVisa Inc. (/ˈviːzə, ˈviːsə/; stylized as VISA) is an American\nmultinational financial services corporation headquartered in San\nFrancisco, California.
\n
mewe: Brilliant features with no\nBS. No Ads. No Spyware. MeWe is the Next-Gen Social Network.
\n
hplovecraft: HOWARD\nPHILLIPS LOVECRAFT (20 August 1890–15 March 1937) is probably best known\nas a writer of weird fiction, but some believe his voluminous\ncorrespondence to be his greatest accomplishment.
\n
wikipedia:\nLovecraftian horror, sometimes used interchangeably with \"cosmic\nhorror\", is a subgenre of horror fiction and weird fiction that\nemphasizes the horror of the unknowable and incomprehensible more than\ngore or other elements of shock.
\n
adultswim:\nRick and Morty is an American adult animated science-fiction sitcom\ncreated by Justin Roiland and Dan Harmon for Cartoon Network\'s nighttime\nprogramming block Adult Swim.
\n
wikipedia:\nFacebook is an online social media and social networking service owned\nby American company Meta Platforms.
\n
wikipedia:\nTwitter is an online social media and social networking service owned\nand operated by American company Twitter, Inc., on which users send and\nrespond publicly or privately 280-character-long messages, images and\nvideos known as \"tweets\".
element: Element is a free and\nopen-source software instant messaging client based on the Matrix\nprotocol. Element supports end-to-end encryption, groups, channels and\nsharing of files between users.
wikipedia:\nAtom was a free and open-source text and source code editor for macOS,\nLinux, and Microsoft Windows with support for plug-ins written in\nJavaScript, and embedded Git Control.
\n
matrix: An open network for\nsecure, decentralized communication.
wikipedia: SQRL\n(pronounced \"squirrel\") or Secure, Quick, Reliable Login (formerly\nSecure QR Login) is a draft open standard for secure website login and\nauthentication.
\n
twit: Security\nNow - Hosted by Steve Gibson, Leo Laporte.
wikipedia: In\ncryptanalysis and computer security, password cracking is the process of\nrecovering passwords from data that has been stored in or transmitted by\na computer system in scrambled form.
\n
wikipedia:\nLastPass is a password manager distributed in subscription form as well\nas a freemium model with limited functionality.
\n
cnet:\nLastPass Owner GoTo Says Hackers Stole Customer Data Backups.
\n
wikipedia:\nThe Zip drive is a removable floppy disk storage system that was\nintroduced by Iomega in late 1994.
\n
wikipedia: Lotus\n1-2-3 is a discontinued spreadsheet program from Lotus Software (later\npart of IBM).
\n
wikipedia: Office\nSpace is a 1999 American black comedy film written and directed by Mike\nJudge.
\n
wikipedia:\nIn cryptography, encryption is the process of encoding\ninformation.
\n
wikipedia: In\ncomputing, tar is a computer software utility for collecting many files\ninto one archive file, often referred to as a tarball, for distribution\nor backup purposes.
\n
wikipedia: A\nquantum computer is a computer that exploits quantum mechanical\nphenomena.
\n
wikipedia:\nFinal Destination is an American horror franchise that includes five\nfilms, two comic books, and nine novels.
wikipedia: Lead\nshielding refers to the use of lead as a form of radiation protection to\nshield people or objects from radiation so as to reduce the effective\ndose.
\n
wikipedia: The\nHulk is a superhero appearing in American comic books published by\nMarvel Comics.
\n
jeffgeerling: I\'m\ngeerlingguy most places online. I\'m an author and software developer\nfrom St. Louis, MO.
\n
\n
jeffgeerling:\nColons, semicolons, and Crohns surgery, oh my!
wikipedia:\nA smartwatch is a wearable computer in the form of a watch; modern\nsmartwatches provide a local touchscreen interface for daily use, while\nan associated smartphone app provides management and telemetry, such as\nlong-term biomonitoring.
\n
hipaajournal:\nJudge Denies Injunction Banning Meta from Collecting Patient Data via\nMeta Pixel Code.
wikipedia:\nThe IBM 3270 is a family of block oriented display and printer computer\nterminals introduced by IBM in 1971 and normally used to communicate\nwith IBM mainframes.
github:\nWelcome to moby-thesaurus.org, a free and open-source website designed\nto facilitate meanderings through the Moby Thesaurus, the largest\nthesaurus in the English language.
wikipedia:\nC++ (pronounced \"C plus plus\") is a high-level general-purpose\nprogramming language created by Danish computer scientist Bjarne\nStroustrup as an extension of the C programming language, or \"C with\nClasses\".
\n
wikipedia:\ndeb is the format, as well as extension of the software package format\nfor the Debian Linux distribution and its derivatives.
\n
wikipedia: dpkg\nis the software at the base of the package management system in the free\noperating system Debian and its numerous derivatives.
\n
wikipedia: K3b\n(from KDE Burn Baby Burn) is a CD, DVD and Blu-ray authoring application\nby KDE for Unix-like computer operating systems.
\n
nero:\nNero Burning ROM: Rip, copy, burn and protect data.
wikipedia:\nA digital single-lens reflex camera (digital SLR or DSLR) is a digital\ncamera that combines the optics and the mechanisms of a single-lens\nreflex camera with a digital imaging sensor.
\n
wikipedia: A\nmirrorless camera is a photo camera featuring a single, removable lens\nand a digital display.
jellyfin: Jellyfin is the\nvolunteer-built media solution that puts you in control of your\nmedia.
\n
\n
Thanks To: \nMumble Server: Delwin \nHPR Site/VPS: Joshua Knapp - AnHonestHost.com \nStreams: Honkeymagoo \nEtherPad: HonkeyMagoo \nShownotes by: Sgoti and hplovecraft
\n',159,121,1,'CC-BY-SA','hpr,new years,community',0,0,1),
(4066,'2024-03-04','HPR Community News for February 2024',0,'HPR Volunteers talk about shows released and comments posted in February 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3794,'2023-02-16','Retro Karaoke machine restored',491,'I fix the cassette tape mechanism to a resale shop karaoke machine','
ENTEX Electronics Electronic Singing Machine. \nKaraoke Model No. 1820. Entex Electronics Inc. Made in Taiwan. Late\n1970s early 1980s. \nIt incorporates an 8-Track Player and Cassette Tape Recorder. \nIt also uses the Bucket Brigade Device Echo (BBD ECHO) Power is supplied\nby \nAC 120 Volts. It also uses 10 D cell batteries, or alternatively 12-15\nvolts DC.
\nPictures \nThe images are thumbnails. Click on each to see the\nfull-sized picture.
\n
8 Track side \n
\n
Cassette tape side \n
\n
Initial condition of the cassette player \n
\n
Back of the player \n
\n
Player with the cassette cover removed \n
\n
Connecting rod for the cassette player \n
\n
Cassette pulley system \n
\n
Line out \n
\n
Analog audio capture
\n
arecord -L\n - Find device to use\n - This works for finding the microphone input or the USB external sound card\n\nSoundcard\nsysdefault:CARD=Device\n USB Audio Device, USB Audio\n Default Audio Device
\n',318,0,0,'CC-BY-SA','retro, karaoke, 8-track, cassette tape, Free Music Archive',0,0,1),
(3796,'2023-02-20','Dependent Types',508,'A quick taste of programming with dependent types','
I discuss dependent types, which are types that can contain non-type\nprograms. An example of a dependent type is a list whose type contains\nits length. Instead of just writing List<String> for\na list that contains strings, dependent types include types like\nList<String, 5> that describe lists of exactly five\nstrings. Dependent types can also be used to represent mathematics, in\nwhich case the programs that they describe count as proofs, and tools\nfrom programming can be used to write math.
\n
Dependent types used to be something that really required a research\nbackground, but there has been a lot of progress on making them more\nuser-friendly and on writing accessible introductions lately.
\n
Languages mentioned:
\n
\n
Idris is a self-hosted\ndependently typed language with type-level resource tracking
\n
Agda\nis a testbed for new ideas in dependently typed programming
\n
Lean 4 is a self-hosted\ndependently typed language that has a more conservative logical core\nthan Idris or Agda, and attempts to appeal more to practicing\nmathematicians.
\n
Coq is a proof assistant based\non dependent types that has been used to fully mathematically verify a C\ncompiler
\n
\n
Books mentioned:
\n
\n
The Little Typer, by\nDaniel P. Friedman and David Thrane Christiansen is an intro to the core\nideas of dependent types, in dialog form
\n
Type\nDriven Development with Idris by Edwin Brady, the creator of Idris,\ndescribes an approach to programming that uses expressive types as a way\nto make programmers\' lives easier
Software\nFoundations is a series of books that use Coq as an introduction to\nmathematically rigorous software development in a proof assistant. It\'s\nhow I initially learned these topics!
\n
\n',418,0,0,'CC-BY-SA','types, math, programming languages, functional programming',0,0,1),
(3798,'2023-02-22','Laptop Second SSD MXLinux Install',749,'Overcoming UEFI and Windows 10 to Install MXLinux 21.3 on a 2021 Asus Laptop 2nd SSD drive','
I forgot to mention the power consumption was very good, seemingly\r\nbetter than windows 10. That\'s a big bonus.
\r\n
On the website it said that the XFCE AHS release is not out yet. It\r\nwould probably work better on my device.
Screenshot 2023-02-14 15:50:31 \r\n Click\r\nthe thumbnail to see the full-sized image
\r\n\r\nEdit: Ken Original summary was \"Overcoming fucking UEFI and Windows 10 to Install MXLinux 21.3 on a 2021 Asus Laptop 2nd SSD drive\" - as per policy\r\n',401,57,1,'CC-BY-SA','distrohopping,distros,linux,GNU,MXLinux',0,0,1),
(3797,'2023-02-21','How to submit changes to HPR',1895,'rho_n shows Ken how to submit changes to the new HPR static site.','
\nHPR is switching to a static site and in today\'s show Rho`n explains to Ken how to submit changes to the code.\n
\nYou can now login to the rho_n/hpr_generator git repo and you should be able to see several branches. \nNext to your branch you can press New Pull Request \n\n \nReview your changes and if you\'re happy press the green New Pull Request \nFill in the description and a detailed comment \nUse the HPR convention [<issue number>] <brief_description> The brief description is usually based on the title of the issue \nWhen Create Pull Request \n
\n',30,0,0,'CC-BY-SA','git,hpr,code,pull request',0,0,1),
(3799,'2023-02-23','My home router history',1921,'Recent router maintenance makes me remember all the fun I\'ve had with my home network router','
\n',342,0,0,'CC-BY-SA','openbsd, ansible, router',0,0,1),
(3802,'2023-02-28','Attack of the Squishmallow',5809,'Rho`n records replacing the screen to a MacBook Pro','
Synopsis
\n\n
In this episode, Rho`n records his attempt to replace a broken MacBook Pro display. Content warning: May cause drowsiness—do not listen while driving or operating heavy machinery. On the other hand, it may be conducive to a good nap in which you drift off to sleep while listening to the introduction and wake up in time to hear how things turn out in the end.
\n\n
Production notes: The \"truncate silence\" audio effect in your audio editor is your friend. The original recording length was around 2 hrs and 15 minutes. After truncating the silence it was down to 1 hour and 36 minutes.
\n\n',293,0,0,'CC-BY-SA','DIY, Macbook, Macbook Pro, pc repair, repair',0,0,1),
(3801,'2023-02-27','Enter the gopher',822,'Participating in the gopher internet protocol','
If you would like to talk about gopher on Mastodon, I\'m\n@screwtape@mastodon.sdf.org (and I have a weekly aNONradio\nshow about gopher)
\n',416,0,0,'CC-BY-SA','gopher,protocol,smolnet,tutorial,introduction,internet,retro',0,0,1),
(3803,'2023-03-01','Chatbot hallucination',407,'The inevitable show featuring a segment written by the chatbot ChatGPT.','
A simple case of \"garbage in, garbage out\", but it\'s interesting to\nsee it \"try\" to make sense.
\n
In this show, I asked ChatGPT to write me the script for an episode\nof Hacker Public Radio, and tried to confuse it. Then, some thoughts on\nchatGPT and these chatbots in general.
\n',399,0,1,'CC-BY-SA','chatgpt,\"artificial intelligence\"',0,0,1),
(3805,'2023-03-03','Document File Formats on Wikipedia',736,'Document File Format - a continuation of Content Format','
Document File Format - a continuation of Content\nFormat
\n',318,0,0,'CC-BY-SA','Documents, Formats',0,0,1),
(3807,'2023-03-07','PeePaw builds a computer',2040,'Brian starts the process of building an 8 bit retro computer','\n
intro\n
\n
who is peepaw? \nMe!
\n
why a retro computer? \nhelp a kid understand computers
the code walk through, start from the bottom up note: ( -- ) are\nstack effect comments, back slashes are plain comments\n
\n
constants
\n
variable
\n
@ ! mset mclr mtst
\n
set up external interrupt, int4, arduino board pin4
\n
\n\n
\\ the source code\n\\ declare some constants and variable as labels\nvariable Compare\nvariable Count\n\n$100 constant PINH \\ these labels come from the atmega2560 datasheet\n$101 constant DDRH\n$102 constant PORTH\n$a0 constant TCCR4A\n$a1 constant TCCR4B\n$a8 constant OCR4A\n$2c constant PINE\n$2d constant DDRE\n$2e constant PORTE\n$6a constant EICRB\n$3d constant EIMSK\n\n: ext4.irq ( -- ) Count @ 1+ Count ! ;i \\ the frequency counter\n\n: logicprobe-init ( -- )\n 1249 Compare ! \\ 100 hz\n %0000.1000 DDRH mset \\ h3 output\n %0100.0000 TCCR4A c! \\ toggle d6, ph3 on compare match\n 0000.1011 %TCCR4B c! \\ set ctc mode, clk/64\n Compare @ OCR4A ! \\ set compare value\n %0 DDRE c! \\ e input\n 0001.0000 PORTE mset \\ pullup on e4\n %0000.0010 %EICRB mset \\ falling edge\n ['] ext4.irq #6 int!\n;\n\n\\ helper words\n\n: start-clock ( -- ) %0100.0000 TCCR4A c! %0000.1011 TCCR4B c! ; \\ the bit manipulation does what the word says\n: stop-clock ( -- ) %0000.0000 TCCR4A c! %0000.0000 TCCR4B c! ;\n: set-frequency ( n -- ) OCR4A ! ; \\ set compare value\n: pin-high ( -- ) %0000.1000 PORTH mset ;\n: pin-low ( -- ) %0000.1000 PORTH mclr ;\n: open-gate ( -- ) 0 Count ! %0001.0000 EIMSK mset ;\n: close-gate ( -- ) %0001.0000 EIMSK mclr ;\n\n: process-data ( -- )\n Count @ 1- Count ! \\ clean up value in Count\n Count @ dup 0 > if \\ is Count greater than 0, if so its pulsing\n cr ." freq=" 10 * .\n else \\ otherwise its not so is it high or low?\n drop\n %0000.1000 PINH mtst\n if\n ." high"\n else\n ." low"\n then then\n ;\n\n : wait ( -- ) 100 ms ;\n\n : sample-pin ( -- ) open-gate wait close-gate process-data ; \\ the 'logic probe'
\n\n
test \nArduino \n
\n
\n
clock, using 16 bit timer4, its output is on pin6, running at\n100hz
\n
need to be able to start and stop the clock, and set the output pin\nhigh or low
\n
sample-pin is the word that does the work
\n
ouput from the serial terminal exercising the logic probe ( comments\nadd after the fact):
\n
\n
E FlashForth 5 ATmega2560 13.06.2022\n\nok<#,ram>\nlogicprobe-init ok<#,ram> (start up the logic probe)\nsample-pin (sample the pin)\nfreq=100 ok<#,ram> ( its oscilating at 100hz)\nstop-clock ok<#,ram>\nsample-pin low ok<#,ram> ( after stopping the clock the pin is low)\npin-high ok<#,ram>\nsample-pin\nhigh ok<#,ram> ( now its high)\n125 set-frequency ok<#,ram>\nstart-clock ok<#,ram>\nsample-pin\nfreq=1000 ok<#,ram> ( after changing the frequency its 1000hz)
\n
next time
\n
\n
repurpose the 16bit clock and use it to drive the z80, we\'ll hook up\nthe data port of the z80 to the arduino mega and use the logic probe to\nsee if the z80 is working
\n
\n\n',326,0,0,'CC-BY-SA','retro computing, forth, arduino',0,0,1),
(3808,'2023-03-08','Funkwhale A social platform to enjoy and share music',3650,'Ken interviews Ciarán Ainsworth about Funkwhale that lets you listen and share music and audio','
Funkwhale is a community-driven project that lets you listen and\r\nshare music and audio within a decentralized, open network
\r\n',30,0,0,'CC-BY-SA','funkwhale,Grooveshark,iTunes,vue,musicbrainz,picard,subsonic,castopod',0,0,1),
(3809,'2023-03-09','The Abominable Post Apocalyptic Podcast Player',1194,'Build a Three Dollar MP3 player in One Hour','
Notes: Forgot to mention that I hot glued the top lid (original lid\nfor the \'speaker box\'), on top of the boards. I had used the device with\nthe top uncovered for a month because I hoped I would find a better\nchoice but after getting tired of the wires detaching and worrying about\nthe sdcard slot getting wrecked I decided to commit to glueing the lid\non.
\n
The boards are very robust, I dropped them in the snow a few times.\nThey would stop working but after drying off would function.
\n
I didn\'t find the datasheet with the resistance values for other\nvalues until after I glued the lid so will have to open it up again or\nget into one of the switch lines and do resistor combinations... now\nthat I know more I think I should be able to control the mp3 player with\none analog output pin from the arduino for all the functions, since it\nseems the pin 8 that all the switch resistors lead to detects voltage\nlevels from the voltage divider created when one of the switches goes to\nground.
\n
The robot is using 4 lines right now for mp3 control. Would be cool\nif I could free up 3 more but I don\'t remember if any of them are\noccupying an analogue slot.
\n
No power button! None needed. Pause and unpause via momentary switch.\nThe charger board can charge from micro usb or usb-c and will protect\nyour 18650 cell from running flat and damaging itself.
Post Apocalyptic Robotics Database Entry: \nHH000000000 \nH Hybrid: Denotes some prepurchased or hard to find components \nH Human use: For use by biological humans
\n
Tools and supplies
\n
\n
multimeter - not strictly required but highly recommended
\n
Soldering iron
\n
solder(thinner solder wire works better for electronics)
Picture 1 - shows the slit in the lid where the sdcard resides. Sdcard and slot are protected from being bumped by the strategically placed, glued lid \n Click the thumbnail to see\nthe full-sized image
\n
Picture 2 - shows charging, microusb cord is coming in from the bottom, LED on charging board illuminates brightly \n Click the thumbnail to see\nthe full-sized image
\n
Picture 3 - shows both boards glued to bottom lid, with the top lid off \n Click the thumbnail to see\nthe full-sized image
\n
Picture 4 \n Click the thumbnail to see\nthe full-sized image
\n',401,91,1,'CC-BY-SA','robotics, mp3, GPD2846A, GPD2846, DIY, arduino ',0,0,1),
(3813,'2023-03-15','The postmarketOS Podcast',1893,'Ken welcomes a new podcast to the Free Culture Podcast family','
Between the Saturday closing of FOSDEM 2023 and going to a restaurant, we\r\nmanaged to squeeze around a table outside the cafeteria to record the very\r\nfirst ever in-person postmarketOS podcast episode! Fresh in the moment we share\r\nour experiences from the FOSS on mobile devroom, meeting great people at the\r\nLinux on Mobile stand (and everywhere else at FOSDEM/in Brussels) and random\r\nother cool things that were going down.
\r\n
Featuring @spaetz (sampled in the intro), @ollieparanoid, @linmob, @craftyguy,\r\n@MartijnBraam, @calebccff, @PureTryOut, @z3ntu (in order of appearance).
We\'re aware that\r\nmesa#8198\r\nis still causing problems for people on the PinePhone. Big thanks to @enues\r\nfrom mesa who was talking to us at the stand and is now looking into it! We\r\nalso have issue\r\npmaports#805 about\r\nscreen freezes. If you are affected by this and would like to help out, firing\r\nup a profiler and making/contributing to detailed, useful bugreports upstream\r\nat mesa is appreciated.
\r\n
@spaetz from Mobian did a great job at moderating the devroom! (Correction:\r\nOllie said from Maemo instead of Mobian in the recording.)
\r\n',30,75,1,'CC-BY-SA','postmarketOS,Free Culture Podcast,FOSDEM',0,0,1),
(3811,'2023-03-13','mkfifo and named pipes',678,'Have you ever named a pipe? If not, this is the episode you\'ve been waiting for.','
A named pipe is like a UNIX pipe, except it takes the form of a file.
\n\n
\n$ mkfifo mypipe\n$ echo \"Hacker Public Radio\" > mypipe &\n$ cat mypipe\nHacker Public Radio\n
to build and understand the inner workings of an 8 bit computer and\nmaybe one day pass it on to a grand kid
\n
\n
this episode -nop test\n
\n
do a nop test, that is get the z80 up and running executing the nop\ninstruction
\n
using the facilities of an arduino mega board running flash forth to\ndo that, talk about pictures
\n
why? flash forth is interactive, without being such a big\napplication itself. Happily runs on an atmega328
\n
why the mega, oodles and oodles of io, so emulating hardware should\nbe a snap
\n
use the microcontroller board to provide 5 volts, clock signal and\ndata to get the z80 up and running
\n
use the logic probe to see if there is activity on the address\nbus
\n
\n
wiring up\n
\n
hot glued solderless breadboard on to an arduino mega protoshield,\nwhite wire is the logicprobe input
\n
power and ground first
\n
clock, blue
\n
control lines int, nmi, wait busrq and reset
\n
orange wires data bus
\n
address lines go around the chip clockwise from the clock signal\n(blue wire) we\'ll be probing A0, next to the ground line
\n
\n\n
1.logicprobe.jpg \n
\n
2.power.jpg \n
\n
3.clock.jpg \n
\n
4.control.signals.jpg \n
\n
5.data.jpg \n
\n
6.ready.to.probe.jpg \n
\n
z80-pinout.jpg \n
\n
2560-pinout.jpg \n Click the thumbnail\nto see the full-sized image
\n\n
fixing some words, refactoring some words, defining new words\n
\n
fixed the data processing word to us the input on pin e4 (digital 2)\nnot the output on pin h6 (digital 9)
\n
changed freq= some value to simply pulse, not interested in the\nspecific frequency
\n
split clock and logic probe init words
\n
added some words to control the reset line reset and run
\n
added a word step that allows for single clock pulses
\n
\n
the test, mega board plugged into laptop, seral terminal running\n
\n
spool up the logic probe
\n
spool up the microcontroller board setting up a port to provide data\non the z80 data bus (rudimentary rom)
\n
add 5 volts
\n
initialize and start the clock
\n
probe the clock line
\n
probe a0 line
\n
\n
a little more to see what else we can discern\n
\n
single step to reset
\n
probe m1
\n
single step to reset
\n
add halt instruction
\n
probe halt line
\n
\n
this is output captured from the tests run on the show. lines that\nbegin with a back slash are comments used as narration\nok<#,ram> is the forth interpreter reporting it has\nsuccessfully processed the proceeding word(s), including comments pulse,\nhigh and low are output from the logicprobe, all other words are defined\nin the source text and the end of the notes
\n\n
E FlashForth 5 ATmega2560 13.06.2022\n\n\\ initialize the logic probe ok<#,ram>\nlogicprobe.init ok<#,ram>\n\\ initialize the clock ok<#,ram>\nclock.init ok<#,ram>\n\\ initialize arduinomega ports that interact with z80 ok<#,ram>\nz80.ports.init ok<#,ram>\n\\ add power on the board ok<#,ram>\n\\ probe the clock pin to see if there is activity ok<#,ram>\nsample\npulse ok<#,ram>\n\\ success! ok<#,ram>\n\\ probe adrress line A0, pin 30 on the z80 ok<#,ram>\nsample\npulse ok<#,ram>\n\\ pulse means there is activity on the bus ok<#,ram>\n\\ stop the clock and probe A0 again, should see either a static high or low\nsignal ok<#,ram>\nstop.clock sample\nlow ok<#,ram>\n\\ now move logic probe to pin 27, the M1 signal ok<#,ram>\n\\ put the z80 in reset and give three clock steps ok<#,ram>\nreset ok<#,ram>\nstep ok<#,ram>\nstep ok<#,ram>\nstep ok<#,ram>\n\\ the z80 should be reset, now put in run ok<#,ram>\nrun ok<#,ram>\n\\ now single step the clock to see the M1 ok<#,ram>\n\\ signal go from high to low as the z80 begins ok<#,ram>\n\\ fetching data fro the data bus at address 0 ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nlow ok<#,ram>\nstep sample\nlow ok<#,ram>\nstep sample\nhigh ok<#,ram>\n\\ success! the M1 signal is working as expected ok<#,ram>\n\\ now reset the z80 and see what happens when ok<#,ram>\n\\ we give a different instruction this time hex 76 ok<#,ram>\n\\ the halt instruction. We should see the halt signal go from ok<#,ram>\n\\ high to low ok<#,ram>\nreset step step step ok<#,ram>\n\\ put hat instruction on data lines ok<#,ram>\n$76 DATA c! ok<#,ram>\n\\ now run mode ok<#,ram>\nrun ok<#,ram>\n\\ step clock and sample pin 18 the halt line ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nhigh ok<#,ram>\nstep sample\nlow ok<#,ram>\nstep sample\nlow ok<#,ram>\n\\ 4 clock cycles and halt line goes low and stays low, success! ok<#,ram>\n\\ thanks for listening ok<#,ram>
\n',326,0,0,'CC-BY-SA','z80, forth, retrocomputer',0,0,1),
(3815,'2023-03-17','The UNIVAC Uniscope - The first terminal with a video monitor',2345,'Hear about the Uniscope 300 mainframe terminal from 1964.','
In the early days of computing, the computing power was kept in centralized large mainframes and users would connect to them via so called \"dumb\" terminals. These often provided their output through a printer and continuous feed of paper. However in 1964 UNIVAC introduced the Uniscope 300, which was one of the first terminals to provide a video monitor for display. With the introduction of this system came the introduction of several concepts that we take for granted today and they are described during the reading of this brochure.
As I mention in the episode, $15,000 USD in 1964 is worth considerably more today, according to an online inflation calculator it is now worth approximately $144,000 today. So even if that was for 48 terminals as it seems to mention in the hand written note, that might equate to about $3000 per terminal in 2023 dollars.
find or buy materials: duct or gorilla tape, trashed computer dvd\nor cd drive, 20 18650 cells, molex connectors(you can also use barrel\njacks or whatever you want to transfer power), wire and maybe \'tab wire\'\nhttps://nl.aliexpress.com/item/32650006768.html
\n
solder everything together as per schematic and pictures (there\nis theoretically a danger in soldering cells, but I have never had a\nproblem. Have a pair of pliers and a nearby window handy to throw them\nout of if anything goes wrong)
\n
wrap in cardboard and tape as per pictures
\n
add the cd/dvd drive lids(if you taped well you won\'t short\nanything and burn your house down
\n
tape dvd lids to battery
\n\n
Getting into the battery for maintenance just requires a utility\nknife.
sec:\nOn January 5, 2023, - T-Mobile Discloses Data Breach Affecting 37\nMillion Customers.
\n
On January 5, 2023, T-Mobile US, Inc. identified that a bad actor\nwas obtaining data through a single Application Programming Interface\n(“API”) without authorization.
\n
\n
bleepingcomputer:\nTruthFinder, Instant Checkmate confirm data breach affecting 20M\ncustomers.\n
truthfinder:\n2019 Account List Data Security Incident.
\n
\"We learned recently that a list, including name, email, telephone\nnumber in some instances, as well as securely encrypted passwords and\nexpired and inactive password reset tokens, of Instant Checkmate\nsubscribers was being discussed and made available in an online forum.\nWe have confirmed that the list was created several years ago and\nappears to include all customer accounts created between 2011 and 2019.\nThe published list originated inside our company.\"
\n
\n
sec:\nSEC Charges NBA Hall of Famer Paul Pierce for Unlawfully Touting and\nMaking Misleading Statements about Crypto Security.\n
\n
The Securities and Exchange Commission today announced charges\nagainst former NBA player Paul Pierce for touting EMAX tokens, crypto\nasset securities offered and sold by EthereumMax, on social media\nwithout disclosing the payment he received for the promotion and for\nmaking false and misleading promotional statements about the same crypto\nasset. Pierce agreed to settle the charges and pay $1.409 million in\npenalties, disgorgement, and interest.
\n
\n
sec:\nSEC Charges Terraform and CEO Do Kwon with Defrauding Investors in\nCrypto Schemes.\n
\n
The Securities and Exchange Commission today charged Singapore-based\nTerraform Labs PTE Ltd and Do Hyeong Kwon with orchestrating a\nmulti-billion dollar crypto asset securities fraud involving an\nalgorithmic stablecoin and other crypto asset securities.
To maintain this focus while also providing user choice, Ubuntu and\nits flavors consider debs and snaps the default experience. Users have\nthe freedom of choice to get their software from other sources,\nincluding Flatpak. A way to install these alternatives is, and will\ncontinue to be, available for installation from the Ubuntu archive with\na simple command.
U.S. Securities and Exchange Commission (2023, February 17). SEC\nCharges NBA Hall of Famer Paul Pierce for Unlawfully Touting and Making\nMisleading Statements about Crypto Security. SEC. https://www.sec.gov/news/press-release/2023-34
\n
U.S. Securities and Exchange Commission (2023, February 16). SEC\nCharges Terraform and CEO Do Kwon with Defrauding Investors in Crypto\nSchemes. SEC. https://www.sec.gov/news/press-release/2023-32
\n',391,0,0,'CC-BY-SA','\"Oh No, News\", Data Breaches, Crypto Schemes, Packaging Defaults',0,0,1),
(3818,'2023-03-22','nop test redux',571,'A better nop test','
if its jammed hit it, if it breaks it needed replacing anyway
\n',326,0,0,'CC-BY-SA','z80, forth, retrocomputer',0,0,1),
(3819,'2023-03-23','Remapping Mouse Buttons with XBindKeys on Linux',600,'I explain how I assigned different functions to the spare buttons on my trackball mice.','
Remapping Mouse Buttons with XBindKeys on Linux
\n\n
After a really long time of not bothering to figure out how to do this, I finally did some research and found out how to remap the extra buttons on my Kensington Expert mouse and my Logitech marble trackball mouse in a Linux environment. The tools it needed were xvkbd, xdotool, and xbindkeys. I already had the first two installed, but had never used xbindkeys before. I also used xev to identify the button numbers and key numbers.
\n\n
The Kensington Expert Mouse is one that I\'ve had for about 15 years, and it was fairly expensive when I bought it, something like $75 or $80. It has four large buttons with a large trackball in the middle and a scroll wheel going around the track ball. I bought it at a time when I was doing a lot of graphic work that required clicking and dragging and double-clicking and stuff like that. If you\'re using it in a Mac or Windows environment, there is a special configuration tool that you can use to set it up just how you want. I had always configured it so that the upper left and upper right buttons were used for double-clicking and click dragging. This helped reduce a lot of strain on my hands. I have never gotten this to work on Linux, though, until today.
\n\n
If you want to do this yourself, the first thing to do is make sure you have these packages installed: xvkbd, xdotool, and xbindkeys.
\n\nThen create a configuration file in your home directory:\n\n
\n~/.xbindkeysrc\n
\n\nIn order to map the upper left button to \"double click,\" and the upper right button to \"click and drag,\" I added these lines to the configuration file:\n\n
On my desktop computer I have a Logitech marble trackball mouse, and it has two small keys that are assigned to back and forward by default. This can be handy for navigating file managers and web pages, but I wanted them to be assigned to \"page up\" and \"page down\" (to make up for the lack of a scroll wheel on the mouse). Here is the configuration file for that machine:
I suppose I could have used xdotool for this configuration file as well, but for reasons I can\'t remember now, I tried xvkbd first and it worked, so I did not experiment further. I used xdotool for the Kensington because xvkbd did not have a way to perform virtual mouse clicks.
\n',238,0,0,'CC-BY-SA','Linux configuration, tips and tricks, mouse configuration, keymapping',0,0,1),
(3821,'2023-03-27','The Oh No! News.',797,'Oh No! News, is Good News.','
The Oh No! news.
\n
Oh No! News, is Good\nNews.
\n\n
\n
Threat analysis; your attack surface.\n
\n
TAGS: Malware, Phishing, Security Breach
\n
\n
GoDaddy, a Web Hosting Provider Hit Multiple Times by the\nSame Group.\n
\n
This month, GoDaddy, a leading web hosting provider, revealed that\nit had experienced a major security breach over several years, resulting\nin the theft of company source code, customer and employee login\ncredentials, and the introduction of malware onto customer\nwebsites.
\n
Major Security Breach: Spanning several years.\n
\n
Data Breach:\nEmployee login credentials & customer data.
\n
10-k\nform Filled with the U.S. Securities and Exchange Commission.
Malware:\nCompromising customer websites managed by GoDaddy.
\n
Phishing Attacks: Exposed customer data including login credentials,\nemail addresses, and SSL private keys.
\n
\n
\n
Chick-Fil-A Customers are Victims of a Data Breach.\n
\n
Fast-food chain Chick-fil-A has issued a warning to customers\nregarding a recent data security breach. The incident occurred between\nDec. 18, 2022 and Feb. 12, 2023, during which unauthorized parties\ngained access to customer information, according to a statement posted\non the California Attorney General’s website on Tuesday.\n
\n
Data Breach:\nmembership numbers, mobile pay numbers, QR codes, last 4 digits of\ncredit/debit card numbers, credits on Chick-fil-A accounts, birthdays,\nphone numbers, and addresses.
\n
\n
\n
New phishing campaign uses fake ChatGPT platform to scam\neager investors.\n
\n
Bitdefender Antispam Labs confirmed that these scams initiate with\nan email containing a link that directs users to a copycat version of\nChatGPT. The goal of this copycat version is to convince users that they\ncan earn as much as $10,000 per month on the duplicate ChatGPT\nplatform.
LassPass Security Incident Update and Recommended\nActions.\n
\n
Major Security Breach: Spanning multiple years.\n
\n
Data Breach:\nEmployee login credentials, source code & other intellectual\nproperty, customer data.
\n
Malware:\nAttackers exploited third-party software to compromise company systems\nby delivering a keylogger type malware.
\n
\n
\n
\n\n
\n
InfoSec; the language of security.\n
\n
TAGS: Information Security, Monitoring
\n
\n
Bitwarden flaw can let hackers steal passwords using\niframes.\n
\n
Bitwarden highlights that the autofill feature is a potential risk\nand even includes a prominent warning in its documentation,\nspecifically mentioning the likelihood of compromised sites abusing the\nautofill feature to steal credentials.
\n
Phishing: Sniff\ncredentials from a webpage HTML inline frame.
\n
wikipedia:\nAn inline frame places another HTML document in a frame. Unlike an\n<object /> element, an <iframe> can be the \"target\" frame\nfor links defined by other elements, and it can be selected by the user\nagent as the focus for printing, viewing its source, and so on. The\ncontent of the element is used as alternative text to be displayed if\nthe browser does not support inline frames. A separate document is\nlinked to a frame using the src attribute inside the <iframe />,\nan inline HTML code is embedded to a frame using the srcdoc attribute\ninside the <iframe /> element. First introduced by Microsoft\nInternet Explorer in 1997, standardized in HTML 4.0 Transitional,\nallowed in HTML5.
\n
\n
\n\n
\n
User space.\n
\n
TAGS: Solutions, Services
\n
\n
Flathub’s Got Big Plans for 2023.\n
\n
Developers are flocking to Flathub in droves, which means users are\ntoo, and even Linux distributions (well, bar one) are getting in on the\naction by making making it easier to install apps from Flathub with the\nfriction of setting things up using terminal commands or odd sounding\ndownload files.
\n
Flathub Beta site: Welcome\nto Flathub, the home of hundreds of apps which can be easily installed\non any Linux distribution. Browse the apps online, from your app center\nor the command line.
\n',391,0,0,'CC-BY-SA','Oh No, News, Threat analysis, InfoSec, User space',0,0,1),
(3822,'2023-03-28','A tale of wonder, angst and woe',526,'Dissecting a COVID watch issued by Hong Kong Department of Health','
\r\nIn December of 2022, I traveled to Hong Kong, at some point en-route\r\nor in-country, I contracted covid.
\r\n
Backing up a step in preparation for\r\nthe trip I was required to have a negative PCR before I could board\r\nthe plane from the US as well as proof of vaccination and at least\r\none booster shot.\r\n
Upon arrival, I was required to quarantine for 3 days as well as take a home test (referred to as RAT: Rapid Antigen Test, by the locals) every day for the first 7 days
\r\n
On the 2nd full day in HK, I was required to take another clinical PCR provided at a health center, free of charge.
\r\n\r\n
On the third day I received my PCR and RAT tests as Covid Positive.
\r\n
By law I was now required to quarantine in my hotel until I tested negative on 2 consecutive days. Since my symptoms were very mild, a sniffle and low grade temp, merely 2-3 deg above normal, I could stay in the hotel and was not required to\r\ntransfer to a public health center.
\r\n
I was also required to register the positive results with a government website. This registration kicked off a series of events, including a visit from a health representative. (he stood in the hall, I was not permitted to leave the room) I was Required to install an app on my phone called "Stay Home Safe\'\' and to wear a wristband that I presume was a GPS and possibly temp/pulse tracking device that connected to my phone by bluetooth. The agent installed the app, and synced the watch to it.\r\n
\r\n',365,0,0,'CC-BY-SA','device discovery, curiosity',0,0,1),
(3823,'2023-03-29','Gitlab Pages for website hosting',1560,'Three examples of using Gitlab\'s CICD to generate a website.','
GitLab always deploys your website from a specific folder called\npublic in your repository. To deploy your site, GitLab uses its built-in\ntool called GitLab CI/CD to build your site and publish it to the GitLab\nPages server. The sequence of scripts that GitLab CI/CD runs to\naccomplish this task is created from a file named .gitlab-ci.yml, which\nyou can create and modify. A specific job called pages in the\nconfiguration file makes GitLab aware that you\'re deploying a GitLab\nPages website.
\n
\n
Overview of Steps
\n
\n
The end state has to be a directory named public that contains the\nsite contents
\n
Optionally, run a build process in a container to create the\ncontents of the public directory
\n
There has to be a pages declaration in\n.gitlab-ci.yml
diff --git a/site.cfg b/site.cfg\nindex aefadb2..0243d27 100644\n--- a/site.cfg\n+++ b/site.cfg\n@@ -8,10 +8,10 @@\n #user: (not used - leave blank)\n #password: (not used - leave blank)\n # Configuration settings for MySQL\n-#database: mysql\n-#driver: dbi:mysql:database=hpr_hpr:hostname=localhost\n-#user: hpr-generator (Suggested user with read-only privileges)\n-#password: ********* (Password for user)\n+database: mysql\n+driver: dbi:mysql:database=hpr_hpr:hostname=mariadb\n+user: root\n+password: mysql\n\n # Configure the location of the templates and the generated HTML\n [app_paths]\n@@ -25,7 +25,7 @@ output_path: ./public_html\n [root_template]\n content: page.tpl.html\n #baseurl: OPTIONAL [i.e. file://<full path to local website directory>]\n-baseurl: file:///home/roan/Development/hpr/website/hpr_generator/public_html/\n+baseurl: https://norrist.gitlab.io/hpr_generator_build/\n media_baseurl: https://archive.org/download/hpr$eps_id/\n\n # Configure the navigation menu and the content templates for each page
\n',342,0,0,'CC-BY-SA',' static website, gitlab pages, docker, mysql, cicd, ',0,0,1),
(4086,'2024-04-01','HPR Community News for March 2024',0,'HPR Volunteers talk about shows released and comments posted in March 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3825,'2023-03-31','Creating a natural aquarium',2310,'Setting up your first natural, self-sustaining freshwater aquarium','
An alternative method to the big box store way of setting up an\naquarium.
\n
You don\'t need a bunch of equipment, chemicals, or experience to have\na balanced thriving aquarium that not only runs itself after a period of\ntime, but is a healthier environment for your aquatic creatures and will\nbe a great conversation piece.
\n
Learn how to emulate nature so that everything works together in its\nown ecosystem from the bottom up. Only a little bit of patience is\nneeded.
\n',375,0,0,'CC-BY-SA','aquarium,ecology,plantedtank,fish',0,0,1),
(3827,'2023-04-04','Reply to hpr 3798 ',506,'added slackware information','
\r\nFrom Wikipedia, the free encyclopedia \r\nLILO (Linux Loader) is a boot loader for Linux and was the default boot loader for most Linux distributions in the years after the popularity of loadlin. Today, many distributions use GRUB as the default boot loader, but LILO and its variant ELILO are still in wide use. Further development of LILO was discontinued in December 2015 along with a request by Joachim Wiedorn for potential developers. \r\nFor EFI-based PC hardware the now orphaned ELILO boot loader was developed,originally by Hewlett-Packard for IA-64 systems, but later also for standard i386 and amd64 hardware with EFI support. \r\nOn any version of Linux running on Intel-based Apple Macintosh hardware, ELILO is one of the available bootloaders. \r\nIt supports network booting using TFTP/DHCP.\r\n
Attackers with \"admin access to a Plex Media Server could abuse the\nCamera Upload feature to make the server execute malicious code,\"\naccording to an advisory published by the Plex Security Team in May 2020\nwhen it patched the bug with the release of Plex Media Server\n1.19.3.
\n
\"This could be done by setting the server data directory to overlap\nwith the content location for a library on which Camera Upload was\nenabled. This issue could not be exploited without first gaining access\nto the server\'s Plex account.\"
We have recently been made aware of a security vulnerability related\nto Plex Media Server. This issue allowed an attacker with access to the\nserver administrator’s Plex account to upload a malicious file via the\nCamera Upload feature and have the media server execute it.
\"We have not been contacted by LastPass so we cannot speak to the\nspecifics of their incident. We take security issues very seriously, and\nfrequently work with external parties who report issues big or small\nusing our guidelines\nand bug bounty program. When vulnerabilities are reported following\nresponsible disclosure we address them swiftly and thoroughly, and we’ve\nnever had a critical vulnerability published for which there wasn’t\nalready a patched version released. And when we’ve had incidents of our\nown, we’ve always chosen to communicate them quickly. We are not aware\nof any unpatched vulnerabilities, and as always, we invite people to\ndisclose issues to us following the guidelines linked above. Given\nrecent articles about the LastPass incident, although we are not aware\nof any unpatched vulnerabilities, we have reached out to LastPass to be\nsure.\"
According to a person briefed on a private report from LastPass who\nspoke on the condition of anonymity, the media software package that was\nexploited on the employee’s home computer was Plex. Interestingly, Plex\nreported its own network intrusion on August 24, just 12 days after the\nsecond incident commenced.
“Yesterday, we discovered suspicious activity on one of our\ndatabases,” company officials wrote in an email sent to customers. “We\nimmediately began an investigation and it does appear that a third-party\nwas able to access a limited subset of data that includes emails,\nusernames, and encrypted passwords.”
\n
The email said that the passwords were “hashed and secured in\naccordance with best practices,” meaning the passwords were\ncryptographically scrambled in a way that requires attackers to devote\nadditional resources to crack the hashes and revert them back to their\nplaintext state. A Plex spokesperson said that the passwords were hashed\nusing bcrypt, among the strongest algorithms for protecting passwords.\nbcrypt automatically applies what\'s known as cryptographic salting and\npeppering to make cracking harder.
** DISPUTED ** KeePass through 2.53 (in a default installation)\nallows an attacker, who has write access to the XML configuration file,\nto obtain the cleartext passwords by adding an export trigger. NOTE: the\nvendor\'s position is that the password database is not intended to be\nsecure against an attacker who has that level of access to the local\nPC.
\n
This vulnerability has been modified and is currently undergoing\nreanalysis. Please check back soon to view the updated vulnerability\nsummary.
Because the information is stored in cleartext (i.e., unencrypted),\nattackers could potentially read it. Even if the information is encoded\nin a way that is not human-readable, certain techniques could determine\nwhich encoding is being used, then decode the information.
This page lists various potential security issues that have been\nreported and their status/analysis (whether the claims are valid,\nwhether an issue is fixed, etc.).
Whether you are privacy minded or not, it’s very difficult to be\ncompletely anonymous online. Over the years you might have posted on\nsocial media, downloaded apps, entered competitions or opened accounts\nwhich required details such as your email address, phone number, age,\ngender and more.
Mark Zuckerberg’s Meta Platforms is exploring plans to launch a new\nsocial media app in its bid to displace Twitter as the world’s “digital\ntown square.”
\n
Its video-sharing app, Instagram, is also facing stiff competition\nas content makers or hit influencers abandon the platform for\nTikTok.
\"A classy colour e-ink display whose Wi-Fi connectivity greatly\nextends its possible uses, including as a digital photo/art frame, life\norganiser, or low-power smart home dashboard.\"
AES is one of the most widely used symmetric cryptography algorithms\nand can be used in several modes such as ECB, CBC, CCM and GCM. Out of\nthese four modes, YubiHSM 2 now supports three most commonly used modes\nof encryption.
\n
\n
\n\n
\n
Additional Information.\n
\n
What is a\nData Breach? A data breach is a security violation, in which\nsensitive, protected or confidential data is copied, transmitted,\nviewed, stolen, altered or used by an individual unauthorized to do\nso.
\n
What is\nMalware? Malware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.
\n
What is\na Payload? In the context of a computer virus or worm, the payload\nis the portion of the malware which performs malicious action; deleting\ndata, sending spam or encrypting data. In addition to the payload, such\nmalware also typically has overhead code aimed at simply spreading\nitself, or avoiding detection.
\n
What is\nPhishing? Phishing is a form of social\nengineering where attackers deceive people into revealing sensitive\ninformation or installing malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.
What is a\nVulnerability (computing)? Vulnerabilities are flaws in a computer\nsystem that weaken the overall security of the device/system.\nVulnerabilities can be weaknesses in either the hardware itself, or the\nsoftware that runs on the hardware.
\n
What is an\n\"Attack Surface\"? The attack surface of a software environment is\nthe sum of the different points (for \"attack vectors\") where an\nunauthorized user (the \"attacker\") can try to enter data to or extract\ndata from an environment. Keeping the attack surface as small as\npossible is a basic security measure.
\n
What is an\n\"Attack Vector\"? In computer security, an attack vector is a\nspecific path, method, or scenario that can be exploited to break into\nan IT system, thus compromising its security. The term was derived from\nthe corresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity.
\n
\n
\n',391,0,0,'CC-BY-SA','Oh No, News, Threat analysis, InfoSec, User space',0,0,1),
(3831,'2023-04-10','Introducing Bumble Bee.',2541,'Some Guy On the Internet chats with a friend, Bumble Bee.','
An open-world game that is a unique combination of first-person\nshooter, survival horror, tower defense, and role-playing games. Play\nthe definitive zombie survival sandbox RPG that came first.
Note: This Early Access game is not complete and may or may not\nchange further. If you are not excited to play this game in its current\nstate, then you should wait to see if the game progresses further in\ndevelopment.
In computer networking, port forwarding or port mapping is an\napplication of network address translation (NAT) that redirects a\ncommunication request from one address and port number combination to\nanother while the packets are traversing a network gateway, such as a\nrouter or firewall. This technique is most commonly used to make\nservices on a host residing on a protected or masqueraded (internal)\nnetwork available to hosts on the opposite side of the gateway (external\nnetwork), by remapping the destination IP address and port number of the\ncommunication to an internal host.
\n
\n
\n',391,0,0,'CC-BY-SA','7 days to die, Cricut, Minecraft, Software',0,0,1),
(3829,'2023-04-06','The Edinburgh cohort of HPR hosts stops Mumbling!',3296,'Dave Morriss and MrX talk about various technical topics','\n
We recorded this on Saturday March 11th 2023. This time we\nmet in person, first at a pub called The Steading close to the\nentrance to the Midlothian\nSnowsports Centre where we had something to eat and drink -\nthough they only serve breakfast items before 12 noon. Then we adjourned\nto Dave’s Citroen car (Studio C) in the car park and recorded a\nchat.
\n
The last of these chats was over Mumble in September 2022, so it was\ngreat to be away from home and to meet in person again after a long time\nof COVID avoidance.
\n
Topics discussed
\n
\n
Google Docs - Dave and MrX use this to build shared notes to help\norganise these sessions\n
\n
There are issues with cut and paste when using Firefox – it doesn’t\nwork!\n
\n
It can be fixed by selecting about:config in a new\ntab.
\n
Change the attribute dom.event.clipboardevents.enabled\nto true.
\n
\n
\n
\n
\n
Is email still relevant in 2023?\n
\n
Google Wave\n- Google’s possible email replacement seemed not to have lasted very\nlong
\n
Alternative access to Gmail using the IMAP protocol
A very flexible open-source front end called exmh was\ncrafted using Tcl/Tk
\n
Using procmail\nallowed an enormous number of capabilities, like sophisticated\nfiltering, spam detection and automatic replies.
\n
Now using Thunderbird,\nand has been for maybe 15 years.
\n
\n
MrX used Eudora in the past, but mostly uses Outlook now.
\n
Both agree that many useful features of email, available in the\npast, have gone. Both of us still find email relevant however!
\n
\n
\n
\n
Calendars:\n
\n
MrX misses the calendar on the Psion Organiser
\n
Dave used to use an X-Windows tool called ical on\nUltrix (no relation to the later iCalendar standard). Moved\nto Thunderbird and its calendar called Lightning.
\n
Both have used the Google Calendar, Dave uses a Thunderbird add-on\nto share family calendars
\n
\n
\n
\n
Lifetime of storage media:\n
\n
SD cards can last a fairly long time, but getting the right type is\nimportant. Using older-style cards in new projects might turn out to be\na false economy.
\n
Hard disks can last a long time if the right sort is used. One thing\nthat shortens their life is getting them hot.
\n
MrX has used Western Digital Passport hard drives for some time, and\nthey have been very reliable – none have failed.
\n
There are different drives from Western Digital which have different\nperformances and they are colour coded. See the Western\nDigital website for details.
\n
\n
\n
\n
Complexity and single points of failure:\n
\n
Chip shortages and lack of resilience:\n
\n
Modern components that do a single job used to consist of multiple\ndiscrete components that could be replaced individually. Now, if a\ncomponent fails it has to be replaced in its entirety, and because of\nthe shortage of chips it uses it may be unavailable.
\n
Older devices and components may still use older less specialised\nparts and so can be repaired.
\n
Unnecessary reliance on GPS in devices, cloud services in Smart\nHome equipment, etc.
\n
For example, managing enormous warehouses requires a lot of services\nthat may not be too resilient, and could fail catastrophically.
Such an event could destroy many satellites (such as those providing\nGPS). It could also cause a massive overload of the power grid.\nTransformers used in the grid can be damaged or destroyed and replacing\nthem in a timely fashion can be difficult.
\n
Carrington\nevent in September 1859 telegraph machines reportedly shocked\noperators and caused small fires.
MrX has had problems getting various RPis updated and running.
\n
Dave has had similar problems making the jump from Raspbian to\nRaspberry Pi OS.
\n
In some cases the operating system on the Pis have needed to be\ncompletely reinstalled, and the work in installing and reconfiguring\nsoftware has proved to be too much!
Dave has a Pico RGB\nBase from Pimoroni, a 14-key board with RGB LEDs which could be used\nas a way of controlling things.
\n
Dave’s Magic\nMirror system (a Pi 3A+ attached to a monitor) failed because\nthe Pi needed to be upgraded and then the Node.js code\ndidn’t seem to be maintained any more! Needs work!!
\n
MrX’s desktop PC is small and quiet, but since it’s in a cold room,\ntends not to get used too much in the winter! Dave’s PC is in an\nextension (addition) to the house and tends to get used quite a lot, but\nin cold winter weather, less so.
\n
\n
\n
\n
YouTube list:\n
\n
We were going to mention a few YouTube channels we’d watched lately,\nbut felt we’d already talked long enough!
\n
Rather than just adding the list to the notes, as we discussed, we\nwill leave this section to the next time we make a recording such as\nthis.
\n
\n
\n
\n
Completing HPR shows:\n
\n
MrX has a show he has recorded but is held up preparing notes to go\nwith it.
\n
Dave tends to write draft notes first, then build the recording\naround them, but this approach isn’t necessarily faster!
\n\n',225,0,1,'CC-BY-SA','Edinburgh,meeting',0,0,1),
(3835,'2023-04-14','Retro Karaoke machine Part 2',954,'Archer72 fixes misplaced belts and figures out what really happened','
\n',318,0,0,'CC-BY-SA','retro, karaoke, cassette tape',0,0,1),
(3960,'2023-10-06','On The Road At Last',1042,'Preparations are done, and we start out on the road.','
We finally got all of the preparations and maintenance done, and it\nwas time to hit the road. Once again, we left a bit later than planned,\nbut life is like that.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, maintenance',0,0,1),
(4111,'2024-05-06','HPR Community News for April 2024',0,'HPR Volunteers talk about shows released and comments posted in April 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3841,'2023-04-24','The Oh No! News.',1268,'Sgoti and Bumble bee discusses U.S. Marshals Service Ransomware attack and more.','
The agency uncovered the intrusion on Feb. 17 2023, when it\ndiscovered “a ransomware and data exfiltration event affecting a\nstandalone USMS system.” That means the hackers stole information from\nthe computer while planting malicious code capable of encrypting the\ndata inside.
\n
“The affected system contains law enforcement sensitive information,\nincluding returns from legal process, administrative information, and\npersonally identifiable information pertaining to subjects of USMS\ninvestigations, third parties, and certain USMS employees,” the agency\nsays.
Worldwiredlabs.com has been around since at least 2012(Opens in a\nnew window), offering a software product called “Netwire,” which is\nsupposedly designed to help IT support staff manage computers remotely.\nBefore the site was seized, it was offering Netwire for $10 per month or\n$60 per year. However, US investigators say the site was a front to sell\nthe software as a hacking tool to cybercriminals.
Author: U.S. Attorney\'s Office, Central District of\nCalifornia. (2023, Mar 9).
\n
A seizure warrant approved by a United States Magistrate Judge on\nMarch 3 and executed on Tuesday led to the seizure of\nwww.worldwiredlabs.com, which offered the NetWire remote access trojan\n(RAT), a sophisticated program capable of targeting and infecting every\nmajor computer operating system. “A RAT is a type of malware that allows\nfor covert surveillance, allowing a ‘backdoor’ for administrative\ncontrol and unfettered and unauthorized remote access to a victim’s\ncomputer, without the victim’s knowledge or permission,” according to\ncourt documents filed in Los Angeles.
The FBI has arrested the alleged founder of a popular cybercriminal\nforum that touted data stolen in a hack affecting members of Congress\nand thousands of other people and taken the website down, the Justice\nDepartment said Friday.
Author: Independent Living Systems, LLC. (2023, Mar\n14).
\n
The types of impacted information varies by individual and could\nhave included: name, address, date of birth, driver\'s license, state\nidentification, Social Security number, financial account information,\nmedical record number, Medicare or Medicaid identification, CIN#, mental\nor physical treatment/condition information, food delivery information,\ndiagnosis code or diagnosis information, admission/discharge date,\nprescription information, billing/claims information, patient name, and\nhealth insurance information.
The FBI has arrested the alleged founder of a popular cybercriminal\nforum that touted data stolen in a hack affecting members of Congress\nand thousands of other people and taken the website down, the Justice\nDepartment said Friday.
After facing backlash earlier this month, PayPal PYPL -1.5%\nrescinded a line in its policy stating that spreading misinformation on\nthe platform would be subject to a $2,500 fine. Today, the remaining\nlanguage leaves users and elected officials demanding more clarity over\nhow the platform defines fine-worthy speech.
\n
\n
Bumble Bee\'s first experience of the HPR website.
\n
\n\n
\n
Additional Information.\n
\n
What is a\nData Breach? A data breach is a security violation, in which\nsensitive, protected or confidential data is copied, transmitted,\nviewed, stolen, altered or used by an individual unauthorized to do\nso.
\n
What is\nMalware? Malware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.
\n
What is\na Payload? In the context of a computer virus or worm, the payload\nis the portion of the malware which performs malicious action; deleting\ndata, sending spam or encrypting data. In addition to the payload, such\nmalware also typically has overhead code aimed at simply spreading\nitself, or avoiding detection.
\n
What is\nPhishing? Phishing is a form of social\nengineering where attackers deceive people into revealing sensitive\ninformation or installing malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.
What is a\nVulnerability (computing)? Vulnerabilities are flaws in a computer\nsystem that weaken the overall security of the device/system.\nVulnerabilities can be weaknesses in either the hardware itself, or the\nsoftware that runs on the hardware.
\n
What is an\n\"Attack Surface\"? The attack surface of a software environment is\nthe sum of the different points (for \"attack vectors\") where an\nunauthorized user (the \"attacker\") can try to enter data to or extract\ndata from an environment. Keeping the attack surface as small as\npossible is a basic security measure.
\n
What is an\n\"Attack Vector\"? In computer security, an attack vector is a\nspecific path, method, or scenario that can be exploited to break into\nan IT system, thus compromising its security. The term was derived from\nthe corresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity.
\n
\n
\n',391,0,0,'CC-BY-SA','US Marshals Service Ransomware, Netwire Malware, US Lawmakers Data Breach, Independent Living System',0,0,1),
(3880,'2023-06-16','Installing a Google Nest Thermostat',791,'I installed a new smart thermostat','
Our old thermostat was breaking down to the point that we could not\nchange the temperature, so it was time for a change. And since smart\nthermostats have gotten pretty good I decided that I wanted to install\none and take more control of my environment.
\n',198,0,0,'CC-BY-SA','Thermostat, Google Nest, installation',0,0,1),
(3890,'2023-06-30','Lessons Learned',793,'What we learned from this experience that will make the next one better.','
This trip started with a difficult week with things breaking and\nmistakes being made. But in the end we had a really good time and want\nto do another trip. But we have learned a few lessons, and we\'ll pass\nthem along to benefit anyone else who might want to do something\nsimilar.
\n',198,119,0,'CC-BY-SA','Travel, RV life, Lessons Learned',0,0,1),
(3900,'2023-07-14','Preparing Podcasts for Listening',704,'I prepare my podcast files for listening in Audacity.','
Because I use very small and simple MP3 players, I have to do\npre-processing of my podcast files, and I use Audacity for that purpose.\nI explain exactly how I do this in case it helps someone else.
\n',198,0,0,'CC-BY-SA','Podcasts, Audacity, file preparation',0,0,1),
(3910,'2023-07-28','Playing Civilization II',968,'Some hints for playing Civilization II','
As I did for the original Civilization, I want to give a few hints on\nplaying this marvelous upgrade. This is obviously not a complete manual\nor strategy guide, which would take a lot longer, but if you\nhappened to run across a copy and wanted to check it out these are a\nsome hints on what you might want to do. I do give you links to other\nresources if you want to go into more depth.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization II',0,0,1),
(3920,'2023-08-11','RV Trip 2022-2023: Southeast US',862,'Step one for a months-long RV trip is the planning.','
In this episode we look at the planning process for our second RV\ntrip. Last year we toured the Southwest US, but we don\'t like to repeat\nourselves. So this time we decided to tour the Southeast US. This not\nonly let us visit a much different part of the country, but it also\nallowed us to go back to our plan to visit some NASA facilities.
\n',198,119,0,'CC-BY-SA','RV, travel planning',0,0,1),
(3930,'2023-08-25','Playing Civilization II Test of Time',747,'Some hints for playing Civilization II Test of Time','
For reasons I go into, this is in some respects a different game from\nCivilization II, at least different enough to deserve some separate\nattention. The multiple map feature makes for some interesting game play\npossibilities that add interest to this version, and the fact that it\nhas no defined end point is also intriguing. And the scenarios add some\ninteresting story differences as well.
\n',198,0,0,'CC-BY-SA','Computer games, strategy games, Civilization II, Test of Time',0,0,1),
(3940,'2023-09-08','Equipment Maintenance',792,'We prepare the RV and the truck for our trip. ','
When you go on an RV trip you are basically towing your home around,\nand that means you need to have your equipment in shape. RVs are said to\nundergo an earthquake every time you tow them, and so there are things\nthat need to be addressed. And the tow vehicle needs to be in good shape\nas well. So in this episode we discuss how we did the necessary\nequipment maintenance.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, maintenance',0,0,1),
(3950,'2023-09-22','Sid Meiers\' Alpha Centauri',969,'One of the best overlooked games','
Because it doesn\'t have the word \"Civilization\" in its name, this\ngame is unfairly overlooked. It was a major achievement when released,\nand it is still a very rewarding game for anyone to pick up and play.\nThere is a lot of depth to it, and it holds up well even after a couple\nof decades.
\n',198,0,0,'CC-BY-SA','Computer games, strategy games, Alpha Centauri',0,0,1),
(3970,'2023-10-20','Playing Alpha Centauri, Part 1',1021,'Part 1 of tips on playing Alpha Centauri','
This starts our look at how to play Alpha Centauri, and we look at\ngame concepts that set this game apart from others.
\n',198,0,0,'CC-BY-SA','Computer games, strategy games, Alpha Centauri',0,0,1),
(3980,'2023-11-03','Huntsville to Vicksburg',908,'From NASA to the Civil War.','
We survive the freezing weather in Huntsville, and then move on to\nour next major stop in Vicksburg, Mississippi. But we have a problem of\na refrigerator that stops working and needs to be replaced.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US',0,0,1),
(3990,'2023-11-17','Playing Alpha Centauri, Part 2',1221,'Part 2 of tips on playing Alpha Centauri','
This continues our look at how to play Alpha Centauri, and we look at\ngame concepts that set this game apart from others. This episode is all\nabout Social Engineering choices.
\n',198,0,0,'CC-BY-SA','Computer games, strategy games, Alpha Centauri',0,0,1),
(4000,'2023-12-01','New Orleans',957,'We visit the Big Easy.','
We get to visit New Orleans, and a bit of Louisiana, in this episode.\nOf course, we only scratched the surface, but that is true of most\ntravel when you think about it. We did see a few interesting things\nalong the way, and started to realize that this trip is not just about\nNASA sites, but also a lot of military history, which is also an\ninterest of mine.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, New Orleans',0,0,1),
(4010,'2023-12-15','Playing Alpha Centauri, Part 3',1061,'Part 3 of tips on playing Alpha Centauri','
This continues our look at how to play Alpha Centauri, and we look at\ngame concepts that set this game apart from others. This episode looks\nat the Design Workshop, and how to create powerful units for your\nmilitary.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Alpha Centauri',0,0,1),
(4020,'2023-12-29','Alabama to Florida',812,'We start traveling across the Gulf Coast on our way to Florida.','
We leave New Orleans and start out across the Gulf Coast. We make a\nbrief stop in Mississippi to add one more NASA site to our trip, then\ninto Alabama just south of Mobile. From there we move into the Florida\nPanhandle.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, Alabama, Florida',0,0,1),
(4030,'2024-01-12','Playing Alpha Centauri, Part 4',728,'Part 4 of tips on playing Alpha Centauri','
This continues our look at how to play Alpha Centauri, and we look at\ngame concepts that set this game apart from others.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Alpha Centauri',0,0,1),
(4040,'2024-01-26','Further Into Florida',893,'We continue our Florida journey and hit the Kennedy Space Center.','
We leave the Florida Panhandle to move into Central Florida and our\nhighly anticipated visit to the Kennedy Space Center. It turned out to\nbe everything we hoped, and we had a fantastic time. In fact we spent\nfive days at the Center soaking it all in, and had a blast.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, Florida',0,0,1),
(4050,'2024-02-09','Playing Alpha Centauri, Part 5',1133,'Part 5 of tips on playing Alpha Centauri','
This continues our look at how to play Alpha Centauri, and we look at\ngame concepts that set this game apart from others.
\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Alpha Centauri',0,0,1),
(4060,'2024-02-23','Florida to Georgia',741,'We wrap up our Florida adventure and move up to Georgia.','
We finish up our visit to Kennedy Space Center with one more day at\nthe Center. Then we spend a few days at St. Augustine before leaving\nFlorida and moving up north to Savannah, Georgia
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, Florida, Georgia',0,0,1),
(4070,'2024-03-08','Civilization III',972,'We start our look at the next game in the Civilization franchise.','
This starts our look at Civilization III, which continued the\nCivilization franchise and followed upon the Alpha Centauri game. This\ngame builds upon the concepts already a part of Civilization, but adds\nsome new features and advancements. Every new version of Civiliation has\npushed new concepts and developed the franchise further, and that is one\nreason why each one has been a best-seller and an award winner.
\n',198,122,0,'CC-BY-SA',' Computer games, strategy games, Civilization III',0,0,1),
(4080,'2024-03-22','Georgia to South Carolina',560,'We visit the beautiful city of Savannah, Georgia, and then move on to Charleston, South Carolina.','
Savannah, Georgia is one of the most beautiful cities in the United\nStates, with a great history. It is one of the older cities in the south\nthat actually escaped destruction in the Civil War because the mayor\nsurrendered the city to General Sherman. After visiting this city, we\nmoved just a bit further north to Charleston, South Carolina, where the\nCivil War began with the assault on Fort Sumter.
\n',198,119,0,'CC-BY-SA','RV, travel, southeast US, Georgia, South Carolina',0,0,1),
(3839,'2023-04-20','Rip a CD in the terminal',300,'Archer72 rips CD\'s in the terminal and avoids the whims of the media companies','
\n',318,11,0,'CC-BY-SA','optical media, terminal apps, lightweight apps, rip cd',0,0,1),
(3832,'2023-04-11','How I left Google behind',1813,'Just an overview of what services I now use to replace previously used Google services','
A list of the software and hardware I cover in the show.
\n
Hardware:
\n
\n
Server - 11th gen i5-11400, 64GB RAM, 12TB SSD storage
\n
Local backup server - 4th gen i5-4570, 32GB RAM, 24TB HDD storage\nin mirrored ZFS pool for 12TB usable.
\n
Offsite backup server - Celeron J4125, 16GB RAM, 8TB SSD\nstorage
\n',375,0,0,'CC-BY-SA','selfhosted,google,proxmox,iredmail,nextcloud,funkwhale,mastodon,writefreely,peertube,invidious,matri',0,0,1),
(3833,'2023-04-12','Software Freedom Podcast',2412,'Another excellent podcast for your consideration this time it\'s news from the FSFE','
Software Freedom Podcast - Free Software Foundation Europe
Copyright (c) Free Software Foundation Europe. Creative Commons BY-SA 4.0
\n
\n\n\n\n
SFP#14: The world of mesh networking with Elektra Wagenrad
\n\n
\nWith this episode the Software Freedom Podcast opens the door to the fascinating and sometimes complex world of mesh networking. And who better than Elektra Wagenrad can take us on this journey? Elektra is one of the original developers of the B.A.T.M.A.N. protocol and of the Mesh Potato project.\n
\n\n
In our 14th Software Freedom Podcast episode Matthias Kirschner talks with our guest, Elektra Wagenrad, about the origins of Freifunk, the B.A.T.M.A.N. protocol, and the Mesh Potato project. If you are new to the world of mesh networking this episodes is an easy entrance to it. Elektra not only explains the theory behind the protocols but also dives deeper into the philosophical idea of it. In this context, Matthias and Elektra also touch on the difficult topic of limiting the use of Free Software, using the example of the former ban on the use of the B.A.T.M.A.N. protocol for military activities. Last but not least they also discuss the EU’s Radio Equipment Directive and the FSFE\'s Router Freedom activity.
\n\n
With this episode, the Software Freedom Podcast has produced an easy to follow and easy to understand podcast for everybody who is interested in mesh networking. Join us on our journey through this fascinating technical and philosophical world and listen to Elektra and Matthias as they tell the story with its ups and downs.\n
If you liked this episode and want to support our continuous work for software freedom, please help us with a donation.
\n\n\n',30,75,0,'CC-BY-SA','FOSDEM, Podcast Recommendations, FSFE, FLOSS',0,0,1),
(3836,'2023-04-17','Using \'zoxide\', an alternative to \'cd\'',715,'Dave has been using \'zoxide\' for a little while and really likes it','\n\n
Overview
\n
I like the idea that there are tools available to enhance the\n\'cd\' command, remembering places you have been in the file\nsystem and taking you there easily.
\n
I use \'pushd\'\nand \'popd\' for moving in and out of directories from a\nplace I want to do most of my work, but something more powerful than\nthese or cd have always seemed desirable.
\n
I was using \'autojump\' for a while last year, but didn’t\nreally get on with it. This was mainly because there was no way of\nexcluding certain directories which had been visited from its list.
\n
Recently I heard of \'zoxide\', which I have been trying\nand really like.
zoxide is a smarter cd command, inspired by z1 and\nautojump.
\n
It remembers which directories you use most frequently, so you can\n“jump” to them in just a few keystrokes. zoxide works on all major\nshells.
\n
\n
In its man page it’s billed as “A faster way to navigate your\nfilesystem”.
\n
It’s written in Rust so is very fast.
\n
What does it do?
\n
\n
It offers the functionality of the Linux/Unix \'cd\'\ncommand.
\n
It collects the directories you have visited into a database and\ngives them a ranking relating to the number of times they have been\nvisited. It applies aging rules and removes these when the ranking drops\nbelow one. It uses frecency to do this - a combination of\nfrequency and recency. (See the Wikipedia page\nexplaining this word)
\n
It performs algorithmic matching on the directory you specify and\ntakes you to the highest ranking best match.
\n
It can resolve conflicts between matching directories or can\nallow selection through an interactive interface.
\n
It can interface to fzf, a general-purpose\ncommand-line fuzzy finder.
\n
It “knows” where it is (in the Bash shell) by calling a function\nout of the PROMPT_COMMAND variable. This can be used to\nexecute one or more commands before displaying the prompt for a new\ncommand. This is a common way to hook monitoring commands into\na Bash session.
\n
\n
Where can you get it?
\n
I installed it from the Debian Testing repo, but I got\n\'zoxide v0.4.3-unknown\' whereas the latest version is\n0.9.0. Installing from the GitHub page seems the\nbest option if you want the latest version.
\n
There is an installation script on the GitHub page and it’s possible\nto download it with curl and pipe it to Bash. I’m never\ncomfortable doing this, but that’s your choice.
\n
I also installed fzf from the Debian Testing repo,\nthough I’m still learning what this can do, since it’s very rich in\nfeatures!
\n
How do you set it up?
\n
This process is shell-specific. I run Bash so I have added it to my\n~/.bashrc and the command there is:
\n
eval "$(zoxide init bash)"
\n
What this does is generate a number of Bash functions and aliases and\nsome commands which are fed into eval and executed in the\ncurrent context.
\n
Function z is created which gives a way of invoking\nzoxide in fewer keystrokes, though the full functionality\nof zoxide is not available through this function, use the\nfull zoxide command.
\n
Function zi lists all of the stored directories courtesy\nof fzf. I haven’t tested this without fzf, so\nI’m not sure what it does if it’s not available. The scrollable list can\nbe navigated and a directory chosen with the Enter key (or\ndouble mouse click). In the scrollable list, if characters are typed\nthey are used to select directories from the list, so that it’s simple\nto find a directory whose exact name you have forgotten.
\n
How to tune it?
\n
The zoxide behaviour can be modified through environment\nvariables (and at setup time).
\n
For example it is possible to define directories which are not to be\nstored using the environment variable _ZO_EXCLUDE_DIRS.\nThis must be done before running zoxide init. In my case, I\nhave the following in my ~/.bashrc:
The setup details are to be found in the GitHub documentation.
\n
Conclusion
\n
I really like this. It’s fast and configurable, and with\nfzf gives some great command-line features. There are\neditor plugins, such as zoxide.vim for Vim and Neovim (not\nused yet). It also integrates with other third-party tools.
I didn’t know what \'z\'\nwas when recording the audio. I did some research and found it, and can\nsee how \'zoxide\' has similar behaviour. I have added a link\nin case you want to investigate this yourself.↩︎
\n\n\n\n',225,11,1,'CC-BY-SA','directory,folder,change directory,cd,zoxide,autojump',0,0,1),
(3866,'2023-05-29','Introducing myself',343,'I discovered HPR at FOSDEM 2023 and want to join the party','
Hello, my name is André Jaenisch. You can find myself online under\nRyuno-Ki as well.
\n
This is my first episode on Hacker Public Radio! \nIt is recorded on 8th May 2023 using Audacity. \nIt is published under a Creative Commons Attribution Share-Alike 4.0\nInternational License.
\n
Today I want to introduce myself. \nI\'m a web developer for ten years now and recently turned into a\nfreelancer. \nMy area of expertise is with Frontend technologies, although I also know\nNode.js and Python. I taught myself these languages because my studies\nin mathematics did not cover them. \nDuring my studies I switched to GNU/Linux. I started with Ubuntu but\ndiscovered that I prefer Rolling Release distributions more. So I jumped\nto Sabayon Linux which was based on Gentoo back then but pre-compiled\nthe binaries while staying compatible. Now they decided to turn into\nanother direction so I was looking for another home. I tried Gecko Linux\nbased on openSUSE for a while until they had bad news in the press. I\'m\ncurrently running Kaisen Linux which is based on Debian Bookworm.
\n
Speaking of, I love to read. I have whole shelves filled with books\nhere. \nThere is so much to learn from books even in the age of the Internet. I\nenjoy that they have a finite amount of content you can walk\nthrough.
\n
I learned about Hacker Public Radio at FOSDEM 2023. When I mentioned\nthat I have a RODE NT-USB microphone at home already I was encouraged to\ncontribute to the show. Now I have been listening to the podcast since\nthe beginning of the year and already heard some of the emergency shows.\nI noticed that the hackers on the show are mainly from the United\nStates. I hope you welcome people from other parts of the world as\nwell.
\n
I\'m from Germany in Europe. A beautiful place to live and I bet as\ndiverse as in the States when it comes to the landscape. We have more\nthan Berlin and Bavaria here!
\n
I\'m not quite sure what kind of content you would love to hear about.\nI have the requested topics page in front of me and could talk about\ndifferent items. For example, my first smartphone ever was a Firefox OS\n(I still have it. As well as a tablet). \nI switched to Android with F-Droid when Mozilla was cancelling the\nproject. I\'m running on a Fairphone here, which is a small Dutch\nmanufacturer that already managed to move the whole industry into a more\nsustainable direction. Because we produce lots of waste. So I could talk\nabout that.
\n
Or I could talk about building things for the web. Usually I blog\nabout that because I feel like text feels more natural to it. But then I\nsaw that some episodes contained code snippets in the show notes.
\n
I could talk about mathematics. We don\'t have enough podcasts about\nmath! My focus was on statistics and numerics so that might be\ninteresting?
\n
What I would love to hear more about is music theory. You see I\nhaven\'t learned to play an instrument in my life. Mainly because those\nare expensive. My personal taste goes more into heavy metal but I\'m not\nsure whether you would call me a fan. What does make a metalhead anyway?\nBut in order to improve my game development having some sort of music\nand sound effects is important. So I was really enjoying the episode\n3792 on reading music sheets. I lend some books on the library to learn\nmore. These subjects weren\'t covered in depth in my school days!
\n
Another subject I would like to learn more about is electronics.\nEspecially repairing one\'s computers. Look, I\'m using ThinkPads since\nyears now. I have a X250 (from FOSDEM) in current use. But I also have a\nX200 and a T520 gathering dust here. Mainly because something „broke”\nwith the hardware and I\'m too afraid to crack them open. \nThen there\'s a HP Pavilion standing under my desk to wait for repair.\nAnd even one of the old machines from the DOS era with an original\nLemmings installed! But I have no idea how to refurbish them into a\nbootable state. Do you have ideas?
\n
I\'m sharing my homepage as well as\nmy e-mail address in\nthe show notes. I would really love to hear back from you.
\n
I feel like I already touched on different ideas today, but looking\nat the time the recording is rather short. Personally I can tune into\nepisodes up to 30 minutes best, so I will try to respect this threshold\nmyself.
\n',419,0,0,'CC-BY-SA','introduction',0,0,1),
(3837,'2023-04-18','Make a vortex cannon',448,'How to make a vortex cannon which can extinguish a candle at about ten feet','
Make a Vortex Cannon.
\n\n
This is a device for firing a coherent torus-shaped vortex across a room. If it is made with a degree of care, it will extinguish the flame of a candle from some distance.
\n\n
What you will need
\n\n\n
An empty Pringles can. This is the cylindrical foil-lined cardboard tube which originally contained Pringles potato chips.
\n
A party balloon.
\n
Some strong parcel tape.
\n
A hole punch capable of making a clean hole of about two centimetres (three quarters of an inch) in diameter.
\n
A small drill.
\n\n\n
What to do
\n\n
Step 1:
\n\n
Drill a small hole in the metal end-plate of the Pringles can. This hole needs to be large enough to accommodate the threaded portion of the hole punch.
\n\n
The hole needs to be as close to the exact dead-centre of the plate as you can make it.
\n\n
Use the hole punch to make as clean as possible a hole as accurately as possible.
\n\n
Here in the UK it is possible to obtain a hole punch called a Q-Max punch from Maplin, the supplier of electronic and hobby parts.
\n\n
I am sure they are available from other sources.
\n\n
It is very important that this hole is:
\n\n
\n
As close to the centre of the end-plate as is humanly possible
\n
Has edges which are clean and crisp. Hence the use of a hole punch.
\n
\n\n
It is these two factors more than any other that will effect the efficiency of the cannon.
\n\n
Step 2:
\n\n
Cut off the mouth-piece end of the balloon.
\n\n
Stretch it over the open end of the Pringles can and pull it as tight over the end as you can.
\n\n
When I say the open end I mean the end from which you removed the lid and chomped on the chips.
\n\n
Use the parcel tape to wrap the balloon tightly around the circumference of the cylinder, anchoring it in position so that the open end of the can is now like a drum formed by the stretchy membrane of the balloon. Nice and tight.
\n\n
The cannon is now ready to fire.
\n\n
Firing the cannon
\n\n
Pinch the centre of the balloon membrane and pull it back as far as you can. This might be easier if you push some kind of (blunt ended) rod into the can from the hole end and push out the membrane until you can pinch it.
\n\n
Some other stretchy latex device which has a little bulb at the end might be easier to get hold of, but I can\'t think of such an item, can you?
\n\n
When you let go of the membrane with it stretched out as far as you can go, what happens?
\n\n
Well, if you made the small circular hole at the metal-plate end of the cylinder nice and clean and central, the cannon fires a coherent vortex of air.
\n\n
What do I mean by a \'vortex\'?
\n\n
Imagin a ring doughnut compromised of air shooting out of the end of the tube like a smoke ring out of a Hobbit.
\n\n
The vortex is spinning. Not like the bullet fired from a rifled barrel, but as if it is constantly trying to turn itself inside-out.
\n\n
This spinning keeps the torus (this is what the shape of a ring doughnut is called) coherent and intact for several feet.
\n\n
If you made the hole in the metal plate end of the tube nice and clean, and you stretched the balloon membrane out as far as you possibly can, the cannon is capable of blowing out the flame of a candle at about ten feet (three metres) in the still air in a room.
\n\n
As soon as it leaves the cannon, the vortex will begin to degrade and fall apart.
\n\n
A word of warning
\n\n
This little toy might only be firing a torus of air, but do not be tempted to shoot yourself or the cat in the face at point blank range. It hurts.
\n\n
Mike
\n\n',282,0,0,'CC-BY-SA','vortex cannon, make, torus',0,0,1),
(3838,'2023-04-19','Biking to Work',772,'EMERGENCY SHOW: Jon Kulp records an episode while riding his bicycle to work','
Biking to Work
\n
In this episode I record while I\'m riding my bicycle to work, using my new audio adapter to plug my $2 microphone into my phone. To make the recording I used the Hi-Q mp3 recorder app on my Android device. In the end I didn\'t do anything in post-production to adjust the volume or compression of the audio. It turned out pretty well "as is."
\n
Links
\n
\n
SuperWhole 3.5mm 1/8" Earphone Headset + Microphone Adapter to Stereo Audio Male: on Amazon
\n',238,0,0,'CC-BY-SA','HighQ MP3, Bike, ZOOM Recorder.',0,0,1),
(3842,'2023-04-25','What’s in my bag series',1923,'In this episode I go through the contents of the bag I take to work.','
Introduction
\n
A time stamp is added for each item I mention. The time stamp given\ndoes not include the intro added by HPR so you’ll need to add a few more\nseconds to get to the the correct spot in the recording.
\n
[1:20] - I mention that if you are struggling to think of a topic for\nan HPR show then the HPR site contains a list of requested topics which\nyou can choose from. https://hackerpublicradio.org/requested_topics.php
\n
[1:55] - Picture 01 show the “Wenger” rucksack (Backpack) I take to\nwork. It was purchased many years ago and is probably no longer\navailable.
\n
Picture 1 \n
\n
First front zip section
\n
[3:20] - I mention that I suffered for many years with Hay fever and\nhave had great success with Mixed Pollen 30C tablets which I bought on\nAmazon. Unknown to me at the time these were Homeopathic with miniscule\nconcentration. Despite this they seems to have cured my Hay fever. Refer\nto the links below.
[4:20] - Link to some unremarkable Iphone headphones I use which I\nbought from Amazon. Strangely they seem to constantly fall out of my\nleft ear but remain in my right ear.
[5:40] - Picture 02 shows the leather pouch pocket protector that I\nused to carry coins. I no longer have a use for it as I no longer carry\nchange. Despite this for some reason I still continue to carry it back\nand forward to work.
\n
Picture 2 \n
\n
[6:25] - Pictures 03 and 04 show the Essentials fold back clips 19mm\nI use on a daily basis to organise bundles of paperwork.
[7:50] - Picture 05 shows the rubber (Eraser) I purchased from the\nNew Lanark Village Store. The proceeds go to the RNLI (Royal National\nLifeboat Institution).
[17:10] I mention that I have some red coloured spot stickers that I\nhave many uses for one of which is to make it easy to see at a glance if\nthe switch that operates an outside light is turned on as without this\nit is not possible without stepping outside to check. Refer to picture\n08.
\n
Picture 8 \n
\n
Second main compartment
\n
[18:20] I have a Morgan foldable brolly which I occasionally use when\ncaught in the rain. Refer to picture 09
\n
Picture 9 \n
\n
[18:30] I have a pair of foldable military ear defenders. I picked\nthem up while I was at an air show I think at Ingliston many years ago.\nRefer to pictures 10 and 11
[22:15] I mention that found a letter from my company with a\ndesignated worker heading. If required this letter was to allow me to\ndrive to work at the height of the COVID-19 pandemic. I do remember\nhaving to do this at least once and that the roads were deserted like\nsome post apocalyptic scene from a movie. Despite this I never needed to\nshow the letter to anyone.
\n
[22:55] I talk about a sketch I made a number of years ago for a\ntimber post. I was told this was needed in order to place a charging\npoint midway up my driveway. This was needed for an electric car I was\nthinking of buying. I ended up abandoning the idea as it all got too\ncomplicated. I believe things have since improved and I now wish I’d\nbought the car is it actually went up in value!
\n
[24:00] I briefly mention a piece of paper entitled disk tidy that\ncontained various Linux commands. I think this was a number of Ideas I\nwanted to try out to tease out which directories were taking up the most\nspace on a hard drive I had. These days I either use the du command or\nsometimes ncurses command ncdu.
\n
[24:30] I talk about a pile of old documents I came across that may\nhave copyright issues so I won’t include them in the show notes. However\nI’ll include the following related links
\n
[24:40] The first document I found was from the from many years ago\nwith a foot note saying it was from the UN Population Division UNDE SA\nOxfam World Centre WWF giving various stats about global population,\nresource usage and carbon emissions Link to UN Population\nDivision
[26:00] I came across an old illustration from the BBC I think from\naround 2012 which had two graphs from the UK showing the vast number of\nstaff working in the DWP (Department of Work and Pensions) to recover a\npotential small amount of fraud in the UK benefits system and comparing\nthis to the tiny number of staff they had working in the UK\'s HMRC (HM\nRevenue and Customs) that could have recovered a potentially vast amount\nof tax evasion fraud. Wikipedia article about the BBC\n- British Broadcasting corporation
[27:45] I briefly mention a paper I found that mentioned peak oil. I\nfeel this is now less of a problem as there is more than enough left in\nthe ground to fry humanity. Link to Wikipedia article\nabout peak oil.
[28:50] I mention that I carry a bottle of water to work. The bottle\nis a stainless steel water bottle that is double walled vacuum\ninsulated. It can hold 500 Millilitres of liquid. It claims to be able\nto keep liquids cool for 24 Hours. I\'ve been very impressed with it as\nit seems to be able to keep the water cool for the whole day I am at\nwork. Amazon\nlink to water bottle
\n
[29:00] I mention that I carry a roll of masking tape. This comes in\nhandy for all sorts of situations. Often to create ad-hoc labels for things. Wikipedia\narticle about masking tape
\n
[29:05] I mention that the skin on my hands can get very dry\nespecially when I’m at the office due to it having low humidity. I use\nNutrogena hand cream to combat this. Amazon\nlink to Nutrogena hand cream
\n
[29:42] I mention that I carry a stapler which comes in handy from\ntime to time. Refer to picture 12. Wikipedia article about\nstaplers
[30:09] I found a Caramel Wacko chocolate bar biscuit in the bag I\ntake to work (Refer to picture 13). These are available from from Aldi.\nAldi is discount food store in the UK. Wikipedia article about\nAldi
\n
Picture 13 \n
\n',201,23,1,'CC-BY-SA','Bag, Work',0,0,1),
(3843,'2023-04-26','LinuxLUGCast pre-show ramblings',4348,'Lugcast participants ramble about things before the podcast','
I first want to apologize for my crappy show notes.
\n
That out of the way. Welcome to LinuxLUGCast episode 217 the\npre-show. Normally this gets tacked on to the end of the regular\npodcast, but Ken put out a call for shows and we figured this was the\neasiest way to get a show out. I was going to try to meet up with these\nsame people on Mumble and talk about something technical for HPR, but\nlet\'s be honest the conversation would probably still have turned into\nTV and movies, and we were already together and recording. Plus\nhopefully I can use this to convince other people to come and join the\nLugcast. We record every first and third Friday of the month using\nmumble. Check out linuxlugcast.com for all the details.
\n',269,0,1,'CC-BY-SA','linux,movies,TV,LUG',0,0,1),
(3845,'2023-04-28','Using tmux, the terminal multiplexer Overview',707,'Archer72 uses tmux and restores sessions between reboots','
Using tmux, the terminal multiplexer on multiple machines
\n',318,11,0,'CC-BY-SA','tmux, terminal apps, lightweight apps',0,0,1),
(3847,'2023-05-02','All about Synchrotrons',50,'Beginning of a series on Synchrotrons','
I moved cities a few years ago to start work at the Australian\nSynchrotron. While I\'m always going to be a software engineer, and I\'m\nnever going to be on top of all the science aspects of a synchrotron, I\nprobably now know enough to be able to put together a series all about\nsynchrotrons.
\n',315,0,0,'CC-BY-SA','science',0,0,1),
(3851,'2023-05-08','Firefox extensions',391,'Ken walks through a list of Extensions he has installed in Firefox and why he uses them','
The following is a list of the extensions I have enabled all the\ntime.
Awesome\nRSS Puts an RSS/Atom subscribe button back in URL bar.
\n
cookies.txt\nExports all cookies to a Netscape HTTP Cookie File, as used by curl,\nwget, and youtube-dl, among others.
\n
Don\'t\nFeck With Paste This add-on stops websites from blocking copy and\npaste for password fields and other input fields.
\n
Firefox\nMulti-Account Containers Lets you keep parts of your online life\nseparated into color-coded tabs. Cookies are separated by container,\nallowing you to use the web with multiple accounts.
uBlock\nOrigin Finally, an efficient blocker. Easy on CPU and memory.
\n
User-Agent\nSwitcher Switch between popular useragent strings from toolbar\npopup!
\n
\n',30,0,0,'CC-BY-SA','Extensions,Firefox,Security,Copy,Paste,Block,Privacy',0,0,1),
(3848,'2023-05-03','Editing Thunderbird email filters using vim.',1845,'Sgoti uses vim sessions to quickly edit his email filters.','
Prerequisites:
\n
\n
Backups of ALL your data (especially your\nThunderbird directory). \n
\n
Confirm your backups are working as expected. \n
\n
Vim text editor installed with at least a basic/novice level\nknowledge of vim. \n
\n
Thunderbird email client installed with at least a basic/novice\nlevel knowledge of the Thunderbird email client. \n
\n
Web browser (preferably Firefox). \n
\n
\n
Thunderbird Directories.
\n
I’m on a GNU/Linux system (Pop_OS!) and I have Thunderbird installed\nvia the apt system package manager (.deb).
I’ve created subdirectories within $HOME/.config/ as a\nplace to store my vim sessions. You may not have these directories on\nyour system, but you can create them using the mkdir\ncommand. \n
\n
\n
$HOME/.config/vim/sessions/session-files-here.vim
\n
\n
Vim session file.
\n
I’ve created session files for purposes of editing my Thunderbird\nemail filters. This session only stores the shortcuts needed to make\nflawless edits to my email filters. I will share them with you. \n
\n',391,0,0,'CC-BY-SA','Thunderbird, Vim, Email Filters',0,0,1),
(3852,'2023-05-09','UDM ubiquiti Setup for 2023',634,'I talk briefly about my UDM router setup for 2023','
\n',36,0,0,'CC-BY-SA','wireless,computers,networking',0,0,1),
(3853,'2023-05-10','Creating a Prompt for ChatGPT to generate an HPR show',613,'A rushed episode going over the steps I used to create a ChatGPT prompt to generate an HPR episode','
Introduction
\n
Hello and Welcome hacker public radio audience my name is … and\nwelcome to this podcast.
\n
As usual I\'d like to thank the people at HPR for making this service\navailable to us all on these here inter-tubes. Hacker Public Radio is a\ncommunity led podcast provided by the community for the community. That\nmeans you can contribute too.
\n
In this episode I decided to see if I could get get ChatGPT to write\nan HPR episode about itself. I was initially reluctant to do this.\nHowever, since HPR was recently short on shows and I was rather short on\ntime and ideas I decided to give it a go.
\n
One reason for my reluctance was that I didn\'t want HPR to be flooded\nwith shows generated by ChatGPT. The other reason being that a great\nshow covering ChatGPT was previously provided by the hpr host \"dnt\"\nentitled \"Chatbot hallucination\". Refer to 3803 https://hackerpublicradio.org/eps.php?id=3803.\nIn comparison, my poor attempt took about 10 minutes to generate while I\nwas waiting to be called for lunch.
\n
Below are the steps I used to generate the prompt to generate a show\nfor HPR.
\n
You interface with ChatGPT by providing it prompts. This just means\ntyping some text into the input field within the ChatGPT website.
\n
The steps I used\nto produce the ChatGPT prompt
\n
Here is how I did it. Keep in mind that the complete process took\njust 10 minutes.
I want you to become my Prompt Creator. Your goal is to help me\ncraft the best possible prompt for my needs. The prompt will be used by\nyou, ChatGPT. You will follow the following process:
\n\n
Your first response will be to ask me what the prompt should be\nabout. I will provide my answer, but we will need to improve it through\ncontinual iterations by going through the next steps.
\n
Based on my input, you will generate 3 sections.
\n
a) Revised prompt (provide your rewritten prompt. It should be clear,\nconcise, and easily understood by you),
\n
b) Suggestions (provide suggestions on what details to include in the\nprompt to improve it), and
\n
c) Questions (ask any relevant questions pertaining to what\nadditional information is needed from me to improve the\nprompt).
\n
We will continue this iterative process with me providing\nadditional information to you and you updating the prompt in the Revised\nprompt section until it\'s complete.
\n
\n
\n
\n
ChatGPT responded with:-
\n
\n
Sounds like a fun and collaborative process! What should the prompt\nbe about?
\n
\n
I replied with the\nfollowing prompt:-
\n
\n
Write a show for the hacker public radio podcast describing the\nhistory and use of ChatGPT. Include some examples about what it can be\nused for. Also include some relevant web links about ChatGPT.
\n
\n
ChatGPT responded with:-
\n
\n
Great! Based on your input, here are the revised prompt, suggestions,\nand questions for further clarification:
\n
\n
Revised prompt:
\n
\n
Create a Hacker Public Radio podcast episode that explores the\nhistory and applications of ChatGPT. Share examples of how ChatGPT can\nbe used and include relevant web links for listeners to learn more.
\n
\n
Suggestions:
\n
\n
Consider including information about the development of ChatGPT,\nsuch as who created it and when.
\n
Provide clear and concise examples of how ChatGPT can be used in\nvarious industries and fields, such as customer service, content\ncreation, and chatbots.
\n
Highlight the benefits and limitations of using ChatGPT, including\nits ability to learn and adapt to user inputs and the potential ethical\nconcerns surrounding its use.
\n
Provide relevant web links, such as the official OpenAI website and\narticles about the latest developments in ChatGPT technology.
\n
\n
Questions:
\n
\n
Is there a specific angle or focus you want to take in exploring the\nhistory and applications of ChatGPT?
\n
Do you have any specific examples or use cases of ChatGPT that you\nwould like to be included in the podcast episode?
\n
How technical should the podcast be? Should it cater to a more\ngeneral audience or dive into more technical details?
\n
\n
I replied with the\nfollowing prompt:-
\n
\n
Create a Hacker Public Radio podcast episode that explores the\nhistory and applications of ChatGPT. Share examples of how ChatGPT can\nbe used and include relevant web links for listeners to learn\nmore.
\n
Include information about the development of ChatGPT, such as who\ncreated it and when.
\n
Provide clear and concise examples of how ChatGPT can be used in\nvarious industries and fields, such as customer service, content\ncreation, and chatbots.
\n
Highlight the benefits and limitations of using ChatGPT,\nincluding its ability to learn and adapt to user inputs and the\npotential ethical concerns surrounding its use.
\n
Provide relevant web links, such as the official OpenAI website\nand articles about the latest developments in ChatGPT\ntechnology.
\n
The show is mainly aimed at hobbyist. Many of the listeners will\nhave Linux experience and IT experience. Some listeners may have some\nprogramming experience.
\n
The article should cater for both a general audience while also\ndiving into more technical details.
\n
Format the article using markdown as required.
\n
\n
ChatGPT responded with:-
\n
Revised prompt:
\n
\n
Create a Hacker Public Radio podcast episode exploring the history\nand applications of ChatGPT, an artificial intelligence language model\ndeveloped by OpenAI. ChatGPT has become increasingly popular due to its\nability to understand and generate human-like text, and its applications\nspan a wide range of industries and fields.
\n
In this episode, we will dive into the development of ChatGPT,\nincluding who created it and when. We will explore the technology behind\nit and how it has evolved over time.
\n
\n
\n
We will also provide clear and concise examples of how ChatGPT can be\nused in various industries and fields, such as customer service, content\ncreation, and chatbots. For example, ChatGPT can be used to generate\npersonalized responses to customer inquiries in real-time, create\nhigh-quality content for websites and social media platforms, and power\nchatbots that can assist with a range of tasks.
\n
Additionally, we will highlight the benefits and limitations of using\nChatGPT, including its ability to learn and adapt to user inputs and the\npotential ethical concerns surrounding its use. As ChatGPT continues to\ngrow in popularity, it is important to consider the implications of\nusing AI technology that can generate human-like text, such as the\npotential for bias and misinformation.
\n
To provide listeners with more information, we will include relevant\nweb links, such as the official OpenAI website and articles about the\nlatest developments in ChatGPT technology.
\n
This episode will cater to a general audience while also diving into\nmore technical details for listeners with Linux, IT, or programming\nexperience. The article will be formatted using markdown as\nrequired.
\n
\n
Suggestions:
\n
\n
Consider including interviews with experts in the field of AI or\nindividuals who have used ChatGPT in their work.
\n
Provide real-world examples of how ChatGPT has been used in various\nindustries and fields.
\n
Discuss the potential future applications of ChatGPT and where the\ntechnology may be headed.
\n
Address any common misconceptions or concerns about the use of AI\nlanguage models like ChatGPT.
\n
\n
Questions:
\n
\n
Is there a specific length you would like the podcast episode to\nbe?
\n
Are there any specific individuals or companies you would like us to\nfeature in the episode?
\n
Is there any particular tone or style you would like us to use for\nthe podcast episode?
\n
\n\n
\n
I stopped at this point and decided not to take on board any\nfurther suggestions or refinements. As I mentioned at the beginning this\nwhole process probably took no longer than 10mins.
\n
I will provide the show generated by ChatGPT in my next\nepisode.
\n\n',201,0,1,'CC-BY-SA','ChatGPT,AI,\"Artificial Inelegance\"',0,0,1),
(3863,'2023-05-24','HPR episode about ChatGPT produced by ChatGPT',553,'In this article I gave ChatGPT a prompt and it produced an HPR episode about ChatGPT','
Introduction:
\n
This is part 2 of my Chat GPT episode. (For part 1 refer to\nHPR3853)
\n
Incidentally I was quite surprised how long it took me to pull\ntogether part 1. This was primarily because I had to do all the work\ncreating the show notes. Part 2 should be a lot quicker since most of\nthe work including formatting the article in markdown was done by\nChatGPT.
\n
The only change I made to the episode created by ChatGPT was to\ncorrect a minor markdown formatting error in the OpenAI link at the\nbottom of the article.
\n
The following\narticle was produced by ChatGPT
\n
It was produced from the following prompt. The prompt itself was\nmostly written by ChatGPT with minimal input from myself. The prompt\ntook me 10 minutes to produce. Refer to my previous episode HPR3853.
\n
Prompt used to create HPR\nepisode:
\n
\n
Create a Hacker Public Radio podcast episode exploring the\nhistory and applications of Chat GPT, an artificial intelligence\nlanguage model developed by OpenAI. Chat GPT has become increasingly\npopular due to its ability to understand and generate human-like text,\nand its applications span a wide range of industries and\nfields.
\n
In this episode, we will dive into the development of Chat GPT,\nincluding who created it and when. We will explore the technology behind\nit and how it has evolved over time.
\n
We will also provide clear and concise examples of how Chat GPT\ncan be used in various industries and fields, such as customer service,\ncontent creation, and chatbots. For example, Chat GPT can be used to\ngenerate personalized responses to customer inquiries in real-time,\ncreate high-quality content for websites and social media platforms, and\npower chatbots that can assist with a range of tasks.
\n
Additionally, we will highlight the benefits and limitations of\nusing Chat GPT, including its ability to learn and adapt to user inputs\nand the potential ethical concerns surrounding its use. As Chat GPT\ncontinues to grow in popularity, it is important to consider the\nimplications of using AI technology that can generate human-like text,\nsuch as the potential for bias and misinformation.
\n
To provide listeners with more information, we will include\nrelevant web links, such as the official OpenAI website and articles\nabout the latest developments in Chat GPT technology.
\n
Provide real-world examples of how Chat GPT has been used in\nvarious industries and fields.
\n
Discuss the potential future applications of Chat GPT and where\nthe technology may be headed.
\n
Address any common misconceptions or concerns about the use of AI\nlanguage models like Chat GPT.
\n
This episode will cater to a general audience while also diving\ninto more technical details for listeners with Linux, IT, or programming\nexperience.
\n
The episode should be approximately 1000 words long.
\n
Format the article using markdown as required.
\n
\n
The\nepisode created by ChatGPT all nicely formated in Markdown:
\n\n
HPR Episode: Exploring Chat\nGPT
\n
Introduction
\n
In recent years, artificial intelligence (AI) has become an\nincreasingly popular topic in various industries and fields. One such\nexample is Chat GPT, an AI language model developed by OpenAI. Chat GPT\nhas the ability to understand and generate human-like text, making it a\npowerful tool for customer service, content creation, and chatbots. In\nthis episode, we will dive into the history and applications of Chat\nGPT.
\n
History of Chat GPT
\n
Chat GPT was first introduced in 2018 by OpenAI. It is part of a\nseries of AI language models known as the GPT series, with \"GPT\"\nstanding for \"Generative Pre-trained Transformer.\" Chat GPT was\ndeveloped using a deep learning technique called a transformer neural\nnetwork, which allows it to process large amounts of text and generate\ncoherent responses.
\n
Applications of Chat GPT
\n
Customer Service
\n
Chat GPT can be used to generate personalized responses to customer\ninquiries in real-time. This can save companies time and money by\nautomating the customer service process. Chat GPT can also learn from\nprevious interactions to improve its responses over time.
\n
Content Creation
\n
Chat GPT can create high-quality content for websites and social\nmedia platforms. For example, it can be used to write product\ndescriptions, social media posts, and even entire articles.
\n
Chatbots
\n
Chat GPT can power chatbots that can assist with a range of tasks.\nFor example, it can be used to schedule appointments, answer common\nquestions, and even provide emotional support.
\n
Benefits and Limitations\nof Chat GPT
\n
Benefits
\n
One of the main benefits of Chat GPT is its ability to learn and\nadapt to user inputs. This allows it to generate personalized responses\nthat are tailored to each individual user. Chat GPT can also process\nlarge amounts of text quickly, making it a useful tool for companies\nthat need to generate a lot of content.
\n
Limitations
\n
However, there are also some limitations to using Chat GPT. One\npotential concern is the potential for bias and misinformation. Since\nChat GPT learns from existing text, it may pick up biases or\ninaccuracies that exist in the data it is trained on. Additionally,\nthere is a risk that Chat GPT may generate inappropriate or offensive\nresponses if it is not properly monitored.
\n
Future Applications of Chat\nGPT
\n
Chat GPT has already been used in a variety of industries and fields,\nbut there is still a lot of potential for future applications. For\nexample, it could be used to power virtual assistants that are even more\nintelligent and personalized than current offerings. It could also be\nused to generate more sophisticated chatbots that can assist with\ncomplex tasks.
\n
Common Misconceptions and\nConcerns
\n
One common misconception about Chat GPT is that it is a threat to\nhuman jobs. While it is true that Chat GPT can automate certain tasks,\nit is unlikely to replace humans entirely. Instead, it is more likely to\naugment human abilities and make certain tasks more efficient.
\n
Another concern is the ethical implications of using AI language\nmodels like Chat GPT. It is important to ensure that the data used to\ntrain Chat GPT is diverse and free of biases. Additionally, it is\nimportant to ensure that Chat GPT is used responsibly and not used to\nspread misinformation or harm individuals.
\n
Conclusion
\n
Chat GPT is a powerful tool that has the potential to revolutionize\ncustomer service, content creation, and chatbots. While there are some\nlimitations and concerns associated with its use, the benefits of using\nChat GPT are clear. As the technology continues to evolve, it is\nimportant to consider the ethical implications and ensure that it is\nused responsibly.
\n',201,0,1,'CC-BY-SA','ChatGPT, AI, Artificial Inelegance',0,0,1),
(3883,'2023-06-21','Emergency Show: How to demonstrate the power of condensing steam',483,'A kitchen experiment to demonstrate the power of condensing steam','
A kitchen experiment to demonstrate the power of condensing steam
\n\n
What do you think about when you consider how a steam engine works?
\n\n
Well you probably think about a fire used to heat water in a pressure vessel to form super-heated steam.
\n\n
Then that steam is injected into cylinders in a controlled and sequenced manner to push a piston up the length of the cylinder. Piston rods and cranks are used to change the linear motion into rotary motion to drive wheels or gears.
\n\n
Inertia causes the rotary motion, through the same cranks and rods, to expel the spent steam from the cylinder, before the whole cycle begins again.
\n\n
But that\'s only half the story.
\n\n
Steam engines also use the power of a partial vacuum created by condensing steam to produce linear motion in the same way, or to suck the hot products of combustion from the fire through pipes which pass through the pressure-vessel and heat the water.
\n\n
What you will need for the experiment
\n\n\n
An empty drinks can, such as a 330ml soda can.
\n
A shallow container, such as a baking tray.
\n
A pair of barbecue tongs or kitchen tongs with which you will be able to grasp a hot can without burning your hand or getting too close to the heat.
\n
A source of heat, the cooker top in the kitchen is ideal.
\n\n\n
How to do it
\n\n
Step 1:
\n\n
Thoroughly wash out the empty can. Any sugary residue might burn and smell.
\n\n
Put about a centimetre (half an inch) of water into the can. Enough to cover the centre of the concave end of the can inside.
\n\n
Step 2:
\n\n
Place your shallow container next to your source of heat. This will most probably be a baking tray on the kitchen worktop next to the cooker where you will heat your can.
\n\n
Put about a centimetre (half an inch) of cool water in the tray.
\n\n
Step 3:
\n\n
Place your can on the heat. It will quickly begin to boil because it only contains a small amount of water.
\n\n
Wait until the water is really boiling and filling the can with steam.
\n\n
Grasp the can with the tongs. You need to do this in an underhand grip which will allow you to, in one swift and smooth motion, remove the can from the heat, turn it over and plunge the open end into the cool water in the tray.
\n\n
Do exactly that. As swiftly and smoothly as you can.
\n\n
Here you will see the need for a vessel like a baking tray, the larger target makes the quick and smooth transfer of the can from the heat to the condensing cool water easier.
\n\n
What happens?
\n\n
The can is full of steam, which will instantly condense when the open end of the can is plunged into the cool water.
\n\n
Bam!
\n\n
The partial vacuum created in the can will cause it to be very quickly and impressively crushed.
\n\n
The power of a partial vacuum is far easier to harness and is more powerful than pushing a piston along a cylinder with pressurised steam.
\n\n
The mechanism of an efficient steam engine will inject pressurised steam into a cylinder during the phase of motion where the piston is pushed up the length of the cylinder, and inject a small amount of cold water into the cylinder fractionally after the full travel of the piston and as it is just beginning the return stroke. In this way the cylinder is both pushed and pulled up and down the cylinder.
\n\n
But the condensing part of the cycle is far more efficient at pulling the piston than the steam injection phase is at pushing it.
\n\n
The dramatic \'chugging\' of a steam engine as it pulls away from a station is the part of the sequence in which condensing steam is used to create a partial vacuum in the smoke-box at the front of the engine. The hot products of combustion are drawn by this partial vacuum from the fire at the far end of the engine, through the pipes which pass through the boiler, increasing the efficiency of the heating of the water. The same partial vacuum is also used to increase the draft of air into the furnace.
\n\n
It is mostly the rush of clean air into the furnace, drawn by the partial vacuum, which gives rise to the deep and pleasing heart-beat of a big powerful engine as it works hard to move a heavy train from a standing start.
\n\n
Mike
\n\n',282,0,0,'CC-BY-SA','steam, condensing, vacuum, demonstrate, experiment',0,0,1),
(3849,'2023-05-04','trouble shooting',610,'don\'t over look the obvious','
Kernel message \n Click the thumbnail\nto see the full-sized image
\n
BIOS message \n Click the thumbnail to\nsee the full-sized image
\n
CMOS \n Click the thumbnail to see the\nfull-sized image
\n
RAM \n Click the thumbnail to see the\nfull-sized image
\n
Mother board side \n Click the\nthumbnail to see the full-sized image
\n
The culprit \n Click the thumbnail to\nsee the full-sized image
\n',152,0,0,'CC-BY-SA','openssh,ssh,bsd,linux,openbsd,netbsd,freebsd',0,0,1),
(3856,'2023-05-15','Painting toy soldiers',2174,'I started painting miniatures for wargames','
Here are the games I started painting first:
\n
\n
\nMysterium: I don\'t actually like this game, but it nevertheless provided some simple plastic crystal balls that became my first paint experience.\n
\n
\nPandemic: Reign of Cthulhu: A great game that ships with 6 hero figures and 3 shogoth figures. Very fun to paint, and I mostly used mostly cheap acrylic paint from the local art store.\n
\n
\nDungeons & Dragons: Wrath of Ashardalon Board Game: D&D combat game with 40 miniatures of varying sizes and complexity. Really good source of cheap miniatures so you can get lots of painting practise (and you can use the miniatures in your roleplaying games and the board game).\n
\n
\n\n
I have no prior experience with paint of any kind, but here are some of the resources I mentioned in the show.
\n\n
\n
\nSince recording, I have invested in spray-on primer over the paint-on primer I mention in the episode.\n
\n
\nI\'ve been buying mostly Citadel contrast paints because they\'re readily available in New Zealand from the Warhammer (Games Workshop, in the UK) store.\n
\n
\nSpeedpaint by The Army Painter are similar but maybe cheaper depending on your region.
\n
\n',78,0,0,'CC-BY-SA','game,rpg,wargame,board game,miniature,painting',0,0,1),
(4131,'2024-06-03','HPR Community News for May 2024',0,'HPR Volunteers talk about shows released and comments posted in May 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3859,'2023-05-18','My Live in Devices',1305,'Just a run down on my devices','
A talk about things that attracted me to purchase them.
\n',129,0,0,'CC-BY-SA','Tablet,headphones,PCs,Laptops,Linux,Ubuntu,Lubuntu',0,0,1),
(3861,'2023-05-22','How To find Things on your home Network',707,'How to find the lost Raspberry PI Zero on your home network','
Hey guys I lost my Raspberry Pi Zero W - its place in the house. I am\nnot sure if it\'s on solar power running or not. But in in any case it\'s\nnot out and about at the normal locations in my home for such items.
\n
So I use an App called Network Analyzer on my Huawei phone to find\nthe IPs in use in the home.
\n
Then use putty go and see how the PI is doing.
\n
Enjoy the Show
\n',129,0,0,'CC-BY-SA','Raspberry PI Zero W, android phone, Network Analyzer, putty, kitty',0,0,1),
(3868,'2023-05-31','News.',695,'Sgoti reports the recent FBI criminal reports and other news.','
Author: U.S. Attorney\'s Office, Middle District of\nPennsylvania. (2023, May 11). \n
\n
The United States Attorney’s Office for the Middle District of\nPennsylvania announced that Florentina Mayko, age 39, of Cambria County,\nPennsylvania, was charged by criminal information with one count of\nconspiracy to commit health care fraud for defrauding Medicare and the\nU.S. Department of Health and Human Services between 2017 and\n2019. \n
Author: U.S. Attorney\'s Office, Eastern District of\nNew York. (2023, May 10). \n
\n
A 13-count indictment was unsealed today in the United States\nDistrict Court for the Eastern District of New York charging George\nAnthony Devolder Santos, better known as “George Santos,” a United\nStates Congressman representing the Third District of New York, with\nseven counts of wire fraud, three counts of money laundering, one count\nof theft of public funds, and two counts of making materially false\nstatements to the House of Representatives. \n
Author: U.S. Attorney\'s Office, District of New\nJersey. (2023, May 10). \n
\n
During 2015, Lourenco opened 23 credit cards using the identities of\nthree victims he had befriended, two of whom were senior citizens.\nLourenco’s victims did not know he was using their identities to obtain\nthe credit cards, nor did they authorize Lourenco to obtain the credit\ncards. Lourenco used the 23 credit cards to make more than $423,000 in\nunauthorized purchases. He also used the debit card for a joint bank\naccount belonging to two of the victims to make an additional $57,000 in\nunauthorized charges. Lourenco admitted that he knew at least one of his\nvictims was a vulnerable victim when he used the victim’s identity to\ncommit his crime. \n
Author: U.S. Attorney\'s Office, Eastern District of\nOklahoma. (2023, May 9). \n
\n
Lewis pleaded guilty to Murder in Indian Country—Second Degree on\nSeptember 30, 2021. The investigation of the case revealed Lewis beat\nthe victim to death with a television and a coat rack after an evening\nof drinking at the victim’s apartment. Police investigating an Emergency\nMedical Services call discovered the victim lying on the floor of his\napartment and Lewis covered in the victim’s blood. \n
Author: U.S. Attorney\'s Office, Eastern District of\nTexas. (2023, May 9). \n
\n
According to information presented in court, Donofrio conspired with\nothers to pay and receive kickbacks in exchange for the referral of, and\narranging for, health care business, specifically pharmacogenetic (PGx)\ntests. Pharmacogenetic testing, also known as pharmacogenomic testing,\nis a type of genetic testing that identifies genetic variations that\naffect how an individual patient metabolizes certain drugs. The illegal\narrangement concerned the referral of PGx tests to clinical laboratories\nin Fountain Valley, California; Irvine, California; and San Diego,\nCalifornia. More than $28 million in illegal kickback payments were\nexchanged by those involved in the conspiracy. \n
\n',391,0,1,'CC-BY-SA','Fraud, identity theft, murder, crime, conspiracy',0,0,1),
(3862,'2023-05-23','Firefox Extensions',618,'Archer72 Goes over extensions used on the Desktop and yes, Mobile too.','
Dark mode for every website. Take care of your eyes, use dark theme\nfor night \nand daily browsing. This eye-care extension enables night mode creating\ndark \nthemes for websites on the fly. Dark Reader inverts bright colors making\nthem \nhigh contrast and easy to read at night.
\n
You can adjust brightness, contrast, sepia filter, dark mode, font\nsettings and \nignore-list.
\n
Dark Reader doesn\'t show ads and doesn\'t send user\'s data anywhere.\nIt is fully \nopen-source
Skip sponsorships, subscription begging and more on YouTube videos.\nReport \nsponsor on videos you watch to save others\' time. SponsorBlock lets you\nskip \nover sponsors, intros, outros, subscription reminders, and other\nannoying parts \nof YouTube videos. SponsorBlock is a crowdsourced browser extension that\nlets \nanyone submit the start and end times of sponsored segments and other\nsegments \nof YouTube videos. Once one person submits this information, everyone\nelse with \nthis extension will skip right over the sponsored segment.
\n
You can also skip over non music sections of music videos.
\n
Supports Invidious, old YouTube and mobile YouTube.
Vim, but in your browser. Replace Firefox\'s control mechanism with\none modelled \non Vim. This addon is very usable, but is in an early stage of\ndevelopment. We \nintend to implement the majority of Vimperator\'s features. Control your\nbrowser \nwith your keyboard only. Replace Firefox’s control mechanism with one\nmodelled \non VIM. Most common tasks you want your browser to perform are bound to\na \nsingle key press.
\n',318,0,0,'CC-BY-SA','Firefox, Extensions, Mobile, Android, Privacy, vim',0,0,1),
(3865,'2023-05-26','When did the Internet get so boring?',1912,'Thoughts about the modern WWW','
\n\n',78,99,0,'CC-BY-SA','gopher,gemini',0,0,1),
(3867,'2023-05-30','Leap 15.4 Docker Install',623,'Install Leap 15.4 and Docker on an Fuji SN900 Thin Client','
Hi Team hope you guys are great. \nI did an upgrade from 15.3 to 15.4 in leap.
\n',129,0,0,'CC-BY-SA','leap, docker, 15.3, 15.4, suse, ubuntu',0,0,1),
(3876,'2023-06-12','Recording An Episode For Hacker Public Radio',478,'Sharing My Experience As A First-Time Contributor','
Hello again, my name is André Jaenisch, also known as Ryuno-Ki.
\n
Last week I recorded my first episode for Hacker Public Radio, the\npodcast you are listening to right now. This one is recorded on 15th May\n2023. Again I\'m publishing it under a Creative Commons Attribution\nShare-Alike 4.0 International License.
\n
Getting contacted
\n
I was surprised to get mentioned on the Fediverse after submitting my\nshow. You can find me there at RyunoKi@layer8.space (no dash, eight as\ndigit, link in the shownotes) in case you want to reach out to me.
\n
I\'m also delighted to have received an email even before my last\nepisode was airing. I was asked whether I am interested in recording an\nepisode on my experience with contributing to Hacker Public Radio for\nthe first time. So this is going to be the topic for today. As a warning\nupfront: I have a reputation of overthinking stuff. I blame my\nneurodiversity for it. That being said I\'m positive that sharing my\nthought process can help make the service better for everyone.
\n
About recording software
\n
I\'m recording this episode again using Audacity. Now there is choice\nabout which software you can use for a podcast. Online based as well as\noffline one. Audacity was in the news for sending analytics home.\nHowever I couldn\'t find any indication in the settings for it (to\nopt-out). The forks of the software weren\'t packaged up for Debian as\nfar as I could tell. Or perhaps they require an additional sources.list\nentry, I don\'t know.
\n
Before recording my very first podcast here I had only experience\nwith some video recording. Oftentimes done by the host but I also\nprepared a few videos for an online course (which I couldn\'t publish\nbecause life happened) and talks I gave during the pandemic years.
\n
Learning about how to\npodcast
\n
As I often do when I enter a new subject, I went to the library and\ngrabbed some books to learn more. In particular I lended Podcasts by\nDirk Hildebrand. A small\nbook in German published at Haufe. I add a link in the\nshownotes.
\n
Reading through it I learned that I\'m doing okay. It\'s really easy to\nstart a podcast as HPR promises! The thing I should spend some attention\non is keeping a consistent distance to the microphone, enable some level\nof feedback during the recording so that I can listen to what is\nrecorded while speaking (using my gaming headset Logitech G230) and\nprepare a script.
\n
I don\'t have to think about designing images for the show or episode\nbecause HPR will take care of that for me. It might be different if I\nstart my own podcast. Perhaps using Funkwhale or Castopod. Right now I\'m not taking\nsteps towards that. Mainly because I need to rent some webspace first.\nIn my experience streaming media takes considerable amount of bandwidth.\nPair that with hosters that try hard to convince you to buy your domains\nwith them as well and the choice shrinks. I have my DNS provider\nalready, thank you very much.
\n
Adapting lessons learned
\n
I looked into how to do that in Audacity and I think the best I could\ndo for now is hitting on the microphone icon next to the meters in the\nupper right of the interface and enable observation before I start\nrecording. Also leaving a little bit of time before and after the\nrecording allows me to cut keyboard clicks for starting and stopping the\nrecording. In HPR 3802 I also learned about skipping silences which is a\nEffect in the Special category here. I hope I don\'t have pauses so long\nthat it warrants to truncate them.
\n
My main thought about going with Audacity was post-processing\ndirectly after the recording. I learned from my talks that I already\nfeel comfortable with a script in front of me. It gives me the security\nI need to avoid too many ums.
\n
What\'s missing on HPR
\n
However, I feel like a few things are missing. Considering that this\nis a podcast that is distributed through HPR and its partners I would\nlike to have chapter markers. I couldn\'t find a hint on how to add them\nin the form I was presented. Using timestamps it allows to easily see\nthe outline of a recording which aids in the decision making process on\nwhether it\'s worth the time to listen to a particular episode. I hope\nyou consider the episodes here useful to make time for them :) Thank\nyou.
\n
Another question mark I had when preparing the recording were the\nsettings. I\'m used to have a guideline when recording videos for an\nonline talk. Things like preferred format and container, to technical\ndetails like stereo or mono to the sampling rate (value and whether\nstatic or variable). The only thing I found is a hint that submissions\nwill be transcoded to mono. I record in stereo with the default 44,1 kHz\nsampling rate here. There was no recommendations on the format so I went\nwith OGG Vorbis instead of MP3 because of license freedom. Audacity\nappear to not support FLAC so I have to use a lossy format. It\'s true\nthat MP3 enjoys wide support, but I want to encourage freedom when given\nthe choice. I could have chosen WAV files but those tend to become huge\nreally fast.
\n
Adding metadata
\n
Now I also add metadata to the recording. Vorbis offers comments for\nthat. You can compare it to ID3 tags for MP3 files. Given that I\ncouldn\'t find a way to enter these chapter information in HPR web forms\nI\'m experimenting with EasyTAG from the debian repository. From reading\nthe source code of my podcatcher of choice (AntennaPod for Android as\ndistributed in the F-Droid app store) I can tell that it parses these\ncomments at least. If that doesn\'t yield results I hope to see, there is\nvorbiscomment of the vorbis-tools package for the command line. And Kid3\nwith a Qt or CLI interface. Expect some slightly different metadata by\nme over the course of my contributions.
\n
Writing shownotes
\n
Last thing I want to highlight before ending this episode is\nshownotes. Now I have more experience with blogging than recording a\npodcast. When researching recommendations online there is all this SEO\nfluff that goes into writing subtitles. Usually with catchy titles,\nclickbait and all the rest. I have opinions here. However, I enjoy that\nthere is no „leave a rating and a review” part in the episodes I\nlistened to so far, because a podcast is a special RSS feed basically.\nWhy would I want to bind myself to a special platform? But then I also\nwant to be able to read up and search through the content of a podcast\nepisode. Right now I\'m sharing my prepared script as a shownote. It\ncould come off as a wall of text. I\'m open to feedback on this front.\nYou can find my Keyoxide profile below. Please do reach out to me.
\n
Closing
\n
And that\'s it for today. I thank you for listening to me. Looking\nforward to hear from you. Be it in writing or as an episode on HPR.
The Federal Information Processing Standards (FIPS) of the United\nStates are a set of publicly announced standards that the National\nInstitute of Standards and Technology (NIST) has developed for use in\ncomputer systems of non-military, American government agencies and\ncontractors. FIPS standards establish requirements for ensuring computer\nsecurity and interoperability, and are intended for cases in which\nsuitable industry standards do not already exist. Many FIPS\nspecifications are modified versions of standards the technical\ncommunities use, such as the American National Standards Institute\n(ANSI), the Institute of Electrical and Electronics Engineers (IEEE),\nand the International Organization for Standardization (ISO). \n
FIPS are standards and guidelines for federal computer systems that\nare developed by National Institute of Standards and Technology (NIST)\nin accordance with the Federal Information Security Management Act\n(FISMA) and approved by the Secretary of Commerce. These standards and\nguidelines are developed when there are no acceptable industry standards\nor solutions for a particular government requirement. Although FIPS are\ndeveloped for use by the federal government, many in the private sector\nvoluntarily use these standards. \n
Unlock the scroll wheel for hyper-fast continuous scrolling to spin\nquickly through long pages, or lock it down for single click precision\nscrolling. The weighty, metal wheel delivers confident, smooth and\nsatisfying control for either mode. \n
\n
\n
\n\n
General KeePassXC Information.\n
\n
\n
Why KeePassXC instead of KeePassX? \n
\n
KeePassX is an amazing password manager, but hasn\'t seen much active\ndevelopment for quite a while. Many good pull requests were never merged\nand the original project is missing some features which users can expect\nfrom a modern password manager. Hence, we decided to fork KeePassX to\ncontinue its development and provide you with everything you love about\nKeePassX plus many new features and bugfixes. \n
\n
\n
Why KeePassXC instead of KeePass? \n
\n
KeePass is a very proven and feature-rich password manager and there\nis nothing fundamentally wrong with it. However, it is written in C# and\ntherefore requires Microsoft\'s .NET platform. On systems other than\nWindows, you can run KeePass using the Mono runtime libraries, but you\nwon\'t get the native look and feel which you are used to. \n
\n
KeePassXC, on the other hand, is developed in C++ and runs natively\non all platforms giving you the best-possible platform\nintegration. \n
\n
\n
Why is there no cloud synchronization feature built into\nKeePassXC? \n
\n
Cloud synchronization with Dropbox, Google Drive, OneDrive,\nownCloud, Nextcloud etc. can be easily accomplished by simply storing\nyour KeePassXC database inside your shared cloud folder and letting your\ndesktop synchronization client do the rest. We prefer this approach,\nbecause it is simple, not tied to a specific cloud provider and keeps\nthe complexity of our code low. \n
\n
\n
KeePassXC allows me to store my TOTP secrets. Doesn\'t this alleviate\nany advantage of two-factor authentication? \n
\n
Yes. But only if you store them in the same database as your\npassword. We believe that storing both together can still be more secure\nthan not using 2FA at all, but to maximize the security gain from using\n2FA, you should always store TOTP secrets in a separate database,\nsecured with a different password, possibly even on a different\ncomputer. \n
\n
\n
How do I use the KeePassXC CLI tool with the AppImage? \n
\n
Starting with version 2.2.2, you can run the KeePassXC CLI tool from\nthe AppImage by executing it with the cli argument: \n
\n
./KeePassXC-*.AppImage cli \n
\n
\n
\n
Additional Information.
\n
\n
What Is Infinite Scrolling? \n
\n
Infinite scrolling is a technique that loads more content as you\nscroll. It allows you to continue scrolling indefinitely and is\nsometimes known as endless scrolling. \n
\n',391,0,0,'CC-BY-SA','KeepassXC, audit, Zaur Molotnikov',0,0,1),
(3869,'2023-06-01','5 minute war game',836,'I made up a game so I could play with my painted toy soldiers while waiting for code to compile.','
Grab some toy soldiers (Games Workshop, BattleTech, Lego, whatever), a handful of six-sided dice, and clear off a 20x20 cm space on your desk.
\n\n
Arrange the soldiers within the play area. Place 3d6 by each soldier.
\n\n
On its turn, a soldier may move or attack. Never both.
\n\n
To attack, remove 1d6 from a soldier\'s dice pool and roll it. Ranged attacks hit on 4 or greater. Melee attacks hit on 3 or greater.
\n\n
When a soldier takes damage, remove 1 die from its dice pool.
\n\n
When a soldier\'s dice pool is reduced by damage to 0 or less, tip it on its side to signify that it is dead.
\n\n
The last soldier or soldiers left standing when there are no dice in the play area wins.
\n\n
These rules are Creative Commons CC BY-SA 4.0, but you can also download them from Itch.io
\n',78,95,0,'CC-BY-SA','game,rpg,wargame,board game,miniature,painting',0,0,1),
(3872,'2023-06-06','Sgoti update with replies.',1730,'Sgoti talks about the Oh No News and replies to a few HPR shows.','
\n',391,0,0,'CC-BY-SA','Oh No News, Show Replies',0,0,1),
(3873,'2023-06-07','Nextcloud instance updating',153,'Automatic updating of Nextcloud Installation','
Things about environment:
\n
\n
Headless server
\n
Nextcloud On Fedora 38
\n
Apache Web Server
\n
Nextcloud runs as apache user
\n
Nextcloud installed in alternate directory\n/data/nextcloud
root@homeserver ~]# crontab -l -u apache\nMAILTO=NAME@domain.com\n# m h d m w\n# * * * * * command to be executed\n# - - - - -\n# | | | | |\n# | | | | +----- day of week (0 - 6) (Sunday=0)\n# | | | +------- month (1 - 12)\n# | | +--------- day of month (1 - 31)\n# | +----------- hour (0 - 23)\n# +------------- min (0 - 59)\n# m h dom mon dow command\n\n#Nextcloud\n#Cron Updates \n*/5 * * * * /usr/bin/php -f /data/nextcloud/cron.php >/dev/null 2>/dev/null\n#App Updates\n0 5 * * 0 /usr/bin/php /data/nextcloud/occ app:update --all 2>&1\n#Update Next Cloud\n0 1 * * 0 /usr/bin/php --define apc.enable_cli=1 /data/nextcloud/updater/updater.phar --no-interaction
\n',273,0,1,'CC-BY-SA','Nextcloud,SysAdmin,Admin',0,0,1),
(3875,'2023-06-09','Parlons Linux Season 1 Episode 7, le sticky bit',340,'A sample episode from a new entry to the Free Culture Podcast list','
\n',30,75,1,'CC-BY-SA','freeculturepodcasts,creative commons,Parlons Linux',0,0,1),
(3885,'2023-06-23','L\'apéro des Papas Manchots podcast, Rencontre avec le vétérinaire du Libre',7315,'A sample episode from the latest entry to the Free Culture Podcast','
\n\n',30,75,1,'CC-BY-SA','FreeCulturePodcast,Creative Commons,L\'apéro des Papas Manchots',0,0,1),
(3879,'2023-06-15','HPR at Hillend',2747,'MrX and Dave Morriss have lunch and record a chat','\n
We recorded this on Saturday May 20th 2023. We met in\nperson again, and as before first visited the pub called The\nSteading where we had lunch. Then we adjourned to Dave’s Citroen\ncar (Studio C) in the car park, and recorded a chat.
\n
The region where we met is close to a village called\nHillend, which led to the show title.
\n
Topics discussed
\n
\n
ChatGPT:\n
\n
MrX did two shows in May using ChatGPT. He has used it more than\nDave has.
\n
MrX has an iPhone and can use ChatGPT from it. He uses it as a\nsource of information when out and about. For instance, to find out\nabout the history of Musselburgh\nHarbour.
\n
MrX has also used ChatGPT to write experimental Python scripts.
MrX and Dave have both used Audacity for several years.
\n
Audacity was forked after it was taken over by Muse Group, and Tenacity was developed.\nHowever, it doesn’t seem that there have been any releases on Tenacity\nto date.
\n
The most recent versions of Audacity have contained changes - in\nparticular the way the audio project is stored has changed. Instead of a\ndirectory filled with various files there is now a single project file\nwith the extension .aup3 which is a SQLite database. This\nwas changed in March 2021 for Version 3.0.\n
\n
Previously Audacity stored the project as a file called\n<project>.aup and a directory called\n<project>_data/ containing sub-directories and\nfiles.
\n
\n
MrX reports changes in the way multiple tracks are handled. Dave\nfinds that the horizontal scrollbar has disappeared (which seems to be a\nbug).
During the COVID-19 epidemic the channel contained a lot of\ninformation about the SARS-CoV-2 virus, vaccines, disease, treatments,\netc, which seemed to be helpful and well researched.
\n
At one point there was a lot of talk about Ivermectin as a drug that\ncould help with the disease, but although this received no support from\nscientific research, it seemed to be receiving more and more exposure on\nthe channel.
\n
From then on the quality of the content on the channel seemed to\ndeteriorate, and it no longer seems trustworthy.
Dave met with Andrew Conway and Andrew’s friend, and all went to the\nexhibition held at the National Museum of Scotland.
\n
The exhibition contained a lot of Doctor Who memorabilia, including\nsome original props.
\n
MrX and the group that went to the exhibition have all watched\nDoctor Who over the years. All have lost interest at some point but then\nresumed, particularly after the show was restarted in 2005 with\nChristopher Eccleston and Billie Piper.
\n
Discussion about the BBC\nRadiophonic Workshop where the Doctor Who sound effects were made as\nwell as the signature tune. Also the Mellotron, a keyboard\nthat played tape loops.
\n
\n
\n
\n
Mechanical musical instruments:\n
\n
The Swedish band Wintergatan\nuse mechanical instruments in their music and Martin Molin, a\nband member is responsible for some of them. He did a series on YouTube\nabout mechanical instruments: Music\nMachine Mondays at the Museum\nSpeelklok in Utrecht which is great to watch if you are\ninterested.
\n
Dave also mentioned musical instrument museums in Berlin\nand Brussels.
\n
MrX mentioned a museum in Dalbeattie, a town\nin Dumfries and\nGalloway in the Scottish Borders. In the museum there had been a\nchance to play a barrel organ.
\n
\n
\n
\n
YouTube channels:\n
\n
Dave:\n
\n
(Mentioned earlier) Debunk\nthe Funk with Dr Wilson - the host, Dan Wilson, has a Ph.D. in\nmolecular biology that covers bad science while making good science\naccessible. The channel focuses mainly on pseudoscience surrounding the\nanti-vaccine movement and COVID misinformation.
\n
Little\nChinese Everywhere - Yan is a Human Geographer who studied in\nSwitzerland. The first season was “The Longest Way Back Home\n(Switzerland to China)” where she travelled over land to China. She\nis now producing videos for season 2 about China itself. She plans to\nvisit every province in mainland China and make videos.\n
\n
Dave mentioned the episode about Yanjin City in\nYunnan. It is mentioned in Wikipedia as the “World’s\nNarrowest City”, either side of the narrow Heng River valley, a\ntributary of the Yangtze.
\n
\n
\n
MrX:\n
\n
Ron Mattino - a\nchannel dedicated to electronics, programming and engineering.\n
\n\n',225,0,1,'CC-BY-SA','Edinburgh, Hillend, discussion',0,0,1),
(3878,'2023-06-14','Linux commands to gather information about your system',557,'You need this information to understand your system better','
All add on airports at the top of the list (Important)
\n
Aerosoft default airports (Do Not rename)\n\n Demo Airports (Do Not rename)\n\n Global airports (Do Not rename - Keep below ALL airports)\n\n Library files (Can be anywhere, but I put them below airports)\n\n Landscape scenery files (Keep below the airports they may affect)\n\n Ortho (Below all airports)\n\n Mesh (Below ortho)
\n
\n',36,0,0,'CC-BY-SA','video games,vatsim, simulators',0,0,1),
(3886,'2023-06-26','light saber zzz ohh no!',1242,'I talk about my problem with light savers ...','
\n',36,0,0,'CC-BY-SA','light sabers,star warz,cat,lul cats,memes',0,0,1),
(3882,'2023-06-20','Alternatives to the cd command',632,'Navigate your filesystem without cd','
Five or six ways I could think of to roam the files of your Linux computer without cd.
The pushd command, when called with a filepath as an argument, saves\nthe current working directory in memory (via a directory stack) so it\ncan be returned to at any time, places the new filepath at the top of\nthe stack, and changes to the new filepath. The popd command returns to\nthe path at the top of the directory stack.
\n
cd -
\n
From man bash An argument of - is converted to $OLDPWD\nbefore the directory change is attempted.
\n
Variables
\n
EXPORT mydir="/path/to/file/"\ncd ${mydir}
\n
History and histverify
\n
Using !number from the history command will execute the command
\n
[user@pc ~]$ history\n1 cd tmp\n2 cd ~\n3 history\n\n[user@pc ~]$ !3\ncd tmp\n[user@pc tmp]$\n
\n
from the man command
\n
shopt [-pqsu] [-o] [optname ...]\n Toggle the values of settings controlling optional shell behavior.\n ...\n -s Enable (set) each optname.\n -u Disable (unset) each optname.
\n
Now using !number from the history command will put the command on\nthe prompt but you need to execute it yourself
\n
[user@pc ~]$ shopt -s histverify\n[user@pc ~]$ !39673\n[user@pc ~]$ cd tmp
\n',78,42,0,'CC-BY-SA','bash,linux',0,0,1),
(3887,'2023-06-27','10 must-know commands for a new cloud admin',1499,'Learn these essential Linux commands so you know how to run your cluster','
Learn Linux basics so you can manage your cluster.
A poker deck is a great starting point for developing game mechanics without getting distracted by what the game assets will look like. Playing cards have lots of unique things you can structure game play around, like two colours, four suits, face cards, Joker, and so on.
\n\n
Tarot cards add even more variety, because a tarot deck usually has unique art on every card, which provides you plenty of elements to work with. Etsy has lots of custom tarot decks that are beautifully designed by indie artists.
An easier option is to use LibreOffice Draw. Go to Page > Page Properties > and set page size to 57mm x 89mm (2.25 x 3.5 inches).
\n
Minimalism is a great tool for any content creator on a budget. Think of the simplest requirement to convey your game mechanic. If your cards look better than your game mechanics play, nobody\'s going to play your game. Spend your time and effort on the game, not the design. (There\'s a balance to be struck, though. If your game assets make no sense and people can\'t figure out how to play the game, that\'s a problem too.)
You can also look through places like Artstation.com and Deviantart.com, but finding Creative Commons and consistent-looking art is a challenge.\n
\n\n',78,95,0,'CC-BY-SA','game,design',0,0,1),
(3888,'2023-06-28','KeePassXC recent CVE',588,'Sgoti talks about KeePassXC\'s security model and a recent CVE.','
Security theater is the practice of taking security measures that\nare considered to provide the feeling of improved security while doing\nlittle or nothing to achieve it \n
\n',391,0,0,'CC-BY-SA','KeePassXC, CVE-2023–35866',0,0,1),
(3889,'2023-06-29','comm - compare two sorted files line by line',195,'A great tool to quickly find the differences between two files','
From the man page \"comm - compare two sorted files line by line\"
\n
It\'s part of the core utils package and you can install it using\ndnf install coreutils on RPM distros, or\napt install coreutils on Debian based ones.
Then we can see what each command does using these examples.
\n
[host@hpr]$ comm -1 -2 1and2.txt 2and3.txt\n2\n[host@hpr]$ comm -1 -3 1and2.txt 2and3.txt\n3\n[host@hpr]$ comm -2 -3 1and2.txt 2and3.txt\n1\n
\n',30,0,0,'CC-BY-SA','comm,compare,coreutils',0,0,1),
(3894,'2023-07-06','The Page 42 Show: Ugly News Week, Show\'s Epoch!',2261,'An hour of news and commentary of software development and the overall FOSS space. ','
Show Notes
\n
I\'m Gage Hopper, and this is my weekly(-ish) show on FOSS news and\nsoftware tinkering.
\n',36,0,1,'CC-BY-SA','Interviews,hacking,ai',0,0,1),
(3898,'2023-07-12','The Oh No! News.',1485,'Sgoti talks about internet scams.','
The Oh No! news.
\n
Oh No! News is Good\nNews.
\n
\n
TAGS: User space, Cybercrime, fraud, scams
\n
\n\n
User space.
\n
Cybercrime, also known as scams or fraud, is constantly evolving due\nto the many data breaches occurring around the world. Attackers gather\nmore of our personal data from these data breaches, then use that data\nto develop or modify their attacks. Users must remain on guard against\nsocial engineered attacks aimed at defrauding users of personal\ninformation and/or property (usually money/currency). I’m suggesting\nusers update themselves as they would update their computers. Knowing\nthe types of attacks and how the attack is deployed will benefit you in\nthe fight against Cybercrime. \n
\n
Reporting Cybercrime is beneficial for all users. When a user reports\nCybercrime, that information can help investigators combat this growing\nthreat; and broadcast warnings to the greater population. I’ve provided\na few links below to assist you in learning and reporting\nCybercrime. \n
\n
Common delivery methods for social engineered attacks are: \n
\n
\n
Email (attackers imitate legitimate organizations in design\nonly). \n
\n
Mobile (voice, text messages, and app stores). \n
\n
Social Media (direct messages and marketplaces). \n
\n
Websites (including fraudulent ads and popups). \n
\n
\n
Common data and/or property (e.g. currency) extraction methods\nare: \n
\n
\n
Peer-to-peer payment service apps (Venmo, Zelle, Cash App...etc).\nWARNING, your money goes where ever you send it (including\nscammers). \n
\n
Wire transfers: transfer currency from one entity to another\n(account-to-account). WARNING, your money goes where ever you send it\n(including scammers). \n
\n
Cryptocurrency: 100% Scam. Light your money on\nfire for more value (reversing/recovering payment is virtually\nimpossible). \n
\n
Store gift cards: Unverifiable way to use currency (online or in\nstore). WARNING, scammers prefer gift cards as payment\n(reversing/recovering payment is virtually impossible). \n
\n
Source:Internet\nCrime Complaint Center (IC3) The Internet Crime Complaint Center, or\nIC3, is the Nation’s central hub for reporting cyber crime. It is run by\nthe FBI, the lead federal agency for investigating cyber crime. \n
Source:Action Fraud, the national\nreporting centre for fraud and cybercrime. Action Fraud is the UK’s\nnational reporting centre for fraud and cybercrime where you should\nreport fraud if you have been scammed, defrauded or experienced cyber\ncrime in England, Wales and Northern Ireland. \n
\n
Source:European\nUnion Agency for Law Enforcement Cooperation If you have fallen\nvictim to cybercrime, click on one of the links below to be redirected\nto the reporting website of your country. Reporting mechanisms vary from\none country to another. In Member States which do not have a dedicated\nonline option in place, you are advised to go to your local police\nstation to lodge a complaint. \n
\n
Source:National Cybercrime and Fraud\nReporting System. Reporting a scam or computer crime helps the Royal\nCanadian Mounted Police (RCMP), the National Cybercrime Coordination\nUnit (NC3) and the Canadian Anti-Fraud Centre (CAFC)Reporting a scam or\ncomputer crime helps the Royal Canadian Mounted Police (RCMP), the\nNational Cybercrime Coordination Unit (NC3) and the Canadian Anti-Fraud\nCentre (CAFC) learn more about the nature of these incidents. The\ninformation you include in your report helps us follow cybercrime and\nfraud trends. We use this information to help protect more people from\nharm. It is the role of local police services to investigate. \n
Supporting Source:Common\nScams and Crimes. The following are some of the most common scams\nand crimes that the FBI encounters, as well as tips to help prevent you\nfrom being victimized. \n
What is a \"Data\nBreach\"? A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so.
\n
What is \"Malware\"?\nMalware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.
\n
What is a \"Payload\"?\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection.
\n
What is \"Phishing\"?\nPhishing is a form of social engineering\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.
\n
Social\nengineering (security) In the context of information security,\nsocial engineering is the psychological\nmanipulation of people into performing actions or divulging\nconfidential information. A type of confidence trick for the purpose of\ninformation gathering, fraud, or system access, it differs from a\ntraditional \"con\" in that it is often one of many steps in a more\ncomplex fraud scheme. \n
Information Security Attributes:Confidentiality, Integrity and Availability (C.I.A.).\nInformation Systems are composed in three main portions, hardware,\nsoftware and communications with the purpose to help identify and apply\ninformation security industry standards, as mechanisms of protection and\nprevention, at three levels or layers: physical, personal and\norganizational. Essentially, procedures or policies are implemented to\ntell administrators, users and operators how to use products to ensure\ninformation security within the organizations.
\n
\n
What is \"Risk\nmanagement\"? Risk management is the identification, evaluation, and\nprioritization of risks followed by coordinated and economical\napplication of resources to minimize, monitor, and control the\nprobability or impact of unfortunate events or to maximize the\nrealization of opportunities.
\n
What is a \"Vulnerability\"\n(computing)? Vulnerabilities are flaws in a computer system that\nweaken the overall security of the device/system. Vulnerabilities can be\nweaknesses in either the hardware itself, or the software that runs on\nthe hardware.
\n
What is an \"Attack\nSurface\"? The attack surface of a software environment is the sum of\nthe different points (for \"attack vectors\") where an unauthorized user\n(the \"attacker\") can try to enter data to or extract data from an\nenvironment. Keeping the attack surface as small as possible is a basic\nsecurity measure.
\n
What is an \"Attack\nVector\"? In computer security, an attack vector is a specific path,\nmethod, or scenario that can be exploited to break into an IT system,\nthus compromising its security. The term was derived from the\ncorresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity.
\n
What is\n\"Standardization\"? Standardization is the process of implementing\nand developing technical standards based on the consensus of different\nparties that include firms, users, interest groups, standards\norganizations and governments. Standardization can help maximize\ncompatibility, interoperability, safety, repeatability, or quality. It\ncan also facilitate a normalization of formerly custom processes.\n
What is a \"Replay\nattack\"? A replay attack is a form of network attack in which valid\ndata transmission is maliciously or fraudulently repeated or delayed.\nAnother way of describing such an attack is: \"an attack on a security\nprotocol using a replay of messages from a different context into the\nintended (or original and expected) context, thereby fooling the honest\nparticipant(s) into thinking they have successfully completed the\nprotocol run.\"
\n
What is a\n\"Man-in-the-middle attack\"? In cryptography and computer security, a\nman-in-the-middle, ..., attack is a cyberattack where the attacker\nsecretly relays and possibly alters the communications between two\nparties who believe that they are directly communicating with each\nother, as the attacker has inserted themselves between the two\nparties.
\n
What is \"Transport Layer\nSecurity\" (TLS)? Transport Layer Security (TLS) is a cryptographic\nprotocol designed to provide communications security over a computer\nnetwork. The protocol is widely used in applications such as email,\ninstant messaging, and voice over IP, but its use in securing HTTPS\nremains the most publicly visible.
\n
What is a \"Handshake\"\n(computing)?. In computing, a handshake is a signal between two\ndevices or programs, used to, e.g., authenticate, coordinate. An example\nis the handshaking between a hypervisor and an application in a guest\nvirtual machine.
\n
What is Security\ntheater? The practice of taking security measures that are\nconsidered to provide the feeling of improved security while doing\nlittle or nothing to achieve it. \n
\n',391,74,0,'CC-BY-SA','User space, Cybercrime, fraud, scams',0,0,1),
(3892,'2023-07-04','Emacs package curation, part 1',2132,'Let\'s go through every single package installed in my Emacs configuration.','
Not really every single one, because straight.el installs\ndependencies automatically.
\n
Here\'s the file I went through during this recording. Some things may\nhave changed slightly since the time of recording. Save this file in\n~/.emacs.d/init.el to reproduce my exact Emacs\nconfiguration that I use at home and at work.
\n
;;; init.el --- This is Tiago's init.el file\n;;; Commentary:\n;;; Thanks to everyone that curates Emacs packages.\n\n;;; Code:\n;; BEGIN Straight.el bootstrap\n(defvar bootstrap-version)\n(let ((bootstrap-file\n (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))\n (bootstrap-version 6))\n (unless (file-exists-p bootstrap-file)\n (with-current-buffer\n (url-retrieve-synchronously\n "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"\n 'silent 'inhibit-cookies)\n (goto-char (point-max))\n (eval-print-last-sexp)))\n (load bootstrap-file nil 'nomessage))\n;; END Straight.el bootstrap\n\n(straight-use-package 'use-package)\n(setq straight-use-package-by-default t)\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;; <<< THE ESSENTIALS >>> ;;;\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\n;; Get minor modes off the modeline\n(use-package diminish)\n\n(use-package evil\n :init (setq evil-want-keybinding nil)\n :config (evil-mode)\n :custom (evil-undo-system 'undo-redo)\n :bind ("C-u" . evil-scroll-up))\n\n(use-package evil-collection\n :diminish evil-collection-unimpaired-mode\n :after evil\n :config (evil-collection-init))\n\n(use-package evil-surround\n :after evil\n :config\n (global-evil-surround-mode 1))\n\n;; In-Buffer Completion\n(use-package company\n :diminish\n :config (global-company-mode))\n\n;; completion with extra info box\n(use-package company-box\n :diminish\n :hook (company-mode . company-box-mode))\n\n;; Show key bindings as you go\n(use-package which-key\n :diminish\n :config (which-key-mode))\n\n;; search query feedback in the buffer\n(use-package anzu\n :diminish\n :config (global-anzu-mode +1))\n\n(use-package evil-anzu)\n\n;; Completion in the minibuffer (snippet from vertico)\n(use-package vertico\n :init\n (vertico-mode)\n\n ;; Different scroll margin\n ;; (setq vertico-scroll-margin 0)\n\n ;; Show more candidates\n ;; (setq vertico-count 20)\n\n ;; Grow and shrink the Vertico minibuffer\n ;; (setq vertico-resize t)\n\n ;; Optionally enable cycling for `vertico-next' and `vertico-previous'.\n ;; (setq vertico-cycle t)\n )\n\n;; Persist history over Emacs restarts. Vertico sorts by history position.\n;; (use-package savehist\n;; :init\n;; (savehist-mode))\n\n;; A few more useful configurations...\n(use-package emacs\n :init\n ;; Add prompt indicator to `completing-read-multiple'.\n ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma.\n (defun crm-indicator (args)\n (cons (format "[CRM%s] %s"\n (replace-regexp-in-string\n "\\\\`\\\\[.*?]\\\\*\\\\|\\\\[.*?]\\\\*\\\\'" ""\n crm-separator)\n (car args))\n (cdr args)))\n (advice-add #'completing-read-multiple :filter-args #'crm-indicator)\n\n ;; Do not allow the cursor in the minibuffer prompt\n (setq minibuffer-prompt-properties\n '(read-only t cursor-intangible t face minibuffer-prompt))\n (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)\n\n ;; Emacs 28: Hide commands in M-x which do not work in the current mode.\n ;; Vertico commands are hidden in normal buffers.\n ;; (setq read-extended-command-predicate\n ;; #'command-completion-default-include-p)\n\n ;; Enable recursive minibuffers\n (setq enable-recursive-minibuffers t))\n\n;; Optionally use the `orderless' completion style.\n;; Get completion even if you type substrings that don't match in the\n;; same order you typed them in.\n(use-package orderless\n :init\n ;; Configure a custom style dispatcher (see the Consult wiki)\n ;; (setq orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch)\n ;; orderless-component-separator #'orderless-escapable-split-on-space)\n (setq completion-styles '(orderless basic)\n completion-category-defaults nil\n completion-category-overrides '((file (styles partial-completion)))))\n\n;; Enable rich annotations in the completion\n(use-package marginalia\n ;; Either bind `marginalia-cycle' globally or only in the minibuffer\n :bind (("M-A" . marginalia-cycle)\n :map minibuffer-local-map\n ("M-A" . marginalia-cycle))\n\n ;; The :init configuration is always executed (Not lazy!)\n :init\n\n ;; Must be in the :init section of use-package such that the mode gets\n ;; enabled right away. Note that this forces loading the package.\n (marginalia-mode))\n\n;; Searching commands and lots of other stuff\n;; This is a snippet taken from consult\n(use-package consult\n ;; Replace bindings. Lazily loaded due by `use-package'.\n :bind (;; C-c bindings in `mode-specific-map'\n ("C-c M-x" . consult-mode-command)\n ("C-c h" . consult-history)\n ("C-c k" . consult-kmacro)\n ("C-c m" . consult-man)\n ("C-c i" . consult-info)\n ([remap Info-search] . consult-info)\n ;; C-x bindings in `ctl-x-map'\n ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command\n ("C-x b" . consult-buffer) ;; orig. switch-to-buffer\n ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window\n ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame\n ("C-x r b" . consult-bookmark) ;; orig. bookmark-jump\n ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer\n ;; Custom M-# bindings for fast register access\n ("M-#" . consult-register-load)\n ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)\n ("C-M-#" . consult-register)\n ;; Other custom bindings\n ("M-y" . consult-yank-pop) ;; orig. yank-pop\n ;; M-g bindings in `goto-map'\n ("M-g e" . consult-compile-error)\n ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck\n ("M-g g" . consult-goto-line) ;; orig. goto-line\n ("M-g M-g" . consult-goto-line) ;; orig. goto-line\n ("M-g o" . consult-outline) ;; Alternative: consult-org-heading\n ("M-g m" . consult-mark)\n ("M-g k" . consult-global-mark)\n ("M-g i" . consult-imenu)\n ("M-g I" . consult-imenu-multi)\n ;; M-s bindings in `search-map'\n ("M-s d" . consult-find)\n ("M-s D" . consult-locate)\n ("M-s g" . consult-grep)\n ("M-s G" . consult-git-grep)\n ("M-s r" . consult-ripgrep)\n ("M-s l" . consult-line)\n ("M-s L" . consult-line-multi)\n ("M-s k" . consult-keep-lines)\n ("M-s u" . consult-focus-lines)\n ;; Isearch integration\n ("M-s e" . consult-isearch-history)\n :map isearch-mode-map\n ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string\n ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string\n ("M-s l" . consult-line) ;; needed by consult-line to detect isearch\n ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch\n ;; Minibuffer history\n :map minibuffer-local-map\n ("M-s" . consult-history) ;; orig. next-matching-history-element\n ("M-r" . consult-history)) ;; orig. previous-matching-history-element\n\n ;; Enable automatic preview at point in the *Completions* buffer. This is\n ;; relevant when you use the default completion UI.\n :hook (completion-list-mode . consult-preview-at-point-mode)\n\n ;; The :init configuration is always executed (Not lazy)\n :init\n\n ;; Optionally configure the register formatting. This improves the register\n ;; preview for `consult-register', `consult-register-load',\n ;; `consult-register-store' and the Emacs built-ins.\n (setq register-preview-delay 0.5\n register-preview-function #'consult-register-format)\n\n ;; Optionally tweak the register preview window.\n ;; This adds thin lines, sorting and hides the mode line of the window.\n (advice-add #'register-preview :override #'consult-register-window)\n\n ;; Use Consult to select xref locations with preview\n (setq xref-show-xrefs-function #'consult-xref\n xref-show-definitions-function #'consult-xref)\n\n ;; Configure other variables and modes in the :config section,\n ;; after lazily loading the package.\n :config\n\n ;; Optionally configure preview. The default value\n ;; is 'any, such that any key triggers the preview.\n ;; (setq consult-preview-key 'any)\n ;; (setq consult-preview-key "M-.")\n ;; (setq consult-preview-key '("S-<down>" "S-<up>"))\n ;; For some commands and buffer sources it is useful to configure the\n ;; :preview-key on a per-command basis using the `consult-customize' macro.\n (consult-customize\n consult-theme :preview-key '(:debounce 0.2 any)\n consult-ripgrep consult-git-grep consult-grep\n consult-bookmark consult-recent-file consult-xref\n consult--source-bookmark consult--source-file-register\n consult--source-recent-file consult--source-project-recent-file\n ;; :preview-key "M-."\n :preview-key '(:debounce 0.4 any))\n\n ;; Optionally configure the narrowing key.\n ;; Both < and C-+ work reasonably well.\n (setq consult-narrow-key "<") ;; "C-+"\n\n ;; Optionally make narrowing help available in the minibuffer.\n ;; You may want to use `embark-prefix-help-command' or which-key instead.\n ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help)\n\n ;; By default `consult-project-function' uses `project-root' from project.el.\n ;; Optionally configure a different project root function.\n ;;;; 1. project.el (the default)\n ;; (setq consult-project-function #'consult--default-project--function)\n ;;;; 2. vc.el (vc-root-dir)\n ;; (setq consult-project-function (lambda (_) (vc-root-dir)))\n ;;;; 3. locate-dominating-file\n ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git")))\n ;;;; 4. projectile.el (projectile-project-root)\n ;; (autoload 'projectile-project-root "projectile")\n ;; (setq consult-project-function (lambda (_) (projectile-project-root)))\n ;;;; 5. No project support\n ;; (setq consult-project-function nil)\n)\n\n;; workspaces\n(use-package perspective\n :bind ("C-x C-b" . persp-list-buffers) ; or use a nicer switcher, see below\n :custom (persp-mode-prefix-key (kbd "C-c M-p")) ; pick your own prefix key here\n :init (persp-mode))\n\n;; theme\n(use-package doom-themes\n :config\n ;; Global settings (defaults)\n (setq doom-themes-enable-bold t ; if nil, bold is universally disabled\n doom-themes-enable-italic t) ; if nil, italics is universally disabled\n (load-theme 'doom-one t)\n\n ;; Corrects (and improves) org-mode's native fontification.\n (doom-themes-org-config))\n\n;; modeline\n(use-package powerline\n :straight (:host github :repo "milkypostman/powerline")\n :config (powerline-default-theme))\n\n;; modeline theme\n(use-package airline-themes\n :config (load-theme 'airline-onedark t))\n\n;; makes temporary or non-editing buffers darker\n(use-package solaire-mode\n :config (solaire-global-mode +1))\n\n;; snippets\n(use-package yasnippet\n :diminish yas-minor-mode\n :straight (:host github :repo "joaotavora/yasnippet")\n :config (yas-global-mode 1))\n\n;; projects\n(use-package projectile\n :bind-keymap\n ("C-c p" . projectile-command-map))\n\n(use-package rg)\n\n;;;;;;;;;;;\n;;; Org ;;;\n;;;;;;;;;;;\n\n(use-package org\n :commands (org-mode)\n :init (setq org-directory "~/org/"\n org-noter-notes-search-path '("~/org/roam/")\n org-cite-global-bibliography '("~/org/biblio.bib")\n org-capture-templates\n '(("n" "Note" entry\n (file "~/org/todo.org")\n "* %^{prompt}\\n%U\\n\\n%?")\n ("r" "Reading list note" entry\n (file "~/org/reading.org")\n "* %^{prompt}\\n%U\\n\\n%x"\n :immediate-finish :jump-to-captured)))\n :config (require 'org-crypt)\n (org-crypt-use-before-save-magic)\n (require 'org-id)\n (defun tgdnt/advice-org-ctrl-c-ctrl-c (&rest args)\n "Run `org-todo' if point is on a visible heading."\n (let ((do-not-run-orig-fn (org-at-heading-p t)))\n (when do-not-run-orig-fn\n (call-interactively #'org-todo))\n do-not-run-orig-fn))\n (advice-add 'org-ctrl-c-ctrl-c :before-until #'tgdnt/advice-org-ctrl-c-ctrl-c)\n :hook (org-mode . auto-fill-mode)\n :bind ("C-x h" . visible-mode)\n ("C-c n a" . org-agenda)\n :custom (org-tags-column 2)\n (org-tags-exclude-from-inheritance '("crypt"))\n (org-crypt-key "90A77BEA68A05915")\n (org-crypt-disable-auto-save t)\n (org-adapt-indentation nil)\n (org-clock-ask-before-exiting nil)\n (org-startup-folded t)\n (org-startup-indented t)\n (org-priority-start-cycle-with-default nil)\n (org-id-link-to-org-use-id 'use-existing)\n (org-agenda-files (append (directory-files "~/org/" t ".+\\.org$")))\n (org-agenda-custom-commands\n '(("A" "Agenda and Unscheduled TODOs"\n ((agenda "")\n (todo "TODO" ((org-agenda-overriding-header "Unscheduled actions:")))\n (todo "PROJ" ((org-agenda-overriding-header "Projects:")))\n (todo "OPEN" ((org-agenda-overriding-header "Open items:")))\n (todo "HOLD" ((org-agenda-overriding-header "On Hold:"))))\n ((org-agenda-dim-blocked-tasks 'invisible))\n nil)))\n (org-agenda-todo-ignore-with-date t)\n (org-agenda-start-day nil)\n (org-agenda-start-on-weekday nil)\n (org-agenda-span 1)\n (org-agenda-skip-deadline-prewarning-if-scheduled t)\n (org-agenda-prefix-format '((agenda . "%?-12t% s")\n (todo . " ")\n (tags . " ")\n (search . " ")))\n (org-agenda-deadline-leaders '("!" "%1d" "‼"))\n (org-agenda-scheduled-leaders '("#" "%1d"))\n (org-enforce-todo-dependencies t)\n (org-refile-targets '((nil :maxlevel . 2)\n (org-agenda-files :maxlevel . 2)))\n (org-attach-id-dir "~/org/attachments")\n (org-crypt-disable-auto-save t)\n (org-crypt-tag-matcher "crypt")\n (org-archive-location "~/org/archive/archive.org::")\n (org-deadline-warning-days 5)\n (org-archive-save-context-info '(time file olpath ltags itags category))\n (org-id-link-to-org-use-id 'use-existing)\n (org-todo-keywords '((type "TODO(t)" ;; A clearly defined action\n "OPEN(o)" ;; An open item, must be clarified\n "HOLD(h)" ;; An open item, must be clarified\n "PROJ(p)" ;; A project, with actions within it\n "|" "DONE(d)" "QUIT(q)"))))\n\n;; make visible-mode automatic when entering insert mode\n(use-package org-appear\n :init (setq org-hide-emphasis-markers t)\n :hook (org-mode . org-appear-mode)\n :custom (org-appear-autolinks t))\n\n(use-package evil-org\n :after org\n :hook (org-mode . (lambda () evil-org-mode))\n :config\n (require 'evil-org-agenda)\n (evil-org-agenda-set-keys))\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;;; more basic settings ;;;\n;;;;;;;;;;;;;;;;;;;;;;;;;;;\n(setq backup-directory-alist\n `(("." . ,(concat user-emacs-directory "backups")))\n backup-by-copying t\n delete-old-versions t\n kept-new-versions 6\n kept-old-versions 2\n version-control t)\n\n(setq-default fill-column 64\n indent-tabs-mode nil\n display-time-day-and-date t\n display-time-24hr-format t)\n\n(setq custom-file (expand-file-name "custom.el" user-emacs-directory))\n(load custom-file t)\n\n(when window-system\n (scroll-bar-mode -1)\n (menu-bar-mode -1)\n (tool-bar-mode -1))\n\n;; (toggle-frame-fullscreen)\n(display-time)\n(display-battery-mode)\n(server-start)\n(setq inhibit-startup-screen t)\n\n;; If on a graphical env, load init-base, if not on windows, load init-extra\n(when window-system\n (load-file (expand-file-name "init-base.el" user-emacs-directory))\n (require 'init-base)\n (unless (string= (x-server-vendor) "Microsoft Corp.")\n (load-file (expand-file-name "init-extra.el" user-emacs-directory))\n (require 'init-extra)))\n\n(provide 'init)\n;;; init.el ends here
\n
In part 2, coming soon, we\'ll go through init-base.el and\ninit-extra.el.
\n',399,0,0,'CC-BY-SA','emacs,elisp',0,0,1),
(3896,'2023-07-10','The Brochs of Glenelg',782,'A verbal tour in situ of one of the two brochs of Glenelg','In this episode I visit one of the best preserved brochs on the Scottish mainland called Dun Telve. It is one of two that are a few miles outside the village of Glenelg which is rare itself in that its name is a palindrome.\n\n
\n\n
\n',268,101,0,'CC-BY-SA','history,scotland,prehistoric',0,0,1),
(3895,'2023-07-07','What\'s in my backpack',514,'Stache walks through the contents of his work backpack','
I have many things in my work backpack, to include a Raspberry Pico,\nmultiple USB drives, USB cables, two laptops, my glasses and a\nsunglasses case attached to the outside.
\n
It is a 5.11 RUSH MOAB 10 Sling Pack 18L, not because I want to be\n\"tacticool\" but because I like their products, and that they support\nveterans like myself.
\n',408,23,0,'CC-BY-SA','backpack contents, toolkit',0,0,1),
(3897,'2023-07-11','HPR AudioBook Club 22 - Murder at Avedon Hill',6119,'In this episode the HPR Audiobook Club discusses \"Murder at Avedon Hill\" by P.G. Holyfield','
In\nthis episode the HPR Audiobook Club discusses the audiobook Murder\nat Avedon Hill by P.G. Holyfield
\n\n
Non-Spoiler Thoughts
\n\n
\n
Great reading, great audio quality, fun setting and setup. It had\nthe feel of a role playing adventure at the beginning, but was well\nfleshed out by the middle. It would have been slightly better if all of\nthe guest voices had had a pronunciation guide for the names.
\n
\n
Beverage Reviews
\n\n
\n
Thaj: A delicious regular chocolate malt from the\nlocal ice cream shop \"The Comfy Cow\"
\n
x1101: Barton\'s 1795
\n
Pokey Leinenkugel\'s: I have a fall variety pack,\nbut this is not the fall. I\'m not enjoying this beer as much as I\nexpected. It\'s good, and I can taste the high quality of the\ningredients, but I think it\'s just the wrong season for this.
Right now we are working through a backlog of older episodes that\nhave already been recorded. Once that ends we fully anticipate recording\nnew episodes with listener participation.
\n
Feedback
\n\n
Thank you very much for listening to this episode of the HPR\nAudioBookClub. We had a great time recording this show, and we hope you\nenjoyed it as well. We also hope you\'ll consider joining us next time we\nrecord a new episode. Please leave a few words in the episode\'s comment\nsection.
\n
As always; remember to visit the HPR contribution page HPR could\nreally use your help right now.
\n
Sincerely, The HPR Audiobook Club
\n
P.S. Some people really like finding mistakes. For their enjoyment,\nwe always include a few.
\n
Our Audio
\n\n
This episode was processed using Audacity. We\'ve been making\nsmall adjustments to our audio mix each month in order to get the best\npossible sound. Its been especially challenging getting all of our\nvoices relatively level, because everyone has their own unique setup.\nMumble is great for bringing us all together, and for recording, but\nit\'s not good at making everyone\'s voice the same volume. We\'re pretty\nhappy with the way this month\'s show turned out, so we\'d like to share\nour editing process and settings with you and our future selves (who, of\ncourse, will have forgotten all this by then).
\n
We use the \"Truncate Silence\" effect with it\'s default settings to\nminimize the silence between people speaking. When used with it\'s\ndefault (or at least reasonable) settings, Truncate Silence is extremely\neffective and satisfying. It makes everyone sound smarter, it makes the\nfile shorter without destroying actual content, and it makes a\nconversations sound as easy and fluid during playback as it was while it\nwas recorded. It can be even more effective if you can train yourself to\nremain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass\nthe file through Truncate Silence ONCE. If you pass it through a second\ntime, or if you set it too aggressively your audio may sound sped up and\nchoppy.
\n
Next we use the \"Compressor\" effect with the following settings:
\"Make-up Gain for 0db after compressing\" and \"compress based on\npeaks\" were both left un-checked.
\n
After compressing the audio we cut any pre-show and post-show chatter\nfrom the file and save them in a separate file for possible use as\nouttakes after the closing music.
\n
We adjust the Gain so that the VU meter in Audacity hovers around\n-12db while people are speaking, and we try to keep the peaks under\n-6db, and we adjust the Gain on each of the new tracks so that all\nvolumes are similar, and more importantly comfortable. Once this is done\nwe can \"Mix and Render\" all of our tracks into a single track for export\nto the .FLAC file which is uploaded to the HPR server.
\n
At this point we listen back to the whole file and we work on the\nshownotes. This is when we can cut out anything that needs to be cut,\nand we can also make sure that we put any links in the shownotes that\nwere talked about during the recording of the show. We finish the\nshownotes before exporting the .aup file to .FLAC so that we can paste a\ncopy of the shownotes into the audio file\'s metadata.
\n
At this point we add new, empty audio tracks into which we paste the\nintro, outro and possibly outtakes, and we rename each track\naccordingly.
\n
Remember to save often when using Audacity. We like to save after\neach of these steps. Audacity has a reputation for being \"crashy\" but if\nyou remember save after every major transform, you will wonder how it\never got that reputation.
\n',157,53,1,'CC-BY-SA','Audiobook club, audiobook, fantasy, fiction',0,0,1),
(3907,'2023-07-25','My introduction show',1153,'About me and computers','
\n',421,0,0,'CC-BY-SA','introduction,solocast',0,0,1),
(3899,'2023-07-13','Repair corrupt video files for free with untruc',320,'This is how I fixed corrupt video files from my dash cam after an accident','
\n',383,0,0,'CC-BY-NC-SA','video,corrupt,fix,file,linux',0,0,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3921,'2023-08-14','HPR AudioBook Club 23 - John Carter of Mars (Books 1-3)',6516,'In this episode the HPR Audiobook Club discusses the first three books of John Carter of Mars','
Pokey:Yellow Tail\nChardonay Its definitely a chardonay in flavor. You can taste the\ncost effectiveness up front, but it mellows out on the finish, and is\npretty okay for the price on average.
Right now we are working through a backlog of older episode that have\nalready been recorded. Once that ends we fully anticipate recording new\nepisodes with listener participation.
\n
Feedback
\n\n
Thank you very much for listening to this episode of the HPR\nAudioBookClub. We had a great time recording this show, and we hope you\nenjoyed it as well. We also hope you\'ll consider joining us next time we\nrecord a new episode. Please leave a few words in the episode\'s comment\nsection.
\n
As always; remember to visit the HPR contribution page HPR could\nreally use your help right now.
\n
Sincerely, The HPR Audiobook Club
\n
P.S. Some people really like finding mistakes. For their enjoyment,\nwe always include a few.
\n
Our Audio
\n\n
This episode was processed using Audacity. We\'ve been making\nsmall adjustments to our audio mix each month in order to get the best\npossible sound. Its been especially challenging getting all of our\nvoices relatively level, because everyone has their own unique setup.\nMumble is great for bringing us all together, and for recording, but\nit\'s not good at making everyone\'s voice the same volume. We\'re pretty\nhappy with the way this month\'s show turned out, so we\'d like to share\nour editing process and settings with you and our future selves (who, of\ncourse, will have forgotten all this by then).
\n
We use the \"Truncate Silence\" effect with it\'s default settings to\nminimize the silence between people speaking. When used with it\'s\ndefault (or at least reasonable) settings, Truncate Silence is extremely\neffective and satisfying. It makes everyone sound smarter, it makes the\nfile shorter without destroying actual content, and it makes a\nconversations sound as easy and fluid during playback as it was while it\nwas recorded. It can be even more effective if you can train yourself to\nremain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass\nthe file through Truncate Silence ONCE. If you pass it through a second\ntime, or if you set it too aggressively your audio may sound sped up and\nchoppy.
\n
Next we use the \"Compressor\" effect with the following settings:
\"Make-up Gain for 0db after compressing\" and \"compress based on\npeaks\" were both left un-checked.
\n
After compressing the audio we cut any pre-show and post-show chatter\nfrom the file and save them in a separate file for possible use as\nouttakes after the closing music.
\n
We adjust the Gain so that the VU meter in Audacity hovers around\n-12db while people are speaking, and we try to keep the peaks under\n-6db, and we adjust the Gain on each of the new tracks so that all\nvolumes are similar, and more importantly comfortable. Once this is done\nwe can \"Mix and Render\" all of our tracks into a single track for export\nto the .FLAC file which is uploaded to the HPR server.
\n
At this point we listen back to the whole file and we work on the\nshownotes. This is when we can cut out anything that needs to be cut,\nand we can also make sure that we put any links in the shownotes that\nwere talked about during the recording of the show. We finish the\nshownotes before exporting the .aup file to .FLAC so that we can paste a\ncopy of the shownotes into the audio file\'s metadata.
\n
At this point we add new, empty audio tracks into which we paste the\nintro, outro and possibly outtakes, and we rename each track\naccordingly.
\n
Remember to save often when using Audacity. We like to save after\neach of these steps. Audacity has a reputation for being \"crashy\" but if\nyou remember save after every major transform, you will wonder how it\never got that reputation.
\n',157,0,1,'CC-BY-SA','mars, audiobook club, fiction, scifi, audiobook',0,0,1),
(4151,'2024-07-01','HPR Community News for June 2024',0,'HPR Volunteers talk about shows released and comments posted in June 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4176,'2024-08-05','HPR Community News for July 2024',0,'HPR Volunteers talk about shows released and comments posted in July 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3902,'2023-07-18','Introduction to a new series on FFMPEG',474,'In this episode, I introduce FFMPEG, media containers, and codecs','
\n',300,0,0,'CC-BY-SA','ffmpeg,video streaming,audio streaming',0,0,1),
(3903,'2023-07-19','Why I don\'t love systemd (yet)',396,'Klaatu reads a script by Deepgeek about systemd','
I\'ve been meaning to put down my thoughts about SystemD for the HPR\ncommunity for some while, so here goes.
\n
I want to say that I am not a SystemD hater. When SystemD was a hot\ntopic of debate, many became irrational over it, but I want to start by\nsaying that I don\'t think it\'s a bad technology. I think it is a rather\ngood technology. I just don\'t want it on my personal computer. So I\nwould like to run things down in this order: what is it (as in, what is\nit really,) what makes it a good technology, why I don\'t want it now\n(but might later,) and a few tips for you if you decide that you don\'t\nwant it currently.
\n
SystemD Is not an init system. SystemD includes an init system.\nSystemD Init was faster than SysVInit, but SystemD Init isn\'t the\nfastest init system, and SysVInit now has a parallelization helper, at\nleast on Debian.
\n
So, if SystemD Init is not SystemD, than what is SystemD? To\nunderstand this we must first understand something about Linux. Linux\noperates under a model where there are root processes, and there are\nuser processes. These two kinds of processes are usually called\n\"layers.\" SystemD is actually a third layer, that can be called a system\nlayer. So when SystemD is added to a Linux system, that changes the\nsystem so that there are three layers, a root layer, a user layer, and a\nsystem layer. As such, you now ask SystemD to set how the system runs.\nThis is why SystemD includes things like an init system, because if you\nwant to change what the system is running, you ask SystemD to change it.\nSystemD then messages an appropriate system to implement the change,\nlike messaging its init system to bring up or bring down a system\ndaemon. Once you play out this in your head a bit, you really realize\nthat SystemD acts more like a message passing system in this regard.
\n
So why do I say SystemD is a good technology? Because this can\nstandardize system control. Without SystemD a fleet of computers becomes\nlike individual fingerprints or unique snowflakes. If you manage many\ncomputers, as many professional IT people do, you want them to all run\nthe same, all have the same profiles and general configurations. So if\nyou have a bunch of computers you are running, you can run a lot more if\nthey are all run the same way. If your job requires you to run 10,000\nwebservers, you want them to run identically because it is impossible to\nkeep an understanding of 10,000 unique configurations in a human\nhead.
\n
SystemD really shines in its support of virtualization as well. So\nto speak of servers, I used to run an email server for a few friends.\nEach of us had a userid and number as unix users. The mapping of unix\nuserids and postfix userids can get confusing when it gets big. Thanks\nto SystemD\'s virtualization work, you can actually put a service like\nemail into a namespace situation so that it has only the users root and\nthe daemon user id (like \"postfix\"), so SystemD greatly enhances\nsecurity for server installations. This might help explain its\ndominance in linux distributions that have been traditionally\nserver-centric, such as debian and redhat.
\n
So why don\'t I don\'t want it? Well, I\'ve been doing a lot of talking\nabout professional computer work and corporate work environments, but I\nuse a \"Personal Computer\" as a hobby. I\'ve been out-of-industry for\ndecades now. And when I say \"Personal Computer\" I\'m not talking a\nhardware specification, rather I\'m talking about \"This is my personal\ncomputer where I do things my way, as opposed to my work computer where\nI do things my companies way\". Dear listener, please remember that I did\nthe first community show contribution to HPR, and my topic was about\npersonalization. For me, a hobbyist interested in operating system\nexperimentation, I don\'t want a system layer, I want a traditional\nunix-like system that operates on a two-layer model and does things my\nway, nobody else\'s way.
\n
So, what advice can I give to those who don\'t want SystemD now? Well,\nrecently I\'ve left Debian. Debian, you see, supports init system\ndiversity, but as you now know dear listener, that is different than\nbeing without SystemD. You may have heard that SystemD is\nlinux-specific, that is to say that it runs only on linux, not anything\nlike a BSD system or a Windows system. But you may be curious to know\nthat it is also Gnu-libC specific. Which means that the C compiler must\nuse GNU\'s libC standard library. Thus, if you have a system built around\nthe Musl C standard library like Alpine or Void, or a system like\nAndroid that runs on the Bionic C Standard library, you wont have a\nSystemD system. I\'m personally learning Void as its package manager\nsupports both binary and a ports collection much like the BSD\'s. But\nthat is what I\'m doing on my personal computer, I leave you in the\nfreedom to do things your way on your personal computer!
\n\n',73,99,0,'CC-BY-SA','systemd,linux',0,0,1),
(3904,'2023-07-20','How to make friends',2861,'This topic is being actively researched. Not for production use.','
Show notes
\n
\n
\n
No clear mark of when friendship starts
\n
\n
\n
often feels \"right\" when mutual
\n
\n
\n
to some people friendship is a persistent state. once you have it, it's forever unless explicitly dissolved.
\n
\n
\n
for other people, it's something requiring maintenance. arguable this suggests that there are degrees of friendship, based on when you last spoke to one another.
\n
\n
\n
degrees of friendship also suggests progression. friend → close friend → best friend.
\n
\n
\n
how to make a friend
\n
friendship requires communication.
\n
\n
\n
start by communicating in some way that makes the other person feel not unpleasant
\n
\n
\n
you're not supposed to target a friend. this can be a frustrating rule, because if you're trying to make a friend, you have to target somebody, but the general consensus is that you're not supposed to \"try too hard\". target lots of people in the hopes of stumbling across somebody to befriend.
\n
\n
\n
complimenting something they have done, even if it's something simple like wearing a cool shirt, is a very easy start
\n
\n
\n
finding ground common allows for repeated communication
\n
\n
\n
repetition of this is what builds friendship. this is why friendships often develop at work, but can dissolve quickly after a job change.
\n
\n
\n
the situation matters. chatting with someone who's being paid to interact with you, like somebody working at a store, doesn't count because in context they more or less cannot choose to stop communicating with you until you leave the store. chatting with someone who has anything to gain by chatting with you doesn't count (like an intern at work).
\n
\n
\n
to speed up a developing friendship, you can invite the person to interact with you on something with a clearly defined goal. You like coding? I like coding! Would you care to collaborate for 4 hours on a script that would help me find my Raspberry Pi on my network?
\n
\n
\n
during the activity, continue to communicate. this can be difficult because you're doing an activity that you both claim to enjoy, so in theory the activity should be sufficient to further the friendship. However, the activity doesn't build the friendship, it only builds a partnership. It's the communication that builds friendship.
\n
\n
\n
unfortunately, there's no clear point during this process at which you know you have made a friend. so you have to define what a friend is, to you, and then work toward that goal.
\n
Here are some examples of definitions for friendship. There is no right or wrong here, it's really just setting your own expectations and requirements:
\n
\n
\n
A friend is someone to hang out with on sundays.
\n
\n
\n
A friend is someone I can call when I've got some free time to kill.
\n
\n
\n
A friend is someone I can play video games with online.
\n
\n
\n
A friend is someone I can call, day or night, when I need help.
\n
\n
\n
A friend is someone who has come over for dinner, and has met my family, and who I see at least once a month.
\n
\n
\n
There's no official definition, so you must define it yourself.\nYour definition may differ from the other person's definition.\nYou might say \"we are best friends\" but they might say \"no, I already have a best friend, but you're a good friend\" and THAT'S OK.
\n
If it helps, classify what kinds of friends you have so you understand what kinds of relationships you are maintaining.\nCommunicate with your friends, even if it's only to let them know that you're bad at communicating on a regular basis, or ask them how frequently they need to communicate to maintain a healthy friendship.
\n',78,108,0,'CC-BY-SA','autism,friendship,relationship,social engineering',0,0,1),
(3905,'2023-07-21','Presenting Fred Black',1105,'I have a short talk to present Fred Black.','
\n',309,0,0,'CC-BY-SA','school,podcasts,instrument,quiz',0,0,1),
(3906,'2023-07-24','The Oh No! News.',1741,'Sgoti discusses the threat of convenience.','
The Oh No! news.
\n
Oh No! News is Good\nNews.
\n
\n
TAGS: Oh No News, InfoSec, browser security,\nsession tokens, session id
Source:Steal Application\nAccess Token. Adversaries can steal application access tokens as a\nmeans of acquiring credentials to access remote systems and resources.\nApplication access tokens are used to make authorized API requests on\nbehalf of a user or service and are commonly used as a way to access\nresources in cloud and container-based applications and\nsoftware-as-a-service (SaaS). \n\n
What is a \"Data\nBreach\"? A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so.
\n
What is \"Malware\"?\nMalware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.
\n
What is a \"Payload\"?\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection.
\n
What is \"Phishing\"?\nPhishing is a form of social engineering\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.
\n
Social\nengineering (security) In the context of information security,\nsocial engineering is the psychological\nmanipulation of people into performing actions or divulging\nconfidential information. A type of confidence trick for the purpose of\ninformation gathering, fraud, or system access, it differs from a\ntraditional \"con\" in that it is often one of many steps in a more\ncomplex fraud scheme. \n
Information Security Attributes:Confidentiality, Integrity and Availability (C.I.A.).\nInformation Systems are composed in three main portions, hardware,\nsoftware and communications with the purpose to help identify and apply\ninformation security industry standards, as mechanisms of protection and\nprevention, at three levels or layers: physical, personal and\norganizational. Essentially, procedures or policies are implemented to\ntell administrators, users and operators how to use products to ensure\ninformation security within the organizations.
\n
\n
What is \"Risk\nmanagement\"? Risk management is the identification, evaluation, and\nprioritization of risks followed by coordinated and economical\napplication of resources to minimize, monitor, and control the\nprobability or impact of unfortunate events or to maximize the\nrealization of opportunities.
\n
What is a \"Vulnerability\"\n(computing)? Vulnerabilities are flaws in a computer system that\nweaken the overall security of the device/system. Vulnerabilities can be\nweaknesses in either the hardware itself, or the software that runs on\nthe hardware.
\n
What is an \"Attack\nSurface\"? The attack surface of a software environment is the sum of\nthe different points (for \"attack vectors\") where an unauthorized user\n(the \"attacker\") can try to enter data to or extract data from an\nenvironment. Keeping the attack surface as small as possible is a basic\nsecurity measure.
\n
What is an \"Attack\nVector\"? In computer security, an attack vector is a specific path,\nmethod, or scenario that can be exploited to break into an IT system,\nthus compromising its security. The term was derived from the\ncorresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity.
\n
What is\n\"Standardization\"? Standardization is the process of implementing\nand developing technical standards based on the consensus of different\nparties that include firms, users, interest groups, standards\norganizations and governments. Standardization can help maximize\ncompatibility, interoperability, safety, repeatability, or quality. It\ncan also facilitate a normalization of formerly custom processes.\n
What is a \"Replay\nattack\"? A replay attack is a form of network attack in which valid\ndata transmission is maliciously or fraudulently repeated or delayed.\nAnother way of describing such an attack is: \"an attack on a security\nprotocol using a replay of messages from a different context into the\nintended (or original and expected) context, thereby fooling the honest\nparticipant(s) into thinking they have successfully completed the\nprotocol run.\"
\n
What is a\n\"Man-in-the-middle attack\"? In cryptography and computer security, a\nman-in-the-middle, ..., attack is a cyberattack where the attacker\nsecretly relays and possibly alters the communications between two\nparties who believe that they are directly communicating with each\nother, as the attacker has inserted themselves between the two\nparties.
\n
What is \"Transport Layer\nSecurity\" (TLS)? Transport Layer Security (TLS) is a cryptographic\nprotocol designed to provide communications security over a computer\nnetwork. The protocol is widely used in applications such as email,\ninstant messaging, and voice over IP, but its use in securing HTTPS\nremains the most publicly visible.
\n
What is a \"Handshake\"\n(computing)?. In computing, a handshake is a signal between two\ndevices or programs, used to, e.g., authenticate, coordinate. An example\nis the handshaking between a hypervisor and an application in a guest\nvirtual machine.
\n
What is Security\ntheater? The practice of taking security measures that are\nconsidered to provide the feeling of improved security while doing\nlittle or nothing to achieve it. \n
\n',391,74,0,'CC-BY-SA','Oh No News, InfoSec, browser security, session tokens, session id',0,0,1),
(3908,'2023-07-26','Emacs package curation, part 2',667,'Let\'s go through every single package installed in my Emacs configuration. File 2 of 3.','
We discuss the packages installed in the second of three files that\nmake up my emacs config.
\n
;;; init-base.el --- The basics\n;;; Commentary:\n;;; Packages for my personal and work laptop, but not termux.\n\n;;; Code:\n\n;;;;;;;;;;;;;;;\n;;; Writing ;;;\n;;;;;;;;;;;;;;;\n\n;; Focused writing mode\n(use-package olivetti\n :hook (olivetti-mode . typewriter-mode-toggle)\n :bind ("C-x C-w" . olivetti-mode)\n :custom (olivetti-body-width 64)\n :config\n (defvar-local typewriter-mode nil\n "Typewriter mode, automatically scroll down to keep cursor in\n the middle of the screen. Setting this variable explicitly will\n not do anything, use typewriter-mode-on, typewriter-mode-off\n and typewriter-mode-toggle instead.")\n (defun typewriter-mode-on()\n "Automatically scroll down to keep cursor in the middle of screen."\n (interactive)\n (setq-local typewriter-mode t)\n (centered-cursor-mode +1))\n (defun typewriter-mode-off()\n "Automatically scroll down to keep cursor in the middle of screen."\n (interactive)\n (kill-local-variable 'typewriter-mode)\n (centered-cursor-mode -1))\n (defun typewriter-mode-toggle()\n "Toggle typewriter scrolling mode on and off."\n (interactive)\n (if typewriter-mode (typewriter-mode-off) (typewriter-mode-on))))\n\n(use-package centered-cursor-mode)\n\n;; Check for weasel words and some other simple rules\n(use-package writegood-mode\n :bind ("C-c g" . writegood-mode))\n\n;; spellchecking\n(use-package flyspell-correct\n :after flyspell\n :bind (:map flyspell-mode-map\n ("C-;" . flyspell-correct-wrapper)))\n\n;; show correction options in a popup instead of the minibuffer\n(use-package flyspell-correct-popup\n :after (flyspell-correct))\n\n;online thesaurus service from powerthesaurus.org\n(use-package powerthesaurus)\n\n;; WordNet Thesaurus replacement\n(use-package synosaurus\n :custom (synosaurus-choose-method 'default)\n :config (when window-system\n (if (string= (x-server-vendor) "Microsoft Corp.")\n (setq synosaurus-wordnet--command "C:\\\\Program Files (x86)\\\\WordNet\\\\2.1\\\\bin\\\\wn.exe"))))\n\n;; WordNet search and view\n(use-package wordnut\n :bind ("C-c s" . wordnut-search)\n :config (when window-system\n (if (string= (x-server-vendor) "Microsoft Corp.")\n (setq wordnut-cmd "C:\\\\Program Files (x86)\\\\WordNet\\\\2.1\\\\bin\\\\wn.exe"))))\n\n;; fill and unfill with the same key\n(use-package unfill\n :bind ("M-q" . unfill-toggle))\n\n;; Markdown...\n(use-package markdown-mode)\n\n;;;;;;;;;;;;;;\n;;; Coding ;;;\n;;;;;;;;;;;;;;\n\n;; Syntax checking\n(use-package flycheck\n :diminish\n :init (global-flycheck-mode))\n\n(use-package flycheck-popup-tip\n :after (flycheck)\n :hook (flycheck-mode-hook . flycheck-popup-tip-mode))\n\n;; Web design\n(use-package emmet-mode\n :hook (sgml-mode . emmet-mode) ;; Auto-start on any markup modes\n (css-mode . emmet-mode)) ;; enable Emmet's css abbreviation.\n\n(use-package sass-mode)\n\n(use-package web-mode)\n\n;; Python\n(use-package python\n :mode ("\\\\.py\\\\'" . python-mode)\n :interpreter ("python" . python-mode))\n\n;; highlight todo items everywhere\n(use-package hl-todo\n :straight (:host github :repo "tarsius/hl-todo")\n :custom (hl-todo-keyword-faces\n `(("FIXME" error bold)\n ("STUB" error bold)\n ("REPLACETHIS" error bold)\n ("REVISIT" error bold)))\n (hl-todo-exclude-modes nil)\n :config (add-to-list 'hl-todo-include-modes 'org-mode)\n :init (global-hl-todo-mode))\n\n;; git\n(use-package magit)\n\n(use-package git-timemachine)\n\n;; rest APIs via org source block\n(use-package ob-restclient)\n\n;;; END ;;;\n\n(provide 'init-base)\n;;; init-base.el ends here
\n',399,0,0,'CC-BY-SA','emacs,elisp',0,0,1),
(3918,'2023-08-09','Emacs package curation, part 3',864,'Let\'s go through every single package installed in my Emacs configuration. The last one.','
We discuss the packages installed in the second of three files that\nmake up my emacs config.
\n
Since recording, I pulled in some EXWM (the Emacs X Window Manager,\nthat\'s right), even though I\'m not actually using it, I\'m still using\nstumpWM.
\n
I have also added pass, the password manager, khardel, an emacs\npackage for the khard CLI address book application.
\n
I also moved (server-start) to this file, so that it\'ll only happen\nwhen I\'m on linux.
\n
;;; init-extra.el --- Extra init stuff\n;;; Commentary:\n;;; Stuff just for my personal laptop, not for my work laptop or termux, for example.\n\n;;; Code:\n\n;;;;;;;;;;;;;;;;\n;;; org-roam ;;;\n;;;;;;;;;;;;;;;;\n\n(use-package org-roam\n :demand t\n :straight (:host github :repo "org-roam/org-roam"\n :files (:defaults "extensions/*"))\n :custom (org-roam-mode-sections (list #'org-roam-backlinks-section\n #'org-roam-reflinks-section\n #'org-roam-unlinked-references-section))\n :init (setq org-roam-directory "~/org/roam/"\n org-roam-capture-templates\n '(("o" "outline" plain\n "%?"\n :if-new\n (file+head "${slug}.org" "#+title: ${title}\\n#+filetags: :outline:\\n")\n :immediate-finish t\n :unnarrowed t)\n ("r" "reference" plain "%?"\n :if-new\n (file+head "${slug}.org" "#+title: ${title}\\n")\n :immediate-finish t\n :unnarrowed t)\n ("m" "memo" entry "* ${title}\\n%?"\n :if-new\n (file "memos.org")\n :immediate-finish t\n :unnarrowed t)))\n :bind (("C-c n l" . org-roam-buffer-toggle)\n ("C-c n f" . org-roam-node-find)\n ("C-c n g" . org-roam-graph)\n ("C-c n i" . org-roam-node-insert)\n ("C-c n c" . org-roam-capture)\n ;; Dailies\n ("C-c n j" . org-roam-dailies-capture-today))\n :config\n ;; If you're using a vertical completion framework, you might want a more informative completion interface\n (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag)))\n (org-roam-db-autosync-mode)\n ;; If using org-roam-protocol\n (require 'org-roam-protocol))\n\n;; citations\n(use-package citar\n :after org-roam\n :custom (org-cite-insert-processor 'citar)\n (org-cite-follow-processor 'citar)\n (org-cite-activate-processor 'citar)\n (citar-bibliography '("~/org/biblio.bib"))\n (citar-notes-paths '("~/org/roam"))\n (citar-file-note-extensions '("org"))\n :hook (LaTeX-mode . citar-capf-setup)\n (org-mode . citar-capf-setup)\n :bind (("C-c n b" . #'citar-open-notes)\n :map org-mode-map :package org\n ("C-c b" . #'org-cite-insert)))\n\n;; view your org-roam notes on a map\n(use-package org-roam-ui\n :after org-roam\n :custom (org-roam-ui-sync-theme t)\n (org-roam-ui-follow t)\n (org-roam-ui-update-on-save t)\n (org-roam-ui-open-on-start t))\n\n;; archive web pages in org attachments\n(use-package org-board\n :after org\n :custom (org-board-default-browser #'browse-url)\n (org-board-property "ROAM_REFS")\n :bind (:map org-mode-map\n ("C-c B a" . org-board-archive)\n ("C-c B o" . org-board-open)\n ("C-c B D" . org-board-delete-all)))\n\n;;;;;;;;;;;;;;;\n;;; Writing ;;;\n;;;;;;;;;;;;;;;\n\n; something like grammarly, but open source\n(use-package langtool)\n\n;; better than docview, for pdf\n(use-package pdf-tools)\n\n;; annotating docs in org files\n(use-package org-noter)\n\n;; epub\n(use-package nov\n :mode ("\\\\.epub$" . nov-mode))\n\n;;; Invoke quick emacs windows to edit anything anywhere.\n;;; bind a key in xorg to ~emacsclient -c (emacs-everywhere)~\n(use-package emacs-everywhere)\n\n;;;;;;;;;;;;;;\n;;; Auctex ;;;\n;;;;;;;;;;;;;;\n(straight-use-package '( auctex\n :host nil :repo "https://git.savannah.gnu.org/git/auctex.git"\n :pre-build (("./autogen.sh")\n ("./configure" "--without-texmf-dir" "--with-lispdir=.")\n ("make"))))\n\n (setq TeX-data-directory (expand-file-name "straight/repos/auctex" user-emacs-directory)\n TeX-lisp-directory TeX-data-directory)\n\n (eval-after-load 'info\n '(add-to-list 'Info-additional-directory-list\n (expand-file-name "straight/repos/auctex/doc" user-emacs-directory)))\n (load (expand-file-name "straight/repos/auctex/auctex.el" user-emacs-directory) nil t t)\n (load (expand-file-name "straight/repos/auctex/preview-latex.el" user-emacs-directory) nil t t)\n\n(use-package evil-tex)\n\n(use-package latex-preview-pane\n :custom (latex-preview-pane-use-frame t))\n\n(use-package adaptive-wrap)\n\n;;; END AUCTEX ;;;\n\n;;;;;;;;;;;;;;;;;;;\n;;; Programming ;;;\n;;;;;;;;;;;;;;;;;;;\n\n;; downloading and viewing Dash documentation files\n(use-package dash-docs\n :init (defun elisp-doc ()\n (setq-local consult-dash-docsets '("Emacs Lisp")))\n (add-hook 'emacs-lisp-mode-hook 'elisp-doc)\n :custom (dash-docs-docsets-path (expand-file-name "docsets" user-emacs-directory))\n (dash-docs-browse-func 'eww))\n\n(use-package consult-dash\n :straight (:host codeberg :repo "rahguzar/consult-dash")\n :bind (("M-s d" . consult-dash))\n :after consult\n :config\n ;; Use the symbol at point as initial search term\n (consult-customize consult-dash :initial (thing-at-point 'symbol)))\n\n;;;;;;;;;;;;;\n;;; Email ;;;\n;;;;;;;;;;;;;\n\n(use-package notmuch\n :commands notmuch\n :config (defun notmuch-show-view-html ()\n "Open the text/html part of the current message using\n `notmuch-show-view-part'. From https://emacs.stackexchange.com/a/63457"\n (interactive)\n (save-excursion\n (goto-char (prop-match-beginning\n (text-property-search-forward\n :notmuch-part "text/html"\n (lambda (value notmuch-part)\n (equal (plist-get notmuch-part :content-type)\n value)))))\n (notmuch-show-view-part)))\n ;; Enable link to message via org-store-link\n (load-file (expand-file-name "org-notmuch.el" user-emacs-directory))\n (require 'org-notmuch)\n :bind (:map notmuch-show-mode-map\n (". v" . notmuch-show-view-html))\n :custom (notmuch-draft-folder "local/drafts")\n (notmuch-search-oldest-first nil)\n (notmuch-fcc-dirs "fastmail/sent")\n (notmuch-tagging-keys '(("r" ("+receipt" "-inbox") "Receipt")))\n (sendmail-program (executable-find "msmtp"))\n (message-sendmail-f-is-evil t)\n (message-sendmail-extra-arguments '("--read-envelope-from")))\n\n(use-package khardel\n :after notmuch\n :bind (:map notmuch-message-mode-map\n ("C-c M-k" . khardel-insert-email)))\n\n;;;;;;;;;;;;\n;;; PASS ;;;\n;;;;;;;;;;;;\n\n(use-package pass)\n\n;;;;;;;;;;;;\n;;; EXWM ;;;\n;;;;;;;;;;;;\n\n(use-package xelb\n :disabled t\n :straight (:host github :repo "ch11ng/xelb"))\n\n(use-package exwm\n :disabled t\n :straight (:host github :repo "ch11ng/exwm")\n :defer t\n :config (require 'exwm-systemtray)\n (require 'exwm-randr)\n (setq xcb:connection-timeout 20)\n (exwm-systemtray-enable)\n (add-hook 'exwm-update-class-hook\n (lambda ()\n (exwm-workspace-rename-buffer exwm-class-name)))\n (add-hook 'exwm-randr-screen-change-hook\n (lambda ()\n (start-process-shell-command\n "autorandr" nil "autorandr -c")))\n (defun exwm-randr-mobile()\n "Load a xrandr profile to use only the laptop screen."\n (interactive)\n (start-process-shell-command "xrandr" nil "xrandr --output eDP-1 --auto --output DP-1 --off"))\n (defun exwm-randr-docked()\n "Load a xrandr profile to use only the connected external screen DP-1."\n (interactive)\n (start-process-shell-command "xrandr" nil "xrandr --output eDP-1 --off --output DP-1 --auto"))\n (defun exwm-randr-chair()\n "Load a xrandr profile to use both the laptop screen and the connected screen."\n (interactive)\n (start-process-shell-command "xrandr" nil "xrandr --output HDMI-1 --auto --scale 1.3 --output eDP-1 --off"))\n (defun exwm-randr-all()\n "Load a xrandr profile to use both the laptop screen and the connected screen."\n (interactive)\n (start-process-shell-command "xrandr" nil "xrandr --output eDP-1 --primary --output DP-1 --above eDP-1")\n (setq exwm-randr-workspace-output-plist '(0 "eDP-1" 1 "DP-1"))\n )\n (exwm-randr-enable)\n :custom (exwm-input-global-keys\n `((,(kbd "s-r") . exwm-reset)\n (,(kbd "s-w") . exwm-workspace-switch)\n (,(kbd "s-a") . exwm-randr-all)\n (,(kbd "s-c") . exwm-randr-chair)\n (,(kbd "s-d") . exwm-randr-docked)\n (,(kbd "s-m") . exwm-randr-mobile)\n (,(kbd "s-k") . exwm-input-release-keyboard)\n (,(kbd "s-f") . exwm-layout-toggle-fullscreen)\n (,(kbd "s-p") . pass)\n (,(kbd "s-t") . exwm-workspace-switch-to-buffer)\n (,(kbd "s-&") . (lambda (command)\n (interactive (list (read-shell-command "$ ")))\n (start-process-shell-command command nil command)))\n ,@(mapcar (lambda (i)\n `(,(kbd (format "s-%d" i)) .\n (lambda ()\n (interactive)\n (exwm-workspace-switch-create ,i))))\n (number-sequence 0 9))\n ))\n )\n\n;; start emacs server\n(server-start)\n\n;;; END ;;;\n\n(provide 'init-extra)\n;;; init-extra.el ends here
\n',399,0,0,'CC-BY-SA','emacs,elisp',0,0,1),
(3909,'2023-07-27','Permission tickets. ',688,'Collective delusions of elective conclusions. ','
No special knowledge nor resources. \nThis is a preview show for some future, self referential tangle of\ncryptographic distraction.
\n
So far, I see money as some social credit by proxy. \nI recognise the utility of keeping track of resource recipes. \nI also see dangers in over abstracting relations beyond robustly\nprovable outcomes.
\n',398,0,1,'CC-BY-SA','ledger,cryptographic,consensus,permission,integrity',0,0,1),
(3911,'2023-07-31','An overview of the \'ack\' command',1255,'A Perl-based \'grep\'-like tool that can search by file type','\n
Introduction
\n
I have occasionally been using a tool called ack for a\nfew years now. It’s billed as “an alternative to grep for\nprogrammers”.
\n
There are several features I find particularly useful:
\n
\n
It can restrict text searches to files of a particular\ntype
\n
It uses Perl regular expressions which may be the most powerful\nand feature rich types of RE’s available at present
\n
You can limit the search area within a file if desired
\n
\n
It is a very comprehensive and useful tool, though maybe quite\ncomplex to use. Personally I use it in special cases where I need its\npower, and otherwise use the usual grep.
\n
In this episode I will give you the flavour of its capabilities and\notherwise leave you to research more if it sounds interesting.
\n
Installing ack
\n
The tool can be found in repositories. I use Debian, and\nack is in the Debian repo and can be installed with:
\n
sudo apt install ack
\n
Installing it this way the version I have (and am describing here) is\n3.6.0. There is a new version, 3.7.0 available from the website.
\n
The documentation on the website suggests installing it as a Perl\nmodule using CPAN, which is something I will do soon I\nthink.
\n
Perl regular expressions
\n
These are very sophisticated.
\n
A project to convert the Perl regular expression capabilities into a\nportable library form was undertaken by Philip Hazel of Cambridge\nUniversity in 1997, and was called Perl Compatible Regular\nExpressions or PCRE.
\n
Philip Hazel was the originator of the exim mail\ntransfer agent (MTA, or mail server), and wanted to use PCRE within\nit.
\n
Since then PCRE (and later PCRE2) is the way regular expressions are\nimplemented in a lot of other software, which shows how widespread use\nof the Perl RE has become.
\n
The ack documentation refers to the Perl manual for\ndetails of this type of regular expression, and to a tutorial, if you\nwish to gain a deeper understanding.
\n
It should be noted that GNU grep can use Perl compatible\nregular expressions when matching lines in files, but this feature is\nmarked as experimental.
\n
File types
\n
The ack command has rules for recognising file types. It\ndoes this by looking at the name extensions (\'.html\' or\n\'.py\' for example), and in some cases by examining their\ncontents. The complete list of types can be found by running:
\n
ack --help-types
\n
… or, for a more detailed but less readable list:
\n
ack --dump
\n
Some examples are:
\n
\n
cc for C files
\n
haskell for Haskell files
\n
lua for Lua files
\n
python for Python files
\n
shell for Bash, and other shell command files
\n
\n
These names can be used with the options -t TYPE and\n--type=TYPE and also by simply preceding them with two\ndashes (--TYPE). There are also ways of requesting files\nnot of a given type: -T TYPE, --type=noTYPE\nand --noTYPE.
\n
To check files in the current directory of type shell an\nack command like the following might be used and the\nfollowing type of output produced:
Note that ack reports the file path and numbered lines\nwithin it that match.
\n
You can add your own file types to ack. There is a\nconfiguration file called .ackrc in which new types can be\ndeclared. See below for more information.
\n
The file type feature is one that makes me use ack again\nand again.
\n
The .ackrc file
\n
This file contains “command-line options that are prepended to\nthe command line before processing”.
\n
It’s a useful way to add new types (or even modify existing\nones).
\n
It can be located in a number of places. Mine is\n~/.ackrc with other configuration files in my home\ndirectory.
\n
It’s possible to generate a new .ackrc with the option\n--create-ackrc. This saves all the default settings in the\nfile which makes it simple to adjust anything you need to change.
\n
As an example of a change, I have Markdown files with the extension\n.mkd. However, by default ack only recognises\n.md, and .markdown. To add .mkd\nto the list I can add one of the following to the\n.ackrc:
\n
# Either add `.mkd` to the list\n--type-add=markdown:ext:mkd\n# or replace the list with a new one\n--type-set=markdown:ext:md,mkd,markdown
\n
Note that lines beginning with # are comments. Note also\nthat --type-add and --type-set have to be\nfollowed by an = sign, not a space in this file.
\n
If you examine the settings with ack --dump you will see\nthe default command and the one you have added. If you use\nack --help-types you will see the new extension added to\nthe default list.
\n
markdown .md .markdown; .mkd
\n
If I use this to search files in the directory where I keep my HPR\nepisodes I see:
\n
$ ack --markdown 'inner ear'\nHacking_my_inner_ear/hpr2109_full_shownotes.mkd\n24:became fascinated by the structure of the human [inner ear][2], and studied it\n28:The human inner ear performs two major functions:\n.\n.\n.
\n
Quick review of selected\nack options
\n
Usage
\n
The ack command is designed to be similar in as many\nrespects as possible to grep. The command is used in\ngeneral as follows:
\n
ack [OPTION]... PATTERN [FILES OR DIRECTORIES]
\n
The [OPTION] part denotes any options (some discussed\nbelow) and PATTERN is the PCRE search pattern. There are\nsome cases where this must be omitted - such as when files of a\nparticular type are being listed. See example 1 below for such a\ncase.
\n
In some cases a particular file is being searched, or all files in\ncertain directories, and that is what\n[FILES OR DIRECTORIES] denotes.
\n
The full documentation for ack can be seen with the\nusual man ack command, and also using\nack --man. There is also an option --help\nwhich gives a summary of all of the available options.
\n
Options
\n
There are many options specific to ack and some in\ncommon with grep, and we’ll look at just a few here:
\n
\n
-i - like grep this makes the matched\npattern case insensitive.
\n
-f - Only print the files that would be searched,\nwithout actually doing any searching. See example 1 below.
\n
-g - Same as -f, but only select files whose names\nmatch PATTERN. This interacts with file type searches like\n--html, so beware.
\n
-l - reports the file names which contain matches\nfor a given pattern
\n
-L - reports the file names which do not\ncontain matches for a given pattern
\n
-c - reports file names and the number of matches;\nused on its own it reports all files, those that match and\nthose that do not. If used with -l then you only see the\nnames of file that have matches, as well as a count of matches. See\nexample 2 below.
\n
-w - forces the search pattern to match only whole\nwords. See example 3 below. (Note: there is an equivalent in GNU grep,\nwhich I had not checked when I recorded the audio).
The sequence \'\b\' in Perl regular expressions is a\nboundary such as a word boundary. So the pattern is looking for the word\n\'ear\' as opposed to the characters \'ear\' (as\nin \'pearl\' for example).
\n
Note how the single-letter options -l, -c\nand -i can be concatenated.
\n
3. Searching for words in\na simpler way
\n
In example 2 the \b boundaries ensured the pattern\nmatched words rather than letter sequences. This can be simplified by\nusing the -w option:
\n\n',225,11,1,'CC-BY-SA','search,grep,regular expression,Perl',0,0,1),
(3912,'2023-08-01','Emergency Show: Biltong and Rooibos',233,'Shane brings us a taste of South Africa with some local tea and jerky','
Biltong is a form of dried, curedmeat which originated in Southern African countries (South Africa, Zimbabwe, Malawi, Namibia, Botswana, Eswatini and Zambia). Various types of meat are used to produce it, ranging from beef to game meats such as ostrich or kudu. The cut may also vary being either fillets of meat cut into strips following the grain of the muscle, or flat pieces sliced across the grain. It is related to beef jerky; both are spiced, dried meats; however the typical ingredients, taste, and production processes may differ.
The word \"biltong\" is from the Dutchbil (\"buttock\") and tong (\"strip\" or \"tongue\").
\nRooibos, meaning \"red bush\"), or Aspalathus linearis, is a\nbroom\n-like member of the plant family\nFabaceae\n that grows in\nSouth Africa\n\'s\nfynbos\n biome.\n\n
\n
The leaves are used to make a\nherbal tea\n that is called\nrooibos\n (especially in Southern Africa),\nbush tea\n,\nred tea\n, or\nredbush tea\n (predominantly in Great Britain).\n\n
\n
The tea has been popular in\nSouthern Africa\n for generations, and since the 2000s has gained popularity internationally.\nThe tea has an earthy flavour that is similar to\nyerba mate\n or\ntobacco\n.\n
\n
Rooibos was formerly classified as\n\nPsoralea\n\n but is now thought to be part of\n\nAspalathus\n\n following\nDahlgren\n (1980).\nThe\nspecific name\n of\nlinearis\n was given by\nBurman\n (1759)\nfor the plant\'s linear growing structure and needle-like leaves.\n\n
\n\n',250,0,0,'CC-BY-SA','South Africa,Biltong,Rooibos,Afrikaans',0,0,1),
(3913,'2023-08-02','Lurking Prion Q and A',316,'Lurking Prion answers questions about his name, former career field as an MM','
Add to reserve queue
\n
Lurking Prion answers questions about his name, former career field as an Machinist\'s mate, and breaks down a short bio of his security path thus far.
\n\n',405,74,1,'CC-BY-SA','bio,backgrown,questions,mm,Machinist\'s mate',0,0,1),
(3914,'2023-08-03','how to deal with blisters',262,'a technique my father taught me, for dealing with blisters','
Many years ago, my father taught me how to deal with blisters using a\nneedle and thread.
\n',399,0,0,'CC-BY-SA','first aid',0,0,1),
(3915,'2023-08-04','Why the hell is my audio clipping?',802,'MrX has audio that is clipping but will he be able to fix it?','
This is an emergency show as we are short of shows. I was going to do\nthis show anyway as I noticed my audio was clipping on the last few\nshows I sent in yet I didn\'t notice it on the files I sent to HPR.
\n
In this episode I waffle a bit and read out some of the stuff on the\nHPR site about giving shows. During the recording I introduce increasing\namounts of attenuation each decrease in volume signified by a gong. I\nhope this will allow me to stop the clipping from my audio.
\n',201,0,1,'CC-BY-SA','audio, podcasting, Audacity',0,0,1),
(3924,'2023-08-17','Mass Quick Tips for August 2023',1549,'operat0r will never get to some of these as full eps so here you go!','
\n',36,0,1,'CC-BY-SA','hacking,computers,Android,quick tips',0,0,1),
(3917,'2023-08-08','Response to \"Permission Tickets\" by oneofspoons',408,'Hopefully a useful provocation, in response to a recent intriguing show by another HPR host','
\n',399,0,0,'CC-BY-SA','crypto',0,0,1),
(3925,'2023-08-18','Uncommon tools and social media',329,'Daniel Persson talks about some of the tools he uses for video production and social media','
Before I used common tools and Windows, I was present on Facebook and\nso on. But I\'ve changed and I don\'t think the difference is that\nlarge.
\n',382,0,0,'CC-BY-SA','social media, linux',0,0,1),
(3919,'2023-08-10','How I hacked my voice',959,'Tuula talks about what she\'s doing to change her voice','
\n',364,0,0,'CC-BY-SA','voice, trans',0,0,1),
(3922,'2023-08-15','Silent Key',241,'A brief history of the term \"Silent Key\" as applied to amateur radio','
Hacker Public Radio – Silent Key HPR3922
\n
Hello this is Trey, and I am recording this in the shadow of the loss\nof a good friend and mentor who helped guide me in my career and in\nhobbies like electronics, aviation, and amateur radio. The amateur radio\narea is what I will be discussing today.
\n
Many terms within amateur radio find their origins from the days of\ntelegraph, when operators would use Morse code to send messages across\ngreat distances using wires strung from pole to pole. The telegraph\n“key” (or code key) was basically a momentary contact switch which would\nclose an electrical connection when pressed. Pressing the key down for a\nshort period of time would send a short pulse down the line, which is\nreferred to as a “dit” (Sometimes the term “dot” is used). This may be\nwritten using the period “.” symbol. Holding the key down for a bit\nlonger would send a longer pulse down the line, called a “dash”\n(Sometimes the term “dah” is used) and it may be written using the\nhyphen “-” symbol.
\n
Telegraph operators became a close knit community, even though they\nwere geographically separated. Often one operator could identify another\noperator by subtleties in the style or personality of how they sent\ntheir messages. This was known as the operator’s “fist” and today we\nwould describe it as a “behavioral biometric”. As the community of\ntelegraph operators moved around or were replaced, new “fists” would be\nidentified, as new personalities of code sending were tapped out on the\ntelegraph keys.
\n
When an operator passed away, it was a loss to the community, and a\nloss of someone who might have been befriended remotely by other\noperators. The term of respect created for this situation was “Silent\nKey” sent as the abbreviation “SK” ( … -.- ). It meant that the\nparticular operator would never send code again. His telegraph key would\nbe silent.
\n
This tradition has been carried on among amateur radio operators or\n“Hams”. This is also a close knit community of people. While some still\nuse Morse code to communicate (Referred to as “CW” for continuous wave),\nthere are many other forms in use, including voice and digital modes.\nBut regardless of how we communicated with them, when we lose one of our\nown, we still say they are SK. Silent key. No longer able to\ntransmit.
\n
Organizations like the American Radio Relay League (ARRL) and QRZ.com\ntry to update their records when a Ham passes away. There are also\ndatabases like silentkeyhq.com which keep records and memories of\ndeceased operators.
\n
So, it is with great sadness that I have been updating the records\nfor my close friend and mentor KV4YD. Thank you for your friendship and\nsupport, and for sharing your wisdom over the years. You will be\nmissed.
Meal preparation involves preparing meals ahead of time for a short\nor period of time. This practice may occur among people who desire to\nlose weight, gain muscle mass, or maintain a healthy lifestyle. Advance\npreparation can serve to standardize food portions. Meals preparation\nare fully cooked. Meals may be prepared in small containers such as\nTupperware, and are sometimes labeled and dated to remain\norganized. \n
Freshly cut onions often cause a stinging sensation in the eyes of\npeople nearby, and often uncontrollable tears. This is caused by the\nrelease of a volatile liquid, syn-propanethial-S-oxide and its aerosol,\nwhich stimulates nerves in the eye. This gas is produced by a chain of\nreactions which serve as a defence mechanism: chopping an onion causes\ndamage to cells which releases enzymes called alliinases. These break\ndown amino acid sulfoxides and generate sulfenic acids. A specific\nsulfenic acid, 1-propenesulfenic acid, is rapidly acted on by a second\nenzyme, the lacrimatory factor synthase (LFS), producing the\nsyn-propanethial-S-oxide. This gas diffuses through the air and soon\nreaches the eyes, where it activates sensory neurons. Lacrimal glands\nproduce tears to dilute and flush out the irritant. \n
\n
Cooking onions and sweet onions are better stored at room\ntemperature, optimally in a single layer, in large mesh bags in a dry,\ncool, dark, well-ventilated location. In this environment, cooking\nonions have a shelf life of three to four weeks and sweet onions one to\ntwo weeks. Cooking onions will absorb odours from apples and pears.\nAlso, they draw moisture from vegetables with which they are stored\nwhich may cause them to decay. \n
\n
Sweet onions have a greater water and sugar content than cooking\nonions. This makes them sweeter and milder tasting, but reduces their\nshelf life. Sweet onions can be stored refrigerated; they have a shelf\nlife of around 1 month. Irrespective of type, any cut pieces of onion\nare best tightly wrapped, stored away from other produce, and used\nwithin two to three days. \n
\n',391,0,0,'CC-BY-SA','Bumble Bee, Meal Prep',0,0,1),
(3933,'2023-08-30','Planning for a planner.',2852,'Sgoti and Bumble Bee discuss discbound planners, agendas, ink pens and more.','
\n',391,0,0,'CC-BY-SA','Discbound, Notebooks, Planners, Happy Planner, Ink Pens.',0,0,1),
(3935,'2023-09-01','Server build retrospective',586,'Daniel Persson goes through his experience of building his first server','
I have a lot of smaller PC\'s running as servers at home but now I\nfinally bought my first server chassis to install a real server in my\nrack. I ran into a lot of complications and that\'s covered in this\nepisode.
\n',382,0,0,'CC-BY-SA','server, hardware, rack',0,0,1),
(3945,'2023-09-15','My chrome plugins',271,'Daniel Persson summarize the essential plugins he uses every day','
We all use plugins in order to facilitate our work this is my\nfavorite picks.
\n',382,0,0,'CC-BY-SA','chrome, plugins',0,0,1),
(3955,'2023-09-29','airgradient measurement station',356,'Daniel Persson talks about a hardware measurement station he\'s installed','
AirGradient is an open-source solution to measure the air in your\nliving area. In my case, I need to keep track of the air in my office,\nso I have a healthy working environment.
\n',382,0,0,'CC-BY-SA','airgradient, measurement, air quality',0,0,1),
(3965,'2023-10-13','I\'ve taken the Conqueror Virtual Challenge',285,'Daniel Persson talks about a service where you challenge yourself for better health','
This service will help you keep track of your walks and incentivize\nyou to walk more and stay healthy.
\n',382,0,0,'CC-BY-SA','challenge, walk',0,0,1),
(3934,'2023-08-31','Crusader Kings II',2292,'Tuula rambles about her all time favourite strategy game Crusader Kings II','
Crusader Kings II
\n
Crusader Kings II is a dynasty simulator, where your goal is to guide\nyour dynasty through the middle ages. It\'s very large game and this\nepisode can only scratch the surface.
\n
You\'re a ruler of some kind, like count, duchess, king or empress to\nname a few. You need to manage vassals in your realm and keep your\nneighbours at bay. When you\'re not busy with that, you can relax and go\nhunting, build an observatory or join a secret society (to name just a\nfew).
\n
Couple first games will be overwhelming, but it\'ll get easier when\nyou start realizing how things affect to each other and what kinds of\nthings you can do.
\n',364,122,0,'CC-BY-SA','Crusader Kings, Paradox',0,0,1),
(3942,'2023-09-12','RE: How to make friends.',763,'Sgoti replies to Klaatu\'s show, \"How to make friends.\"','
\n',391,0,0,'CC-BY-SA','Friends, reply show',0,0,1),
(3946,'2023-09-18','Planning for a planner, part 02.',2168,'Sgoti and Bumble Bee discuss discbound planners, agendas, ink pens and more.','
What is a \"Data\nBreach\"? A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so.
\n
What is \"Malware\"?\nMalware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.
\n
What is a \"Payload\"?\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection.
\n
What is \"Phishing\"?\nPhishing is a form of social engineering\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.
\n
Social\nengineering (security) In the context of information security,\nsocial engineering is the psychological\nmanipulation of people into performing actions or divulging\nconfidential information. A type of confidence trick for the purpose of\ninformation gathering, fraud, or system access, it differs from a\ntraditional \"con\" in that it is often one of many steps in a more\ncomplex fraud scheme. \n
Information Security Attributes:Confidentiality, Integrity and Availability (C.I.A.).\nInformation Systems are composed in three main portions, hardware,\nsoftware and communications with the purpose to help identify and apply\ninformation security industry standards, as mechanisms of protection and\nprevention, at three levels or layers: physical, personal and\norganizational. Essentially, procedures or policies are implemented to\ntell administrators, users and operators how to use products to ensure\ninformation security within the organizations.
\n
\n
What is \"Risk\nmanagement\"? Risk management is the identification, evaluation, and\nprioritization of risks followed by coordinated and economical\napplication of resources to minimize, monitor, and control the\nprobability or impact of unfortunate events or to maximize the\nrealization of opportunities.
\n
What is a \"Vulnerability\"\n(computing)? Vulnerabilities are flaws in a computer system that\nweaken the overall security of the device/system. Vulnerabilities can be\nweaknesses in either the hardware itself, or the software that runs on\nthe hardware.
\n
What is an \"Attack\nSurface\"? The attack surface of a software environment is the sum of\nthe different points (for \"attack vectors\") where an unauthorized user\n(the \"attacker\") can try to enter data to or extract data from an\nenvironment. Keeping the attack surface as small as possible is a basic\nsecurity measure.
\n
What is an \"Attack\nVector\"? In computer security, an attack vector is a specific path,\nmethod, or scenario that can be exploited to break into an IT system,\nthus compromising its security. The term was derived from the\ncorresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity.
\n
What is\n\"Standardization\"? Standardization is the process of implementing\nand developing technical standards based on the consensus of different\nparties that include firms, users, interest groups, standards\norganizations and governments. Standardization can help maximize\ncompatibility, interoperability, safety, repeatability, or quality. It\ncan also facilitate a normalization of formerly custom processes.\n
What is a \"Replay\nattack\"? A replay attack is a form of network attack in which valid\ndata transmission is maliciously or fraudulently repeated or delayed.\nAnother way of describing such an attack is: \"an attack on a security\nprotocol using a replay of messages from a different context into the\nintended (or original and expected) context, thereby fooling the honest\nparticipant(s) into thinking they have successfully completed the\nprotocol run.\"
\n
What is a\n\"Man-in-the-middle attack\"? In cryptography and computer security, a\nman-in-the-middle, ..., attack is a cyberattack where the attacker\nsecretly relays and possibly alters the communications between two\nparties who believe that they are directly communicating with each\nother, as the attacker has inserted themselves between the two\nparties.
\n
What is \"Transport Layer\nSecurity\" (TLS)? Transport Layer Security (TLS) is a cryptographic\nprotocol designed to provide communications security over a computer\nnetwork. The protocol is widely used in applications such as email,\ninstant messaging, and voice over IP, but its use in securing HTTPS\nremains the most publicly visible.
\n
What is a \"Handshake\"\n(computing)?. In computing, a handshake is a signal between two\ndevices or programs, used to, e.g., authenticate, coordinate. An example\nis the handshaking between a hypervisor and an application in a guest\nvirtual machine.
\n
What is Security\ntheater? The practice of taking security measures that are\nconsidered to provide the feeling of improved security while doing\nlittle or nothing to achieve it. \n
\n',391,74,0,'CC-BY-SA','User space, investment scams, recovery scams',0,0,1),
(3926,'2023-08-21','Karate Do: An Overview',2706,'Hipernike talks about Karate, its meaning and some of the things he has learnt','
Sorry for my English, I\'m still improving it, and specially for\nconfusing kicks with hand strikes.
\n
\n
Gichin\nFunakoshi: The father of modern karate and the founder of Shotokan\nstyle\n
The outcome of a battle depends on how one handles emptiness and\nfullness (Gichin Funakoshi, Nijū kun)
\n
Defense techniques\n
\n
Age uke
\n
Soto uke
\n
Uchi uke
\n
Shuto uke
\n
\n
Attack techniques\n
\n
Empi uchi
\n
Uraken uchi
\n
Shuto uchi
\n
Kentsui uchi (hammer strike with your fist)
\n
\n
\n',410,0,0,'CC-BY-SA','karate, martial arts, sports',0,0,1),
(3961,'2023-10-09','RERE: How to make friends.',2495,'Sgoti and Mugs Up chat about, \"How to make friends womans edition\".','
\n',391,0,1,'CC-BY-SA','Make friends, Mugsup, Klaatu',0,0,1),
(3927,'2023-08-22','Audacity Update 20230702',372,'RESERVE SHOW. Audacity has been having problems lately.','
Audacity seems to have developed some sensitivity problems of late\nand that has affected my ability to process my podcast files as\nexplained in HPR 3900. I have found some evidence that the Audacity team\nis aware of this, but for now this is how I work around the problem.
pwd && ls --group-directories-first --classify --almost-all\n\n# some more ls aliases\nalias la='ls -l --human-readable --group-directories-first --classify --almost-all'\nalias ll='ls --group-directories-first --classify --almost-all'\nalias lr='ls -l --human-readable --group-directories-first --classify --recursive'\nalias lar='ls -l --human-readable --group-directories-first --classify --almost-all --recursive'\nalias lap='ls -l --human-readable --group-directories-first --classify --almost-all | less'\n\n# safety first ;)\nalias rmi='rm --interactive --verbose'\nalias mvi='mv --interactive --verbose'\nalias cpi='cp --interactive --verbose'\nalias .shred='bleachbit --shred'\n\n# cd multi dir\nalias ..='cd ..;'\nalias .2='cd ../..;'\nalias .3='cd ../../..;'\nalias .4='cd ../../../..;'\nalias .5='cd ../../../../..;'\n\n# Directory controls.\nfunction cd () {\nclear;\nbuiltin cd "$@" && ls --group-directories-first --classify --almost-all;\n\nhistory -w;\n}\n\n#function pp () {\n#builtin pushd +$@ && ls --group-directories-first --classify --almost-all\n#}\n\nfunction pushup (){\nbuiltin pushd $HOME/.config/vim/sessions/\nbuiltin pushd $HOME/.local/bin/\nbuiltin pushd $HOME/.thunderbird/*.default-release/\nbuiltin pushd $HOME/Documents/non-of-your-business/\nbuiltin pushd $HOME/Downloads/in/\nbuiltin pushd $HOME/Downloads/out/\nbuiltin pushd $HOME/Downloads/playground/\nbuiltin pushd $HOME/Music/hpr/shows/\nbuiltin pushd $HOME/projects/\nbuiltin pushd $HOME/projects/hprbank/bp/\nbuiltin pushd $HOME/symlinks/\nbuiltin pushd $HOME/tmp/\nbuiltin pushd +11\n\nbuiltin dirs -v\n}\n\nalias pd='pushd'\nalias dirs='dirs -v'\n\n# Update\nalias .upg='sudo apt update && sudo apt upgrade -y;'\n\n# shutdown | reboot\nalias .sd='sudo shutdown -P now;'\nalias .rs='sudo reboot;'\n\n# Misc\nalias ccb='cat $HOME/cb | xsel --input --clipboard && echo "Copy. $(date "+%F %T")";'\nalias pcb='xsel --output --clipboard > $HOME/cb && echo "Copy. $(date "+%F %T")";'\nalias zz='xsel -c -b && echo "Clipboard Cleared. $(date "+%F %T")";'\n\n# File Mods\nalias 700='chmod --verbose =700'\nalias 600='chmod --verbose =600'\nalias 400='chmod --verbose =400'\n\n###############################################################################\n# Functions\n###############################################################################\n\nfunction .s () {\nln --symbolic --verbose --target-directory=$HOME/symlinks/ $(pwd)/${1};\n}\n\nfunction extract () {\nif [ -f $1 ]\nthen\n case $1 in\n *.tar.bz2) tar -vxjf $1 ;;\n *.tar.gz) tar -vxzf $1 ;;\n *.tar) tar -xvf $1 ;;\n *.bz2) bunzip2 $1 ;;\n *.rar) unrar -x $1 ;;\n *.gz) gunzip $1 ;;\n *.tar) tar -vxf $1 ;;\n *.tbz2) tar -vxjf $1 ;;\n *.tgz) tar -vxzf $1 ;;\n *.zip) unzip $1 ;;\n *.Z) uncompress $1 ;;\n *.7z) 7z -x $1 ;;\n *) echo "Good Heavens, '$1' will NOT extract..." ;;\n esac\nelse\n echo "Good Heavens, '$1' is NOT a valid file."\nfi\n}\n\nfunction myip () {\nip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/';\n}\n\nfunction .mkd (){\nmkdir -v $(date +%F) && pushd $(date +%F);\n}\n\nfunction .mkt (){\ntmpdir=$(mktemp -d /tmp/$(date +%F).XXXXXXXX) && pushd ${tmpdir}\n}\n\nfunction .d (){\necho $(date +%F)$1 | xsel -i -b;\n}\n\n\nfunction .sh () {\nNEWSCRIPT=${1}.sh\n\ncat >> ${NEWSCRIPT} << EOS\n#!/bin/bash\n# License: GPL v3\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program. If not, see <https://www.gnu.org/licenses/>.\n\n#Name: ${NEWSCRIPT}\n#Purpose:\n#Version: beta 0.01\n#Author: SGOTI (Some Guy On The Internet)\n#Date: $(date +%F)\n\n#variables:\n\n#start:\n\nexit;\nEOS\n\nif [ -f "${NEWSCRIPT}" ]\nthen\n chmod 700 ${NEWSCRIPT}\nelse\n echo "Good Heavens! There isn't a "${NEWSCRIPT}""\nfi\n}\n\nfunction .fmd () {\nxsel -o -b | fmt -w 76 | sed 's/$/ /g\ns/ / /g\ns/ / /g\ns/ / /g\ns/$/ /g\ns/ *$/ /g\ns/ / /g' | xsel -i -b;\n}\n
\n
#!/bin/bash\n# License: GPL v3\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program. If not, see <https://www.gnu.org/licenses/>.\n\n#Name: bfn.sh\n#Purpose: Create better file names.\n#Version: beta 0.01\n#Author: SGOTI (Some Guy On The Internet)\n#Date: 2022-11-08\n\n#variables:\noldname=$(echo ${1%.*})\nnewname=$(echo $oldname | sed 's/ /-/g;s/_/-/g;s/./-/g;s/--*/-/g;/\\/d' | tr [:upper:] [:lower:])\next1=".$(echo ${1##*.})"\next2=".$(echo ${1##*.} | tr [:upper:] [:lower:])"\n\n#start:\nfunction bcase () {\n if [ -f $1 ]\n then\n echo -e "renaming $oldnamen";\n mv -v "$oldname$ext1" "$newname$ext2";\n else\n mv -v "$oldname" "$newname";\n fi\n}\n\nbcase\nexit;
\n
#!/bin/bash\n# License: GPL v3\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program. If not, see <https://www.gnu.org/licenses/>.\n\n#Name: perm.sh\n#Purpose:\n#Version: beta 0.01\n#Author: SGOTI (Some Guy On The Internet)\n#Date: 2023-01-13\n\n#variables:\nvar_dir=${1}\n\n#start:\nfunction bfp () {\n find "${var_dir}" -type d -exec chmod -R =700 {} +\n find "${var_dir}" -type f -exec chmod -R =600 {} +\n}\n\nbfp\n\nexit;
\n',391,42,1,'CC-BY-SA','Bash scripting, bash commands, bash_aliases',0,0,1),
(3929,'2023-08-24','Some experiences with different notes apps',587,'About apps that store notes as markdown','
\n',403,0,0,'CC-BY-SA','markdown, notes',0,0,1),
(3931,'2023-08-28','What Instrument was played in hpr3905?',2040,'I reveal what instrument was played in hpr3905','
If you didn\'t really understand my mumbling and stuttering, here is\nthe page ;-)
\n',422,0,0,'CC-BY-SA','Music, quiz, Instrument',0,0,1),
(3938,'2023-09-06','An open directory of web audio stream',1116,'I was looking for an open directory of web audio streams and found radio hyphen browser dot info.','
References
\n
https://www.radio-browser.info\nthe site has good searching features, and even has a player. It has a\nmap view that\'s cute but not too useful because it doesn\'t zoom in\nenough. Still fun to fly around the world and tune in simply by clicking\nthe balloons, you should try it.
\n
Mobile apps that use this directory are found on https://www.radio-browser.info/users.\nThe ones I\'ve used are TuneFM (with ads, pay what you want (I think) to\nremove ads, but very good Android Auto), and Transistor (no Android\nAuto, otherwise perfect). Open Radio is pretty good but the Android Auto\nis buggy. I have not tried any others.
\n
The episode in which Ken Fallon interviewed one of the maintainers of\nFunkwhale was hpr3808.
\n
Some stations I\'ve been listening to:
\n
\n
Radio\nMEC: Brazilian state-controlled. Located in Rio de Janeiro. Plays\nmore uppity stuff.
\n
Radio\nNacional Rio de Janeiro: Brazilian state-controlled, located in Rio\nde Janeiro. Plays more popular music, football broadcasts. A good show\ncomes on every saturday at 11:00 BRT.
\n',399,0,0,'CC-BY-SA','\"internet radio\", \"free culture\"',0,0,1),
(3951,'2023-09-25','Cell Phone Screen Protectors',1720,'I talk about how I fail at Cell Phone Screen Protectors','
I talk about how I fail at Cell Phone Screen Protectors
\n',36,0,1,'CC-BY-SA','tech,phone repair,cell phones,Screen Protectors',0,0,1),
(3932,'2023-08-29','Short introduction to inxi',437,'folky gives the show about inxi that Ken wished for','
\n',309,23,0,'CC-BY-SA','shell,inxi,forum',0,0,1),
(3971,'2023-10-23','RERERE: How to make friends.',2164,'Sgoti and Mugs chat with friends about how to make friends on the internet.','
If one\'s honour is questioned, it can thus be important to disprove\nany false accusations or slander. In some cultures, the practice of\ndueling arose as a means to settle such disputes firmly, though by\nphysical dominance in force or skill rather than by objective\nconsideration of evidence and facts. \n
\n',391,0,1,'CC-BY-SA','making friends, Mugsup, group chat',0,0,1),
(3944,'2023-09-14','Race for the Galaxy',947,'Tuula explains very basics of card game called Race for the Galaxy','
Race for the galaxy
\n
Race for the galaxy is a four player card game published by Rio\nGrande Games.
\n
The goal of the game is to build a space imperium and the player with\nmost victory points wins.
\n
There\'s also a computer version of the game, which saves you from\npacking up the game after playing.
\n
Turn sequence
\n
There are five phases in turn:
\n
\n
Explore
\n
Develop
\n
Settle
\n
Consume
\n
Produce
\n
\n
At the beginning of turn, every player selects one of these phases\nand selections are revealed simultaneously. Only selected phases will be\nplayed. Player who selected a phase gets a small bonus.
\n
Explore
\n
\n
draw two cards and keep one
\n
bonus: draw five cards and keep one
\n
bonus: draw one additional card and keep one additional card
\n
\n
Develop
\n
\n
place development card in play and discard cards from your hand to\ncover the cost
\n
bonus: -1 to cost
\n
\n
Settle
\n
\n
place a planet card in play and discard cards from your hand to\ncover the cost
\n
except military planets, which you\'ll conquer with your military\nscore
\n
if it\'s a windfall world, produce on it
\n
\n
Consume:
\n
\n
use consume powers on cards to turn good into victory points
\n
you have to keep consuming until you can\'t anymore
\n
bonus: trade one goods card for 2-5 cards
\n
bonus: 2xVPs gain twice the victory points
\n
\n
Produce:
\n
\n
produce on regular planets
\n
bonus: produce on windfall planet
\n
\n
repeat until:
\n
\n
one empire is 12 cards big
\n
VP tokes run out
\n
\n
score:
\n
\n
points for cards on the table
\n
cards in the hand (+1 for each)
\n
VPs earned
\n
\n
special rules
\n
\n
cards on the table
\n
draw extra cards
\n
trade goods on planets
\n
add up your military score
\n
settle planets for cheaper
\n
have bigger empire limit
\n
produce on a windfall planet after discarding a card
\n
etc.
\n
\n
Examples of cards
\n
Star nomad raiders
\n
\n
military 2 planet, worth 1 vp
\n
+1 to military
\n
+2 cards when trading goods
\n
\n
Terraforming robots
\n
\n
development 3, worth 2 vp
\n
draw 1 card after placing a world
\n
discard 1 rare elements good to gain 1 card and 1 vp
\n
\n
Public works
\n
\n
development 1, worth 1 vp
\n
draw 1 card after placing a development
\n
discard 1 good to gain 1 vp
\n
\n
Expansions
\n
All expansions add new cards.
\n
The gathering storm
\n
\n
\n
goals (first and most)
\n
extra player
\n
\n
\n
Rebel vs. Imperium
\n
\n
\n
solo play
\n
take over (conquer other player\'s worlds)
\n
extra player
\n
\n
\n
Brink of War
\n
\n
\n
- prestige
\n
\n
\n
counts as VP in the end
\n
can be used to perform actions
\n
\n
\n
\n
\n
requires two previous expansions
\n
\n
\n
Alien Artifacts
\n
\n
\n
incompatible with previous expansions
\n
49 cards representing alien orb players can explore
\n
balance between expanding and exploring
\n
\n
\n
Verdict
\n
\n
fun and quick game
\n
every player concentrates on their own imperium
\n
keep an eye what opponent is doing (trading / military)
\n',364,0,0,'CC-BY-SA','race for the galaxy, card game',0,0,1),
(3953,'2023-09-27','Large language models and AI don\'t have any common sense',1090,'Learn how to load and run GPT-2 or Llama2 to test it with common sense questions.','
Hobson and Greg are working with volunteers to develop an open source\nAI that we call Qary (QA for question answering). We\'re adding plugins\nto support open source large language models (LLMs) like GPT-2 and\nLlama2. Here\'s how you can use LLMs in your own Python Programs.
Load the .env variables in your python script using\ndotenv package and os.environ:
\n\n
\n
TIP: Use os.environ to retrieve the dict of variable\nvalues rather than dotenv.load_values- Otherwise other\nenvironment variables that have been set by other shell scripts such as\n.bashrc will be ignored.
\n
This confused us when we were getting our GitLab CI-CD pipeline\nworking and deploying to Render.com.
\n
Each of your cloud services will have different approaches to\nsetting environment variables.
\n
This token string can be passed as a keyword argument to most of the\npipeline and model classes.
On the documentation page for your model you may have to apply for a\nlicense if it\'s not really open source but business source like Meta\ndoes with its AI so you can\'t use their models to compete with them
\n\n
\n
Apply for a license to use Llama2 on ai.meta.com\nusing the same e-mail you used for your Hugging Face account.
TIP: You\'ll need to use the kwarg use_auth_token in the\nAutoModel.from_pretrained or pipeline\nfunctions.
\n
And it should be set to the token from your Hugging Face profile\npage. The hugging face documentation says to use the token\nkwarg, but that never worked for me.
q = "There are 2 cows and 2 bulls, how many legs are there?"\n responses = generator(\n f"Question: {q}\\nAnswer: ",\n max_length=30,\n num_return_sequences=10)\n answers = []\n for resp in responses:\n text = resp['generated_text']\n answers.append(text[text.find('Answer: ')+9:])\n answers
\n
'four. \\n " let me see if i have this straight',\n 'only 3. and three cows and 2 bulls are bigger than',\n '2, 2, 1, 2. \\n " not yet',\n "one per cow, that's all there is. in fact",\n '30. and what am i? oh, yes, about',\n 'one. the big, white bull that is bigger than 1',\n 'three. they need to be introduced to the cow population before',\n "1. i don't know how many and where exactly ;",\n 'no 2. 2. two bulls for 1 bull and 2',\n '1, there are 1.2, and 2, there are']
\n',424,0,0,'CC-BY-SA','AI, GPT, GPT-2, Llama2, Hugging Face, Machine Learning, Deep Learning, Natural Language Processing',0,0,1),
(3937,'2023-09-05','Adventures in Pi-Hole',497,'Noodlez recounts their experience getting a pi-hole server','
Adventures in Pi-Hole
\n
Hi all! Today I\'m gonna be talking about my adventures in setting up\nPi-hole. This will be without screenshots, but instead in all text,\nsorry! Also this is all written as kind of an \"Aftermath\" story. This is\nbeing written after the fact, so this might be missing some details, but\nmost of it is there.
\n
Intro: What is Pi-hole
\n
Pi-hole is a DNS/DHCP server that\nallows for easy network-wide ad-blocking, along with all the nice\ncustomizations that come with being a DNS server, such as custom\ndomains.
\n
First Step: Get it running
\n
The first step was getting Pi-hole running. I did this using Docker\nCompose on a \"NAS\" which is honestly a full on server at this point. A\nquick copy/paste from Pi-hole\'s\nREADME and I was up and running! I set a singular system to use this\nas a DNS server, and after that, I figured I was set and ready to\ngo.
\n
Second Step: DHCP town
\n
Of course, I wasn\'t satisfied just finishing there. I want automatic\nDNS setting for any device that connects to my network. Of course, I\ncould just set the DNS upstream in my OpenWRT router to use the IP address of\nmy server, but that isn\'t good enough for me. This means I\'d be missing\nout on automatic per-client information, since when setting a DNS server\nfor OpenWRT, it only sets itself to forward any DNS requests up to the\nDNS server, which means from Pi-hole\'s perspective, all the requests are\ncoming from the router and nowhere else. The solution is to set up\nPi-Hole as a DHCP server. Keep in mind this isn\'t a tutorial, so let\'s\ngo through what I did first. The first step was to turn on the DHCP\nserver in Pi-Hole. This was super easy, just a checkbox and click save.\nCool! Then I disabled the DHCP server in OpenWRT, and that was all set.\nA few restarting of network devices later, like my phone, and they\nautomatically connected to the Pi-Hole server, and worked like a charm.\nNext up, I set up Tailscale. I use Headscale, but the setup is\nessentially the same as if you were using Tailscale\'s UI. Set in the\nconfig to override local DNS, set the nameserver to the Tailscale IP\naddress of the server, and turn on magic DNS, et voila! Now to restart\nthe Tailscale nodes, and make sure that on the server, you set it to not\naccept the DNS from Tailscale. If you don\'t do that, it\'ll get in an\nendless loop of trying to use itself as the DNS server, and it\'s just no\ngood. Okay! It\'s all set, and I check the dashboard, and it\'s already\nblocking DNS requests. Perfect!
\n
Third Step: Whoopsies!
\n
This was fine and great, but when I went to reboot my server, which I\ndo weekly, something bad happened. The interface for the server didn\'t\ncome up. This is a problem, since it\'s the DHCP server for my network,\nso without that working, the network was dead in the water. It can\'t\ngive out IP addresses. What\'s going on? I go ahead and access my server\ndirectly. No matter how hard I try, it can\'t connect to the interface.\nWhat\'s the big deal? Well this is pretty simple, and a question popped\nin my head that go me there. \"How does this server even get its IP\naddress?\" You see when I set up pi-hole, it just kept using the IP\naddress that the router gave it, which it was more than happy to use,\nbut the moment the router didn\'t have a DHCP server, the NAS didn\'t have\na way to get an IP address anymore. So what do you do then? The answer\nis pretty simple. Give the server a static IP. Make sure in the DHCP\nserver of pi-hole, you set a reservation in it for the server, then in\nNetworkManager, which I use, set it to have a static IP, and set its DNS\nto point to localhost. Perfect! This works like a charm!
\n
Fourth Step: Adlists
\n
Okay, phew! Crisis averted. Just some missing networking knowledge.\nSo what\'s next up on the list? Hmmm... Let\'s see... The default adlist\nis kinda small, let\'s go see if we can find some new adlists. Apparently\nthis is more difficult than you\'d think. A quick search on DDG only came\nup with an equivalent search in GitHub. Not useful! I have no idea the\ntrustworthiness and stability of these adlists. Let\'s see. Another\nsearch leads to a Reddit article that then links to a different list.\nBingo! An Adlist list. Exactly what I\nneeded. I went ahead and looked into these lists, and added a few of\nthem. Perfect!
\n
Fifth Step: Maintenance
\n
docker compose pull && docker compose up -d \nOf course, this isn\'t it. I actually use an a/b update scheme, but you\nget the gist. Updates are taken care of, and just make sure you try and\nkeep the server up as long as possible, and keep downtime to a\nminimum.
\n
Sixth Step: Moving off the\nNAS.
\n
After a while of running this, the necessity of having the NAS on the\nwhole time was starting to get frustrating. The answer there was to move\nit off the NAS. I did this by installing it on a Raspberry Pi 3B,\nrunning Arch Linux ARM. The setup was identical to before once I had\ngotten ALARM running.
\n',423,0,0,'CC-BY-SA','pi-hole,linux,networking,self-hosting',0,0,1),
(3939,'2023-09-07','How I got into tech and hacking',1238,'Getting interested in tech can start in both odd and familiar places. This is Trixter\'s story.','
In the show, I mention that leaving Mark Williams Company was \"a\nstory for another time\", but the short answer is that Linux crushed\nthem. Coherent Unix had to make a choice to compete with either Windows,\nSCO Unix, or Linux, and had enough budget to add either X Windows or\nTCP/IP networking. They chose X11, and IMO that killed any chance of\nCoherent Unix being useful in a world of Linux and FreeBSD.
\n',149,29,0,'CC-BY-SA','demoscene, hacking, programming, assembly, gaming',0,0,1),
(3943,'2023-09-13','Why my Dell does it better on Linux.',745,'Knightwise talks about how he uses his Dell XPS 15 with Linux.','
\n',111,0,0,'CC-BY-SA','linux, ',0,0,1),
(3949,'2023-09-21','How I use virtualisation to tame my Social Media addiction.',937,'Knightwise talks about the command line applications he uses to fight his Social Media addiction.','
\n',111,0,0,'CC-BY-SA','linux, tailscale, vpn, social media, reddit, irc, discord,',0,0,1),
(3947,'2023-09-19','Archiving Floppy Disks',1009,'This show describes how I go about archiving old floppy disks.','
Archiving Floppy Disks
\n\n
Summary
\n\n
This show describes how I go about archiving old floppy\ndisks. These disks date back to the early 90s when floppy disks were a\ncommon way of installing software on personal computers. They were\nalso used as a portable storage mechanism for data files.
\n\n
Equipment That I\'m Using
\n\n
\n
IBM ThinkCentre desktop computer with a 3.5in floppy disk drive
\n
Installed the 32-bit version of Slackware 14.2
\n
\n\n
Making an image of an entire floppy disk
\ndd if=/dev/fd0 of=filename.dsk\n\n
Making a floppy disk from a disk image
\ndd if=filename.dsk of=/dev/fd0\n\n
Copy files from a floppy disk
\n\nmount -t msdos /dev/fd0 /mnt/floppy \ncd /mnt/floppy \ncp filename /some/destination/path/filename \ncd \numount /mnt/floppy\n\n\n',334,0,0,'CC-BY-SA','floppy, disk, archive, linux, commands',0,0,1),
(3948,'2023-09-20','Cleaning up my mancave and talking about Creativity',1591,'Knightwise sets up his podcast rig in a messy attic and talks about the stuff lying around','
Just a Random babble as I setup my podcasting rig in the office,\nclearing out some old stuff and telling you about what I encounter.
\n',111,0,0,'CC-BY-SA','linux, podcasting, retro',0,0,1),
(3958,'2023-10-04','Bikepacking in 1993 without technology',1163,'Knightwise looks back at his very first bikepacking adventure and its absence of technology','
\n',111,0,0,'CC-BY-SA','cycling, soundseeing, travel, technology, ',0,0,1),
(3952,'2023-09-26','Making the Case for Markdown',404,'Keith discusses the background and applications for Markdown.','
\n',266,0,0,'CC-BY-SA','markdown,plain text,writing,text editors,file formats',0,0,1),
(3954,'2023-09-28','Sedating HPR at the Steading',4462,'MrX and Dave Morriss have lunch and record another chat','\n
We recorded this on Sunday September 3rd 2023. We met in\nperson again, and as before first visited the pub called The\nSteading where we had lunch. Then we adjourned to Dave\'s car in the\ncar park, and recorded a chat.
\n
The name \"Steading\" is another (Scots?) version of \"Farmstead\", and\nmeans the same. It\'s also an anagram of \"Sedating\"1, so\n...
\n
Topics discussed
\n
\n
Vaccines:\n
\n
Dave has an appointment for COVID-19 and\ninfluenza vaccines. The new Omicron\nvariant BA.2.86 has prompted another booster for some people.
Dave took a trip on the recently extended Edinburgh tram\n
\n
There is only one route, from the airport to Leith (port).
\n
Older residents get free access.
\n
\n
MrX and MrsX recently walked from the centre of Edinburgh along the\nWater of Leith to the\narea where the tram terminus is at Newhaven.
\n
\n
\n
\n
Email:\n
\n
Dave is using version Thunderbird 115.1.1 which\nis a rewrite of the original series where the API has now changed a\nlot.
\n
Long-used add-ons now no longer work:\n
\n
A favourite was Mailbox Alert which triggered sound alerts\n(or others) then mail arrived in a folder - so this could be after\nfiltering. This was much more useful than the traditional \"You have\nmail\" type alerts.
\n
\n
Discussion of tags:\n
\n
MrX mentions tags, meaning bits of text that can be attached to\nmessages and used to classify them and to search for them.
\n
In Gmail there are labels which can do this and these can\nbe used to group messages regardless of folders
\n
Thunderbird also has this concept which it calls tags. It\ncomes with pre-defined tags such as Important and\nTo Do, but more tags can be added. Any message can be\ngiven one or more tags. The filtering system can add tags as a message\nis processed. Searches can be performed on tags also.
\n
Dave is an enthusiast of nested folders with filters to classify\nmessages. MrX is keen on using tags for the same purpose. Dave mentioned\nThunderbird\'s saved search feature (which he wrongly called\nvirtual mailboxes) which can collect messages according to many\ncriteria, including tags.
\n
Some discussion about mail message storage strategies: file per\nmessage, mbox format, etc.
\n
\n
\n
\n
\n
Ticks:\n
\n
MrX\'s dog has brought some ticks back from recent walks.
\n
Scotland seems to be a bit worse off for ticks in recent years.
\n
Hikers need to protect against them and to perform checks that they\nare not on clothes. Wearing long socks or gaiters over long trousers can\nhelp.
\n
Lyme\nDisease is a bacterial infection that can be passed by ticks.
\n
This Week in Parasitism\nrecently talked about an unpleasant disease caught from ticks, Babesiosis\n(not bacterial as Dave thought, but caused by a protozoan). This was in\nthe USA; the disease doesn\'t seem to be in the UK at the moment.
MrX attended a show by Michael Shafar, the comedian
\n
Dave hasn\'t been to much at the Festival/Fringe in recent years. He\nsaw the Doug Anthony\nAll Stars when they were active many years ago, and found them funny\nbut intimidating!
A channel about cycling and city design. The channel owner is\nCanadian but has moved to Amsterdam for a better life for himself and\nhis family. He highlights the differences between North American city\ndesign and the design of many European cities.
Another channel about cycling in the Netherlands. This channel host,\nMark Wagenbuur, is Dutch and does videos about cycle routes, and their\ndevelopment. Lots of videos made as he cycles a route. He is based in ’s-Hertogenbosch\n(map)\nand cycles in the region and to and from Utrecht.
\n\n\n',225,0,1,'CC-BY-SA','Edinburgh, The Steading, discussion',0,0,1),
(3964,'2023-10-12','Hacker Public Radio at OLF',3078,'Friends from Hacker Public Radio meetup to record an episode from the conference.','
\n',270,0,1,'CC-BY-SA','OLF, Linux Fest, Conference',0,0,1),
(4196,'2024-09-02','HPR Community News for August 2024',0,'HPR Volunteers talk about shows released and comments posted in August 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3966,'2023-10-16','Vim Hints: 006',1503,'Various contributors lead us on a journey of discovery of the Vim (and vi) editors.','
My .vimrc config.
\n
" General\nset confirm " Display confirmation dialog when closing unsaved files\nset number " Show line numbers\nset number relativenumber " Show line numbers relative to curser\nset cursorline " Highlight the current line\nset guicursor=\nset scrolloff=23 " Number of screen lines above and below the cursor\nset colorcolumn=80 " Line 76 and 80 are colored\n:hi ColorColumn ctermbg=Magenta " Column colors\nset nowrap " Do not wrap lines\nset list\nset listchars=eol:\n,tab:⭾⭾,trail:~,extends:>,precedes:<,space:⎵\nset showmatch " Highlight matching brace\nset visualbell " Use visual bell (no beeping)\nset showcmd " Show partial commands in the last line\n\nset hlsearch " Highlight all search results\nset smartcase " Enable smart-case search\nset ignorecase " Always case-insensitive\nset incsearch " Searches for strings incrementally\nset wildmenu " Display tab complete options menu\nset encoding=utf-8 " Use an encoding that supports unicode\n\n"set autoindent " Auto-indent new lines\n"set smartindent " Enable smart-indent\n"set smarttab " Enable smart-tabs\nset shiftwidth=4 " Number of auto-indent spaces\nset softtabstop=4 " Number of spaces per Tab\nset tabstop=4 " Indent using four spaces\nset expandtab " Convert tabs to spaces.\n\n" Advanced\nset ruler " Show row and column ruler information\n"set showtabline=2 " Show tab bar\nset cmdheight=2 " Command line height\n\nset undolevels=1000 " Number of undo levels\nset backspace=indent,eol,start " Backspacing over indention, line breaks and insertion start\nset dir=~/.cache/vim " Directory to store swap files\nset backupdir=~/.cache/vim " Directory to store backup files\nset undodir=~/.cache/vim/undo " Directory to store undo cache\n\nnnoremap <silent> <C-l> :nohl<CR>\nnnoremap <silent> <C-s> :term<CR>\nnnoremap <silent> <leader>[ :bp<CR>\nnnoremap <silent> <leader>] :bn<CR>\nnnoremap <leader>so :so ~/.config/vim/sessions/\nnnoremap <silent> <F3> :set list!<CR>\nnnoremap <silent> <leader>cc :set cc-=5<CR>:set cc-=76<CR>\nnnoremap <silent> <leader>cc1 :set cc+=5<CR>:set cc-=76<CR>\nnnoremap <silent> <leader>cc2 :set cc+=76<CR>:set cc-=5<CR>\nvnoremap <silent> <F6> :w !xsel -ib<CR><CR>\nnnoremap <silent> <F7> :-r !xsel -ob<CR>\n\nnnoremap <leader>7 :setlocal spell spelllang=en_us<CR>\nnnoremap <leader>8 :setlocal nospell<CR>
Just because I don\'t want to be a tease; here is the Thunderbird\none-liner. Don\'t die on that hill! \nnnoremap <leader>1 2dw$x0:s/ OR /rOR /g<CR>gg02f,<C-v>G$ugg02f,<C-v>G$:sort u<CR>gg0VG:s/$/ /<CR>gg0VG:s/ *$/ /<CR>ggVGJIcondition=\"<Esc>A\"<Esc>0:s/ \"$/\"/<CR>:w<CR>
\n',391,82,0,'CC-BY-SA','RESERVE SHOW,Vim, :mksessions, :source, .vimrc, vim hints',0,0,1),
(3967,'2023-10-17','Unsolicited thoughts on running open source software projects',451,'A man talks to himself during his drive home from work.','
Some thoughts on the different ways you can run an open source\nsoftware project, comparing projects like password-store, which are\nbased on a mailing list and use a minimal forge platform, and others\nthat are based on a fancy forge like Github.
\n
I think the fancy forge gives the open source software project a vibe\nthat we\'re more used to, in our capitalist society. It\'s a more\ncentralized structure that feels more like a service that\'s being\noffered to the public, mostly in one direction. Meanwhile software\nprojects that don\'t have a platform for creating road maps, issues, pull\nrequests etc actually foster a stronger and more open community\nstructure, rather counter-intuitively, because the software is free and\neveryone is able to contribute and modify the software for their own\nuse, and they in fact do. The idea of a canonical version of the\nsoftware is only a convenience, not a defining feature of it.
\n
Let me know your thoughts on this.
\n',399,0,0,'CC-BY-SA','RESERVE SHOW,software governance',0,0,1),
(3968,'2023-10-18','About USBimager - part 1/2',681,'Why you should be using USBimager too, an introduction.','
USBImager is a really really simple GUI application that writes\ncompressed disk images to USB drives and creates backups.
\n',421,0,0,'CC-BY-SA','RESERVE SHOW,flash,writing,software,usb',0,0,1),
(3969,'2023-10-19','Game Sales',865,'I have recently found some bargains and wanted the share that with the community.','
There are some games I will buy for the full prices as soon as they\nare released, such as any of the Civilization games. But I also like to\nfind bargains, and I recently scored a fantastic deal on Steam that\nmotivated me to share this information with the community since I know\nthere are other people out there who enjoy computer games.
Message filters allow you to set up Thunderbird to organize your\nmessages automatically. Each account has its own set of filters. Filters\ncan move messages to folders, delete them, forward them to other email\naddresses, and more.
\n
When you receive new mail - This is when Getting New Mail is\nselected (the default). Filters are applied to new mail in the inbox.\nThis can occur either before Thunderbird does its assessment of the mail\nas junk, or after. If you have difficulty with filtering the message\nbody, select after classification.
\n
Automatically applied filters are applied only to the inbox, with\nthe exception of Archive and after send filters, which apply only to the\nmails involved in the action to send or archive. Other folder types are\nnot affected.
Thunderbird can save passwords for each account, so you don\'t have\nto re-enter them when you check for new messages. You can view them and\nremove the ones you don\'t use anymore.
\n
Do you want to prevent others from seeing your\nmessages? If you are sharing a computer, the most secure way is\nto create a separate OS user account on the operating system for each\nperson, and make sure your OS account requires a password. Thunderbird\nstores accounts, messages and password information separately for each\noperating system account.
\n',391,0,0,'CC-BY-SA','Thunderbird, email filters, inbox filters',0,0,1),
(3974,'2023-10-26','About USBimager - part 2/2',938,'Why you should be using USBimager too, an introduction.','
Because you want to make changes on a storage device, you are asked\nto enter your password. You can add your user to the group: disk to\navoid this.
\n
who or whoami - my login-name
\n
id - more details
\n
groups - all your groups
\n
less /etc/group | grep disk - focus on disk
\n
Add an existing user to another group, like this:
\n
sudo usermod -aG disk LOGIN-NAME
\n
I saw my entry not immediately check it with:\ncat /etc/group
\n',421,0,0,'CC-BY-SA','flash, writing, software, usb',0,0,1),
(3975,'2023-10-27','Mesa Verde 20230618',649,'Our story of a day tour in Mesa Verde, Colorado','
We had occasion to travel to Colorado for a wedding, and took a\nlittle extra time to visit Mesa Verde. This is a site originally\ninhabited by the Puebloan people (as the Spanish called them) that was\nlocated on a Mesa in the vicinity of the Rocky Mountains. The site is\nnot far from New Mexico, and our tour was fascinating, so I am sharing\nit with you.
\n',198,119,0,'CC-BY-SA','Travel, Native Americans, Colorado',0,0,1),
(3976,'2023-10-30','The Evolution of Windows\' Snipping Tool',348,'KD gives some history of the evolution of screenshot capabilities on Windows.','
\n',266,0,0,'CC-BY-SA','software, screenshot, screen capture, technology, utilities, windows',0,0,1),
(3977,'2023-10-31','Creative Commons Search Engine',277,'There is a new search engine for Creative Commons content','
Creative Commons has a new search engine available called Openverse.\nThis is the evolution of the old CC Search developed by Creative\nCommons, which was taken over by WordPress, and now has further\nevolved.
\n',198,0,0,'CC-BY-SA','Creative Commons, public domain, licensed content',0,0,1),
(3978,'2023-11-01','Driving in Virginia.',1813,'Sgoti talks about driving in the state of Virginia.','
Source:DMV Law\nEnforcement Division. DMV special agents have offices inside the\ncustomer service centers where they respond immediately to concerns,\nsuch as individuals who attempt to pass counterfeit documents. Their\npresence serves not only to deter attempts of criminal activity, but\nalso to facilitate partnerships with DMV customer service\nrepresentatives as a first line defense in the detection of fraudulent\ndocuments and apprehension of offenders. Field Investigations agents\nalso are charged with enforcing the Virginia Code section intended to\nprotect Virginia consumers from unsafe vehicles and vehicle fraud\narising from the illegal sale of vehicles without the required business\nand motor vehicle dealer licenses, safety inspections, warranties,\ntitling, or taxes. This statute also protects licensed motor vehicle\ndealers from unfair and illegal competition and ensures that the state\nand localities collect appropriate revenues.
\n',391,0,0,'CC-BY-SA','Virginia, Driving, CDL, Fraud',0,0,1),
(3979,'2023-11-02','FireStick and ad blocking',1501,'operat0r talks about recent apps for firestick and blocking ads','
I talk about recent apps for firestick and blocking ads
\n',36,0,1,'CC-BY-SA','streaming,tv,ad blocking,youtube',0,0,1),
(3982,'2023-11-07','Conversation with ChatGPT',218,'Conversation with ChatGPT about EU Cookie banners','
The\nfollowing conversation is from my query to ChatGPT
\n',318,0,0,'CC-BY-SA','ChatGPT, EU, GDPR, cookies',0,0,1),
(3983,'2023-11-08','ChatGPT Output is not compatible with CC-BY-SA',536,'Ken is not a lawyer but is fairly sure that ChatGPT is not compatible with Creative Commons','
All our shows are now released under a Creative Commons\nAttribution-ShareAlike 4.0 International (CC BY-SA 4.0) license, which\nmeans that while you continue to retain the copyright to your show, you\nare allowing us (and everyone else) to use it provided we give you\nattribution and that we release it under the same license. Click the\nlink for more information.
On the face of it the\nOpenAI\nChatGPT Terms of use seem similar, with Section 3 saying \"you can\nuse Content for any purpose, including commercial purposes\".\nUnfortunately they then go on to say \"Subject to your compliance with\nthese Terms\":
\n
3. Content\n\n (a) Your Content. You may provide input to the Services (“Input”), and\n receive output generated and returned by the Services based on the Input\n (“Output”). Input and Output are collectively “Content.” As between the\n parties and to the extent permitted by applicable law, you own all\n Input. Subject to your compliance with these Terms, OpenAI hereby\n assigns to you all its right, title and interest in and to Output. This\n means you can use Content for any purpose, including commercial purposes\n such as sale or publication, if you comply with these Terms. OpenAI may\n use Content to provide and maintain the Services, comply with applicable\n law, and enforce our policies. You are responsible for Content,\n including for ensuring that it does not violate any applicable law or\n these Terms.
\n
The same document lists some restrictions...
\n
2. Usage Requirements\n\n (c) Restrictions. You may not (i) use the Services in a way that\n infringes, misappropriates or violates any person’s rights; (ii) reverse\n assemble, reverse compile, decompile, translate or otherwise attempt to\n discover the source code or underlying components of models, algorithms,\n and systems of the Services (except to the extent such restrictions are\n contrary to applicable law); (iii) use output from the Services to\n develop models that compete with OpenAI;
You can of course refer to ChatGPT as you would any other non\nCreative Commons site.
\n
If you disagree or would like to weigh in please discuss this on the\nmail list.
\n',30,0,0,'CC-BY-SA','CreativeCommons, CC-BY-SA, ChatGPT, HPR, CC',0,0,1),
(3984,'2023-11-09','Whoppers. How Archer72 and I made moonshine. Volume one.',1730,'Sgoti assists Archer72 with his crazy plan to make moonshine.','
A work of Fiction\nis any creative work, chiefly any narrative work, portraying\nindividuals, events, or places that are imaginary or in ways that are\nimaginary. \n
\n
\n
Source:Moonshine is\nhigh-proof liquor, generally whiskey, traditionally made, or at least\ndistributed, illegally. \n
\n
Supporting Source:busthead\n(bust-head). noun. Cheap, strong liquor, usually of the illegal\nvariety. Moonshine. Hooch. Poteen. Pop-skull. Bumblings. The origin is\nobvious to anyone who’s hit the busthead a little hard themselves. \n
\n
\n
The Bureau of Alcohol, Tobacco, Firearms and Explosives (BATFE),\ncommonly referred to as the ATF, is a domestic law enforcement agency\nwithin the United States Department of Justice. \n
\n',391,0,1,'CC-BY-SA','Whoppers, Moonshine, Archer72',0,0,1),
(3985,'2023-11-10','Bash snippet - be careful when feeding data to loops',1644,'A loop in a pipeline runs in a subshell','\n
Overview
\n
Recently Ken Fallon did a show on HPR, number\n3962, in which he used a Bash\npipeline of multiple commands feeding their output into a\nwhile loop. In the loop he processed the lines produced by\nthe pipeline and used what he found to download audio files belonging to\na series with wget.
\n
This was a great show and contained some excellent advice, but the\nuse of the format:
\n
pipeline | while read variable; do ...
\n
reminded me of the \"gotcha\" I mentioned in my own show\n2699.
\n
I thought it might be a good time to revisit this subject.
\n
So, what\'s the problem?
\n
The problem can be summarised as a side effect of pipelines.
\n
What are pipelines?
\n
Pipelines are an amazingly useful feature of Bash (and other shells).\nThe general format is:
\n
command1 | command2 ...
\n
Here command1 runs in a subshell and produces output (on\nits standard output) which is connected via the pipe symbol\n(|) to command2 where it becomes its\nstandard input. Many commands can be linked together in this\nway to achieve some powerful combined effects.
The printf command (≡\'command1\') writes two\nlines (separated by newlines) on standard output and this is\npassed to the sort command\'s standard input\n(≡\'command2\') which then sorts these lines\nalphabetically.
\n
Commands in the pipeline can be more complex than this, and in the\ncase we are discussing we can include a loop command such as\nwhile.
\n
For example:
\n
$ printf 'World\nHello\n' | sort | while read line; do echo "($line)"; done\n(Hello)\n(World)
\n
Here, each line output by the sort command is read into\nthe variable line in the while loop and is\nwritten out enclosed in parentheses.
\n
Note that the loop is written on one line. The semi-colons are used\ninstead of the equivalent newlines.
\n
Variables and subshells
\n
What if the lines output by the loop need to be numbered?
\n
$ i=0; printf 'World\nHello\n' | sort | while read line; do ((i++)); echo "$i) $line"; done\n1) Hello\n2) World
\n
Here the variable \'i\' is set to zero before the\npipeline. It could have been done on the line before of course. In the\nwhile loop the variable is incremented on each iteration\nand included in the output.
\n
You might expect \'i\' to be 2 once the loop exits but it\nis not. It will be zero in fact.
\n
The reason is that there are two \'i\' variables. One is\ncreated when it\'s set to zero at the start before the pipeline. The\nother one is created in the loop as a \"clone\". The expression:
\n
((i++))
\n
both creates the variable (where it is a copy of the one in the\nparent shell) and increments it.
\n
When the subshell in which the loop runs completes, it will delete\nthis version of \'i\' and the original one will simply\ncontain the zero that it was originally set to.
\n
You can see what happens in this slightly different example:
\n
$ i=1; printf 'World\nHello\n' | sort | while read line; do ((i++)); echo "$i) $line"; done\n2) Hello\n3) World\n$ echo $i\n1
\n
These examples are fine, assuming the contents of variable\n\'i\' incremented in the loop are not needed outside it.
\n
The thing to remember is that the same variable name used in a\nsubshell is a different variable; it is initialised with the value of\nthe \"parent\" variable but any changes are not passed back.
\n
How to avoid the\nloss of changes in the loop
\n
To solve this the loop needs to be run in the original shell, not a\nsubshell. The pipeline which is being read needs to be attached to the\nloop in a different way:
\n
$ i=0; while read line; do ((i++)); echo "$i) $line"; done < <(printf 'World\nHello\n' | sort)\n1) Hello\n2) World\n$ echo $i\n2
\n
What is being used here is process\nsubstitution. A list of commands or pipelines are enclosed with\nparentheses and a \'less than\' sign prepended to the list\n(with no intervening spaces). This is functionally equivalent to a\n(temporary) file of data.
\n
The redirection feature allows for data being read from a\nfile in a loop. The general format of the command is:
\n
while read variable\n do\n # Use the variable\n done < file
\n
Using process substitution instead of a file will achieve what is\nrequired if computations are being done in the loop and the results are\nwanted after it has finished.
\n
Beware of this type of\nconstruct
\n
The following one-line command sequence looks similar to the version\nusing process substitution, but is just another form of pipeline:
\n
$ i=0; while read line; do echo $line; ((i++)); done < /etc/passwd | head -n 5; echo $i\nroot:x:0:0:root:/root:/bin/bash\ndaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\nbin:x:2:2:bin:/bin:/usr/sbin/nologin\nsys:x:3:3:sys:/dev:/usr/sbin/nologin\nsync:x:4:65534:sync:/bin:/bin/sync\n0
\n
This will display the first 5 lines of the file but does it by\nreading and writing the entire file and only showing the first 5 lines\nof what is written by the loop.
\n
What is more, because the while is in a subshell in a\npipeline changes to variable \'i\' will be lost.
\n
Advice
\n
\n
Use the pipe-connected-to-loop layout if you\'re aware of\nthe pitfalls, but will not be affected by them.
\n
Use the read-from-process-substitution format if you\nwant your loop to be complex and to read and write variables in the\nscript.
\n
Personally, I always use the second form in scripts, but if I\'m\nwriting a temporary one-line thing on the command line I usually use the\nfirst form.
\n
\n
Tracing pipelines (advanced)
\n
I have always wondered about processes in Unix. The process you log\nin to, normally called a shell runs a command language\ninterpreter that executes commands read from the standard input or\nfrom a file. There are several such interpreters available, but we\'re\ndealing with bash here.
\n
Processes are fairly lightweight entities in Unix/Linux. They can be\ncreated and destroyed quickly, with minimal overhead. I used to work\nwith Digital Equipment Corporation\'s OpenVMS operating system\nwhich also uses processes - but these are much more expensive to create\nand destroy, and therefore slow and less readily used!
\n
Bash pipelines, as discussed, use subshells. The description\nin the Bash man page says:
\n
\n
Each command in a multi-command pipeline, where pipes are created, is\nexecuted in a subshell, which is a separate process.
\n
\n
So a subshell in this context is basically another child\nprocess of the main login process (or other parent process), running\nBash.
\n
Processes (subshells) can be created in other ways. One is to place a\ncollection of commands in parentheses. These can be simple Bash\ncommands, separated by semi-colons, or pipelines. For example:
Here the strings \"World\" and \"Hello\", each\nfollowed by a newline are created in a subshell and written to standard\noutput. These strings are piped to sort and the end result\nis as shown.
\n
Note that this is different from this example:
\n
$ echo "World"; echo "Hello" | sort\nWorld\nHello
\n
In this case \"World\" is written in a separate command,\nthen \"Hello\" is written to a pipeline. All\nsort sees is the output from the second echo,\nwhich explains the output.
\n
Each process has a unique numeric id value (the process id\nor PID). These can be seen with tools like ps or\nhtop. Each process holds its own PID in a Bash variable\ncalled BASHPID.
\n
Knowing all of this I decided to modify Ken\'s script from show\n3962 to show the processes being created - mainly for my interest,\nto get a better understanding of how Bash works. I am including it here\nin case it may be of interest to others.
The point of doing this is to get information about the pipeline\nwhich feeds data into the while loop. I kept the rest\nintact but commented out the wget command.
\n
For each component of the pipeline I added an echo\ncommand and enclosed it and the original command in parentheses, thus\nmaking a multi-command process. The echo commands write a\nfixed number so you can tell which one is being executed, and it also\nwrites the contents of BASHPID.
\n
The whole thing writes to a temporary file\n/tmp/hpr3962.sh.out which can be examined once the script\nhas finished.
\n
When the script is run it writes the following:
\n
$ ./hpr3962.sh\nFinal value of $count = 0\nRun 'cat /tmp/hpr3962.sh.out' to see the PID numbers
\n
The file mentioned contains:
\n
Starting PID is 80255\n[1] 80256\n[2] 80257\n[3] 80258\n[4] 80259\n[4] 80259
\n
Note that the PID values are incremental. There is no guarantee that\nthis will be so. It will depend on whatever else the machine is\ndoing.
\n
Message number 4 is the same for every loop iteration, so I stopped\nit being written after two instances.
\n
The initial PID is the process running the script, not the login\n(parent) PID. You can see that each command in the pipeline runs in a\nseparate process (subshell), including the loop.
\n
Given that a standard pipeline generates a process per command, I was\nslightly surprised that the PID numbers were consecutive. It seems that\nBash optimises things so that only one process is run for each element\nof the pipe. I expect that it would be possible for more processes to be\ncreated by having pipelines within these parenthesised lists, but I\nhaven\'t tried it!
\n
I found this test script quite revealing. I hope you find it useful\ntoo.
\n\n',225,42,1,'CC-BY-SA','Bash,loop,process,shell',0,0,1),
(3992,'2023-11-21','Test recording on a wireless mic',223,'Archer72 tests out a wireless mic with a USB C receiver','
LEKATO 2\nPack Wireless Microphone with Charging Case
\n',318,0,0,'CC-BY-SA','Recording, Microphone, Wireless, USB \'C\', F-droid, Android App',0,0,1),
(4221,'2024-10-07','HPR Community News for September 2024',0,'HPR Volunteers talk about shows released and comments posted in September 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4241,'2024-11-04','HPR Community News for October 2024',0,'HPR Volunteers talk about shows released and comments posted in October 2024','',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3986,'2023-11-13','Optical media is not dead',435,'Archer72 shows command line options for creating and writing iso files','
-U\n\nAllows "untranslated" filenames, completely violating the ISO9660 standards described above. Enables the following flags: -d -l -N -allow-leading-dots -relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translate. Allows more than one `.' character in the filename, as well as mixed-case filenames. This is useful on HP-UX, where the built-in cdfs filesystem does not recognize any extensions. Use with extreme caution.\n\n-R\n\nGenerate SUSP and RR records using the Rock Ridge protocol to further describe the files on the ISO9660 filesystem.\n\n[Wikipedia - ISO 9660](https://en.wikipedia.org/wiki/ISO_9660#SUSP "Wikipedia - ISO 9660")
\n
Corrected command
\n
genisoimage -R -o mydvd.iso "$1"
\n
Burning data to a DVD or Blu-ray
\n
Note:
\n
Make sure that the medium is not mounted when you begin to write to\nit. Mounting may happen automatically if the medium contains a readable\nfile system. In the best case, it will prevent the burn programs from\nusing the burner device. In the worst case, there will be misburns\nbecause read operations disturbed the drive. So if in doubt, do:
\n
umount /dev/sr0
\n
growisofs has a small bug with blank BD-R media. It issues an error\nmessage after the burning is complete. Programs like k3b then believe\nthe whole burn run failed. To prevent this, either format the blank BD-R\nby dvd+rw-format /dev/sr0 before submitting it to growisofs or use\ngrowisofs option
\n',318,0,0,'CC-BY-SA','Command line, Create ISO, Burn ISO, Optical media, DVD, CD, Blu-ray',0,0,1),
(3987,'2023-11-14','The Grim Dawn',2391,'Sgoti rambles about a video game called Grim Dawn.','
Supporting Source:Soldier\nClass. Soldiers readily charge into the carnage and unleash crushing\nmight upon their foes. Their physical prowess is unmatched and their\nability to survive through the most brutal conflicts makes them an\nexcellent choice for defense-oriented players.
\n',391,0,0,'CC-BY-SA','Grim Dawn, ARPG, Diablo 4, Video Games',0,0,1),
(3988,'2023-11-15','Beeper.com',750,'operat0r talks about Beeper dot com a multi chat client','
I talk about Beeper dot com a multi chat client
\n
Beeper is a universal messaging app that lets you chat with anyone on\nany chat app, including Whatsapp, iMessage, Telegram and 12 other\nnetworks.
\n',36,0,1,'CC-BY-SA','chat,messaging,mobile',0,0,1),
(3989,'2023-11-16','LastPass Security Update 1 November 2023',553,'LastPass was hacked, what should you do?','
In 2022, LastPass disclosed that it had been hacked, and I think by\nnow just about everyone has heard about it. Now we have evidence that\npassword vaults have been hacked. So what does this mean, and what\nshould you do?
\n',36,0,1,'CC-BY-SA','security,computers,internet',0,0,1),
(3995,'2023-11-24','Creating Your Own Internet Radio Streaming Device',570,'Claudio talks about a couple of streaming radio solutions to make your own internet radio device.','
\n',152,0,0,'CC-BY-SA','moode,raspberrypi,audio,internetradio,streamingradio,multimedia,volumio,anonradio,tilderadio',0,0,1),
(3996,'2023-11-27','Holiday Challenges Series - Ep 1 - Advent of Code',221,'Discussing challenges to help you enjoy the holiday season','
Holiday\nChallenges Series - Ep 1 - Advent of Code
\n
Since some of the information you are about to hear is time specific,\nI want to let you know that I am recording this near the end of November\nin 2023.
\n
Whichever holidays you celebrate this time of year, life generally\ngets busy and stressful.
\n
It could be shopping \nor cooking \nor cleaning \nor school activities \nor buying, assembling, wrapping, and delivering gifts \nor planning time with family \nor dealing with visiting family \nor scheduling time off from work \nor managing extra work while others have scheduled time off \nor a whole plethora of other things. \nThis time of year can be stressful.
\n
A few years ago, I discovered a fun activity, which challenged my\nmind and helped me focus and detach from the stress for a little while\neach day, through the month of December. It helped me manage the stress\nin an enjoyable way.
\n
Since then, I have found and tried several other similar activities,\nso I wanted to share a little about them with you for the next few\nepisodes so you can see what might work for you.
But the TLDR (Or maybe the TLDL -- Too Long Didn\'t Listen?) for\nAdvent of Code is that it is a 25 day challenge which begins on December\n1. Once you register at adventofcode.com, Each day, you will be\npresented with a problem to solve and some sample data to use for\nverification that your program works. You can choose to use any\nprogramming language or application you desire produce the answer. Last\nyear, I used this to brush up on my Python skills. Others use Visual\nBasic, C (and all its variants), Rust, Go, etc. I have seen people use\nCobol, Fortran, and Pascal, or even Microsoft Excel. It is really up to\nyou. You are then presented a dataset which is unique to your login, and\nagainst which you run your code. When complete, you submit the answer\ncame up with on the adventofcode.com web site and they will tell you if\nyou are correct or not.
\n
If you are competitive (And REALLY GOOD) there is a Global\nLeaderboard. If you want to compete with a group of friends, you can\nbuild your own leaderboard and invite others to take part with you.
So, if you are looking for a way to challenge your mind and detach\nfrom holiday stress, Advent of Code may be something you might try.
\n
If this is not your cup of tea, I will be sharing several other\noptions for holiday challenges in future episodes.
\n',394,0,0,'CC-BY-SA','Advent of Code, holiday, challenge',0,0,1),
(3999,'2023-11-30','Holiday Challenges Series Ep 02 TryHackMe Advent of Cyber Challenge',183,'Discussing the TryHackMe Advent of Cyber challenge to help you enjoy the holiday season','
Holiday\nChallenges Series - Ep 2 - TryHackMe Advent of Cyber Challenge
\n
Since some of the information you are about to hear is time specific,\nI want to let you know that I am recording this near the end of November\nin 2023.
\n
If you missed the first episode, which introduces this series, you\ncan go back and listen to HPR3996
\n
I have been using TryHackMe for several years, and I recommend it to\nall of my students. It is a great environment where people can get hands\non experience with technology that relates to cyber security, all from\nthe comfort of their browser and free year-round.
\n
The TryHackMe Advent of Cyber challenge is a free gamified\nenvironment which focuses on penetration testing, security\noperations/engineering, forensics/incident response, malware analysis,\nmachine learning, and more!
\n
This year\'s challenge opens on December 1, 2023 (Which is the reason\nwhy I am posting twice this week). Typically, the Advent of Cyber\nchallenge includes daily beginner-friendly exercises for people new to\ncybersecurity. These can consist of walkthroughs, video tutorials, and\nchallenges. There are also prizes available based on random drawings and\non participant success.
\n
Infosec personalities like John Hammond, Gerald Auger, InsiderPHD,\nand InfoSec Pat are featured in this year\'s challenge.
\n
You can play with last year\'s Advent of Cyber challenge by visiting\nhttps://tryhackme.com/room/adventofcyber4. It outlines\nthe overall story and shows all of the tasks last year\'s participants\nexperienced, including both offensive and defensive topics like: log\nanalysis, OSINT, scanning, brute force attacks, email analysis,\nCyberChef, blockchain smart contracts, malware analysis, memory\nforensics, packet analysis, web application hacking, and more!
\n
Everything can be done with a free account from within a browser.
\n
If you want to learn more about cybersecurity, transition your career\ninto infosec, or just have fun playing with cyber challenges, you can\ngive it a try by visiting tryhackme.com or https://tryhackme.com/r/christmas
\n
Please note: I am not affiliated with TryHackMe in any way, other\nthan having been a paying member for many years. Students and others who\nhave participated in previous year\'s Advent of Cyber challenges have\ntold me how much they enjoyed it and learned from it. Even though I have\nbeen an infosec practitioner for more years than I would like to admit,\nI also have enjoyed taking part in this challenge.
\n
If this is not for you, I will be sharing another option for a\nholiday challenge in my next episode.
\n',394,0,0,'CC-BY-SA','Advent of Cyber, TryHackMe, Hands on, cyber, cybersecurity, infosec, holiday, challenge',0,0,1),
(4006,'2023-12-11','Holiday Challenges Ep 3 SANS Holiday Hack Challenge & KringleCon',160,'Discussing the SANS Holiday Hack Challenge & KringleCon to help you enjoy the holiday season','
Holiday\nChallenges Series - Ep 3 - SANS Holiday Hack Challenge with\nKringleCon
\n
Since some of the information you are about to hear is time specific,\nI want to let you know that I am recording this near the end of November\nin 2023.
\n
If you missed the first episode, which introduces this series, you\ncan go back and listen to HPR3996
\n
The SANS Holiday Hack Challenge is an interactive online technology\nand hacking game combined with a virtual security conference, beginning\nin the second week of December. By the time this episode drops, it may\nalready be live. You can tour the North Pole conference facilities,\nmeeting people, interactive non-player characters (NPC), and maybe even\nsome villains from Holiday Hack Challenges past, as you solve problems\nand gather clues which you use to help save Christmas.
\n
Everything can be done from within the browser, and did I mention\nthere is a virtual security conference, called KringleCon? Some of the\nbiggest rock stars (and most humble and brilliant people) in\nCyberSecurity speak each year at KringleCon. Many of their talks also\nprovide clues to solving game challenges.
\n
Ed Skoudis and his team (The same people who build SANS NetWars) work\ntirelessly year after year to create the most amazing experience,\ncomplete with custom music! This has become one of my favorite holiday\ntraditions each year. You can learn more about the 2023 challenge by\nwatching Ed\'s Inside SANS Holiday Hack Challenge 2023 YouTube video at\nhttps://www.youtube.com/watch?v=X9Gmdr_CxzQ
There, you will learn more about all things Holiday Hack before the\ngame opens in the second week of December. If you want to play now, or\njust get a feel for it, you can access three of the previous years\'\nchallenges right now at the same site.
\n
I am not associated with SANS or the Holiday Hack Challenge in any\nway, other than to have participated for several years now, and I have\nwatched other people learn and grow by taking part in it.
\n
I hope that you have enjoyed this short series. If there are other\nonline challenges you find interesting or informative, I encourage you\nto record a show about them.
\n
Have a wonderful day.
\n',394,0,0,'CC-BY-SA','SANS, KringleCon, holiday, challenge',0,0,1),
(3997,'2023-11-28','The Oh No! News.',875,'Sgoti talks about Malware distributed via Google\'s Dynamic Ads and more.','
The Oh No! news.
\n
Oh No! News is Good\nNews.
\n
\n
TAGS: Oh No, News, Threat analysis, InfoSec, Google\nDynamic Search Ads
A former NHS employee has been found guilty and fined for illegally\naccessing the medical records of over 150 people. \n
\n
Loretta Alborghetti, from Redditch, worked as a medical secretary\nwithin the Ophthalmology department at Worcestershire Acute Hospitals\nNHS Trust when she illegally accessed the records. \n
While NetSupport Manager started off as a legitimate remote\nadministration tool for technical assistance and support, malicious\nactors have misappropriated the tool to their own advantage, using it as\na beachhead for subsequent attacks. \n
The threat actors are believed to leverage Google\'s Dynamic Search\nAds (DSAs), which automatically generates ads based on a site\'s content\nto serve the malicious ads that take the victims to the infected\nsite. \n
Victims who clicked on the ad were taken to a hacked web page with a\nlink to download the application, which turned out to install over a\ndozen different pieces of malware instead. \n
What is a \"Data\nBreach\"? A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so. \n
\n
What is \"Malware\"?\nMalware (a portmanteau for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy. \n
\n
What is a \"Payload\"?\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection. \n
\n
What is \"Phishing\"?\nPhishing is a form of social engineering\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as ransomware. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim. \n
\n
Social\nengineering (security) In the context of information security,\nsocial engineering is the psychological\nmanipulation of people into performing actions or divulging\nconfidential information. A type of confidence trick for the purpose of\ninformation gathering, fraud, or system access, it differs from a\ntraditional \"con\" in that it is often one of many steps in a more\ncomplex fraud scheme. \n
Information Security Attributes:Confidentiality, Integrity and Availability (C.I.A.).\nInformation Systems are composed in three main portions, hardware,\nsoftware and communications with the purpose to help identify and apply\ninformation security industry standards, as mechanisms of protection and\nprevention, at three levels or layers: physical, personal and\norganizational. Essentially, procedures or policies are implemented to\ntell administrators, users and operators how to use products to ensure\ninformation security within the organizations. \n
\n
\n
What is \"Risk\nmanagement\"? Risk management is the identification, evaluation, and\nprioritization of risks followed by coordinated and economical\napplication of resources to minimize, monitor, and control the\nprobability or impact of unfortunate events or to maximize the\nrealization of opportunities. \n
\n
What is a \"Vulnerability\"\n(computing)? Vulnerabilities are flaws in a computer system that\nweaken the overall security of the device/system. Vulnerabilities can be\nweaknesses in either the hardware itself, or the software that runs on\nthe hardware. \n
\n
What is an \"Attack\nSurface\"? The attack surface of a software environment is the sum of\nthe different points (for \"attack vectors\") where an unauthorized user\n(the \"attacker\") can try to enter data to or extract data from an\nenvironment. Keeping the attack surface as small as possible is a basic\nsecurity measure. \n
\n
What is an \"Attack\nVector\"? In computer security, an attack vector is a specific path,\nmethod, or scenario that can be exploited to break into an IT system,\nthus compromising its security. The term was derived from the\ncorresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity. \n
\n
What is\n\"Standardization\"? Standardization is the process of implementing\nand developing technical standards based on the consensus of different\nparties that include firms, users, interest groups, standards\norganizations and governments. Standardization can help maximize\ncompatibility, interoperability, safety, repeatability, or quality. It\ncan also facilitate a normalization of formerly custom processes.\n
What is a \"Replay\nattack\"? A replay attack is a form of network attack in which valid\ndata transmission is maliciously or fraudulently repeated or delayed.\nAnother way of describing such an attack is: \"an attack on a security\nprotocol using a replay of messages from a different context into the\nintended (or original and expected) context, thereby fooling the honest\nparticipant(s) into thinking they have successfully completed the\nprotocol run.\" \n
\n
What is a\n\"Man-in-the-middle attack\"? In cryptography and computer security, a\nman-in-the-middle, ..., attack is a cyberattack where the attacker\nsecretly relays and possibly alters the communications between two\nparties who believe that they are directly communicating with each\nother, as the attacker has inserted themselves between the two\nparties. \n
\n
What is \"Transport Layer\nSecurity\" (TLS)? Transport Layer Security (TLS) is a cryptographic\nprotocol designed to provide communications security over a computer\nnetwork. The protocol is widely used in applications such as email,\ninstant messaging, and voice over IP, but its use in securing HTTPS\nremains the most publicly visible. \n
\n
What is a \"Handshake\"\n(computing)?. In computing, a handshake is a signal between two\ndevices or programs, used to, e.g., authenticate, coordinate. An example\nis the handshaking between a hypervisor and an application in a guest\nvirtual machine. \n
\n
What is Security\ntheater? The practice of taking security measures that are\nconsidered to provide the feeling of improved security while doing\nlittle or nothing to achieve it. \n
\n',391,74,0,'CC-BY-SA','Oh No News, Threat analysis, InfoSec, Google Dynamic Search Ads',0,0,1),
(4005,'2023-12-08','Sgoti\'s reply to multiple shows.',893,'Sgoti replies to a few HPR Shows.','
\n',391,0,0,'CC-BY-SA','reply show, password managers, lastpass',0,0,1),
(3998,'2023-11-29','Using open source OCR to digitize my mom\'s book',1847,'How I used open source tools such as gphoto2 and the OCR software tesseract to digitize pages','
To improve the speed of my workflow, I wrote a bash script that uses\nthe open source programs programs gphoto2,\ntesseract, grep and ImageMagick\nto digitize my mom\'s 338 page book. Here is the link to the script:\nhttps://github.com/deltaray/ocr-script
\n',194,0,0,'CC-BY-SA','ocr,opensource,grep,scripts,programming',0,0,1),
(4002,'2023-12-05','Today I learnt - 2023-11-24',477,'Some odds and ends I learnt today','\n
What\'s this?
\n
I enjoy finding out about things. Now I\'m retired (I have been for 14\nyears), I have time to research subjects I find interesting. So I\ndo!
\n
The HPR project is going through a phase where the queue can get very\nlow, so I thought having a subject where I could fire off short shows\nfrom time to time would help with this. Maybe we can make a series where\nothers who like the idea can contribute when the mood takes them!
\n
My plan is to keep details to a minimum and provide links to sources\nof more information if you\'re someone who likes to dig deeper!
\n
TIL 1 - is it learnt\nor learned?
\n
I discovered that both are acceptable. Both are the past tense (and\npast participle) of the verb \"to learn\":
\n
\n
learnt is an older form which is more common in British\nEnglish
\n
learned is more common in US English, and is becoming more\npopular in the UK
I watch a YouTube channel from a Canadian woodworker who produces\nEnglish and French versions of his episodes. His latest one is about\nmaking a wooden piggy bank, or tirelire in French.
\n
I learnt French at school (though I wasn\'t much good at it), but have\nnever come across this word. My questions are:
\n
\n
Where does it come from?
\n
How do you say it?
\n
\n
The Wiktionary page below has answers to both.
\n
\n
It\'s of onomatopoeic origin (representing the rattling of\ncoins).
\n
There\'s audio on the page showing how to say it (as well as the IPA\nversion [International Phonetic Alphabet], see below).
I actually learnt about this a while ago, but I thought now would be\na good time to share.
\n
The IPA form of tirelire is /tiʁ.liʁ/ (I\nincluded the enclosing slash delimiters which aren\'t part of the IPA but\nhave significance; see the IPA Wikipedia page for details). I have seen\nthese symbols for years but have never managed to decode them\nreliably.
\n
A few months ago I wondered how to deal with them reliably (and\neasily). There are many sites offering to transcribe English (and other\nlanguages) to IPA, a few of which are free. I only found one that would\nattempt to speak IPA, and that is IPA\nReader.
\n
Paste the IPA into the form, select a reader voice, and click \"Read\".\nSome of the voices seem a bit odd. I settled on \"Brian\" for British\nEnglish, and it seems fine.
\r\nKnightwise.com is a website with hacks tips and tweaks for cross platform geeks. The home of the Knightwise.com cross platform podcast that makes technology work for you and not the other way around. A place to go for all geeks who slide between Mac, iOS, Android, Linux and Windows offering an essential mix of hacks, tips, howtos and tweaks spiced up with a dash of geek culture.\r\n
\r\n
\r\nWhat is our philosophy?\r\nIn our daily lives, on the internet, whether we want it or not, hundreds of new inventions, thousands of websites and millions of bits of information engulf us as the tsunami of progress sweeps along the shores of time.\r\nYou have the choice: Be washed away on by the virtual surf or turn technology into a tool that works for you.\r\n
\r\n
\r\nHere at Knightwise.com we think that YOU are the most important element in the technology that surrounds you. Technology should enable you and not lock you in to some vendor or product. That is why we focus on cross platform solutions that work on any operating system or mobile device you might be using, making YOU and what you want to DO the focus of our content. We dont believe in fanboys, we dont believe in vendor lock-ins and we dont believe in brands. We cater to the geeks who slide from operating system to operating system, free their data and communications and let technology work for them instead of the other way around.\r\n
JWP is a linux follower - has a linux job and lives the life of a free Texan in the World making Texas where ever he might be.
','CC-BY-SA',1,'',1,'JWP'),
(130,'Jared Mayes','mayesja.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Jared Mayes'),
(131,'FiftyOneFifty (R.I.P.)','fiftyonefifty.nospam@nospam.linuxbasement.com','','CC-BY-SA',0,'',1,'FiftyOneFifty'),
(132,'Flaviu Simihaian','flaviu.nospam@nospam.closedbracket.com','','CC-BY-SA',0,'',1,'Flaviu Simihaian'),
(133,'sp0rus','sp0rus.cs.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'sporus'),
(134,'PipeManMusic','PipeManMusic.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'PipeManMusic'),
(135,'Johninsc','johninsc.nospam@nospam.myway.com','','CC-BY-SA',0,'',1,'Johninsc'),
(136,'Curbuntu','curbuntu.nospam@nospam.cox.net','','CC-BY-NC-SA',0,'',1,'Curbuntu'),
(137,'guitarman','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-NC-SA',0,'',1,'GuitarMan'),
(138,'arfab','clearnitesky.nospam@nospam.gmail.com','','CC-BY-NC-SA',0,'',1,'arfab'),
(139,'Ruji','toiletresin.nospam@nospam.gmail.com','','CC-BY-NC-SA',0,'',1,'Ruji'),
(140,'brother mouse','fratermus+hpr.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'brother mouse'),
(141,'Dismal Science','dismal.science.hpr.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Dismal Science'),
(142,'N50','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-NC-SA',0,'',1,'N50'),
(143,'Broam','brian.kemp.nospam@nospam.member.fsf.org','','CC-BY-SA',0,'',1,'Broam'),
(144,'sp0rus and biosshadow','sp0rus.cs.nospam@nospam.gmail.com','','CC-BY-NC-SA',0,'',1,'sporus and BiosShadow'),
(145,'Heisenbug','matt_hew.nospam@nospam.rocketmail.com','','CC-BY-NC-SA',0,'',1,'Heisenbug'),
(146,'JBu92','jbucky1092.nospam@nospam.gmail.com','','CC-BY-NC-SA',0,'',1,'JBu92'),
(147,'Sven','sven.nospam@nospam.noblanks.org','','CC-BY-SA',0,'',1,'Sven'),
(148,'Mark Katerberg and Courtney Schauer','mark.katerberg.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Mark Katerberg and Courtney Schauer'),
(149,'Trixter','trixter.nospam@nospam.oldskool.org','
I am a child of the early 1980s, defined by the personal computer explosion, new wave music, and post-modern artistic style of that era. Co-founded MobyGames. I\'m an assembly programmer, demoscener, unix systems engineer, husband, and father. I sometimes write things of dubious value at https://trixter.oldskool.org/.
','CC-BY-SA',0,'',1,'Trixter'),
(150,'Bariman','anthony.denton.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Bariman'),
(151,'dodddummy','jason.s.dodd.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'D O D D Dummy'),
(152,'Claudio Miranda','quadsix50.nospam@nospam.gmail.com','Mastodon: @claudiom@bsd.network\r\nBlog: https://claudiomiranda.wordpress.com','CC-BY-SA',0,'',1,'Claudio Miranda'),
(153,'Doug Farrell','doug.farrell.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Doug Farrell'),
(154,'MrsXoke','MrsXoke.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'MrsXoke'),
(155,'MrGadgets','hpr.nospam@nospam.mrgadgets.com','','CC-BY-SA',0,'',1,'MrGadgets'),
(156,'marcoz','marcoz.nospam@nospam.osource.org','','CC-BY-SA',0,'',1,'marcoz'),
(157,'HPR_AudioBookClub','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'HPR_AudioBookClub'),
(158,'Various Creative Commons Works','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-NC-SA',0,'',1,'Various Creative Commons Works'),
(159,'HPR Volunteers','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'HPR Volunteers'),
(160,'Robin Catling','fullcirclepodcast.nospam@nospam.googlemail.com','','CC-BY-SA',0,'',1,'Robin Catling'),
(161,'Jonathan Nadeau','feedback.nospam@nospam.frostbitemedia.org','','CC-BY-NC-SA',0,'',1,'Jonathan Nadeau'),
(162,'code.cruncher','code.cruncher_hpr.nospam@nospam.yahoo.ca','','CC-BY-SA',0,'',1,'code.cruncher'),
(163,'Brad Carter','brad.nospam@nospam.notla.com','','CC-BY-SA',0,'',1,'Brad Carter'),
(164,'scriptmunkee','scriptmunkee.nospam@nospam.gmail.com','','CC-BY-NC-SA',0,'',1,'scriptmunkee'),
(165,'Bob Evans','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-NC-SA',0,'',1,'Bob Evans'),
(167,'imahuph','imahuph.nospam@nospam.imahuph.net','','CC-0',0,'',1,'ImAHuph'),
(168,'sikilpaake and badbit','info.nospam@nospam.carlosduarte.info','','CC-BY-SA',0,'',1,'sikilpaake and badbit'),
(169,'Slurry','williams.jayson.nospam@nospam.gmail.com','','CC-BY-NC-SA',0,'',1,'Slurry'),
(170,'Dismal Science and Sunzofman1','dismal.science.hpr.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Dismal Science and SunzOfMan1'),
(171,'Brotherred','goy.ben.regesh.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Brotherred'),
(172,'ArigornStrider','arigornstrider.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'ArigornStrider'),
(173,'Joel','gorkon.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Joel'),
(174,'Josh Knapp','jknapp85.nospam@nospam.gmail.com','
\r\nSysadmin/Developer /Contractor/Consultant\r\n
','CC-0',0,'',1,'Josh Knapp'),
(175,'Dave','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-NC-SA',0,'',1,'Dave'),
(176,'finux and code.cruncher','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-NC-SA',0,'',1,'finux and code.cruncher'),
(177,'NewAgeTechnoHippie','newagetechnohippie.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'NewAgeTechnoHippie'),
(178,'Downer','downer.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Downer'),
(182,'Epicanis','epicanis+hpr.nospam@nospam.dogphilosophy.net','
\r\n\"Epicanis\" has been this correspondent\'s pseudonym on the internet for enough years to make him feel old and to make it an established enough identity to not want to change it now.\r\n
\r\n
\r\nA self-described Penguinista with a long career as a compu-janitor/systems administrator, Epicanis is broad-spectrum, \r\n multi-purpose \"Swiss-Army Nerd\", with a B.S. in Microbiology, an A.S. in Chemistry, a quarter-century of continuous\r\n I.T. experience and a desire to escape the economic roach-motel of rural northern Maine, so if you\'re looking to hire,\r\n let him know.\r\n
\r\n
\r\nYou can find him on Twitter and Google Plus via his pseudonym, and at (among other places) https://hpr.dogphilosophy.net\r\n
','CC-BY-SA',0,'',1,'Seetee'),
(193,'Kevin Granade','kevin.granade.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Kevin Granade'),
(194,'Deltaray','deltaray.nospam@nospam.slugbug.org','From the \"mid-west\" of the US. I am the creator/host of the @climagic account on Mastodon and (cough) Twitter.','CC-BY-SA',0,'',1,'Deltaray'),
(195,'Frank Bell','frank.nospam@nospam.pineviewfarm.net','
\r\nI am a long-time office software geek, and also a promoter of Free Software, so LibreOffice is a natural fit for me. I also have a series on HPR called Security and Privacy, and occasionally record shows that are non-series. I am also the former Tech Track organizer for Penguicon, an event in southeast Michigan, USA. Visit one of my sites at:\r\n
\r\nLinux and open source advocate from the Isle of Lewis in the north west of Scotland. I am a keen podcaster, co-host of CCJam, Crivins and TuxJam, you can find these at https://unseenstudio.co.uk\r\n
\r\n
\r\nI am on Twitter (@kevie49), but mainly active on joindiaspora.co.uk and micro.fragdev.com, where I am @kevie on both of these networks. \r\n
','CC-BY-SA',1,'',1,'Kevie'),
(212,'DoorToDoorGeek','doortodoorgeek.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'DoorToDoorGeek'),
(213,'bgryderclock','bgryderclock.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'bgryderclock'),
(214,'Nido Media','nido.nospam@nospam.foxserver.be','','CC-BY-SA',0,'',1,'Nido Media'),
(403,'Lee','leehanken.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Lee'),
(216,'goibhniu','goibhniu.nospam@nospam.fsfe.org','','CC-BY-SA',0,'',1,'goibhniu'),
(217,'aparanoidshell','aparanoidshell.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'aparanoidshell'),
(218,'Famicoman','famicoman.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Famicoman'),
(219,'ccmusique','ccmusique.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'ccmusique'),
(220,'doubi','ryan.jendoubi.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'doubi'),
(221,'cleavey','cleavey.nospam@nospam.ic24.net','','CC-BY-SA',0,'',1,'cleavey'),
(222,'The Air Staff of Erie Looking Productions','skellat.nospam@nospam.fastmail.net','','CC-BY-SA',0,'',1,'The Air Staff of Erie Looking Productions'),
(223,'Frederic Couchet','fcouchet.nospam@nospam.april.org','','CC-BY-SA',0,'',1,'Frederic Couchet'),
(224,'Zachary De Santos','niisa.nospam@nospam.gmx.co.uk','','CC-BY-SA',0,'',1,'Zachary De Santos'),
(225,'Dave Morriss','perloid.nospam@nospam.autistici.org','
Old Geek, lives in Scotland, writes scripts and stuff for amusement
','CC-BY-SA',1,' ',1,'gem log'),
(226,'bobobex','bobobex.nospam@nospam.bobobex.org','','CC-BY-SA',0,'',1,'BoBoBex'),
(227,'Dick Thomas','Dick.nospam@nospam.xpd259.co.uk','','CC-BY-SA',0,'',1,'Dick Thomas'),
(228,'Delwin','delwin.nospam@nospam.skyehaven.net','','CC-BY-SA',0,'',1,'Delwin'),
(229,'Charles in NJ','catintp.nospam@nospam.yahoo.com','','CC-BY-SA',0,'',1,'Charles in NJ'),
(230,'Dude-man','hpr.nospam@nospam.dudmanovi.cz','','CC-BY-SA',0,'',1,'Dude-man'),
(231,'Beto','beto.nospam@nospam.haventfoundme.com','','CC-BY-SA',0,'',1,'Beto'),
(232,'Peter64','peter.nospam@nospam.peter64.org','','CC-BY-SA',0,'',1,'Peter64'),
(233,'johanv','johan.vervloet.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'johanv'),
(234,'Emilien Klein','emilien+hpr.nospam@nospam.klein.st','','CC-BY-SA',0,'',1,'Emilien Klein'),
(235,'NYbill','nybill.nospam@nospam.gunmonkeynet.net','','CC-BY-SA',0,'',1,'N Y bill'),
(237,'Tgtm News Team','hpr.nospam@nospam.deepgeek.us','','CC-BY-SA',0,'',1,'Tgtm News Team'),
(238,'Jon Kulp','jonlancekulp.nospam@nospam.gmail.com','
\r\nMusic professor, open-source software enthusiast, Lafayette, LA. \r\nhttps://jonathankulp.org \r\n
','CC-BY-SA',0,'',1,'Jon Kulp'),
(239,'b1ackcr0w','alistair.nospam@nospam.amunro.net','','CC-BY-SA',0,'',1,'blackcrow'),
(240,'Steve Bickle','steve.nospam@nospam.bickle.co.uk','','CC-BY-SA',0,'',1,'Steve Bickle'),
(241,'Christopher M. Hobbs','cmhobbs.nospam@nospam.member.fsf.org','','CC-BY-SA',0,'',1,'Christopher M. Hobbs'),
(242,'Russ Wenner','russwenner.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Russ Wenner'),
(243,'Jezra','Jezra.nospam@nospam.jezra.net','','CC-BY-SA',0,'',1,'Jezra'),
(244,'Helvetin','reiststefan.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Helvetin'),
(245,'Deb Nicholson','dnicholson.nospam@nospam.openinventionnetwork.com','','CC-BY-SA',0,'',1,'Deb Nicholson'),
(246,'Beeza','nigelverity.nospam@nospam.hotmail.com','
\r\nBeeza has worked in just about every area of software development over the last 30 years, including long spells in the defence and finance industries. He is now relatively impoverished but far happier working for himself on a number of tech and non-tech projects. \r\n
','CC-BY-SA',0,'',1,'CoreNominal'),
(288,'beni','hpr.nospam@nospam.hb9hnt.ch','','CC-BY-SA',0,'',1,'beni'),
(289,'pyrrhic','notrofise.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'pyrrhic'),
(290,'Al','al.nospam@nospam.adminadminpodcast.co.uk','','CC-BY-SA',0,'',1,'Al'),
(291,'Rill','jefa.nospam@nospam.lajefa.net','','CC-BY-SA',0,'',1,'Rill'),
(292,'Michal Cieraszynski','planet444.nospam@nospam.gmail.com','I am a electronics and technology enthusiast as well as hobbyist who likes to mess around with computer hardware, video games, and other things in my spare time. https://www.planet444.com, my very neglected website. I only mention it here because one day I may actually update it.','CC-BY-SA',0,'',1,'Michal Cieraszynski'),
(293,'Rho`n','roan.horning.nospam@nospam.gmail.com','How grey does your beard need to be to be a grey beard?\r\n\r\n* Mastodon: @roan@fosstodon.org\r\n* Matrix: @rho_n:matrix.org\r\n','CC-BY-SA',1,'',1,'rowen'),
(294,'daw','douglasawh.nospam@nospam.gmail.com','
\r\nhttps://www.musicmanumit.com and https://micro.fragdev.com/daw are probably all you need. Although, I will say I am moving to Cincinnati summer 2015 and looking for work there (or telecommuting). So, you if you know something, let me know!\r\n
','CC-BY-SA',0,'',1,'T C U C '),
(299,'Fin','finlaygmitchell.nospam@nospam.gmail.com','','CC-BY-SA',1,'',1,'Fin'),
(300,'Mr. Young','by33zi.nospam@nospam.protonmail.com','
\r\nI am a dad, small-business owner, scientist, and Linux enthousiast with a lust for knowledge. You can find me on Mastadon at @ryoung39@mastodon.online\r\n
\r\nStarted on the Altair 8800 in 1979 in Middle School (Very lucky to have a teacher who had a Comp Sci Degree).\r\n
\r\n
\r\nStarted my Comp/Sci Degree in 1984. They ran UNIX System V with VT220 terminals. Had to learn VI editor, shell commands and C in first 2 weeks to complete the Lab. Did some Co-ops Work-Terms, graduated in 1990.\r\n
\r\n
\r\nDay Job is mostly Microsoft Environment, switched to Linux Mint at home summer of 2014.\r\n
\r\n
\r\nJust Started an Educational Youtube Channel (April 2015). I am the Voice of the GNU Bull and my daughter is the voice for the Linux Penguin. Later added the Blog and Podcast. Trying to make it Family Friendly and bring life to relatively dry topic - Documentation.\r\n
\r\nLong time listener of HPR, drawn to Linux in 2008, because of the accessibility features (Orca, font size and mouse pointer customizability) which I continue to use daily until today, now plus the screen magnifier. \r\n
\r\n
\r\nLately, started work on ChorusText, a device built with Arduino, Linux SBC and some sliders, and text-to-speech - an open assistive device for users with visual impairment. The main goal for ChorusText is as a non-visual text editor. Plase see www.chorustext.org for more details\r\n
On GNU/Linux since Amiga Watchtower, using it as my primary OS since Debian Slink, been on Ubuntu ever since it fulfilled the derailed UserLinux dream.
\r\n
These days I\'m running Ubuntu-Gnome, but I\'m considering NixOS+Guix as my primary OS, with a Debian chroot for the pieces that are missing.
\r\n','CC-BY-SA',1,'',1,'clacke'),
(387,'Cedric De Vroey','cedric.nospam@nospam.n0b0t.com','
\r\nHi, I\'m Cedric, and I work as a professional pentester. Social engineering, bypassing access controls both physical and digital, that\'s what I live for :-)\r\n
','CC-BY-SA',0,'',1,'Cedric De Vroey'),
(388,'Padraig Jeroen Fallon','pakie+hpr.nospam@nospam.bussum.org','
The Reluctant Windows Admin','CC-BY-SA',1,'',1,'OnlyHalfTheTime'),
(320,'The Linux Experiment','editor.nospam@nospam.thelinuxexperiment.com','
Help us take The Linux Experiment to the next level!
','CC-BY-SA',1,'',1,'The Linux Experiment'),
(322,'Cov','cov.nospam@nospam.mykolab.com','
\r\nChristopher \"Cov\" Covington is a fan of libre projects, currently living in North Carolina, United States of America. His personal site is https://covlibre.net/\r\n
I\'m this guy who likes computers. Computers and Burger King.
','CC-BY-SA',1,'',1,'MirrorShades'),
(326,'Brian in Ohio','bknavarette.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Brian in Ohio'),
(327,'noplacelikeslashhome','nathanpublicinbox.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'NoPlaceLikeSlashHome'),
(328,'Joe','jsilino.nospam@nospam.gmail.com','
\r\nHi, I\'m Joe Silino and I live in Upstate NY. I\'ve been using Linux since the late 90\'s and have recently entered the world of sound production. I\'m currently introducing my tech team at church to the benefits of the Open Source world and finding it very useful for many of my projects.\r\n \r\nhttps://soundcloud.com/calvaryworshipandtech \r\nhttps://soundcloud.com/ccsyracuse\r\n
\r\nI\'m a long haul trucker who runs all 48 states here in the US. I really enjoy tinkering with my laptops and used to do a lot of nuke and pave. I am afraid you wont find me on social media nor do I have a website. I don\'t really have much time for that stuff, and I have never been a big social butterfly, anyway. I live in north east Indiana, in the US. I am a father 3 times over, and Grampa twice over. Been married 26 years (yeah,... a VERY patient woman there). I work between 75 and 85 hrs a week, roughly 70 of it driving. I\'ve been an HPR listener for about 2-3 years now, but as of 15 April 2016, I am just now contributing my first episode (shame...). I will strive to do better, Ken...! \r\nPS: I really hate seeing people get scraped off the highways. I like tech too, but STOP TEXTING AND PLAYING WITH PHONES WHILE YOU DRIVE, EVERYONE. PLEASE!\r\n
Former network engineer, now delivery driver.','CC-BY-SA',0,'',1,'pope5 2 3'),
(334,'Steve Saner','hpr.nospam@nospam.saner.net','','CC-BY-SA',0,'',1,'Steve Saner'),
(424,'hobs','hobson.nospam@nospam.tangibleai.com','
\nPassion: Open source, open data, teachable AI that that you can trust. \nAuthor: _Natural Language Processing in Action_ 1st and 2nd Ed \nCTO: Social impact chatbots at Tangible AI (https://tangibleai.com) \nAdjunct Professor: Data Science (UCSD Extension), Computer Science (Mesa College) \nMentor: Data Science (Springboard) \nEducation: Robotics (MS, Georgia Tech) \n
handsome_pirate (John Dulaney) is a long time contributor to the Fedora Project. He is an avid rail enthusiast, and considers his model ships to be his artwork.
\r\nI\'m a middle age bloke who enjoys using and talking about computers and open source software. I started using Linux in 2006 and have been using it as my Operating System on all my PC\'s for the last 7 years. I\'m also an avid cook and enjoy creating new vegetarian recipes as I have been a vegetarian for over 26 years. \r\nI have an occasional Blog at: https://tony-hughes.blogspot.co.uk/\r\n
\r\nMidwest US-based freelance entertainment journalist focused on the game industry. Former professional software developer and current indie game hobbyist. \r\n
','CC-BY-SA',0,'',1,'Joey Hess'),
(342,'norrist','norrist.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'norrist'),
(2,'Kn1ghtl0rd','kn1ghtl0rd.nospam@nospam.hotmail.com','https://www.kn1ghtl0rd.org','CC-BY-SA',0,'',1,'Kn1ghtl0rd'),
(4,'Phizone','phizone.nospam@nospam.infonomicon.org','https://infonomicon.org','CC-BY-SA',0,'',1,'Phizone'),
(5,'Scedha','scheda.nospam@nospam.gmail.com','https://underfirenetwork.com','CC-BY-SA',0,'',1,'Scedha'),
(6,'J-Hood','JHood.nospam@nospam.JHood.biz','https://tehshow.org','CC-BY-SA',0,'',1,'J-Hood'),
(8,'LinLin','will.nospam@nospam.techcentric.org','https://www.techcentric.org','CC-BY-SA',0,'',1,'LinLin'),
(9,'Irongeek','irongeek.nospam@nospam.irongeek.com','https://irongeek.com','CC-BY-SA',0,'',1,'Irongeek'),
(10,'p0trill0','p0trill023.nospam@nospam.gmail.com','https://twatech.org','CC-BY-SA',0,'',1,'potrillo'),
(11,'Pat from TLLTS','patrickmdavila.nospam@nospam.gmail.com','Co-host of the The Linux Link Tech Show. Former host of the MythTVCast.','CC-BY-SA',0,'',1,'Pat from The Linux Link Tech Show'),
(12,'livinded','livinded.nospam@nospam.gmail.com','https://deadbytes.net','CC-BY-SA',0,'',1,'livinded'),
(13,'Jason Scott','jason.nospam@nospam.textfiles.com','https://www.textfiles.com','CC-BY-SA',0,'',1,'Jason Scott'),
(14,'Blackratchet','blackratchet.nospam@nospam.blackratchet.org','https://www.binrev.com','CC-BY-SA',0,'',1,'Blackratchet'),
(15,'Merk','Merk.nospam@nospam.iname.com','https://google.com','CC-BY-SA',0,'',1,'Merk'),
(16,'Madjimisimi','madjimisimi.nospam@nospam.gmail.com','https://google.com','CC-BY-SA',0,'',1,'Madjimisimi'),
(17,'Pixelfiend','pxfiend.nospam@nospam.gmail.com','https://google.com','CC-BY-SA',0,'',1,'Pixelfiend'),
(19,'Luminaire','salveya.nospam@nospam.gmail.com','https://google.com','CC-BY-SA',0,'',1,'Luminaire'),
(20,'Dominic Uilano','123.nospam@nospam.gmail.com','https://google.com','CC-BY-SA',0,'',1,'Dominic Uilano'),
(21,'Killersmurf','ksmurf99.nospam@nospam.gmail.com','https://google.com','CC-BY-SA',0,'',1,'Killersmurf'),
(22,'Electroman','electroman37.nospam@nospam.gmail.com','https://electrostuff.net','CC-BY-SA',0,'',1,'Electroman'),
(23,'Lowtek Mystik','lowtekmystik.nospam@nospam.walla.com','https://ninjanightschool.com/','CC-BY-SA',0,'',1,'Lowtek Mystik'),
(26,'ponyboy','cliffstoll.nospam@nospam.gmail.com','https://bellcoreradio.net/','CC-BY-SA',0,'',1,'ponyboy'),
(27,'Dr^ZigMan','drzigman.nospam@nospam.bellsouth.net','https://binrev.com','CC-BY-SA',0,'',1,'Dr^ZigMan'),
(28,'Kynan Dent','kynan.nospam@nospam.kynan.org','https://kynan.org','CC-BY-SA',0,'',1,'Kynan Dent'),
(31,'Xcalibur','xcalibur1337.nospam@nospam.gmail.com','https://www.google.com','CC-BY-SA',0,'',1,'Xcalibur'),
(32,'Metatron','metatron.nospam@nospam.fbillradio.com','','CC-BY-SA',0,'',1,'Metatron'),
(33,'dual_parallel','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'dual_parallel'),
(34,'Coder365','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'Coder365'),
(35,'Cottonballs','cottonballz.nospam@nospam.gmail.com','https://www.google.com','CC-BY-SA',0,'',1,'Cottonballs'),
(37,'Haq','burnmytime.nospam@nospam.gmail.com','https://www.google.com','CC-BY-SA',0,'',1,'Haq'),
(40,'coldsteal','antonnid.nospam@nospam.gmail.com','https://www.i-trash.org','CC-BY-SA',0,'',1,'coldsteal'),
(43,'GeoNine','projektdiscon.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'GeoNine'),
(44,'spiffytech','spiffytech.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'spiffytech'),
(45,'L3pprd/ocCode','l3pprd.nospam@nospam.gmail.com','https://occ0de.wordpress.com','CC-BY-SA',0,'',1,'L3pprd/ocCode'),
(46,'blackmath','blckmth.nospam@nospam.gmail.com','https://blackmath.org','CC-BY-SA',0,'',1,'blackmath'),
(47,'cid','cidviscous.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'cid'),
(49,'kotrin','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'kotrin'),
(50,'Dospod','drewmarin.nospam@nospam.gmail.com','https://dospod.i-trash.org','CC-BY-SA',0,'',1,'Dospod'),
(51,'Messyman','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'Messyman'),
(52,'javatard','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'javatard'),
(53,'Zach','admin.nospam@nospam.hackerpublicradio.org','https://packetsniffers.org','CC-BY-SA',0,'',1,'Zach'),
(54,'skrye','skrye.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'skrye'),
(56,'riscphree','riscphree.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'riscphree'),
(59,'MrE','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'MrE'),
(60,'Faceman','lt.faceman.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'Faceman'),
(61,'DarkShadow','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'DarkShadow'),
(63,'spaceout','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'spaceout'),
(65,'ThoughtPhreaker','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'ThoughtPhreaker'),
(66,'Adam','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'Adam'),
(67,'Draven','admin.nospam@nospam.hackerpublicradio.org','','CC-BY-SA',0,'',1,'Draven'),
(68,'Mc Frontalot','admin.nospam@nospam.hackerpublicradio.org','https://frontalot.com','CC-BY-SA',0,'',1,'Mc Frontalot'),
(343,'The Bishop','bishop-hpr.nospam@nospam.mondkalbantrieb.de','
\r\nHi, i am The Bishop from Berlin/Germany. \r\nMy computer experience started more than 30 years ago with Commodore Plus 4 and Commodore 64. Later on i continued with Commodore Amiga 500 and Amiga 1200. My first PC was an 80286-based. I started using Linux with Slackware 3.2(?) and Kernel 2.0.20.\r\n
\r\n
\r\nMy favourite topics are compression technology and cryptography. I\'m a guy interested in low level stuff down to the raw bits, i leave the modern GUI-programming for others.\r\n
\r\nI\'m an old retired dude. Former US Air Force and US Army living in the state of Georgia, USA with plenty time on my hands to mess with computers and electronic devices.\r\n
','CC-BY-SA',0,'',1,'Reg A'),
(349,'Hannah, of Terra, of Sol','spacehanners.nospam@nospam.gmail.com','
\r\nI\'m down with the space, and ASIC. Let\'s look at the stars with python and an antenna. \r\n
','CC-BY-SA',0,'',1,'Hannah, of Terra, of Sol'),
(350,'BobJonkman','bjonkman+hpr.nospam@nospam.sobac.com','
Bob Jonkman works with computers. He\'s an instructor, project manager and system administrator. In another life he dabbles in politics, too.
\r\nI am a retired former Systems Administrator. The last almost 20 years was supporting Windows servers. After retiring, I still wanted to play with computers, but need to keep costs reasonable. When Windows XP went unsupported, I found a nice Linux replacement for my old netbook. Now, a couple years later, I am getting serious about switching. This project is part of my path to freedom.\r\n
','CC-BY-SA',0,'',1,'Tuula'),
(365,'Bookewyrmm','tasettle.nospam@nospam.gmail.com','A man, out, standing, in his field','CC-BY-SA',0,'',1,'bookworm'),
(381,'Nihilazo','nico.nospam@nospam.itwont.work','
\r\nI solve IT problems. I connect system A with system B. I teach people stuff. I do this mostly with Linux systems. To make stuff happen I write a lot of custom scripts in various programming lanuages like Perl, Python, Bash, C, Java, Ruby, etc. I have clients all over the world (Australia, Switserland, US, etc).\r\n
\r\n
\r\nI am also the project leader of the open source LibrePlan project. So go to that site if you need more information about an open source webbased project management application.\r\n
\r\n
\r\nI occasionally write an article for my blog, but I have also written a number of books:\r\n
\r\n
\r\n
Jumpstart your business with Odoo 12
\r\n
LPI Essentials (Dutch)
\r\n
LibrePlan, the missing manual (English)
\r\n
\r\n
\r\nIf you have a question, please contact me at jeroen@jeroenbaten.nl.\r\n
\r\nI\'m Yannick. I\'m french, I live in Switzerland. Hence, the french guy from Switzerland ! \r\nI\'m a geek, a father, a podcaster. \r\nI\'m interested in programming, of all sorts, in all kinds of languages. \r\nI like to tinker with basic electronics components, especially LEDs ! \r\nI have half a dozen Raspberry Pis, and probably twice that amount of micro controllers of all sorts. \r\nI have many websites :\r\n
\r\nJust an old dude from the internet.\r\n \r\n \r\nI gave a talk at a local hacker con once about vehicle based surveillance.\r\nI also contributed to a privacy/hacking project called Shadowlink with the main focus being the NetP Wiki (The NetP Wiki is a fully collaborative and dynamic guide designed to help navigate the world of privacy & anonymity).\r\n \r\n \r\nCurrently moving prior blogs and content over to my GitHub Page:\r\nhttps://c1ph0r.github.io/ \r\n \r\n \r\nPrevious episodes: \r\nhpr2707 :: Steganalysis 101 \r\n
\r\n','CC-BY-SA',0,'',1,'Edward Miero'),
(373,'Floyd C Poynter','Floyd.C.Poynter.nospam@nospam.protonmail.com','','CC-BY-SA',0,'',1,'Floyd C Poynter'),
(374,'aldenp','alden.peeters.nospam@nospam.leagueh.xyz','
\r\nOpen source and decentralization/P2P enthusiast\r\n
','CC-BY-SA',1,'',1,'aldenp'),
(375,'minnix','minnix.nospam@nospam.minnix.dev','find me on mastodon: @minnix@upallnight.minnix.dev\r\n\r\nfind me on matrix: @minnix:minnix.dev\r\n\r\nfind me on peertube: https://nightshift.minnix.dev/c/nightshift/videos?s=1\r\n\r\nfind me on funkwhale: @minnix@allnightlong.minnix.dev\r\n\r\nfind me in your ears: https://linuxlugcast.com/','CC-0',0,'',1,'minnix'),
(376,'Joel D','joel.nospam@nospam.jdueck.net','
\r\nI\'m a dad and programmer in Minnesota. I enjoy publishing small books, small websites and small programs, sometimes all at once! I am at https://joeldueck.com, @joeld on Twitter, or @joeld@icosahedron.website on Mastodon.\r\n
My name is Zen_Floater2, I am a former human being, converted into a Squirrel by {ALIENS} in the 1960\'s and placed in a magical forest in Eastern Oklahoma. Green Country; I think they call it. \r\nI started developing software in 1975 post Vietnam. Atheist and complainer about HUMANS and their STUFF
\r\nI have been using technology since the early 90s. I love anything tech. My career started in technical phone support in the 90s. I have since moved into areas such as: content manager, technical training, business systems analyst, systems administrator and systems engineer. I love solving problems and continue to learn something new all the time.
\r\nCreator of Bitcorn Battle game https://bitcornbattle.com, and Rob this Farm contests for problem solvers that want to win free Bitcorn loot.\r\n
','CC-BY-SA',0,'',1,'might be mike'),
(380,'Carl','online.nospam@nospam.chave.us','','CC-BY-SA',0,'',1,'Carl'),
(382,'Daniel Persson','mailto.woden.nospam@nospam.gmail.com','
I\'m a developer that loves creating code, talking about different solutions, and learning new things.
During the workday, I create systems to extract text from media assets, structure them, and produce different results to make the media accessible to everyone.
In my time off, I like to create small prototypes and try different techniques and libraries.
I\'m also creating some Youtube videos to inspire and help developers to improve their skills. Not that I know everything, but we learn by teaching.
Other than these hobbies, I run some open-source projects. To mention a few, I developed the Android SQRL client and the Wordpress plugin for SQRL. I\'ve also contributed to projects creating braille text, epubs, and PDFs as these subjects are close to my daily work. I usually say that I know too much about the PDF file structure as I\'ve worked six years on a tool to extract text from PDFs.
','CC-BY-SA',0,'
I’m a developer that loves creating code, talking about different solutions, and learning new things.
\r\n
During the workday, I create systems to extract text from media assets, structure them, and produce different results to make the media accessible to everyone.
\r\n
In my time off, I like to create small prototypes and try different techniques and libraries.
\r\n
I’m also creating some Youtube videos to inspire and help developers to improve their skills. Not that I know everything, but we learn by teaching.
\r\n
Other than these hobbies, I run some open-source projects. To mention a few, I developed the Android SQRL client and the Wordpress plugin for SQRL. I’ve also contributed to projects creating braille text, epubs, and PDFs as these subjects are close to my daily work. I usually say that I know too much about the PDF file structure as I’ve worked six years on a tool to extract text from PDFs.
I\'m a licensed electrician, but my hobbies include open source software and retro computing. After listening to Hacker Public Radio for almost a year, I decided to become a contributor.
\r\nTwo old wise men talking about free and open source software, life in general and having a bit of fun along the way.\r\n
','CC-BY',0,'',1,'monochromec'),
(385,'crvs','carvas.f.nospam@nospam.gmail.com','','CC-BY-SA',0,'',1,'c r v s'),
(386,'DanNixon','dan.nospam@nospam.dan-nixon.com','
Software engineer, hacker, maker, open source activist.
\r\nI am a trumpet player/musician/and worship leader with a PhD in church music. I enjoy \"life hacking\" and understanding how systems can influence our daily life, and free us to be more creative beings. My blog site is biblicaltrumpets.org.\r\n
\r\nI\'m o9l! The name comes from... well... that\'s a story for another time.\r\n
','CC-BY-SA',0,'',1,'o9l'),
(391,'Some Guy On The Internet','Lyunpaw.nospam@nospam.gmail.com','- Mastodon: @Yung_Lyun@mastodon.social \r\n- Matrix: @sgoti:matrix.org \r\n- Mumble (chatter.skyehaven.net): SGOTI \r\n\r\n- All messages, created by SGOTI, published on the Social Media \r\nplatforms: Mastodon, Matrix, and Mumble are licensed under \r\nCreative Commons Attribution-ShareAlike 4.0 International (CC-BY-SA 4.0 International). ','CC-BY-SA',0,'',1,'Some Guy On The Internet'),
(420,'HopperMCS','gage.nospam@nospam.gages.blog','I science the computers! https://madcompscientist.com','CC-BY-SA',1,'',1,'gage hopper'),
(392,'timttmy','marshall.cleave.nospam@nospam.tiscali.co.uk','
\r\nPlease contact me on my pleroma account @timttmy@the-pit.uk
','CC-BY-SA',0,'',1,'timttmy'),
(393,'Anonymous Host','Anonymous.Host.nospam@nospam.hackerpublicradio.org','A catch all account for those who wish to submit content anonymously.','CC-BY-SA',0,'',1,'Anonymous Host'),
(394,'Trey','jttrey3.nospam@nospam.yahoo.com','','CC-BY-SA',0,'',1,'Trey'),
(395,'CoGo','cogocogocogocogo.nospam@nospam.gmail.com','
\r\nBorn Again Christian \r\nCNC hobbyist, worker \r\nLove but can\'t afford aviation.\r\n
I was born at a very young age and, from there, the rest is history.
\r\n
It\'s not a skill set, it\'s a compultion.
\r\n
Just your average korn kob on the internet; strangely not using ksh.
\r\n
System Fetch
\r\n
\r\nPrefered Pronouns: Any (He/She/They/It/Your Majesty/Feared Ruler of the Forbidden Languages/etc) \r\nPrefered Languages: Rust (compuled), Lua (scripting), Fish (shell scripting) \r\nPrefered Shell: fish \r\nPrefered OS: Slackware \r\nPrefered DE: -XFCE- KDE (you guys were right after all)
','CC-BY-SA',0,'',1,'haker de fo'),
(398,'one_of_spoons','hpr.nospam@nospam.spoons.one','
Mastodon, though very rarely: \r\n@one_of_spoons@hispagatos.space\r\n
','CC-BY-SA',0,'',1,'one of spoons'),
(399,'dnt','dnt.nospam@nospam.revolto.net','','CC-BY-SA',0,'',1,'D. N. T.'),
(401,'Mechatroniac','anarch0re.nospam@nospam.tutanota.com','