diff --git a/sql/hpr.sql b/sql/hpr.sql
index d05fa0b..1cb218b 100644
--- a/sql/hpr.sql
+++ b/sql/hpr.sql
@@ -11806,6 +11806,7 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`,
(3882,'hpr3882.flac','flac',54360165,'e60818c0a46437e1179d93996eb74d7271fb8a29','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 136909306 samples'),
(3882,'hpr3882.opus','opus',6727905,'9be328c07dbe2b1d64aaaf6f4cff328e3f05e613','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
(3882,'hpr3882.wav','wav',273820004,'6fdc5731efabab479eb01e8c2586024df7f41dc2','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3952,'hpr3952.mp3','mp3',3884278,'377c053d723505ec5d501b7b8c7fb06bf3fbc747','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
(3958,'hpr3958.wav','wav',477594260,'5693268b6c778fa4a866b7316ece9006856b561f','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
(3958,'hpr3958.opus','opus',9947541,'bfdb31c3109d13cfabbb02a5c621aa66b9df309e','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
(3958,'hpr3958.flac','flac',94439563,'71f78781d705c673eada587d8366f84e7eecb64e','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 238796400 samples'),
@@ -11834,10 +11835,10 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`,
(3947,'hpr3947.opus','opus',9141196,'14b3f2aec8b6ab31284f20b19796a44c70a61905','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
(3947,'hpr3947.flac','flac',87253529,'f4e5e10b963690fd4302cc4e9eb53ed9e1e675b6','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 209330426 samples'),
(3947,'hpr3947.ogg','ogg',9140927,'d9ebfae9280cdba82d1936e0cdeb8084d4ba5873','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
-(3947,'hpr3947.spx','spx',4118466,'f25d79ec7919031ec9a22e38f6bc2e7c90a9385b','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
-(3947,'hpr3947.mp3','mp3',8724016,'9df71b1e5fd6ea73a11640f606f9865462c62dbd','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
-(3943,'hpr3943.wav','wav',317005428,'a92803430ae2310c72b8d2fa481a35e7aff2591b','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz');
-INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, `mime_type`, `file_type`) VALUES (3943,'hpr3943.opus','opus',6546947,'8c2105550efb8281144d5da77150c03cca7673d9','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3947,'hpr3947.spx','spx',4118466,'f25d79ec7919031ec9a22e38f6bc2e7c90a9385b','audio/ogg; charset=binary','setgid Ogg data, Speex audio');
+INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`, `mime_type`, `file_type`) VALUES (3947,'hpr3947.mp3','mp3',8724016,'9df71b1e5fd6ea73a11640f606f9865462c62dbd','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3943,'hpr3943.wav','wav',317005428,'a92803430ae2310c72b8d2fa481a35e7aff2591b','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3943,'hpr3943.opus','opus',6546947,'8c2105550efb8281144d5da77150c03cca7673d9','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
(3943,'hpr3943.flac','flac',62402402,'865c20b6db6b2f8999213a8cd24934aad3050a75','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 158502000 samples'),
(3943,'hpr3943.ogg','ogg',6546665,'aca551eb31bf77c51fc9d093467176a30e3aeb1b','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
(3943,'hpr3943.spx','spx',3118549,'c623fb53289919474c74c742f947666a39ada352','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
@@ -12413,7 +12414,108 @@ INSERT INTO `assets` (`episode_id`, `filename`, `extension`, `size`, `sha1sum`,
(3887,'hpr3887.srt','srt',39343,'0885ab55e886b311d5ab4b775257a293833c1f76','text/plain; charset=us-ascii','setgid , ASCII text'),
(3887,'hpr3887.vtt','vtt',35239,'1701aba28f08b2067e6fd9788724635ea250ab73','text/plain; charset=us-ascii','setgid , ASCII text'),
(3887,'hpr3887.tsv','tsv',30900,'bd65f44095ca21a8c4abee08074e5dfbc19264a9','text/plain; charset=us-ascii','setgid , ASCII text'),
-(3901,'hpr3901.mp3','mp3',10551032,'7325b3c6b38500e840298717a7daaf8948cb5af1','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural');
+(3901,'hpr3901.mp3','mp3',10551032,'7325b3c6b38500e840298717a7daaf8948cb5af1','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3952,'hpr3952.ogg','ogg',4276976,'709614ff628e44106fc16ff0d3a0b39e5429dc44','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3952,'hpr3952.spx','spx',1833462,'3dd77a34173dd4338cf51ea795342ce082cc9116','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3952,'hpr3952.flac','flac',39092010,'9a59ab5f1b5eb4f551c3ad42eb94501d868750a2','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 93174910 samples'),
+(3952,'hpr3952.opus','opus',4277251,'315f3f82786feca0ddc80eca20b548653c11ccb4','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3952,'hpr3952.wav','wav',186351242,'b4714c4e62b27aac1cd2b3d5a4b108349931ca12','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3953,'hpr3953.mp3','mp3',9348254,'4db056ae16fd30e95a519fd770596eebcee7729a','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3953,'hpr3953.ogg','ogg',9839070,'6b04b15853955ab9bdba8e73a051cb87c603817d','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3953,'hpr3953.spx','spx',4413193,'71a1915f4f3ca7092f76ce30fc82cab730ee8193','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3953,'hpr3953.flac','flac',84482136,'6da0aaeeacc9f73ee7b0e04d04819d676b261519','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 224312425 samples'),
+(3953,'hpr3953.opus','opus',9839385,'8033ead7b7bbb8c5a4b3a865b070c3fccf674a2b','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3953,'hpr3953.wav','wav',448626312,'c5857992dfe1dde0c8b8a8324a28a3260ed63d30','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3954,'hpr3954.mp3','mp3',36343603,'5595fd5c299c6bfc84465c9a10f954b4c2ac1cd2','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3954,'hpr3954.ogg','ogg',36946526,'5e7c853419aa66f750404c80a18a6dfe908cf438','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3954,'hpr3954.spx','spx',17158323,'9d6390fcf960d96752f2f8b097d78d64791cce10','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3954,'hpr3954.flac','flac',366414845,'cf72f1e6cfb2df138e4a392e554fa229f0fa38d2','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 872199498 samples'),
+(3954,'hpr3954.opus','opus',36946798,'c14241e48162225dfd1c01228e79c80eae6680e2','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3954,'hpr3954.wav','wav',1744400414,'4fccbe3e5c2a6a55dd0bd857fa239de44edc4d63','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3956,'hpr3956.mp3','mp3',20416661,'39a64918791797346bf8cf58f32d5422983cc33e','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3956,'hpr3956.ogg','ogg',21481768,'1479de4d18baa00b710ab548ac569b862ada5a30','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3956,'hpr3956.spx','spx',9638800,'57a3bcf42610d71dba01cd4ce6c536f4788bd234','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3956,'hpr3956.flac','flac',192033160,'0cc8272a8b654c62721e690ba6433e0c61ae253b','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 489952423 samples'),
+(3956,'hpr3956.opus','opus',21482074,'97ddd02ee3ef3a6e3ef507fabe147496f42d72a6','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3956,'hpr3956.wav','wav',979906298,'0edfacd84ac8f0ff14f7104e9a7a2254971908cd','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3959,'hpr3959.mp3','mp3',1986988,'bb118ea09c3b04d25fc31334bb44490d6e72700b','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3959,'hpr3959.ogg','ogg',2122165,'8cfa279c0a638a817af6cdb20450ea80eed81142','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3959,'hpr3959.spx','spx',937767,'638260b9185ae12c2141a77c8e4c9876d8ceb608','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3959,'hpr3959.flac','flac',18911852,'5abad43d043140c3671ec5e57b5e83c90a2e5384','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 47641526 samples'),
+(3959,'hpr3959.opus','opus',2122494,'b060738e9e380af80d3ee2e7e6e1c12fb6df06f2','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3959,'hpr3959.wav','wav',95284528,'69ffe05558783f28b04a76e31d28f189d4f4b0e8','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3991,'hpr3991.mp3','mp3',12965639,'876b5893687ba5b2fa53dade98265b8929143515','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3991,'hpr3991.ogg','ogg',13927137,'137c6f71030c090185a84175fd7d907f91c8ccfe','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3991,'hpr3991.spx','spx',6120985,'323fe65fd31dfc4c1a89778a386c80a69e6ffdc4','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3991,'hpr3991.flac','flac',132942262,'c287a85f688b27b4b606910c1d076d3b034edf50','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 311131342 samples'),
+(3991,'hpr3991.opus','opus',13927365,'17ea7c8205c118cb387fa484b30336295761096c','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3991,'hpr3991.wav','wav',622264058,'82ed66fa9faa7964fa4b0932f7440d651fe2ea43','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3962,'hpr3962.mp3','mp3',4184727,'817c0ccd6313e2d0746dd4dfb99a1a348bd9f9ee','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3962,'hpr3962.ogg','ogg',4317328,'943a5dcd0d12b4e6ae101c085a558768ae1736d7','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3962,'hpr3962.spx','spx',1975355,'9e603b33cfe927fade753ff3e1414150249c9e29','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3962,'hpr3962.flac','flac',41422417,'ea7a1fbc72f8eb51b23addbe9ffbaa333180b57f','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 100389208 samples'),
+(3962,'hpr3962.opus','opus',4317572,'21d51ed0a7ba38a88236226d070e15b82ab964e0','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3962,'hpr3962.wav','wav',200779806,'bb43711c1898bb9bdb1b1279f331f6ab252fb34f','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3963,'hpr3963.mp3','mp3',9911533,'06c06e04f4461b6da2ce42b01013bbc47fa1957c','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3963,'hpr3963.ogg','ogg',11609538,'9164abe8f54b0bfacbb24deda4cc03cdd367cdeb','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3963,'hpr3963.spx','spx',4679109,'4a1b28a1049a266d97af7ad3c43ac532f663a8dc','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3963,'hpr3963.flac','flac',95817944,'c818cb1a81474aef472cf630bb550f1024524238','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 237831236 samples'),
+(3963,'hpr3963.opus','opus',11609804,'a1e44e8c90c71560da5ce4de0b479b3f4fe18144','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3963,'hpr3963.wav','wav',475663884,'090fec7620210f7720fb87a68e6678e986420a8a','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3973,'hpr3973.mp3','mp3',8152261,'d5f5701921449a662089900a0502765864db4bf9','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3973,'hpr3973.ogg','ogg',9624737,'8b4dab7ca409f0fc6b5c81552ad40ef8276587d6','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3973,'hpr3973.spx','spx',3848493,'e8b2bad76c62d270b05f38a234e918188c12e7c6','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3973,'hpr3973.flac','flac',78419485,'24d53e3104a63d050229aee6ec34a12a0d377070','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 195609513 samples'),
+(3973,'hpr3973.opus','opus',9625027,'7a17780cf0bf28e6fb0207189f0136211d3523f5','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3973,'hpr3973.wav','wav',391220462,'d6398aafdc2a7e7a5581faac17838e720996cc42','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3964,'hpr3964.mp3','mp3',25272904,'6933fd62e053ae13598223372720f35dcef92631','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3964,'hpr3964.ogg','ogg',25960591,'620ea6683d86a73b3742c7e826feea34a6128238','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3964,'hpr3964.spx','spx',11931576,'7522dd5670833935866b3209056a20be2d689e00','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3964,'hpr3964.flac','flac',249573241,'bbbc9b6fc2ec9fb9d7a040fd245791a1cb1cd03e','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 606503097 samples'),
+(3964,'hpr3964.opus','opus',25960884,'992fbbc9c221300a314b6401dcea7c3815071e9d','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3964,'hpr3964.wav','wav',1213007634,'f377eec3c280926081768563e68b29a818fb20b7','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3966,'hpr3966.mp3','mp3',12672906,'9ca595950a2eeee5d134d937ef3f15a86dad8614','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3966,'hpr3966.ogg','ogg',15292080,'ae31235e3f4ac5699c496d546bf83105e2e5a32c','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3966,'hpr3966.spx','spx',5982803,'06d5df767f6e88133317b8c1290341a0fbc3bc43','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3966,'hpr3966.flac','flac',117722192,'6dd7a1d333d2e583709069082ca2ec5fee788941','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 304103154 samples'),
+(3966,'hpr3966.opus','opus',15292375,'e98b52cb59abf888e1dc0c1fad63d2cc62055ce6','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3966,'hpr3966.wav','wav',608207750,'666f086aa668c7e3cbfa82301a36a4578576a263','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3967,'hpr3967.mp3','mp3',4255432,'6a03f3923efce836dd139ce19506a98e405fb2a6','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3967,'hpr3967.ogg','ogg',4323810,'62c323833e66278529e6c3da435333bd17ee5394','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3967,'hpr3967.spx','spx',2008722,'9803eac399a7c4546abde32ca596198da0e0a6d8','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3967,'hpr3967.flac','flac',43641251,'561e9fc16ea18a10f9c8728ec3b4192ff2d654c6','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 102085329 samples'),
+(3967,'hpr3967.opus','opus',4324103,'a976334d8d97900655705332ddb84901b2aefcdd','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3967,'hpr3967.wav','wav',204172098,'3c9380edb901b4333a4b16d37511093b20efc5a9','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3968,'hpr3968.mp3','mp3',6101670,'b3dd7d189aabd5b5ea72a01e26233a2734087a75','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3968,'hpr3968.ogg','ogg',6544128,'a18a47b52f25e999fe9a90ea8874f13d39fac999','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3968,'hpr3968.spx','spx',2880275,'057e8c696879ece0749d4a9154ee2a84b156a934','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3968,'hpr3968.flac','flac',53655268,'f1c7d462eab574c4d4783b4abb94f7b4a21d2b8c','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 146391772 samples'),
+(3968,'hpr3968.opus','opus',6544387,'769f0617fcd22250fbe5e3ca897862aa404a0429','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3968,'hpr3968.wav','wav',292784950,'2484f2aac078ce2b7ddd8dc0475eab32cbab8693','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3969,'hpr3969.mp3','mp3',7572401,'1b996e9fc1ee6ee0e6980df53c440b3f0233c9e3','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3969,'hpr3969.ogg','ogg',8553932,'39048e6f0f786ad3b613184f2d29176b47649008','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3969,'hpr3969.spx','spx',3574729,'833170572d6e762313682fa7f53e3ae844359174','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3969,'hpr3969.flac','flac',76455454,'2ac7d9c19c536804eca97a19298f8b25de3784d0','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 181691568 samples'),
+(3969,'hpr3969.opus','opus',8554202,'01d1860398a2bf5d37bcfa3ab948e64ea45d9a79','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3969,'hpr3969.wav','wav',363384552,'f176fdeae96c479b794410b32b7d3b04af61fab6','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3972,'hpr3972.mp3','mp3',5948875,'40c9cb2132b571add47d51db7423cd69762b7395','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3972,'hpr3972.ogg','ogg',7082410,'9b0b1041ae7e565381149845ce8e0748eae2d44d','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3972,'hpr3972.spx','spx',2808174,'a70484911565148788cd0b4bd32965829a1788da','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3972,'hpr3972.flac','flac',56669001,'2084572d28d79dec13eeab0b3bec576ab3fdf684','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 142723679 samples'),
+(3972,'hpr3972.opus','opus',7082706,'5ff72f6739c357fa352645f0a6d42a876a553259','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3972,'hpr3972.wav','wav',285448800,'5a0cc05e0df2715a4803aedf5ee7c3f1ad6cfe22','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3974,'hpr3974.mp3','mp3',8155110,'f0994cae789be23204f83972fc6f2eabb5b31937','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3974,'hpr3974.ogg','ogg',8682395,'dc7ad7b823314a6325e05461fa443d4ef421d7a1','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3974,'hpr3974.spx','spx',3849764,'0fe2535c6291c19291c27e4ee6c3bafdec0db548','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3974,'hpr3974.flac','flac',70767465,'5a54d1de201c20fc5897ccca76da5e1ef9b36376','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 195674837 samples'),
+(3974,'hpr3974.opus','opus',8682654,'ac9933f66633cc1c951d7e431cd4806a0febe5b7','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3974,'hpr3974.wav','wav',391351080,'71de2e877c609d5a3623567e08cb45bbed222c0f','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz'),
+(3975,'hpr3975.mp3','mp3',5839384,'61af9a272f8e965eb2fae35a9724d7ede02ebd32','audio/mpeg; charset=binary','setgid Audio file with ID3 version 2.4.0, contains:MPEG ADTS, layer III, v1, 64 kbps, 48 kHz, Monaural'),
+(3975,'hpr3975.ogg','ogg',6536455,'a653f391e2eaaf7c0da89b7bac6e61fe20faf1de','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3975,'hpr3975.spx','spx',2756520,'d5b2a86853fe409ab72ac83f2eebdcdc28367b63','audio/ogg; charset=binary','setgid Ogg data, Speex audio'),
+(3975,'hpr3975.flac','flac',59324744,'addbb37ce2c0bd04e16335c9a68f89006eb579b3','audio/flac; charset=binary','setgid FLAC audio bitstream data, 16 bit, mono, 192 kHz, 140100729 samples'),
+(3975,'hpr3975.opus','opus',6536700,'4261d2972f066daf2db6488f2c0519db858e7723','audio/ogg; charset=binary','setgid Ogg data, Opus audio,'),
+(3975,'hpr3975.wav','wav',280202850,'6e1a0b37fe938b19fc9fac7ccc96402027023ccc','audio/x-wav; charset=binary','setgid RIFF (little-endian) data, WAVE audio, mono 192000 Hz');
/*!40000 ALTER TABLE `assets` ENABLE KEYS */;
UNLOCK TABLES;
@@ -12434,7 +12536,7 @@ CREATE TABLE `comments` (
`last_changed` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
KEY `comments_eps_id_idx` (`eps_id`)
-) ENGINE=MyISAM AUTO_INCREMENT=3808 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='New comments table populated from c5t_* tables';
+) ENGINE=MyISAM AUTO_INCREMENT=3821 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='New comments table populated from c5t_* tables';
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -16245,7 +16347,20 @@ INSERT INTO `comments` (`id`, `eps_id`, `comment_timestamp`, `comment_author_nam
(3804,3919,'2023-08-28 08:02:27','tuturto','you\'re welcome','You\'re welcome dnt. I\'m glad you found this episode interesting. That youtube channel goes much deeper in the details and there\'s a cool video where she\'s playing back voice samples from the past.','2023-08-28 10:24:21'),
(3805,3933,'2023-08-30 16:14:53','Trey','Thank you for sharing.','I love the way people like you all stay so organized.\r\n\r\nI have struggled with organization all my life. I have tried everything from cheap planners to Franklin (expensive), with little success. I eventually converted my Franklin planner to keep flight notes and checklists from my general aviation days.\r\n\r\nThe best I can do now is using Google Calendar, Google Keep (Please keep the flames to a minimum), and good old steno pads for note taking (From which I transcribe the important bits later).\r\n\r\nThank you for sharing so much excellent advice. You both ROCK!!','2023-08-30 16:42:11'),
(3806,3933,'2023-08-31 19:13:40','Kinghezy','Interesting topic','I enjoyed this like Trey. I have note-taking down at work but realized (again) with this episode, like Trey that notes&planning for my personal life is lacking. I like the idea of using a planner for both the planning and note-taking, and may try that.','2023-08-31 19:54:22'),
-(3807,3934,'2023-09-04 14:52:43','Kevin O\'Brien','Loved the show','I was really happy to listen to this show. This is a kind of game I need to explore more.','2023-09-04 15:06:12');
+(3807,3934,'2023-09-04 14:52:43','Kevin O\'Brien','Loved the show','I was really happy to listen to this show. This is a kind of game I need to explore more.','2023-09-04 15:06:12'),
+(3808,3938,'2023-09-07 04:24:33','dnt','Update','Since this recording, the developer of Open Radio has released an update fixing the issue with Android Auto, so now that is the app to use, for me.','2023-09-07 07:28:35'),
+(3809,3937,'2023-09-16 20:13:34','Windigo','Clever static IP solution','I run a similar pihole setup, and had never thought of adding an IP lease for the pihole itself. What a neat way to keep your addressing in one place!\r\n\r\nThanks, I enjoyed your episode and look forward to your next contribution!','2023-09-16 20:30:50'),
+(3810,3940,'2023-09-19 13:04:18','Reto','Tires','Hi Ahuka,\r\n\r\nIt is really a good thing that you maintain a diary, but on the other hand I got the impression that some hard feelings came up on revisiting that time :) .\r\nHere in Switzerland the complete valve is replaced, when the tire is replaced. Just as a side note.\r\n\r\nAs always I enjoyed your show.\r\n\r\nBr, Reto','2023-09-19 14:15:55'),
+(3811,3946,'2023-09-19 13:09:19','Reto','Previously','Hi Sgoti,\r\n\r\nPreviously on HPR!\r\nI love the intro, the voice just a touch lower and I would have thought I watch an USA TV series.\r\n\r\nBrilliant, small things make a difference.\r\n\r\nCheers, Reto','2023-09-19 14:15:55'),
+(3812,3941,'2023-09-19 13:24:57','Reto','honesty','Hi both,\r\n\r\nThis was a good show and Yosef\'s anwers how he reflected openly his shortcomings, but than again, beeing aware of it is the key to change.\r\nThe one thing I disagree, co2. This is making this earth nothing more but more green, which is brilliant. There is 0,038% CO2 in the air. Not even 1 %.\r\nco2 is one of the heaviest gas, therefore it is on the ground. A greenhouse caries the glass roof to keep the heat. Just as a side note, to think about. \r\nAnd surely does the climate change, why not?\r\n\r\nI will listen to it again as it was overall interesting.\r\n\r\nCheers, Reto','2023-09-19 14:15:55'),
+(3813,3940,'2023-09-20 12:22:05','Kevin O\'Brien','Telling it like it is','My objective has been to simply tell the things that happened, including the things where we made a mistake, i.e. warts and all. That way it might be of use to others.','2023-09-20 13:39:25'),
+(3814,3948,'2023-09-24 20:36:03','Kevin O\'Brien','TUCOWS','I do remember TUCOWS, and asa it happens they are still around, but they changed businesses from being a software repository to being an Internet Services Company. I use their Hover subsidiary as my Domain Name Registrar.','2023-09-24 20:58:18'),
+(3815,3953,'2023-10-01 06:55:46','Mr Young','LLMs are great if you use them right','Great show. I\'ve been using LLMs for work lately, and they are great at certain activities, as long as you don\'t expect them to act like humans with common sense. There are certain NLP tasks like document Q&A that were near impossible before LLMs that are a few lines of code now.\r\n\r\nFor a lay-person interacting with Bard, ChatGPT, etc. I recommend the following sites for understanding how to ask LLMs good prompts:\r\n\r\nhttps://docs.google.com/presentation/d/17b_ocq-GL5lhV_bYSShzUgxL02mtWDoiw9xEroJ5m3Q/edit?pli=1#slide=id.gc6f83aa91_0_79\r\n\r\nhttps://learnprompting.org/docs/intro\r\nhttps://www.promptingguide.ai/','2023-10-01 10:36:51'),
+(3816,3941,'2023-10-02 00:17:11','dnt','Great interview!','Thank you for this, it was a great listen. I used to brew kefir and would love to start doing it again. At one of my former jobs there were a few people who made kefir so we could get each other fresh grains all the time, but without a local group it can be hard.','2023-10-02 09:39:04'),
+(3817,3947,'2023-10-09 01:59:41','brian-in-ohio','feedback','Really liked this show. Entertaining and informative!','2023-10-09 10:17:21'),
+(3818,3961,'2023-10-10 19:32:54','caezr','hello','Hi Mugs Up!','2023-10-10 19:41:36'),
+(3819,3965,'2023-10-15 22:39:51','Keith (kdmurray)','LOTR Challenge','Very interesting, Daniel! I\'m always on the lookout for some more reasons (or self-bribery) to help get me to move more.\r\n\r\nFor anyone else who\'s interested I\'ve included the link below.\r\nhttps://www.theconqueror.events/shire/','2023-10-16 08:28:06'),
+(3820,3966,'2023-10-17 01:50:49','Windigo','It\'s all relative','Thank you for the configuration for relative line numbering! That was immediately added to my vimrc.\r\n\r\nI might have to comb through this episode a second time to make sure I didn\'t miss any gems. Much appreciated!','2023-10-17 12:15:42');
/*!40000 ALTER TABLE `comments` ENABLE KEYS */;
UNLOCK TABLES;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
@@ -16297,7 +16412,7 @@ CREATE TABLE `eps` (
LOCK TABLES `eps` WRITE;
/*!40000 ALTER TABLE `eps` DISABLE KEYS */;
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1,'2007-12-31','Introduction to HPR',1373,'In this first ever show on Hacker Public Radio, StankDawg and Enigma introduce HPR.','
\r\nIn this first ever show on Hacker Public Radio, StankDawg and Enigma introduce HPR.\r\n
\r\n
\r\nThe story of Hacker Public Radio begins where Radio FreeK America leaves off. StankDawg was a busy with Binary Revolution Radio and so the idea lay dormant for some time. Then droops, another podcaster (Infonomicon) who was inspired by RFA got together with dosman to start TWaTech Today with a Techie, a pun on Twit. About a year in Enigma took over operations from portrello.\r\n
\r\n
\r\nContinuing on from Today with a Techie, HPR will air anything that is Of interest to hackers. Think, hacking, phone preaking, politics, survival, caffeine, linux, movie reviews, game reviews, etc. There is no restriction on the length but the shows will have the intro and outro added, which was kindly donated by slick0. Additionally there is the option to have miniseries where the hosts can have running topics to cover an issue in more detail. A mini series can also be open to so that multiple people can contribute to one topic.\r\n
\r\n
\r\nAbove all HPR is a Community Network.\r\n
\r\n',55,0,1,'CC-BY-NC-SA','hpr, twat, community',0,4737,1),
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1,'2007-12-31','Introduction to HPR',1373,'In this first ever show on Hacker Public Radio, StankDawg and Enigma introduce HPR.','
\r\nIn this first ever show on Hacker Public Radio, StankDawg and Enigma introduce HPR.\r\n
\r\n
\r\nThe story of Hacker Public Radio begins where Radio FreeK America leaves off. StankDawg was a busy with Binary Revolution Radio and so the idea lay dormant for some time. Then droops, another podcaster (Infonomicon) who was inspired by RFA got together with dosman to start TWaTech Today with a Techie, a pun on Twit. About a year in Enigma took over operations from portrello.\r\n
\r\n
\r\nContinuing on from Today with a Techie, HPR will air anything that is Of interest to hackers. Think, hacking, phone preaking, politics, survival, caffeine, linux, movie reviews, game reviews, etc. There is no restriction on the length but the shows will have the intro and outro added, which was kindly donated by slick0. Additionally there is the option to have miniseries where the hosts can have running topics to cover an issue in more detail. A mini series can also be open to so that multiple people can contribute to one topic.\r\n
\r\n
\r\nAbove all HPR is a Community Network.\r\n
\r\n',55,0,1,'CC-BY-NC-SA','hpr, twat, community',0,4737,1),
(9,'2008-01-10','This old Hack 4',2547,'Fixing a leak in a pressure based water well and making a Didgeridoo.','
\r\n',75,5,1,'CC-BY-NC-SA','water well, pressure tank, pressure switch, Didgeridoo, hardware',0,3535,1),
(2,'2008-01-01','Customization the Lost Reason',1534,'deepgeek talks about Customization being the lost reason in switching from windows to linux','
Today deepgeek talks about Customization being the lost reason in switching from windows to Linux. He points out that the PC stands for Personal Computer. To many on windows this means they can change the desktop wallpaper.
\r\n
He believes that by explaining the ability to Customise the working environment is the power of Linux. You can customise the services running, whether you wish to use a command line interface, a basic Window Manager, or a Lightweight or Full Featured Desktop Environment
\r\n',73,0,1,'CC-BY-NC-SA','Linux, Desktop Environment, Window Manager, Seymour Cray',0,1551,1),
(3,'2008-01-02','Lost Haycon Audio',2850,'Morgellon and others traipse around in the woods geocaching at midnight','
\r\nIt\'s 12:10AM on the 10th of November 2007 and Morgellon, droops and phyboy are at Haycon, one of the first Unconferences. The conversations turns to Geocaching, and so armed with laptop, flash light (and possibly beer) our intrepid explorers head off to do a night time run. Here the way is marked by reflectors that are difficult to see in day time.
\r\n
\r\nAlong the way we hear crickets, tales of wolves, forgotten roads, civil war destruction, abandoned cemeteries and how karma came to one real estate developer.\r\n
',25,0,1,'CC-BY-NC-SA','haycon, Unconference, Geocaching ',0,1410,1),
@@ -16789,7 +16904,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(488,'2009-11-27','Pegwole interviews Debbie Nicholson',953,'At Ohio Linux Fest 2009, Pegwole and Lord Drachenblut chat with FSF\'s Debbie Nicholson','
At Ohio Linux Fest 2009, Pegwole sits down for a lil\' chat with FSF\'s Debbie Nicholson.
',120,78,1,'CC-BY-NC-SA','OLF 2009,interview',0,1300,1),
(489,'2009-12-01','SSL Attack',1734,'Finux talks about SSL attacks','
',85,0,1,'CC-BY-NC-SA','SSL,TLS,vulnerability,x509 certificate',0,1785,1),
(490,'2009-12-02','TIT Radio Ep 13.1ec',1149,'From PC Radio Show website:\"Our guest was Richard Stallman\"','From PC Radio Show website: \r\n\r\n\"Our guest was Richard Stallman, the man behind GNU and the Free Software Foundation. He condemns the Amazon Kindle (his term for it is the \"swindle\")\r\nbecause it takes away freedoms that readers of hardcopy books enjoy.\r\nFreedoms such as the ability to lend a book to a friend, to borrow one\r\nfrom a library, to buy one anonymously by paying cash, to keep a book\r\nas long as we like and to give it away. The Amazon Kindle implements DRM\r\n- digital rights management - to restrict your use of books. He is not\r\nagainst eBook readers per se, just the DRM, which in addition to the\r\nabove also requires you to run proprietary software to read eBooks. He\r\nurged listeners to go to Defectivebydesign.org and sign up to participate in his protests.\" \r\n\r\n \r\n\r\nThe complete episode from July 22nd can be found here. \r\n \r\nEnding Song: Free Software Song by Mr. Jono Bacon (Ubuntu Community Manager) \r\n \r\nPlease visit https://titradio.info for more info. \r\n ',99,30,1,'CC-BY-NC-SA','kindle,swindle,ebooks,audiobooks,DRM,Digital Restrictions Management',0,1491,1),
-(492,'2009-12-09','TIT Radio Ep 14',3741,'Monsterb and friends host TiT Radio','
TiT Radio Episode 014 -\r\nPotluck Roundtable of Geeks
Azimuth talks about setting up a dirty,\r\nquick, temporary, unsecure, simple HTTP server to share files. 1.)\r\nalias webshare=\'python -c\r\n"import SimpleHTTPServer;SimpleHTTPServer.test()"\' 2.)\r\ncd to directory to be served 3.) webshare \r\n# ctrl-c to exit. Az also mentions FOSSCasts\r\n(free screencasts covering Linux, Unix, and Open Source software in\r\ngeneral).
monsterb\r\nmentions Debian GNU/kFreeBSD\r\n(port that consists of GNU userland using the GNU C library on top of\r\nFreeBSD\'s kernel, coupled with the regular Debian package set). ISOs\r\ncan be found at the Georgia\r\nTech FTP.
Klaatu\r\ntalks about Quanta Plus (a\r\nhighly stable and feature rich web development environment) and\r\nKDevelop (free opensource\r\nIDE).
artv61 talks about Axel\r\n(a command line application which accelerates HTTP/FTP downloads by\r\nusing multiple sources for one file).
COtW\r\n(Command of the Week): Azimuth$ inxi\r\n(command line information script) Download & Install: # cd\r\n/usr/local/bin && wget -Nc smxi.org/inxi && chmod +x\r\ninxi Klaatu$ find\r\n~ -type f -iname \'*.ogg\' Jman$ pinfo\r\n(viewer for Info documents, which is based on ncurses. The\r\nkey-commands are in the style of lynx.)
Azimuth talks about setting up a dirty,\r\nquick, temporary, unsecure, simple HTTP server to share files. 1.)\r\nalias webshare=\'python -c\r\n"import SimpleHTTPServer;SimpleHTTPServer.test()"\' 2.)\r\ncd to directory to be served 3.) webshare \r\n# ctrl-c to exit. Az also mentions FOSSCasts\r\n(free screencasts covering Linux, Unix, and Open Source software in\r\ngeneral).
monsterb\r\nmentions Debian GNU/kFreeBSD\r\n(port that consists of GNU userland using the GNU C library on top of\r\nFreeBSD\'s kernel, coupled with the regular Debian package set). ISOs\r\ncan be found at the Georgia\r\nTech FTP.
Klaatu\r\ntalks about Quanta Plus (a\r\nhighly stable and feature rich web development environment) and\r\nKDevelop (free opensource\r\nIDE).
artv61 talks about Axel\r\n(a command line application which accelerates HTTP/FTP downloads by\r\nusing multiple sources for one file).
COtW\r\n(Command of the Week): Azimuth$ inxi\r\n(command line information script) Download & Install: # cd\r\n/usr/local/bin && wget -Nc smxi.org/inxi && chmod +x\r\ninxi Klaatu$ find\r\n~ -type f -iname \'*.ogg\' Jman$ pinfo\r\n(viewer for Info documents, which is based on ncurses. The\r\nkey-commands are in the style of lynx.)
',99,30,1,'CC-BY-NC-SA','Kdevelop,apt-fast git script',0,1921,1),
(493,'2009-12-10','Free and Open Source Software in Business',1765,'Robert Ladyman talks about Free and Open Source software in the Business world.','
Robert Ladyman talks about Free and Open Source software in the Business world.
\r\n
Also available is the ogg version of this episode.
',85,36,1,'CC-BY-NC-SA','open source software,free software,business,FOSS',0,2008,1),
(494,'2009-12-11','Klaatu interviews Russ from Linux in the Ham Shack',594,'Klaatu interviews Russ from the Linux in the Ham Shack podcast','
Klaatu, at Ohio Linux Fest 2009, interviews Russ from the Linux in the Ham Shack podcast.
\r\n',78,78,0,'CC-BY-NC-SA','OLF 2009,interview',0,2514,1),
(495,'2009-12-14','Gary Whiton talks about the Blender Game Engine',1358,'Gary Whiton talks about the Blender Game Engine.','
',85,36,1,'CC-BY-NC-SA','blender,game engine',0,1966,1),
@@ -16870,7 +16985,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(570,'2010-09-11','New google privacy policy',731,'The upcoming Google Privacy Policy is read by espeak','googles new privacy policy',30,0,1,'CC-BY-NC-SA','policy,privacy,Google',0,2488,1),
(571,'2010-09-15','Hack Radio Live 9',3078,'HRL explore the technology and physics behind electromagnetic radiation','For complete show notes please visit hackradiolive.org \r\nDIY radar',58,118,1,'CC-BY-NC-SA','diy,radar',0,1963,1),
(572,'2010-09-21','Interview with Mark Terranova from Zareason',1231,'In this episode Klaatu talks to Mark Terranova from Zareason at SELF 2010','
In this episode, recorded at SELF 2010, Klaatu talks to Mark Terranova from Zareason. Mark is the Community Manager at Zareason.
\r\n',78,78,0,'CC-BY-NC-SA','Zareason,Linux computer,SELF 2010',0,1814,1),
-(573,'2010-09-24','Linux in a Ham Shack',4655,'Episode 39 of \"Linux In The Ham Shack\" syndicated on HPR','\n
In this Syndicated Thursday episode we hear from Russ, then known as K5TUX, but now as HPR host KFive,\nwho is the host of the Linux In The Ham Shack podcast: https://lhspodcast.info/. He is joined by ClaudioM,\nwho also known to HPR as Claudio Miranda.
\nThere are show notes here: https://lhspodcast.info/2010/05/show-notes-069/\n',127,54,1,'CC-BY-NC-SA','Ubuntu 10.04,Crunchbang,morse code,SELF 2010',0,2554,1),
+(573,'2010-09-24','Linux in a Ham Shack',4655,'Episode 39 of \"Linux In The Ham Shack\" syndicated on HPR','\n
In this Syndicated Thursday episode we hear from Russ, then known as K5TUX, but now as HPR host KFive,\nwho is the host of the Linux In The Ham Shack podcast: https://lhspodcast.info/. He is joined by ClaudioM,\nwho also known to HPR as Claudio Miranda.
\nThere are show notes here: https://lhspodcast.info/2010/05/show-notes-069/\n',127,54,1,'CC-BY-NC-SA','Ubuntu 10.04,Crunchbang,morse code,SELF 2010',0,2554,1),
(574,'2010-10-06','Interview with Maco',1815,'Maco and her new Sign Language Tutor application','Klaatu interviews Maco about her new Sign Language Tutor\r\napplication, Gally, as well as why Qt and KDE are better than all the\r\nrest, plus Ubuntu Women and women in computing, Linux and\r\nsecurity, and some other stuff. \r\n\r\nListen to this episode in ogg vorbis courtesy the Bad Applez.',78,78,0,'CC-BY-NC-SA','Qt,KDE,Ubuntu Women',0,3090,1),
(575,'2010-10-15','Free and open source software on windows',1234,'A recording of a presentation by Robert McWilliam from Software Freedom Day Event 2009','A presentation from Software Freedom Day Event 2009 organised by the UAD Linux Society, Hannah Maclure Centre, and the Tayside Linux Users Group. This talk is by Robert McWilliam and is about using Free and Open Source Software for Windows.',85,36,1,'CC-BY-NC-SA','FOSS,Windows',0,2635,1),
(576,'2010-10-18','Interview with HeathenX',828,'HeathenX from the screencasters speaks about art on Linux','
Klaatu, at the Ohio Linux Fest 2009, interviews HeathenX from the screencasters about art on Linux, Inkscape, GIMP, multi-platform applications, and more.
',78,78,0,'CC-BY-NC-SA','OLF 2009,interview',0,2534,1),
@@ -16928,7 +17043,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(628,'2010-12-29','Tasker - Automation for Android Devices',840,'brother mouse speaks of Tasker in his first show for HPR','
\r\nThis first attempt is about Tasker, an Android app that enables the user to tweak and automate the Android smartphone. I have no connection with the author but find the app endlessly useful.\r\n
\r\n',140,0,1,'CC-BY-NC-SA','Tasker,Android,automation',0,2596,1),
(629,'2010-12-30','RSS 2.0 Specification with iTunes namespace',1946,'An explanation of the RSS 2.0 specification, the iTunes namespace, and HPR\'s RSS feed','
\r\nLike HTML, RSS is a form of XML and today we take a look at the RSS 2.0 specification specifically how that will relate to the Hacker Public Radio feed. \r\nRSS 2.0 is offered by the Berkman Center for Internet & Society at Harvard Law School under the terms of the Attribution/Share Alike Creative Commons license. The author of this document is Dave Winer, founder of UserLand software, and fellow at Berkman Center. \r\n
',30,0,1,'CC-BY-NC-SA','hpr,rss',0,2287,1),
(630,'2010-12-31','HPR at the Northeast GNU-Linux Fest',925,'Pokey outlines his plans for the Northeast GNU/Linuxfest','
Hacker Public Radio will have a table at the Northeast GNU/Linux Fest. Please come visit us to learn about contributing to HPR and for a free HPR sticker (while they last). You can also join in and help us out. If you\'re a contributor to HPR, represent. Please Join the Hacker Public Radio mailing list to keep up to speed on what we\'re doing.
\r\n612 guitarman:: Urban cyclist - Commuting\r\n613 JWP:: alternative investing and how the internet changes...\r\n614 PipeManMusic:: Intro To Audio and Pod/Oggcasting\r\n615 klaatu:: Urban Camping ep 2\r\n616 Dave Yates:: Surfraw\r\n617 Thistleweb:: So You Wanna Start A Band?\r\n618 arfab:: Installing Windows XP in VirtualBox\r\n619 KFive:: QSK: Episode 5: You\'re Driving Me Crazy\r\n620 klaatu:: Klaatu holds an interview with Tek Systems\r\n621 Dann:: Dann and CafeNinja Book Review: Ayn Rand\'s Atlas ...\r\n622 janedoc:: Influenza\r\n623 JWP:: nano editor\r\n624 klaatu:: Urban Camping ep 3\r\n625 pokey:: Network Cabeling at Resno\'s House\r\n626 klaatu:: Urban Camping ep 4\r\n627 Ruji:: From OS X to OS Whoredom to Linux\r\n628 brother mouse:: Tasker - Automation for Android Devices\r\n629 Ken Fallon::RSS 2.0 Specification with iTunes namespace\r\n630 pokey:: HPR at the Northeast GNU-Linux Fest\r\n
\r\n\r\n
Other News
\r\n
Comments: All comments need to be approved which led to a 50% reduction in bandwidth. Captas have been disabled. A rewrite of comment system is needed. Comment feed behind P in HPR
\r\n \r\n
Searching for WAV versions of the intro/outro\r\n
Ken was promoting HPR on the KnightWise KWTV LIVE 2010 : Day one. Hour 4
\r\n
Special thanks to Miai who endured the pain of uploading all episodes from ep0001 to ep0620 to archive.org
\r\n\r\n
Mailing List News
\r\n
sigflup offered to put up an ice cast server to play hpr reruns and Dave Yates answered the call
\r\n
More talk about the new RSS feeds. I still need more feed back on the test RSS 2.0 feed
\r\n
Pokey has ordered a booth for North east linux fest and has ordered HPR stickers and is looking for help. Listen to episode hpr0630 for more information
\r\n
HPR TV - Droops want\'s to do TV on HPR - everyone seems to like the idea. More on this as it develops.
\r\n
Jason Scott of textfiles.com has offered to mirror hpr for us.
\r\n\r\n
A year in review
\r\n
We Published 131 of a possible 261 shows in 2010. \r\nWe will need 260 shows for 2011 and so far we have 17 needless to say we need shows.
\r\n
There were 37 hosts.
\r\n
\r\n
Contributing one show: tmacuk, Patrick L Archibald, Dave Yates, janedoc, Enigma, Roundtable, elel, thewtex, Johninsc, Thistleweb, Ruji, pegwole, cobra, FiftyOneFifty, Curbuntu, arfab, brother mouse, StankDawg, Flaviu Simihaian, guitarman, and Dann
\r\n
Contributing two shows: PipeManMusic, Quvmoh, Jared Mayes, and Urban Koistinen
\r\n
Contributing three shows: JWP, sp0rus, deepgeek
\r\n
Contributing four shows: lostnbronx, monsterb, and pokey
\r\n
Contributing five shows: Xoke
\r\n
Contributing seven shows: SigFlUP, and K5TUX
\r\n
Contributing eight shows: Drake Anubis
\r\n
Contributing ten shows: Ken Fallon
\r\n
Contributing eleven shows: Michael Foord
\r\n
Contributing thirteen shows: finux
\r\n
Contributing twenty shows: klaatu
\r\n
\r\n
Droops has offered to help improve the site stats.
\r\n\r\n
Thank You !
\r\n
Thanks to everyone who supported HPR in 2010 and have a great new year
\r\n\r\n
A word from our spammers
\r\n
Despite all the comments been approved our dedicated team of spammers continue to visit.
\r\n612 guitarman:: Urban cyclist - Commuting\r\n613 JWP:: alternative investing and how the internet changes...\r\n614 PipeManMusic:: Intro To Audio and Pod/Oggcasting\r\n615 klaatu:: Urban Camping ep 2\r\n616 Dave Yates:: Surfraw\r\n617 Thistleweb:: So You Wanna Start A Band?\r\n618 arfab:: Installing Windows XP in VirtualBox\r\n619 KFive:: QSK: Episode 5: You\'re Driving Me Crazy\r\n620 klaatu:: Klaatu holds an interview with Tek Systems\r\n621 Dann:: Dann and CafeNinja Book Review: Ayn Rand\'s Atlas ...\r\n622 janedoc:: Influenza\r\n623 JWP:: nano editor\r\n624 klaatu:: Urban Camping ep 3\r\n625 pokey:: Network Cabeling at Resno\'s House\r\n626 klaatu:: Urban Camping ep 4\r\n627 Ruji:: From OS X to OS Whoredom to Linux\r\n628 brother mouse:: Tasker - Automation for Android Devices\r\n629 Ken Fallon::RSS 2.0 Specification with iTunes namespace\r\n630 pokey:: HPR at the Northeast GNU-Linux Fest\r\n
\r\n\r\n
Other News
\r\n
Comments: All comments need to be approved which led to a 50% reduction in bandwidth. Captas have been disabled. A rewrite of comment system is needed. Comment feed behind P in HPR
\r\n \r\n
Searching for WAV versions of the intro/outro\r\n
Ken was promoting HPR on the KnightWise KWTV LIVE 2010 : Day one. Hour 4
\r\n
Special thanks to Miai who endured the pain of uploading all episodes from ep0001 to ep0620 to archive.org
\r\n\r\n
Mailing List News
\r\n
sigflup offered to put up an ice cast server to play hpr reruns and Dave Yates answered the call
\r\n
More talk about the new RSS feeds. I still need more feed back on the test RSS 2.0 feed
\r\n
Pokey has ordered a booth for North east linux fest and has ordered HPR stickers and is looking for help. Listen to episode hpr0630 for more information
\r\n
HPR TV - Droops want\'s to do TV on HPR - everyone seems to like the idea. More on this as it develops.
\r\n
Jason Scott of textfiles.com has offered to mirror hpr for us.
\r\n\r\n
A year in review
\r\n
We Published 131 of a possible 261 shows in 2010. \r\nWe will need 260 shows for 2011 and so far we have 17 needless to say we need shows.
\r\n
There were 37 hosts.
\r\n
\r\n
Contributing one show: tmacuk, Patrick L Archibald, Dave Yates, janedoc, Enigma, Roundtable, elel, thewtex, Johninsc, Thistleweb, Ruji, pegwole, cobra, FiftyOneFifty, Curbuntu, arfab, brother mouse, StankDawg, Flaviu Simihaian, guitarman, and Dann
\r\n
Contributing two shows: PipeManMusic, Quvmoh, Jared Mayes, and Urban Koistinen
\r\n
Contributing three shows: JWP, sp0rus, deepgeek
\r\n
Contributing four shows: lostnbronx, monsterb, and pokey
\r\n
Contributing five shows: Xoke
\r\n
Contributing seven shows: SigFlUP, and K5TUX
\r\n
Contributing eight shows: Drake Anubis
\r\n
Contributing ten shows: Ken Fallon
\r\n
Contributing eleven shows: Michael Foord
\r\n
Contributing thirteen shows: finux
\r\n
Contributing twenty shows: klaatu
\r\n
\r\n
Droops has offered to help improve the site stats.
\r\n\r\n
Thank You !
\r\n
Thanks to everyone who supported HPR in 2010 and have a great new year
\r\n\r\n
A word from our spammers
\r\n
Despite all the comments been approved our dedicated team of spammers continue to visit.
',159,47,1,'CC-BY-NC-SA','Community News',0,2570,1),
(632,'2011-01-04','Notebook Method for ADHD',711,'A technique for coping with the symptoms of ADHD','I recently graduated college and wanted to share a coping skill that I call the Notebook Method, it is used for organization and study.',1,0,1,'CC-BY-NC-SA','\"fountain pen\",\"mental health\",tools',0,2510,1),
(633,'2011-01-05','The Language Frontier Episode 1',1379,'ep-1: she talks about the importance of language in everyday life, the media, ads, buzzwords, etc.','
Skirlet introduces her new six-part miniseries, The Language Frontier.
\r\n
In this episode, she talks about the importance of language in everyday life, the media, ads, buzzwords, and more.
\r\n
Listen to this episode in ogg vorbis via aesdiopod.
',88,48,1,'CC-BY-NC-SA','language,\"the media\",ads,buzzwords',0,2497,1),
(634,'2011-01-06','Urban Camping ep 5',1595,'Episode 5: where to find food','
The fifth episode in Klaatu\'s HOW TO be an Urban Camper mini series, about where to find food.
',78,46,0,'CC-BY-NC-SA','\"free food\",\"dumpster diving\",stealing,bartering',0,2581,1),
@@ -16948,7 +17063,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(648,'2011-01-26','Wput: a command-line ftp-client',244,'A brief overview of wput, a command-line FTP utility','
\r\nWput is a command-line ftp-client that looks like wget but instead of downloading, uploads files or whole directories to remote ftp-servers.\r\n
\r\n
Main Features
\r\n
\r\n
wget-like interface
\r\n
TLS-encryption
\r\n
resuming
\r\n
speed-limit
\r\n
time-stamping (compares local and remote dates)
\r\n\r\n
proxy-support (socks5, http)
\r\n
i18n
\r\n
windows-compatibility
\r\n
\r\n\r\n
Wput is a free utility that is able to upload files to a\r\nftp-server.
\r\n\r\n
Wput is non−interactive and background-capable. It\r\ncan upload files or whole directories and is meant to be a\r\nrobust client even for unstable connections and will\r\ntherefore retry to upload a file, if the connection\r\nbroke.
\r\n\r\n
Wput supports resuming, so it automatically continues\r\nuploading from the point where the previous upload stopped,\r\nmeaning that you can kill Wput anytime and it will (if the\r\nremote ftp−server supports this, being most likely the\r\ncase) finish the partial uploaded file.
\r\n\r\n
Wput supports connections through proxies, allowing you\r\nto use it in an environment that can access the internet\r\nonly via a proxy or to provide anonymity by hiding your\r\nip−address to the server. For SOCKSv5−proxies\r\nWput supports also listening mode, allowing you to use\r\nport-mode ftp through a proxy (useful if the remote ftp is\r\nbehind a firewall or a gateway).
\r\n\r\n
Wput supports timestamping, so it will (in the ideal case\r\nand if timestamping is enabled) only upload files, that are\r\nnewer than the remote-file.
\r\n\r\n
The upload-rate of Wput can be restricted, so that Wput\r\nwon’t eat all available bandwidth.
\r\n',30,0,1,'CC-BY-NC-SA','ftp,shell,utilities',0,2341,1),
(649,'2011-01-27','Doing your own auto repairs',1613,'Methods for saving money while maintaining your vehicle','\r\n
\r\nQuvmoh and Phantom Hawk discuss doing your own auto repairs, getting help\r\non forums and the infamous $50 paint job\r\n
\r\n',110,0,1,'CC-BY-NC-SA','auto,\"auto repair\",\"auto maintenance\"',0,2384,1),
(650,'2011-01-28','Dumpster Diving',1096,'Tips, tricks and precautions for salvaging hardware from dumpsters and dumps','
Dumpster Diving
\r\n
Cheapskate Computing
\r\n
Broam talks about how to obtain, clean, and rehabilitate computing equipment that others have thrown away, and shares a few stories.
',143,0,1,'CC-BY-NC-SA','hardware,recycling,repair',0,2920,1),
-(651,'2011-01-31','HPR Community News 0x03',1860,'HPR Community News 0x03','\r\n\r\n
642 brother mouse:: Hacking Your Suburban Backyard with Chickens
\r\n\r\n
643 droops:: Whats on my MP3 Player
\r\n\r\n
644 N50:: The Plop Boot Loader and UNetbootin- A Great Team
\r\n \r\n
645 Curbuntu and Baylee Juran:: The Dinosaur\'s Dilemma
\r\n\r\n
646 Dismal Science:: Do you need a carrier plan with Android
\r\n\r\n
647 brother mouse :: How I Got Into Linux
\r\n\r\n
648 Ken Fallon:: Wput: a command-line ftp-client
\r\n\r\n
649 Quvmoh and Phantom Hawk:: Doing your own auto repairs
\r\n\r\n
650 Broam:: Dumpster Diving
\r\n\r\n\r\n
Podcasts by Phone
\r\n
\r\nEvery listener is strongly encouraged to send us one contribution per year. \r\nIn episode 636 pokey told us that his Mother also listens to the show from time to time \r\nTo make it easy for everyone and anyone to contribute we now have call in lines \r\n
US: +1-206-312-5749
\r\n
UK: +44-203-432-5879
\r\n \r\nPlease include your name and email address. \r\nDON\'T FORGET TO ADD THE # SIGN AT THE END \r\nThanks to Russ Woodman - K5TUX and Arron \'Finux\' Finnon for making this possible.\r\n\r\n\r\n
Automation and RSS feed
\r\n
\r\n
RSS Feed: Delayed as it requires DB changes
\r\n\r\n
Website: Site update that will allow you to upload a show on the website.
\r\n
\r\n\r\n
Syndicates Shows
\r\n\r\n
\r\nI\'m running into some difficulties with how best to address syndicated shows and I\'d appreciate your feedback.\r\n
\r\n
\r\nThe background is that I\'m trying to specify scheduling rules (https://hackerpublicradio.org/calendar.php) trying to been fair to everyone but also with a view to automating the task. I\'ve taken the view that shows produced for HPR will get priority in the schedule before syndicated shows. This brings up the question of what is a syndicated shows.\r\n
\r\n
\r\nIf a show is posted to a RSS feed before been posted to HPR then it would be considered to be a syndicated show. However we have had resubmission of a series that was on a podcast that faded so probably no one heard them. Are theses shows now syndicated or do I schedule them as HPR shows ?\r\n
\r\n
\r\nWe have also had submissions from a host that posts to the HPR FTP server and their own feed at the same time. Because of the delay in HPR scheduling they come out later than their own RSS feed. So are these also now syndicated ?\r\n
\r\n
\r\nAfter hearing 635 Dismal Science:: Cloudy Predictions I was reminded that the speech Freedom In the Cloud: Software Freedom, Privacy, and Security for Web 2.0 and Cloud Computing by A Speech given by Eben Moglen at a meeting of the Internet Society\'s New York branch on Feb 5, 2010 would be ideal for HPR. Then Fifty OneFifty emailed to say \"I noticed there hadn\'t been any recordings from LUG meetings in a while. I thought you might want to ask for submissions where meetings or talks (from various fests) are already recorded.\" With the scheduling rules as they are at the moment, the syndicated don\'t ever get played.\r\n
\r\n\r\n
Time critical
\r\n
Scheduled Slots
\r\n
New Hosts
\r\n
HPR Content on a First in First Out basis.
\r\n
Syndicated shows on a First in First Out basis.
\r\n\r\n
\r\nOn the other side I\'ve had comments that the \"Flood Gates\" had been opened on the HPR feed.\r\n
\r\n
\r\nSo thinking about it I was thinking of reserving Tuesday and Thursday for syndicated shows, LUG talks, Speeches and the like.\r\n\r\nFeedback to the mailing list https://hackerpublicradio.org/maillist\r\n
642 brother mouse:: Hacking Your Suburban Backyard with Chickens
\r\n\r\n
643 droops:: Whats on my MP3 Player
\r\n\r\n
644 N50:: The Plop Boot Loader and UNetbootin- A Great Team
\r\n \r\n
645 Curbuntu and Baylee Juran:: The Dinosaur\'s Dilemma
\r\n\r\n
646 Dismal Science:: Do you need a carrier plan with Android
\r\n\r\n
647 brother mouse :: How I Got Into Linux
\r\n\r\n
648 Ken Fallon:: Wput: a command-line ftp-client
\r\n\r\n
649 Quvmoh and Phantom Hawk:: Doing your own auto repairs
\r\n\r\n
650 Broam:: Dumpster Diving
\r\n\r\n\r\n
Podcasts by Phone
\r\n
\r\nEvery listener is strongly encouraged to send us one contribution per year. \r\nIn episode 636 pokey told us that his Mother also listens to the show from time to time \r\nTo make it easy for everyone and anyone to contribute we now have call in lines \r\n
US: +1-206-312-5749
\r\n
UK: +44-203-432-5879
\r\n \r\nPlease include your name and email address. \r\nDON\'T FORGET TO ADD THE # SIGN AT THE END \r\nThanks to Russ Woodman - K5TUX and Arron \'Finux\' Finnon for making this possible.\r\n\r\n\r\n
Automation and RSS feed
\r\n
\r\n
RSS Feed: Delayed as it requires DB changes
\r\n\r\n
Website: Site update that will allow you to upload a show on the website.
\r\n
\r\n\r\n
Syndicates Shows
\r\n\r\n
\r\nI\'m running into some difficulties with how best to address syndicated shows and I\'d appreciate your feedback.\r\n
\r\n
\r\nThe background is that I\'m trying to specify scheduling rules (https://hackerpublicradio.org/calendar.php) trying to been fair to everyone but also with a view to automating the task. I\'ve taken the view that shows produced for HPR will get priority in the schedule before syndicated shows. This brings up the question of what is a syndicated shows.\r\n
\r\n
\r\nIf a show is posted to a RSS feed before been posted to HPR then it would be considered to be a syndicated show. However we have had resubmission of a series that was on a podcast that faded so probably no one heard them. Are theses shows now syndicated or do I schedule them as HPR shows ?\r\n
\r\n
\r\nWe have also had submissions from a host that posts to the HPR FTP server and their own feed at the same time. Because of the delay in HPR scheduling they come out later than their own RSS feed. So are these also now syndicated ?\r\n
\r\n
\r\nAfter hearing 635 Dismal Science:: Cloudy Predictions I was reminded that the speech Freedom In the Cloud: Software Freedom, Privacy, and Security for Web 2.0 and Cloud Computing by A Speech given by Eben Moglen at a meeting of the Internet Society\'s New York branch on Feb 5, 2010 would be ideal for HPR. Then Fifty OneFifty emailed to say \"I noticed there hadn\'t been any recordings from LUG meetings in a while. I thought you might want to ask for submissions where meetings or talks (from various fests) are already recorded.\" With the scheduling rules as they are at the moment, the syndicated don\'t ever get played.\r\n
\r\n\r\n
Time critical
\r\n
Scheduled Slots
\r\n
New Hosts
\r\n
HPR Content on a First in First Out basis.
\r\n
Syndicated shows on a First in First Out basis.
\r\n\r\n
\r\nOn the other side I\'ve had comments that the \"Flood Gates\" had been opened on the HPR feed.\r\n
\r\n
\r\nSo thinking about it I was thinking of reserving Tuesday and Thursday for syndicated shows, LUG talks, Speeches and the like.\r\n\r\nFeedback to the mailing list https://hackerpublicradio.org/maillist\r\n
Only the last few are holding out now that we approve all comments but some still continue to visit.
\r\n',159,47,1,'CC-BY-NC-SA','Community News',0,2536,1),
(652,'2011-02-01','Nameless Infosec Podcast Ep 1',2881,'A look at what is happening in the world of Information Security','
\r\n',144,0,1,'CC-BY-NC-SA','Nameless Infosec Podcast, security, information security',0,2381,1),
(653,'2011-02-02','Intro to Black Box Testing',2590,'A brief overview of software testing methodologies','
\r\nHeisenbug and Cloud4 give a basic introduction to Black Box Testing. This is a first lesson of how to find problems or vulnerabilities in software without access to the source code, and explanation as to why companies and individuals should black box test products. \r\n
',145,0,1,'CC-BY-NC-SA','testing,development',0,2631,1),
(654,'2011-02-03','Offline Filesharing',397,'Offline peer-to-peer filesharing with dead drops and off-the-grid hubs','
',146,0,1,'CC-BY-NC-SA','\"file transfer\",\"peer to peer\"',0,2376,1),
@@ -16973,7 +17088,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(673,'2011-03-02','droops returns to geocaching',1068,'droops voices regrets over the lack of imagination in the placement of some caches','
\r\ndroops talks about his return to geocaching and how he is trying to solve the worlds problems.\r\n
',1,0,1,'CC-BY-NC-SA','geocaching,gps',0,8912,1),
(674,'2011-03-03','The Language Frontier Episode 2',956,'The Language Frontier; this episode, she talks about language\'s effect on art, and upon governments.','
Skirlet continues The Language Frontier; in this episode, she talks about language\'s effect on art, and upon governments.
\r\n
Listen to this episode in ogg vorbis via aesdiopod.
',88,54,1,'CC-BY-NC-SA','language,art,government,communication,music',0,2334,1),
(675,'2011-03-04','Python Response to Bad Apples Podcast 5x18',467,'A response to a challenge from Klaatu - translate a bash script into python','
\r\nIn episode 5X18 of the Bad Apples podcast, Klaatu challenged me to create my own podcast \r\nexplaining my Python version of his bash script. His bash script created a list of\r\nfiles that matched a file name pattern, then read the first line from each of those files\r\nand wrote that to an output file. My Python program does exactly the same thing, but in Python. \r\nHere is the body of that program with the comments stripped out:
\r\n
\r\n#!/usr/bin/python\r\nimport glob\r\noutfile = open(\"toc.output\", \"w\")\r\nfor filename in glob.glob(\"*.txt\"):\r\n outfile.write(open(filename).readline())\r\n
\r\n
\r\nThe above text can be used to follow along with the audio of the podcast. Here is the English explanation \r\nversion of the above program: \r\n
\r\n
Tell the system the rest of the text in the file should interpreted by Python
\r\n
Import the glob module, which is one of the library modules that comes with Python
\r\n
Create a new file object called \"toc.output\" that we can write to
\r\n
Iterate over the list of files that match the pattern \"*.txt\" created by the glob function, and assign each matching file in turn to the filename variable
\r\n
Open each filename, read the first line from the file and write it to our previously opened output file.
\r\n
\r\n\r\nIt\'s not shown above, but each matching filename that we open is closed at the end of the looping construct. \r\nIn addtion, the output file is also closed at the end of the programs execution.\r\n \r\nHopefully you enjoyed the podcast!\r\n',153,0,1,'CC-BY-NC-SA','python,bash,scripting',0,2823,1),
-(676,'2011-03-07','Behind the Scenes at Hacker Public Radio. A community update for the month 2011-02.',2491,'HPR Community News for February 2011','
Tony Baechler for his research into Google voice\r\n
Code Cruncher for the entries to the business cards\r\n
mordancy for volunteering to look into Archive.org automating\r\n
droops for all the man love\r\n
droops and slick0 for the flac version of the theme song\r\n
David Stafford for constructive comments on how to improve the site\r\n
pokeys mom for the HPR promo\r\n
\r\n\r\n
Podcasts by Phone
\r\n\r\n\r\n
\r\nEvery listener is strongly encouraged to send us one contribution per year. \r\nIn episode 636 pokey told us that his Mother also listens to the show from time to time and this month she upheld her end of the bargain. \r\n\r\nThe call in lines \r\n
US: +1-206-312-5749
\r\n
UK: +44-203-432-5879
\r\n \r\nPlease include your name and email address. \r\nDON\'T FORGET TO ADD THE # SIGN AT THE END \r\nThanks to Russ Woodman - K5TUX and Arron \'Finux\' Finnon for making this possible.\r\n\r\n\r\n\r\n
Scheduling Rules update
\r\n
Shows will be released based on the following rules that gives content produced for HPR priority, while avoiding having any one host/series repeated in a week. Hosts are encouraged to release their shows on other feeds after uploading them to HPR.
\r\n
\r\n
\r\n
Time critical \r\n Where the host has requested a show to be posted at a particular time or that the show contains newsworthy information.
\r\n
Scheduled Slots \r\n Where a host has been assigned a regular day to release a show.
\r\n
New Hosts \r\n In order to encourage new hosts we will prioritize shows submitted from new hosts so they can experience the excitment of podcasting.
\r\n
HPR Content on a First in First Out basis.
\r\n \r\n \r\n
Syndicated shows will be released on their own scheduled slot following the same rules as above.
\r\n\r\n
HPR Stickers
\r\n
\r\n\r\n
\r\n
\r\nHot off the press ! \r\nThe HPR stickers have been distributed to our Global distribution network in North America, Europe and Australia. \r\nFor anyone else on this who wants them, now is the time to ask; before they all get handed out at the first couple of Linux fests. They\'re free as in beer btw. \r\nWe\'re also sending stickers out to the other podcasters who promoted HPR in the past.\r\n
\r\n\r\n
Audio Book Club
\r\n
\r\nSeveral of the HPR contributors in the IRC channel have formed the beginning of an audio-book club. We\'ll be doing reviews which include spoilers, so I was wondering if you could announce our first audio-book title in case anyone wanted to listen to it before we spoiled it on them. We\'re hoping this will become a(n ir)regular show for HPR, but we\'ll see how the first one goes. All audio-books that we review will be free (as in beer) and easily available, so the barrier to entry for the listeners and participants will just be the time involved in listening to the audio. The first audio book is a short one. It runs about 3.5 hours total, and I can tell you it is a very good book which will appeal to both science fiction fans and political critics alike. \r\n
\r\nFrom podiobooks.com: \"Daniel Feldman was a doctor once. He made the mistake of saving a friend\'s life in violation of Medical Lobby rules. Now, he\'s a pariah, shunned by all, forbidden to touch another patient. But things are more loose on Mars. There, Doc Feldman is welcomed by the colonists, even as he\'s hunted by the authorities. But, when he discovers a Martian plague may soon wipe out humanity on two planets, the authorities begin hunting him for a different reason altogether.\"\r\n
\r\n
\r\nWe\'ll be announcing the next book at the end of our first show.\r\n
\r\n\r\n\r\n
Site improvements
\r\n
\r\n
Each hosts have their own folder ie: hackerpublicradio.org/droops/\r\n
Vimeo Group https://vimeo.com/channels/hpr\r\n
Site redesign more up-to-date looking.\r\n
All comments and posts need a rel=nofollow tag on links.\r\n
All the RSS feed needs to be put in the address bar\r\n
Each episode title link should link to the individual show page\r\n
A separate link/graphic should play the audio, maybe have a built in player and a download link.\r\n
Each episode should have a unique url with the shows title in it, ie hackerpublicradio.org/geocaching_with_droops/ \r\n
We need more of a call to action about recording a show, its kinda hidden.\r\n
The total comment viewer needs to link to the episode page, so that people can see all of the comments about the episode.\r\n
A way to upload our episodes and automate everything.\r\n
We also need the ability for the hosts to add episodes of hpr and other shows to a \"Select\" RSS feed. This way, when we find something super cool that someone else recorded, we can share it with the community.\r\n
\r\n\r\n
News from the Admin Channel
\r\n
HPR is been blocked by some companies because they can filter the find the word hacker - money well spent. During the spam fest, HPR got listed on sites as a source of malware. I\'ve been contacting the sites but each blames the next one for the listing and the trail runs cold.\r\n
I registered Hobby Public Radio but cPanel doesn\'t seem to have a way to have HackerPublicRadio and HobbyPublicRadio served from the same directory.
\r\n
\r\nQuestion: Off the shelf or Self Build ?\r\n
\r\n
Can we make a HPR site using standard Wordpress plugins ?\r\n
\r\n
User account management\r\n
Podcast plugins\r\n
Released according to a schedule \r\n
\r\n
email from the server is broken through cPanel and this is delaying up automation \r\n
Any PHP programmers want to help\r\n
Proposal to make droops, finux, klaatu admins\r\n
Still no update on the Ice Cast server\r\n
\r\n\r\n
Events
\r\n
\r\nIndiana LinuxFest is a community F/OSS conference, which is showcasing the best the community has to offer in the way of Free and Open Source Software, Open Hardware, and Free Culture. We are also highlighting the best and brightest from all of these communities from the hobbyist to professional level.\r\n
\r\n
\r\nIndiana LinuxFest 2011, March 25th to the 27th at the Wyndam Indianapolis West, is free to attend and Open for any to attend be it the hobbyist to the professional. So join us as we March to Freedom.\r\n
\r\n\r\n\r\n
\r\nEvery 50th person who signs up for the following passes, Supporter Passes and LPIC-1 Exam Cram Session, will receive their choice of a Nook Color or Archos 70 while supplies last.\r\n
\r\nHPR Admins with \"Community News\" SCHEDULED SLOT\r\nbiosshadow and sp0rus Nameless Infosec Podcast. SCHEDULED SLOT\r\nlostnbronx THEATER OF THE IMAGINATION 2\r\nSyndicated Thursday ---> 10 Buck Review\r\nBroam auctions yard sales and flea markets\r\n---\r\npokey NELF Taxes\r\nriddlebox Ep1 Product Review SunVolt\r\n
',159,47,1,'CC-BY-NC-SA','Community News',0,1372,1),
+(676,'2011-03-07','Behind the Scenes at Hacker Public Radio. A community update for the month 2011-02.',2491,'HPR Community News for February 2011','
Tony Baechler for his research into Google voice\r\n
Code Cruncher for the entries to the business cards\r\n
mordancy for volunteering to look into Archive.org automating\r\n
droops for all the man love\r\n
droops and slick0 for the flac version of the theme song\r\n
David Stafford for constructive comments on how to improve the site\r\n
pokeys mom for the HPR promo\r\n
\r\n\r\n
Podcasts by Phone
\r\n\r\n\r\n
\r\nEvery listener is strongly encouraged to send us one contribution per year. \r\nIn episode 636 pokey told us that his Mother also listens to the show from time to time and this month she upheld her end of the bargain. \r\n\r\nThe call in lines \r\n
US: +1-206-312-5749
\r\n
UK: +44-203-432-5879
\r\n \r\nPlease include your name and email address. \r\nDON\'T FORGET TO ADD THE # SIGN AT THE END \r\nThanks to Russ Woodman - K5TUX and Arron \'Finux\' Finnon for making this possible.\r\n\r\n\r\n\r\n
Scheduling Rules update
\r\n
Shows will be released based on the following rules that gives content produced for HPR priority, while avoiding having any one host/series repeated in a week. Hosts are encouraged to release their shows on other feeds after uploading them to HPR.
\r\n
\r\n
\r\n
Time critical \r\n Where the host has requested a show to be posted at a particular time or that the show contains newsworthy information.
\r\n
Scheduled Slots \r\n Where a host has been assigned a regular day to release a show.
\r\n
New Hosts \r\n In order to encourage new hosts we will prioritize shows submitted from new hosts so they can experience the excitment of podcasting.
\r\n
HPR Content on a First in First Out basis.
\r\n \r\n \r\n
Syndicated shows will be released on their own scheduled slot following the same rules as above.
\r\n\r\n
HPR Stickers
\r\n
\r\n\r\n
\r\n
\r\nHot off the press ! \r\nThe HPR stickers have been distributed to our Global distribution network in North America, Europe and Australia. \r\nFor anyone else on this who wants them, now is the time to ask; before they all get handed out at the first couple of Linux fests. They\'re free as in beer btw. \r\nWe\'re also sending stickers out to the other podcasters who promoted HPR in the past.\r\n
\r\n\r\n
Audio Book Club
\r\n
\r\nSeveral of the HPR contributors in the IRC channel have formed the beginning of an audio-book club. We\'ll be doing reviews which include spoilers, so I was wondering if you could announce our first audio-book title in case anyone wanted to listen to it before we spoiled it on them. We\'re hoping this will become a(n ir)regular show for HPR, but we\'ll see how the first one goes. All audio-books that we review will be free (as in beer) and easily available, so the barrier to entry for the listeners and participants will just be the time involved in listening to the audio. The first audio book is a short one. It runs about 3.5 hours total, and I can tell you it is a very good book which will appeal to both science fiction fans and political critics alike. \r\n
\r\nFrom podiobooks.com: \"Daniel Feldman was a doctor once. He made the mistake of saving a friend\'s life in violation of Medical Lobby rules. Now, he\'s a pariah, shunned by all, forbidden to touch another patient. But things are more loose on Mars. There, Doc Feldman is welcomed by the colonists, even as he\'s hunted by the authorities. But, when he discovers a Martian plague may soon wipe out humanity on two planets, the authorities begin hunting him for a different reason altogether.\"\r\n
\r\n
\r\nWe\'ll be announcing the next book at the end of our first show.\r\n
\r\n\r\n\r\n
Site improvements
\r\n
\r\n
Each hosts have their own folder ie: hackerpublicradio.org/droops/\r\n
Vimeo Group https://vimeo.com/channels/hpr\r\n
Site redesign more up-to-date looking.\r\n
All comments and posts need a rel=nofollow tag on links.\r\n
All the RSS feed needs to be put in the address bar\r\n
Each episode title link should link to the individual show page\r\n
A separate link/graphic should play the audio, maybe have a built in player and a download link.\r\n
Each episode should have a unique url with the shows title in it, ie hackerpublicradio.org/geocaching_with_droops/ \r\n
We need more of a call to action about recording a show, its kinda hidden.\r\n
The total comment viewer needs to link to the episode page, so that people can see all of the comments about the episode.\r\n
A way to upload our episodes and automate everything.\r\n
We also need the ability for the hosts to add episodes of hpr and other shows to a \"Select\" RSS feed. This way, when we find something super cool that someone else recorded, we can share it with the community.\r\n
\r\n\r\n
News from the Admin Channel
\r\n
HPR is been blocked by some companies because they can filter the find the word hacker - money well spent. During the spam fest, HPR got listed on sites as a source of malware. I\'ve been contacting the sites but each blames the next one for the listing and the trail runs cold.\r\n
I registered Hobby Public Radio but cPanel doesn\'t seem to have a way to have HackerPublicRadio and HobbyPublicRadio served from the same directory.
\r\n
\r\nQuestion: Off the shelf or Self Build ?\r\n
\r\n
Can we make a HPR site using standard Wordpress plugins ?\r\n
\r\n
User account management\r\n
Podcast plugins\r\n
Released according to a schedule \r\n
\r\n
email from the server is broken through cPanel and this is delaying up automation \r\n
Any PHP programmers want to help\r\n
Proposal to make droops, finux, klaatu admins\r\n
Still no update on the Ice Cast server\r\n
\r\n\r\n
Events
\r\n
\r\nIndiana LinuxFest is a community F/OSS conference, which is showcasing the best the community has to offer in the way of Free and Open Source Software, Open Hardware, and Free Culture. We are also highlighting the best and brightest from all of these communities from the hobbyist to professional level.\r\n
\r\n
\r\nIndiana LinuxFest 2011, March 25th to the 27th at the Wyndam Indianapolis West, is free to attend and Open for any to attend be it the hobbyist to the professional. So join us as we March to Freedom.\r\n
\r\n\r\n\r\n
\r\nEvery 50th person who signs up for the following passes, Supporter Passes and LPIC-1 Exam Cram Session, will receive their choice of a Nook Color or Archos 70 while supplies last.\r\n
\r\nHPR Admins with \"Community News\" SCHEDULED SLOT\r\nbiosshadow and sp0rus Nameless Infosec Podcast. SCHEDULED SLOT\r\nlostnbronx THEATER OF THE IMAGINATION 2\r\nSyndicated Thursday ---> 10 Buck Review\r\nBroam auctions yard sales and flea markets\r\n---\r\npokey NELF Taxes\r\nriddlebox Ep1 Product Review SunVolt\r\n
',159,47,1,'CC-BY-NC-SA','Community News',0,1372,1),
(677,'2011-03-08','THEATER OF THE IMAGINATION: PART 2',994,'Some descriptions of the base concepts','
',107,52,1,'CC-BY-NC-SA','audiocast,broadcast,\"audio drama\",RSS',0,2403,1),
(678,'2011-03-09','Terminally Stupid Episode 1',556,'Mrs. Xoke scours the net to find us those that hit rock bottom and started digging.','Terminally Stupid Episode 1\r\n\r\nFull show notes at https://captaindramaticsmom.blogspot.com/2011/03/episode-1-terminally-stupid.html',154,0,1,'CC-BY-NC-SA','Terminally Stupid,fun,comedic',0,2668,1),
(679,'2011-03-10','A Little Bit of Python: Episode 14 2010-06-06',1116,'An interview with Christian Tismer after PyCon 2010','
\r\nA Little Bit of Python is an occasional podcast on all things Python. The four protagonists on the show are all core Python developers and members of the Python Software Foundation. They are: Michael Foord (author of IronPython in Action and maintainer of unittest), Andrew Kuchling (creator of PyCrypto and one of the python.org webmasters), Steve Holden (PSF chairman), Dr. Brett Cannon (author of importlib amongst other things) and Jesse Noller (maintainer of multiprocessing).\r\n
\r\n
\r\nEpisode 14.Bit-of-Python-2010-06-06\r\n
\r\n
\r\nInterview with Christian Tismer\r\n
\r\n
\r\nChristian Tismer is a long standing member of the Python community and, amongst other things, he is the original\r\ncreator of Stackless and has worked on both psyco and PyPy. In this interview we discuss all of these projects,\r\nboth their history and what the future holds for them.\r\n
\r\n',121,38,1,'CC-BY-NC-SA','Pycon,Stackless,psyco,PyPy,\"Unladen Swallow\"',0,2377,1),
@@ -16992,7 +17107,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(692,'2011-03-29','audacity to mess with satan',311,'A quick episode including garage security, book recommendations, and devious audio manipulation','
',110,0,1,'CC-BY-NC-SA','\"audio editing\",\"book review\",security',0,2408,1),
(693,'2011-03-30','Terminally Stupid Episode 3',825,'Mrs. Xoke scours the net to find us those that hit rock bottom and started digging.','MrsXoke presents Terminally Stupid Episode 3',154,0,1,'CC-BY-NC-SA','Terminally Stupid,fun,comedic',0,2472,1),
(694,'2011-03-31','The U-Cubed Event',707,'The Full circle podcast interview Jon Spriggs and Les Pounder about organizing U-Cubed','
The full circle podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine dot org forward slash podcast, send us a comment to podcast (at) fullcirclemagazine.org
',160,0,1,'CC-BY-NC-SA','Full Circle Podcast',0,2262,1),
-(695,'2011-04-01','Behind the Scenes at HPR. A community update for the month 2011-03',1581,'HPR Community News for March 2011','
morgellon the lowtek mystic for the photos of the indiana linuxfest
\r\n
again pokeys mom for the HPR promo
\r\n
pokey for sending out all the stickers out of his own pocket
\r\n
code cruncher for paying for the business cards out of her own pocket
\r\n
pokey and code cruncher for being amazing - more info next month
\r\n
\r\n\r\n
Podcasts by Phone
\r\n\r\n\r\n
\r\nEvery listener is strongly encouraged to send us one contribution per year. \r\nIn episode 636 pokey told us that his Mother also listens to the show from time to time and this month she upheld her end of the bargain. \r\n\r\nThe call in lines \r\n
\r\n
US: +1-206-312-5749
\r\n
UK: +44-203-432-5879
\r\n
\r\n \r\nPlease include your name and email address. \r\nDON\'T FORGET TO ADD THE # SIGN AT THE END \r\nThanks to Russ Woodman - K5TUX and Arron \'Finux\' Finnon for making this possible.\r\n\r\n\r\n
Hobby Public Radio dot org
\r\n
I have put up a test wordpress site on my shared server with the intention of seeing if we can replicate and improve on the functionality of our current site. Please don\'t link to this site. \r\n
\r\n
Account Management
\r\n
Comments
\r\n
Scheduling
\r\n
\r\nAnyone with experience of wordpress and wants to help email admin at hpr dot org.\r\n\r\n\r\n
Changes afoot at Binrev
\r\n
\r\nBinRev is our parent site and HPR is hosted on a binrev server. \r\nStankDawg pays the bills for this service and I was tipped off to a post that he made on 23 March 2011 where he notifies us that a server move is on the cards. \r\nhttps://www.binrev.com/forums/index.php/blog/1/entry-269-here-we-go-again/\r\n
\r\n
\r\nI\'m trying to arrange an interview with StankDawg to explain to us what BinRev is and what its goals are.\r\n
\r\n\r\n\r\n\r\n
HPR Stickers
\r\n
\r\n\r\n
\r\n \r\n
\r\nPhotos from pokey, Ken Fallon, droops, FiftyOneFifty, Curbuntu, smartasstronaut, Bruce_Patterson, Fabian Scherschel (@fabsh), code_cruncher, axis and Mrs. Xoke.\r\n\r\n
\r\nLast month I mentioned that klaatu has not posted a show that month. I was contacted by Karen from the Free as in Freedom oggcast (https://www.faif.us/) to tell me that klaatu had been arrested by the department of immigration while urban camping in some corporate head quarters in Cupertino. She wasn\'t allowed to say much apart from that the department of homeland security is now involved as well and have confiscated his laptop and are holding him at an undisclosed location. \r\nWe are collecting some money to aid in his release so if you can help please go over and donate at: \r\nhttps://hackerpublicradio.org/freeklaatu\r\n
\r\nMrGadgets Path toward Linux\r\nSeries of Best Of Full Circle \r\nInterview with Captain Crunch\r\n
\r\n',159,47,1,'CC-BY-NC-SA','Community News',0,2342,1),
+(695,'2011-04-01','Behind the Scenes at HPR. A community update for the month 2011-03',1581,'HPR Community News for March 2011','
morgellon the lowtek mystic for the photos of the indiana linuxfest
\r\n
again pokeys mom for the HPR promo
\r\n
pokey for sending out all the stickers out of his own pocket
\r\n
code cruncher for paying for the business cards out of her own pocket
\r\n
pokey and code cruncher for being amazing - more info next month
\r\n
\r\n\r\n
Podcasts by Phone
\r\n\r\n\r\n
\r\nEvery listener is strongly encouraged to send us one contribution per year. \r\nIn episode 636 pokey told us that his Mother also listens to the show from time to time and this month she upheld her end of the bargain. \r\n\r\nThe call in lines \r\n
\r\n
US: +1-206-312-5749
\r\n
UK: +44-203-432-5879
\r\n
\r\n \r\nPlease include your name and email address. \r\nDON\'T FORGET TO ADD THE # SIGN AT THE END \r\nThanks to Russ Woodman - K5TUX and Arron \'Finux\' Finnon for making this possible.\r\n\r\n\r\n
Hobby Public Radio dot org
\r\n
I have put up a test wordpress site on my shared server with the intention of seeing if we can replicate and improve on the functionality of our current site. Please don\'t link to this site. \r\n
\r\n
Account Management
\r\n
Comments
\r\n
Scheduling
\r\n
\r\nAnyone with experience of wordpress and wants to help email admin at hpr dot org.\r\n\r\n\r\n
Changes afoot at Binrev
\r\n
\r\nBinRev is our parent site and HPR is hosted on a binrev server. \r\nStankDawg pays the bills for this service and I was tipped off to a post that he made on 23 March 2011 where he notifies us that a server move is on the cards. \r\nhttps://www.binrev.com/forums/index.php/blog/1/entry-269-here-we-go-again/\r\n
\r\n
\r\nI\'m trying to arrange an interview with StankDawg to explain to us what BinRev is and what its goals are.\r\n
\r\n\r\n\r\n\r\n
HPR Stickers
\r\n
\r\n\r\n
\r\n \r\n
\r\nPhotos from pokey, Ken Fallon, droops, FiftyOneFifty, Curbuntu, smartasstronaut, Bruce_Patterson, Fabian Scherschel (@fabsh), code_cruncher, axis and Mrs. Xoke.\r\n\r\n
\r\nLast month I mentioned that klaatu has not posted a show that month. I was contacted by Karen from the Free as in Freedom oggcast (https://www.faif.us/) to tell me that klaatu had been arrested by the department of immigration while urban camping in some corporate head quarters in Cupertino. She wasn\'t allowed to say much apart from that the department of homeland security is now involved as well and have confiscated his laptop and are holding him at an undisclosed location. \r\nWe are collecting some money to aid in his release so if you can help please go over and donate at: \r\nhttps://hackerpublicradio.org/freeklaatu\r\n
\r\nMrGadgets Path toward Linux\r\nSeries of Best Of Full Circle \r\nInterview with Captain Crunch\r\n
\r\n',159,47,1,'CC-BY-NC-SA','Community News',0,2342,1),
(696,'2011-04-04','MrGadgets Path toward Linux',823,'Mr Gadgets talks about how he got to Linux','
MrGadgets\' final episode on his Path toward Linux
\n',155,29,1,'CC-BY-NC-SA','6502,Z80,6800,\"Moog Synthesizer\",\"Commodore PET\",\"TRS-80 Color Computer\",KIM-1',0,2461,1),
(697,'2011-04-05','Aaron Seigo on accessibility in KDE. An outtake from Frostcast Episode 36.',2045,'Aaron Seigo, KDE Developer, talks about accessibility in KDE','
After his outspoken criticism of accessibility in Ubuntu, Jonathan Nadeau has become the standard bearer for accessibility on the FLOSS desktop. In his interview with the KDE spokesperson Aaron Seigo, Jonathan didn\'t ask any questions about accessibility. I was expecting to hear what accessibility improvements are in the pipeline for KDE.\r\n
\r\n
When I contacted Jonathan about it he immediately replied saying that they did talk about accessibility. He didn\'t add it as the show was running too long and that he might release it as a separate podcast. I floated the idea of releasing it on HPR and he was kind enough to mail me the segment.\r\n
HPR has now no shows in the queue. HPR is a community feed and without shows it will cease to exist. Many people have stepped up and recorded shows but I know there are many more out there who have it in them to contribute. With that in mind please record a show today. Thank you.
\r\n',161,79,1,'CC-BY-NC-SA','accessibility,kde,interview',0,2220,1),
(698,'2011-04-06','How I Found Linux',1357,'code.cruncher explains where they began in computing, and how they found Linux','
\r\nAfter years of using Unix, Mac, and Windows I finally converted my two Windows computers to Linux for real. \r\nThe journey into Linux started with not being successful at writing a startup script for Linux. A few years later I discovered some Linux love when writing a driver that would make the keyboard LED lights blink the morse code of the letters being typed. A year ago I did a few virtual Linux installations (archLinux, Debian) in VirtualBox to test out some Cloud Computing stuff. \r\nBefore Christmas 2010, I was considering contributing to the KDE project and installed Kubuntu as well as Ubuntu. \r\nThis year, because I am going to the LinuxFest NorthWest (and I am going to have a table there for HackerPublicRadio) I had to install Linux on my old Windows Laptop. I also converted my Samsung Q1 Ultra Tablet computer from WindowsXP to Ubuntu. \r\nBoth conversions were successful, but a few problems had to be solved for which https://answers.launchpad.net/ubuntu is a great place to go and find or get answers.\r\n
\r\n
\r\nBTW: If you\'re going to https://www.linuxfestnorthwest.org/ please come and say \"hi\" at the HPR table and if you can help out at the table please let me know code.cruncher_hpr at yahoo ca.\r\n
',162,29,1,'CC-BY-NC-SA','development,\"dual boot\",distrohopping,linux',0,2491,1),
@@ -17013,7 +17128,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(713,'2011-04-26','NELF Interview With Matt Lee and Donald Robertson',2240,'Interview with Matt Lee and Donald Robertson of the Free Software Foundation','
\r\nPlease consider contributing to the Free Software Foundation.\r\nhttps://www.fsf.org/\r\n
\r\n
\r\nPlease forgive the audio quality of this recording. Due to the acoustics of the room, and my crappy mic, I had to \"massage\" the recording an awful lot to be able to hear all three people at a reasonable level without overwhelming you with background noise. I did my best.\r\n
\r\n
\r\nI want to thank Donald and Matt for making it such a great interview. They were firendly, respectful, and kind. I had a great time with them durring the interview, and at the afterparty. They represent the FSF well. \r\n
',128,78,1,'CC-BY-NC-SA','interview,nelf',0,2234,1),
(714,'2011-04-27','Interview with Amber Graner',1371,'An interview with Amber Graner about women in tech and open source, and Amber\'s work in Ubuntu','
The Full Circle Podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
',160,78,1,'CC-BY-NC-SA','Full Circle Podcast',0,2227,1),
(715,'2011-04-28','Interview with StankDawg',3974,'StankDawg interviewed by Ken Fallon','
\r\nKen talks to the founder of BinRev and the patron of Hacker Public Radio\r\n
',30,78,1,'CC-BY-NC-SA','interview,hpr,history,hosting',0,2650,1),
-(716,'2011-05-02','Behind the Scenes at HPR. A community update for the month 2011-04',2365,'HPR Community News for April 2011','
706 :: Jonathan Nadeau :: What to do when confronted with a blind person
707 :: Dismal Science :: Ubuntu on trial
708 :: JWP :: Enterprise resource planning
709 :: Skirlet :: The Language Frontier Episode 3
710 :: sikilpaake & badbit :: spics on tech
711 :: klaatu :: Klaatu and Verbal chat about web2py
712 :: Bariman :: Linux Jazz - Recording my Audio
713 :: pokey :: NELF Interview With Matt Lee and Donald Robertson
714 :: fullcirclepodcast :: Amber Graner from Ubuntu Women Project
715 :: Ken Fallon :: Interview With StankDawg
\r\n\r\n\r\n
Hobby Public Radio - Wordpress \r\nhttps://www.hobbypublicradio.org \r\nRead the posts and give Feedback \r\n \r\nShould we re-license under cc-by-sa ? \r\nDropping the non-commercial \r\n \r\nInterview with stank \r\nThe server has moved \r\nKen used skype call recorder to record the call \r\n \r\nWho got fooled ? \r\nThanks to klaatu, Bradley M. Kuhn and Karen Sandler \r\n \r\n We updated the RSS feed to use [cdata] \r\n \r\nCongratulations to Linux Outlaws on reaching 200 \r\nCounting TWAtech we have passed 1015 \r\n \r\nOggCamp 11 - we\'ll be there \r\n\r\n \r\n HPR Music is ours - thanks slick0 \r\n \r\n What is a syndicated show ? \r\n \r\nThe language frontier is a special case \r\n \r\n HPR Design competition \r\n all get a book Will be mailed out in a week or two \r\n \r\n Will HPR be wanting a booth at SELF this year?
HPR Stickers
',159,47,1,'CC-BY-NC-SA','Community News',0,2698,1),
+(716,'2011-05-02','Behind the Scenes at HPR. A community update for the month 2011-04',2365,'HPR Community News for April 2011','
706 :: Jonathan Nadeau :: What to do when confronted with a blind person
707 :: Dismal Science :: Ubuntu on trial
708 :: JWP :: Enterprise resource planning
709 :: Skirlet :: The Language Frontier Episode 3
710 :: sikilpaake & badbit :: spics on tech
711 :: klaatu :: Klaatu and Verbal chat about web2py
712 :: Bariman :: Linux Jazz - Recording my Audio
713 :: pokey :: NELF Interview With Matt Lee and Donald Robertson
714 :: fullcirclepodcast :: Amber Graner from Ubuntu Women Project
715 :: Ken Fallon :: Interview With StankDawg
\r\n\r\n\r\n
Hobby Public Radio - Wordpress \r\nhttps://www.hobbypublicradio.org \r\nRead the posts and give Feedback \r\n \r\nShould we re-license under cc-by-sa ? \r\nDropping the non-commercial \r\n \r\nInterview with stank \r\nThe server has moved \r\nKen used skype call recorder to record the call \r\n \r\nWho got fooled ? \r\nThanks to klaatu, Bradley M. Kuhn and Karen Sandler \r\n \r\n We updated the RSS feed to use [cdata] \r\n \r\nCongratulations to Linux Outlaws on reaching 200 \r\nCounting TWAtech we have passed 1015 \r\n \r\nOggCamp 11 - we\'ll be there \r\n\r\n \r\n HPR Music is ours - thanks slick0 \r\n \r\n What is a syndicated show ? \r\n \r\nThe language frontier is a special case \r\n \r\n HPR Design competition \r\n all get a book Will be mailed out in a week or two \r\n \r\n Will HPR be wanting a booth at SELF this year?
HPR Stickers
',159,47,1,'CC-BY-NC-SA','Community News',0,2698,1),
(717,'2011-05-03','My Switch from Windows to Linux',1515,'Slurry\'s journey towards Linux, through the US Military and Windows Vista','First exposure to Linux on ancient laptop \r\nNext several years into adulthood with Windows \r\nNever ran with crowd / always techie \r\nOpinions formed about Linux \r\nIn spite of fondness, abandonded Linux \r\nSeveral years later 1 yr from retiring \r\nDooms day - pop up virus explorer web page \r\nAll this arround the time Vista \r\nStuck with XP through Vista debachle \r\nLearned some things about Windows7 proverbial straw \r\nDevising a plan \r\nUbunto on desktop and on wifes laptop \r\nOnly remnants of windows on dual boot desktop \r\nPurchased my own Vista laptop / never booted in Vista \r\nLearned alot using Ubuntu \r\nThats my switch to linux story \r\nMore productive, knowledgeable, satisfied user under Linux',169,0,1,'CC-BY-NC-SA','linux,distrohopping',0,2778,1),
(718,'2011-05-04','How I got into Linux',465,'Brotherred explains how his journey to Linux started with a local Sports radio show','In his first podcast Brotherred talks about how he got into GNU/Linux after seeing a website powered by Linux in approx. 2001. \r\nBought RedHat 9 with PC magazine. \r\nNot all Linux experience was rosy. \r\nStill loves GNU/Linux for playing games, download torrents, and audio/video editing. ',171,29,1,'CC-BY-NC-SA','linux',0,2264,1),
(719,'2011-05-05','The Language Frontier Episode 4',1082,'What language reveals about you; linguistics; dead languages','
Skirlet discusses what language -- the way you speak and write -- suggests about you as a person. She provides a basic intro to linguistics, and reviews some dead languages and why they died.
\r\n
Listen to this episode in ogg vorbis via aesdiopod.
\r\n\r\n\r\n',155,29,1,'CC-BY-NC-SA','linux,O/S 2 Warp',0,2411,1),
(727,'2011-05-16','HOWTO root and mod an Andr0id phone.',2073,'A description of how to get the control you should already have over an electronic device you own','
\r\n',78,0,0,'CC-BY-NC-SA','\"Motorola cliq\",cyanogenmod,\"root access\"',0,2452,1),
-(728,'2011-05-17','Sex, Race and Open Source',1892,'Two HPR hosts, Dismal Science and Sunzofman1, discuss equality in computing culture','
\r\n',170,0,1,'CC-BY-NC-SA','privilege,minorities,\"wage discrimination\"',0,2503,1),
+(728,'2011-05-17','Sex, Race and Open Source',1892,'Two HPR hosts, Dismal Science and Sunzofman1, discuss equality in computing culture','
\r\n',170,0,1,'CC-BY-NC-SA','privilege,minorities,\"wage discrimination\"',0,2503,1),
(729,'2011-05-18','Syndicated Thursday: FSP Sam smith, Opentech Conference 2011',1190,'Full Circle interviews Sam Smith, an organizer of Opentech Conference 2011','
Hello world and welcome to our on Hacker Public Radio. This episode consists of our interview with Sam Smith, one of the organisers of the Opentech Conference in London this May. My co-host is Les Pounder
OpenTech 2011 is an informal, low cost, one-day conference on slightly different approaches to technology, transport and democracy. Talks by people who work on things that matter, guarantees a day of thoughtful talks leading to conversations with friends.
The full circle podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine dot org forward slash podcast, send us a comment to podcast (at) fullcirclemagazine.org
\r\n\r\n
Additional audio by Victoria Pritchard
\r\n\r\n
Runtime: 19mins 50seconds
',160,0,1,'CC-BY-NC-SA','Full Circle Podcast',0,2342,1),
(730,'2011-05-19','LFNW: Some Facts and 2 Interviews',1965,'Facts about LFNW, and an interview with some of the organizers.','
LinuxFest Northwest Bellingham Facts from Carl Symons:
\r\n
\r\n
about 1000 visitors, 738 registered, 350 meals sold on Saturday
\r\n
12th year, started in 2000 in a room of 8x8 meters (25x25 feet)
\r\n
No president, jsut a team of organizers who meet twice a month
Let me know if you\'re going to have a table for Hacker Public Radio at a Linuxfest or any other fest, I will send you our PR-Stuff: Tablecloth, Stickers, instructions to order minicards, QR-code books, and T-Shirt sets.
',162,78,1,'CC-BY-NC-SA','lfnw,conference',0,2325,1),
(731,'2011-05-22','Klaatu the ubiquity and potential danger of the rm command',1169,'Klaatu explains a creative, more forgiving alternative to the rm command','
Klaatu discusses the imbalance between the ubiquity and potential danger of the rm command. He proposes the alternative command, trash.
',78,0,0,'CC-BY-NC-SA','bash,cli,command line,script',0,2340,1),
(732,'2011-05-23','sikilpaake and badbit - spics on tech - episode 02',2369,'spics on tech discuss a local hackerspace, Ubuntu\'s move to Unity, and more.','
sikilpaake & badbit - spics on tech - episode 02
\r\n
\r\n
ensenada hackerspace (norte lab)
\r\n
taller de electrónica para artistas \r\n miguel monroy \r\n https://miguelmonroy.com.mx/work/
\r\n
hackerspaces.org
\r\n
the hacker ethic \r\n https://en.wikipedia.org/wiki/the_hacker_ethic
tequila valley \r\n https://www.tequilavalley.com/ \r\n
protolab \r\n https://protolab.ws/site/ \r\n
sdhacklab \r\nhttps://bang.calit2.net/sdhacklab/
\r\n
kindle unexploited features and jailbreaking \r\n screensavers, fonts, usb networking \r\n microphone
\r\n
game boy flash cartridge, lsdj, chiptunes \r\n https://www.littlesounddj.com/lsd/ \r\n https://blog.gg8.se/images/camvliez/gmb-0001.gif \r\n minimalist composers \r\n brian eno \r\n stockhauses \r\n philip glass
\r\n
ubuntu 11.04
\r\n
upgrading \r\n
unity sucks \r\n https://is.gd/fgshwa \r\n
shuttleworth boxing the project in, à la steve jobs \r\n https://is.gd/r8jydh \r\n
what was so bad with gnome3? \r\n https://is.gd/xiadoh \r\n
wayland \r\n https://is.gd/w5pvgv \r\n an improvement but just too young \r\n probably lacks a lot of historical functions that most people in ubuntu haven\'t realized it needs \r\n on openbsd & freebsd will have to wait for eventual kernel mode setting \r\n https://is.gd/xtaghe support
music! \r\n hermanos calderón - el camian https://www.youtube.com/watch?v=_uy3wchqmze \r\n little-scale - demons that devour human flesh https://www.lazerscale2010.com/track.php?id=55 \r\n sonido lasser drakar - visions https://www.youtube.com/watch?v=8kjdCJgFM1I
',168,58,1,'CC-BY-NC-SA','linux,ubuntu,unity,hackerspace',0,2134,1),
(733,'2011-05-24','Linux Packaging Systems (too many)',1051,'Why marcoz thinks there are too many packaging systems for Linux, and how that\'s harmful','
Package managers: \r\n Program Distro(s) website notes \r\n apt debian \r\n conary Foresight Liux/rPath company handles distributed repositories, commit/rollback \r\n entropy Sabayon consists of Equo client (textual), Sulfur client (graphical) \r\n kpackagekit kubuntu uses policykit (any problems if booted computer from a live cd and mounted and chroot\'d?) \r\n opkg openmoko lightweight; based on ipkg \r\n pacman archlinux \r\n pirut fedora it calls yum so it\'s just a gui wrapper? not sure how widely used...? \r\n pisi pardus (Turkish distro) was based on gentoo. as far as I can tell it now uses its own pkg format \r\n poldek Fedora RPM \r\n portage gentoo ebuilds, \r\n slapt slackware tgz \r\n slapt vectorlinux tlz; \r\n smart UnityLinux RPM5 \r\n synaptic ubuntu DEB; graphical frontend to apt \r\n urpmi mandriva RPM \r\n yum redhat/fedora RPM \r\n zypper opensuse RPM
\r\n
Other useful links: \r\n https://en.wikipedia.org/wiki/List_of_software_package_management_systems \r\n https://www.packagekit.org/pk-matrix.html
Concerns: \r\n 1) package burn out - will it get to the point where only either large distros or commercial distros have large repos due to the effort involved? \r\n 2) I\'ve lost track of the number of times i\'ve heard from people \'our distro doesn\'t have enough manpower to package ...\' \r\n wouldn\'t it be helpful to not have to use our limited manpower in building redundant packages? \r\n 3) in 10 (or less) years when non-technical people take over at Redhat/Ubuntu/other large distro, will they use the package system as a club to beat the other distros with? I\'m not sure how, but where money is involved, you can feel assured it _will_ happen. \r\n 4) current state of packaging systems in linux is like sound systems were 10 yrs ago. \r\n remember esd vs arts vs vs ...? each desktop environment had its own system. sound in linux was painful and a complete joke. it still has a ways to go but it\'s _SO_ much better now that it was. does anyone want to go back to that? \r\n pulseaudio isn\'t perfect but it\'s so much better than what we had before. and it\'s ONE system! \r\n can you image if printing and authentication were like the packaging systems? image if everyone had their own printing system instead of CUPs? imagine if there was no pam.d? \r\n 5) I believe packaging systems are NOT about choice. the exact opposite. it\'s about vendor lockin and NIH. \r\n (we\'ll do it OUR way because we can do it better or the \'proper\' way. "so-and-so does blah, which is \r\n completely stupid") \r\n choice is being able to write a script in php,perl,python,bash,csh,... on the SAME system. \r\n that\'s choice \r\n because I can CHOOSE. If I have a debian box I can\'t choose to use RPM or ebuilds, same for those other systems. \r\n of the systems I\'ve used: deb, rpm, rpm5, portage, (and tarballs if you count linuxfromscratch) \r\n and the managers I\'ve used: yum, urpmi, smart, kpackagekit, synaptic, apt-get, emerge \r\n each system has little features the others don\'t. but there is nothing that one system has that couldn\'t be added to the others.
',156,0,1,'CC-BY-NC-SA','linux,packaging,package manager',0,2433,1),
-(734,'2011-05-25','The Language Frontier Episode 4.5',593,'Syndicated Thursday Presents: The Language Frontier Episode 4.5','
Please note that this series originally aired some time ago.
Listen to this episode in ogg vorbis via aesdiopod.
\r\n',88,0,1,'CC-BY-NC-SA','language,obscurity',0,2158,1),
+(734,'2011-05-25','The Language Frontier Episode 4.5',593,'Syndicated Thursday Presents: The Language Frontier Episode 4.5','
Please note that this series originally aired some time ago.
Listen to this episode in ogg vorbis via aesdiopod.
\r\n',88,0,1,'CC-BY-NC-SA','language,obscurity',0,2158,1),
(735,'2011-05-26','Interview with Dave Yates about SELF 2011',2483,'Ken Fallon explores the schedule of the 2011 Southeast Linux Fest with Dave Yates','
The Southeast LinuxFest is a community event for anyone who wants to learn more about Linux and Free & Open Source software. It is part educational conference, and part social gathering. Like Linux itself, it is shared with attendees of all skill levels to communicate tips and ideas, and to benefit all who use Linux/Free and Open Source Software. LinuxFest is the place to learn, to make new friends, to network with new business partners, and most importantly, to have fun!
\r\n
The third annual Southeast LinuxFest is scheduled for June 10-12, 2011 in Spartanburg, SC.
',30,78,1,'CC-BY-NC-SA','SELF 2011, interview',0,2358,1),
(736,'2011-05-29','Stop the Ubuntu 11.04 whining',376,'JWP is dismayed at the criticism that the Ubuntu project is receiving regarding its 11.04 release','
\r\nIn this episode JWP discusses the negativity surrounding the Unity desktop.\r\n
',129,0,1,'CC-BY-NC-SA','linux,ubuntu',0,2390,1),
(737,'2011-05-30','My Start in Computing and Linux',463,'ArigornStrider\'s journey to Linux, starting at age eight!','
\r\nThis is how I got started building custom computers and began using linux. It was a slow process for me dipping my feet deeper and deeper until I found a daily usefullness for both and have not turned back since.
',172,0,1,'CC-BY-NC-SA','hardware,linux,distrohopping',0,2264,1),
(738,'2011-05-31','Short History of Ham Radio and How I got Involved',1494,'A brief history of Ham radio development and Joel\'s personal connection to it','
\r\nShow Notes for More Information\r\n
\r\n
\r\nThis show is a short history of the beginning of Ham Radio and how I got involved.\r\n
',173,0,1,'CC-BY-NC-SA','\"ham radio\"',0,2219,1),
(739,'2011-06-01','The Knightcast KC0053 : Wirelessly syncing content to your Ipad and Ipod.',4389,'A visit to the Knightcast podcast','
\r\nIn this deep-geeky episode we unlock the secret of automatic podcast downloading and distribution to android and IOS Devices without using itunes or a cable. We mash together Ubuntu, Gpodder, a bash script a couple of SSH Connections and an Ipad app to unlock the secrets of wirelessly pushing content to your IOS Devices. As a bonus we take a glance at calibre and show you how to have your favorite rss feeds available to read offline. \r\n
',111,54,1,'CC-BY-NC-SA','podcast,android,gPodder,Ubuntu,IOS,Calibre',0,2265,1),
(740,'2011-06-02','DDoS : What is it and how to protect yourself',990,'Distributed Denial of Service attacks','
\r\nIn today\'s HPR, I will talk about DDoS attacks and ways to protect yourself and what actions you have in recourse.\r\n
',174,0,1,'CC-BY-NC-SA','DDoS,\"Distributed Denial of Service\",botnet,LOIC,\"Low Orbit Ion Cannon\"',0,2407,1),
-(741,'2011-06-05','HPR Community News for May 2011',2460,'HPR Community News for May 2011','
716 :: HPR Admins :: Behind the Scenes at HPR. A community update for the month 2011-04
\r\n
717 :: Slurry :: My Switch from Windows to Linux
\r\n
718 :: Brotherred :: How I got into Linux
\r\n
719 :: Skirlet :: The Language Frontier Episode 4
\r\n
720 :: klaatu :: CLI Magic
\r\n
721 :: lostnbronx :: THEATER OF THE IMAGINATION -- PART 03
\r\n
722 :: Claudio Miranda :: How I Upgraded My PC - Motherboard
\r\n
723 :: klaatu :: How to be a safe computerist
\r\n
724 :: Robin Catling :: Full Circle Podcast: Ubuntu Manual Project
\r\n
725 :: pokey :: NELF_Review
\r\n
726 :: MrGadgets :: Journey to Linux
\r\n
727 :: klaatu :: HOWTO root and mod an Andr0id phone.
\r\n
728 :: Dismal Science & Sunzofman1 :: Sex, Race and Open Source
\r\n
729 :: Robin Catling :: Syndicated Thursday: FSP Sam smith, Opentech Conference 2011
\r\n
730 :: code.cruncher :: LFNW: Some Facts and 2 Interviews
\r\n
731 :: klaatu :: Klaatu the ubiquity and potential danger of the rm command
\r\n
732 :: sikilpaake & badbit :: sikilpaake and badbit - spics on tech - episode 02
\r\n
733 :: marcoz :: Linux Packaging Systems (too many)
\r\n
734 :: Skirlet :: The Language Frontier Episode 4.5
\r\n
735 :: Ken Fallon :: Interview with Dave Yates about SELF 2011
\r\n
736 :: JWP :: Stop the Ubuntu 11.04 whining
\r\n
737 :: ArigornStrider :: My Start in Computing and Linux
\r\n
738 :: Joel :: Short History of Ham Radio and How I got Involved
\r\n
739 :: Knightwise :: The Knightcast KC0053 : Wirelessly syncing content to your Ipad and Ipod.
\r\n
740 :: Josh Knapp :: DDoS : What is it and how to protect yourself
\r\n
\r\n
Apologies To
\r\n
\r\n
Droops for not been there
\r\n
stankdawg not dwag
\r\n
\r\n\r\n
Month in Review
\r\n
\r\nThis was a busy and bumpy month as I recall it ... Ken went on holidays and the server felt abandoned and went on strike and then it pretended that there is no more space in the queue and once there was more space we almost ran out of shows and we are still looking for people to do HPR-PR at SELF, for which they will get 2 fantastic HPR T-Shirts. Ken? did you also move the server this month?\r\n\r\nHPR Outro\r\n
\r\n
Klaatu proposal to mention binrev in the outro.\r\n
\r\nHacker Public Radio is brought to you by the BinRev Radio, \r\nthe Infonomicon Computer Club and our Sponsor ${SPONSOR}.\r\n${SPONSOR} is ${Marketing speak}\r\nHPR is a Community podcast network that releases shows every \r\nweekday Monday through Friday.\r\nAll the shows are made by the community fellow listeners \r\nlike you!.\r\nFor more information on how you can contribute a show please \r\ngo to hackerpublicradio dot org and click on the contribute \r\nbutton\r\nThere is no restrictions on how long the show can be, nor \r\non the topic you can cover as long as they are of interest \r\nto hackers.\r\n\r\n
Updated the Syndication page to include OGG, SPX and Comments Feeds.\r\n
People had problems getting on the Mailing list\r\n
Ira put a drupal website together imahuph.net/hpradmin1\r\n
Code Cruncher is working on automation\r\n
\r\n
Show prep script\r\n
upload form\r\n
security issues?\r\n
\r\n
The books for the business card competition have been sent or have they ?\r\n
Added a md5 script to the site.\r\n
lostnbronx ran a spell check on the \"Contribute\" page\r\n
We ran out of shows - you replied.\r\n
Curbuntu is going to a lug meeting and wanted a history of HPR. We want droops on for an interview.\r\n
Ken is going to OggCamp11 - ordered business cards.\r\n
Fifty OneFifty found the Ultimate interview device\r\n
Cobra 2 \r\n
\r\n
create a torrent tracker for podcast/oggcast/videocast\r\n
Advanced Android hacking series\r\n
HPR Guidelines for fests.\r\n
Wiki\r\n
\r\n
Trend micro unblocked us\r\n
Zibby Keaton says that James Turnbull published his latest book \"Pro Puppet\" through Apress Media \r\n
\r\n\r\n\r\n
RFC Changing show to CC-BY-SA
\r\n
\r\nHi All,\r\n\r\nThis is an official request for a change of license that *NEW* shows\r\nare uploaded as.\r\n\r\nThe proposal is to change from:\r\nhttps://creativecommons.org/licenses/by-nc-sa/3.0/\r\n\r\nTo https://creativecommons.org/licenses/by-sa/3.0/\r\n\r\nThe RFC will be open for a month and the results will be announced\r\nhere and on July\'s HPR Community News. If approved all shows after\r\nthat time will be by default CC-BY-SA unless indicated in the show\r\nnotes. Further, I would then contact everyone that has hosted so far\r\nasking if we can relisence their show(s) as CC-BY-SA.\r\n\r\nThis is entirely up to the community so please use the mail list you\r\nvoice your opinion. Even a one liner is fine.\r\n\r\nKen.\r\n
',159,47,1,'CC-BY-NC-SA','Community News',0,2218,1),
+(741,'2011-06-05','HPR Community News for May 2011',2460,'HPR Community News for May 2011','
716 :: HPR Admins :: Behind the Scenes at HPR. A community update for the month 2011-04
\r\n
717 :: Slurry :: My Switch from Windows to Linux
\r\n
718 :: Brotherred :: How I got into Linux
\r\n
719 :: Skirlet :: The Language Frontier Episode 4
\r\n
720 :: klaatu :: CLI Magic
\r\n
721 :: lostnbronx :: THEATER OF THE IMAGINATION -- PART 03
\r\n
722 :: Claudio Miranda :: How I Upgraded My PC - Motherboard
\r\n
723 :: klaatu :: How to be a safe computerist
\r\n
724 :: Robin Catling :: Full Circle Podcast: Ubuntu Manual Project
\r\n
725 :: pokey :: NELF_Review
\r\n
726 :: MrGadgets :: Journey to Linux
\r\n
727 :: klaatu :: HOWTO root and mod an Andr0id phone.
\r\n
728 :: Dismal Science & Sunzofman1 :: Sex, Race and Open Source
\r\n
729 :: Robin Catling :: Syndicated Thursday: FSP Sam smith, Opentech Conference 2011
\r\n
730 :: code.cruncher :: LFNW: Some Facts and 2 Interviews
\r\n
731 :: klaatu :: Klaatu the ubiquity and potential danger of the rm command
\r\n
732 :: sikilpaake & badbit :: sikilpaake and badbit - spics on tech - episode 02
\r\n
733 :: marcoz :: Linux Packaging Systems (too many)
\r\n
734 :: Skirlet :: The Language Frontier Episode 4.5
\r\n
735 :: Ken Fallon :: Interview with Dave Yates about SELF 2011
\r\n
736 :: JWP :: Stop the Ubuntu 11.04 whining
\r\n
737 :: ArigornStrider :: My Start in Computing and Linux
\r\n
738 :: Joel :: Short History of Ham Radio and How I got Involved
\r\n
739 :: Knightwise :: The Knightcast KC0053 : Wirelessly syncing content to your Ipad and Ipod.
\r\n
740 :: Josh Knapp :: DDoS : What is it and how to protect yourself
\r\n
\r\n
Apologies To
\r\n
\r\n
Droops for not been there
\r\n
stankdawg not dwag
\r\n
\r\n\r\n
Month in Review
\r\n
\r\nThis was a busy and bumpy month as I recall it ... Ken went on holidays and the server felt abandoned and went on strike and then it pretended that there is no more space in the queue and once there was more space we almost ran out of shows and we are still looking for people to do HPR-PR at SELF, for which they will get 2 fantastic HPR T-Shirts. Ken? did you also move the server this month?\r\n\r\nHPR Outro\r\n
\r\n
Klaatu proposal to mention binrev in the outro.\r\n
\r\nHacker Public Radio is brought to you by the BinRev Radio, \r\nthe Infonomicon Computer Club and our Sponsor ${SPONSOR}.\r\n${SPONSOR} is ${Marketing speak}\r\nHPR is a Community podcast network that releases shows every \r\nweekday Monday through Friday.\r\nAll the shows are made by the community fellow listeners \r\nlike you!.\r\nFor more information on how you can contribute a show please \r\ngo to hackerpublicradio dot org and click on the contribute \r\nbutton\r\nThere is no restrictions on how long the show can be, nor \r\non the topic you can cover as long as they are of interest \r\nto hackers.\r\n\r\n
Updated the Syndication page to include OGG, SPX and Comments Feeds.\r\n
People had problems getting on the Mailing list\r\n
Ira put a drupal website together imahuph.net/hpradmin1\r\n
Code Cruncher is working on automation\r\n
\r\n
Show prep script\r\n
upload form\r\n
security issues?\r\n
\r\n
The books for the business card competition have been sent or have they ?\r\n
Added a md5 script to the site.\r\n
lostnbronx ran a spell check on the \"Contribute\" page\r\n
We ran out of shows - you replied.\r\n
Curbuntu is going to a lug meeting and wanted a history of HPR. We want droops on for an interview.\r\n
Ken is going to OggCamp11 - ordered business cards.\r\n
Fifty OneFifty found the Ultimate interview device\r\n
Cobra 2 \r\n
\r\n
create a torrent tracker for podcast/oggcast/videocast\r\n
Advanced Android hacking series\r\n
HPR Guidelines for fests.\r\n
Wiki\r\n
\r\n
Trend micro unblocked us\r\n
Zibby Keaton says that James Turnbull published his latest book \"Pro Puppet\" through Apress Media \r\n
\r\n\r\n\r\n
RFC Changing show to CC-BY-SA
\r\n
\r\nHi All,\r\n\r\nThis is an official request for a change of license that *NEW* shows\r\nare uploaded as.\r\n\r\nThe proposal is to change from:\r\nhttps://creativecommons.org/licenses/by-nc-sa/3.0/\r\n\r\nTo https://creativecommons.org/licenses/by-sa/3.0/\r\n\r\nThe RFC will be open for a month and the results will be announced\r\nhere and on July\'s HPR Community News. If approved all shows after\r\nthat time will be by default CC-BY-SA unless indicated in the show\r\nnotes. Further, I would then contact everyone that has hosted so far\r\nasking if we can relisence their show(s) as CC-BY-SA.\r\n\r\nThis is entirely up to the community so please use the mail list you\r\nvoice your opinion. Even a one liner is fine.\r\n\r\nKen.\r\n
',159,47,1,'CC-BY-NC-SA','Community News',0,2218,1),
(742,'2011-06-06','How I Got Into Linux',469,'Ken Fallon interviews Dave over Mumble about his use of Linux','This is an ad hoc interview with Dave, recorded on the teamspeak.cc server prior to yesterdays interview.',175,29,1,'CC-BY-NC-SA','Interview,\"PC repair\",\"Linux Mint\",Mumble',0,2416,1),
(743,'2011-06-07','ILF 2011: Interview with Jason Kridner of BeagleBoard',701,'KFive interviews Jason Kridner of BeagleBoard at ILF 2011','
In this episode KFive interviews Jason Kridner of BeagleBoard.
BeagleBoard.org is an all volunteer activity started-up by a collection of passionate individuals, including several employees of Texas Instruments, interested in creating powerful, open, and embedded devices. We invite you to participate and become part of BeagleBoard.org, defining its direction.
\r\n
Support for the Beagle Board comes from the very active development community through this website, the mailing list, and the IRC channel. Distribution is handled by Digi-Key, a major international distributor.
\r\n
The Beagle Board is a low-cost, fan-less single-board computer based on low-power Texas Instruments processors featuring the ARM Cortex-A8 core with all of the expandability of today\'s desktop machines, but without the bulk, expense, or noise.
\r\n',127,78,1,'CC-BY-NC-SA','BeagleBoard,ARM Cortex-A8,Indiana LinuxFest,ILF',0,2568,1),
(744,'2011-06-08','The Language Frontier Episode 5',1338,'Skirlet\'s penultimate show in the series','
The penultimate episode of The Language Frontier. Skirlet talks about the world\'s newfound ability to communicate with one another via \"the digital revolution\".
\r\n
Listen to this episode in ogg vorbis via aesdiopod.
',88,48,1,'CC-BY-NC-SA','language,\"movie subtitle\",Esperanto',0,2273,1),
@@ -17058,7 +17173,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(758,'2011-06-28','Interview with Jon \"The Nice Guy\" Spriggs',4297,'Ken interviews Jon Spriggs of CCHits.net','
CCHits.net is a site promoting and featuring Creative Commons licensed music and the podcasts that play them. The site was designed with more than just this in mind. Here are some of the highlights
\r\n
\r\n
\r\n
Encourage and Discover Great Music
\r\n
There\'s a lot of great Creative Commons Licensed Music out there, and not enough people know just what you can get hold of! To help ease the burdon of this issue, there are three things that we do:
\r\n
\r\n
By linking directly to artist\'s home sites rather than to our own holding pages for artists, we ensure that the artists get maximum exposure for their own material, without having to update our site when their own information changes!
\r\n
By linking to the source of the individual track, gives listeners a greater awareness of music sources, which hopefully should increase the exposure for sites who promote and list Creative Commons licensed music.
\r\n
By linking to podcasts which play Creative Commons licensed music, we give listeners the opportunity to find other shows that play the music they like - ultimately giving listeners a greater fountain of great music to select from, and hopefully giving them the opportunity to discover new artists and genres to add to their personal list of favourites.
\r\n
\r\n
\r\n
\r\n
Support Communities
\r\n
An attendor at various social groups, the original author of the code which drives cchits.net was unable to provide consistent, suitable background music for events he was involved in organising or just attending. This site was originally designed to find tracks which are generally acceptable for public play, and are available under a suitable license for public performance (which Creative Commons music should be!) By asking all submitters of music to identify the license under which the tracks are made available, as well as selecting whether tracks may not be suitable for work or family listening, it should be possible (once the code is in-place) to request from the site a suitable selection of music for playback at venues such as hackspaces, youth centres, or even just hold music for a business. Note that this site is not being created to build a re-licensing business, but instead to promote awareness of great music - there are other, better sites, that can advise and assist in the selection of Creative Commons music which are suitable for your business endeavour, but if you just want something for backing music for an hour or a whole day, this site might be (eventually!) just the thing for you.
\r\n
\r\n
\r\n
Create Podcasts and Improve Coding Techniques
\r\n
At the time of writing, cchits.net is the work of one person. For several months, Jon \"The Nice Guy\" Spriggs had been considering starting a podcast, however, he\'s not exactly known for finishing projects! By making a system which is automated enough to create a daily podcast, a weekly podcast and a monthly podcast, playing music that he likes to hear, he thought it might encourage him to stick to it - especially when there are other amazing goals (see above) which come out as a side benefit. He normally has described himself as a writer of \"bad PHP code\", and each project he starts improves the techniques he has learned.
\r\n
In this instance, CCHits.net has introduced Jon to the concept of writing an API that works, a system of remote execution of code, the generation of synthesized speech and the generation of an audio track, entirely in code! Never being shy of criticism from the community, especially where code is concerned, the code has all been released under a license which encourages reuse and requires the code is re-released under the same license.
\r\n
\r\n
\r\n\r\n
If you already podcast, and you play Creative Commons Licesed Music on a regular basis, you might be interested in using the API on this site to track the music that people who listen to your show have expressed an interest in. Contact show@cchits.net to find out more
\r\n',30,78,1,'CC-BY-NC-SA','CCHits.net,music,\"Creative Commons\",PHP',0,2177,1),
(759,'2011-06-29','LPI study group',2473,'A weekly meeting to revise for the LPI exams','
This is a 13 week podcast of the LPI study group which was conducted with the linuxbasix.com group. This is a weekly meeting from June 8th to August 31 of 2011. Details can be found at the linuxbasix forums - www.linuxbasix.com
\r\n
\r\nSyndicated Thursday is a channel on HPR to expose our listeners to other podcasts, interesting talks, or just the weird and wonderful.\r\n
',159,7,1,'CC-BY-NC-SA','\"LPI exam\",www.linuxbasix.com,PS1,export',0,2410,1),
(760,'2011-06-30','/dev/Rob0 of maintainer of the SlackBuilds.org mailing list',545,'Klaatu interviews /dev/Rob0 at the South East Linux Fest 2011','
Klaatu talks to /dev/Rob0, a Slackware user, maintainer of the SlackBuilds.org mailing list, and a presenter at the South East Linux Fest 2011.
\r\n\r\n
For lovers of ogg, the episode can also be found at the Gnu World Order website.
',78,78,0,'CC-BY-NC-SA','SELF, interview',0,2249,1),
-(761,'2011-07-03','HPR Community News for June 2011',2655,'HPR Community News for June 2011','
ILF 2011: Interview with Jason Kridner of BeagleBoard
\r\n
\r\n \r\n
\r\n
744
\r\n
Skirlet
\r\n
The Language Frontier Episode 5
\r\n
\r\n \r\n
\r\n
745
\r\n
MrGadgets
\r\n
Wings
\r\n
\r\n \r\n
\r\n
746
\r\n
Ken Fallon
\r\n
Interview with Tony Whitmore about OggCamp11
\r\n
\r\n \r\n
\r\n
747
\r\n
finux and code.cruncher
\r\n
Botnets and DNS Tunnelling
\r\n
\r\n \r\n
\r\n
748
\r\n
Dismal Science
\r\n
My Favorite Audiocasts
\r\n
\r\n \r\n
\r\n
749
\r\n
Robin Catling
\r\n
Full Cirle Podcast Editing the Podcast Part One Preparation
\r\n
\r\n \r\n
\r\n
750
\r\n
NewAgeTechnoHippie
\r\n
My path to Linux
\r\n
\r\n \r\n
\r\n
751
\r\n
Lord Drachenblut and Downer
\r\n
Binary Evolutions
\r\n
\r\n \r\n
\r\n
752
\r\n
MrGadgets
\r\n
My Path to Linux: Knoppix
\r\n
\r\n \r\n
\r\n
753
\r\n
KFive
\r\n
ILF 2011: Interview with Klaatu of Slackermedia
\r\n
\r\n \r\n
\r\n
754
\r\n
Skirlet
\r\n
The Language Frontier Episode 6
\r\n
\r\n \r\n
\r\n
755
\r\n
Bariman
\r\n
LINUX JAZZ BALLIN\' THE JACK
\r\n
\r\n \r\n
\r\n
756
\r\n
Joel
\r\n
Basics of RF
\r\n
\r\n \r\n
\r\n
757
\r\n
Epicanis
\r\n
Episode 0: "Acknowledgement Courtesan"
\r\n
\r\n \r\n
\r\n
758
\r\n
Ken Fallon
\r\n
Interview with Jon "The Nice Guy" Spriggs
\r\n
\r\n \r\n
\r\n
759
\r\n
HPR Admins
\r\n
LPI study group
\r\n
\r\n \r\n
\r\n
760
\r\n
klaatu
\r\n
/dev/Rob0 of maintainer of the SlackBuilds.org mailing list
\r\n
\r\n \r\n \r\n
\r\n
Thanks To
\r\n
\r\n
Fifty OneFifty for the picture of the combine
\r\n
Lostnbronx, MrGadgets for allowing rescheduling
\r\n
Jonathan Nadeau for looking at the site
\r\n
\r\n
Apologies To
\r\n
\r\n
Ice Gnu # at the end of recording
\r\n
\r\n
Month in Review
\r\n
\r\n
Business Cards for SELF and OggCamp11
\r\n
Shownotes in HTML
\r\n
A hair brained idea from 5150
\r\n
CC *cast and video torrent tracker
\r\n
Selecting a CMS
\r\n
hopr mirror pegwol
\r\n
\r\n
Callisto.fm
\r\n
\r\nA Callisto.fm user suggested that you add \"Hacker Public Radio\" to Callisto.fm!. Unfortunately the terms of service are not compatibel with a Creative Commons lisence.\r\n
\r\n
CMS BACKEND
\r\n
\r\nAll three are on par from an accessability point of view. \r\nEach would require additional coding to support the features of HPR \r\nFor now we\'ll stick with the droops(tm) cms\r\n
\r\n
RFC Changing show to CC-BY-SA
\r\n
\r\n17 hosts have replied and 100% of those that replied gave permission for the change to CC-BY-SA \r\n107 hosts have yet to reply. \r\nThis means that a little over 1/3rd of the shows have been re-licensed. I intend to email them directly as they may not be on the mail list.\r\n
\r\n
\r\nHi All,\r\n\r\nThis is an official request for a change of license that *NEW* shows\r\nare uploaded as.\r\n\r\nThe proposal is to change from:\r\nhttps://creativecommons.org/licenses/by-nc-sa/3.0/\r\n\r\nTo https://creativecommons.org/licenses/by-sa/3.0/\r\n\r\nThe RFC will be open for a month and the results will be announced\r\nhere and on July\'s HPR Community News. If approved all shows after\r\nthat time will be by default CC-BY-SA unless indicated in the show\r\nnotes. Further, I would then contact everyone that has hosted so far\r\nasking if we can relisence their show(s) as CC-BY-SA.\r\n\r\nThis is entirely up to the community so please use the mail list you\r\nvoice your opinion. Even a one liner is fine.\r\n\r\nKen.\r\n
',159,47,1,'CC-BY-SA','Community News',0,2240,1),
+(761,'2011-07-03','HPR Community News for June 2011',2655,'HPR Community News for June 2011','
ILF 2011: Interview with Jason Kridner of BeagleBoard
\r\n
\r\n \r\n
\r\n
744
\r\n
Skirlet
\r\n
The Language Frontier Episode 5
\r\n
\r\n \r\n
\r\n
745
\r\n
MrGadgets
\r\n
Wings
\r\n
\r\n \r\n
\r\n
746
\r\n
Ken Fallon
\r\n
Interview with Tony Whitmore about OggCamp11
\r\n
\r\n \r\n
\r\n
747
\r\n
finux and code.cruncher
\r\n
Botnets and DNS Tunnelling
\r\n
\r\n \r\n
\r\n
748
\r\n
Dismal Science
\r\n
My Favorite Audiocasts
\r\n
\r\n \r\n
\r\n
749
\r\n
Robin Catling
\r\n
Full Cirle Podcast Editing the Podcast Part One Preparation
\r\n
\r\n \r\n
\r\n
750
\r\n
NewAgeTechnoHippie
\r\n
My path to Linux
\r\n
\r\n \r\n
\r\n
751
\r\n
Lord Drachenblut and Downer
\r\n
Binary Evolutions
\r\n
\r\n \r\n
\r\n
752
\r\n
MrGadgets
\r\n
My Path to Linux: Knoppix
\r\n
\r\n \r\n
\r\n
753
\r\n
KFive
\r\n
ILF 2011: Interview with Klaatu of Slackermedia
\r\n
\r\n \r\n
\r\n
754
\r\n
Skirlet
\r\n
The Language Frontier Episode 6
\r\n
\r\n \r\n
\r\n
755
\r\n
Bariman
\r\n
LINUX JAZZ BALLIN\' THE JACK
\r\n
\r\n \r\n
\r\n
756
\r\n
Joel
\r\n
Basics of RF
\r\n
\r\n \r\n
\r\n
757
\r\n
Epicanis
\r\n
Episode 0: "Acknowledgement Courtesan"
\r\n
\r\n \r\n
\r\n
758
\r\n
Ken Fallon
\r\n
Interview with Jon "The Nice Guy" Spriggs
\r\n
\r\n \r\n
\r\n
759
\r\n
HPR Admins
\r\n
LPI study group
\r\n
\r\n \r\n
\r\n
760
\r\n
klaatu
\r\n
/dev/Rob0 of maintainer of the SlackBuilds.org mailing list
\r\n
\r\n \r\n \r\n
\r\n
Thanks To
\r\n
\r\n
Fifty OneFifty for the picture of the combine
\r\n
Lostnbronx, MrGadgets for allowing rescheduling
\r\n
Jonathan Nadeau for looking at the site
\r\n
\r\n
Apologies To
\r\n
\r\n
Ice Gnu # at the end of recording
\r\n
\r\n
Month in Review
\r\n
\r\n
Business Cards for SELF and OggCamp11
\r\n
Shownotes in HTML
\r\n
A hair brained idea from 5150
\r\n
CC *cast and video torrent tracker
\r\n
Selecting a CMS
\r\n
hopr mirror pegwol
\r\n
\r\n
Callisto.fm
\r\n
\r\nA Callisto.fm user suggested that you add \"Hacker Public Radio\" to Callisto.fm!. Unfortunately the terms of service are not compatibel with a Creative Commons lisence.\r\n
\r\n
CMS BACKEND
\r\n
\r\nAll three are on par from an accessability point of view. \r\nEach would require additional coding to support the features of HPR \r\nFor now we\'ll stick with the droops(tm) cms\r\n
\r\n
RFC Changing show to CC-BY-SA
\r\n
\r\n17 hosts have replied and 100% of those that replied gave permission for the change to CC-BY-SA \r\n107 hosts have yet to reply. \r\nThis means that a little over 1/3rd of the shows have been re-licensed. I intend to email them directly as they may not be on the mail list.\r\n
\r\n
\r\nHi All,\r\n\r\nThis is an official request for a change of license that *NEW* shows\r\nare uploaded as.\r\n\r\nThe proposal is to change from:\r\nhttps://creativecommons.org/licenses/by-nc-sa/3.0/\r\n\r\nTo https://creativecommons.org/licenses/by-sa/3.0/\r\n\r\nThe RFC will be open for a month and the results will be announced\r\nhere and on July\'s HPR Community News. If approved all shows after\r\nthat time will be by default CC-BY-SA unless indicated in the show\r\nnotes. Further, I would then contact everyone that has hosted so far\r\nasking if we can relisence their show(s) as CC-BY-SA.\r\n\r\nThis is entirely up to the community so please use the mail list you\r\nvoice your opinion. Even a one liner is fine.\r\n\r\nKen.\r\n
',159,47,1,'CC-BY-SA','Community News',0,2240,1),
(762,'2011-07-04','THEATER OF THE IMAGINATION: 04',1324,'lostnbronx speaks about dramatic audio','\r\n
',107,52,1,'CC-BY-SA','\"condenser microphone\",XLR,\"phantom power\",\"pop filter\",\"audio drama\"',0,2223,1),
(763,'2011-07-05','Worst movie ever',655,'MrGadgets talks about what are in his opinion some very terrible movies','
\r\n',155,0,1,'CC-BY-SA','movies,\"bad movies\"',0,2176,1),
(764,'2011-07-06','Matt Grove of Miserware - Energy-saving computing',1432,'Granola is software that improves the energy efficiency of your PC or laptop','
Energy-saving computing. It’s a neat concept, saving you money by saving you electricity. That’s money off your utilitiy bill while you do your bit to save the planet. Granola is software that improves the energy efficiency of your PC or laptop. A few weeks ago I spoke to Matt Grove from Miserware, who explained how it works…
The full circle podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
',160,0,1,'CC-BY-SA','Full Circle Podcast',0,2185,1),
@@ -17103,7 +17218,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(803,'2011-08-30','A novacut support call',2862,'The NovaCut video editor was a Kickstarter project in 2011','
\r\nThis is a the \"hour call\" to Jason DeRose after making a $100 pledge to novacut. https://novacut.com/ @novacut @hpr !hpr\r\n
\r\n
\r\nBack in episode 0780, klaatu interviewed Jason DeRose about NovaCut. At the time they were running a kickstarter campaign to raise money to fund the project. \r\nsaras fox was one of the contributors and that earned him a hour long conversation which we bring to you today.\r\n
\r\nYou can contact saras fox on Google+ https://plus.google.com/106479011389609622954/posts\r\n',188,0,1,'CC-BY-SA','NovaCut,video,editor,Kickstarter',0,2018,1),
(804,'2011-08-31','Wayne Myers from Fit and the Conniptions at OggCamp',3821,'Ken Fallon interviews Wayne Myers at OggCamp 11','
\r\n@conniptions !hpr. In todays show Ken interviews Wayne Myers from the band Fit and the Conniptions recorded at https://www.oggcamp.org. \r\nFollowing the interview we play the presentation and edit in the full length song \"Solemn Ground\" \r\n
I\'m Wayne Myers, a singer-songwriter from London. I\'ve been recording and performing bluesy folk-rock under the name Fit and the Conniptions since December 2005.
All releases are available to download from Bandcamp - you can pay as much or as little as you want / can afford, including zero. If you like CDs, there are still some copies of the first two releases left at CDBaby also.
\r\nThis is an augmented podcast, for the blind, visually impaired, or for those of us away from a screen. \r\nIf you would like to help out creating the text of the OggCamp presentations for me to read out, then please email admin at hacker public radio dot org. \r\n
\r\n',30,54,1,'CC-BY-SA','oggcamp,oggcamp11',0,1895,1),
(805,'2011-09-01','How Monster Cable got its name',2635,'Mr Gadgets phones in to talk about the Monster Cable company','In todays episode he explains how Monster Cable got it\'s name and why you needed them then but do you still need to use them now ? With notes on innovating MrGadgets will be at the OhioLinuxFest',155,0,1,'CC-BY-SA','HiFi,audiophile,decibel,\"skin effect\"',0,2044,1),
-(806,'2011-09-04','HPR Community News for Aug 2011',2353,'HPR Community News for Aug 2011','
Wayne Myers from Fit and the Conniptions at OggCamp
\r\n
\r\n \r\n
805
\r\n
MrGadgets
\r\n
How Monster Cable got it\'s name
\r\n
\r\n \r\n \r\n
\r\n\r\n
Thanks To
\r\n
\r\n
Finux, Tony, Laura, Popey, Henderik, Yvonne, Pokey, Code Cruncher, Manon, Kevin O\'Brien, Ivan Privaci, DoorToDoorGeek, Kevin Barry for all the help getting ready for OggCamp
\r\n
Joshua Knapp for the server admin work
\r\n
Becky Newborough, Philip Newborough
\r\n
Johan Paul for checking our RSS feed
\r\n
Everyone that gave feedback on the podcatcher you use
\r\nAlso Shane Marks and some time Fab.\r\n\r\n\r\n
New Outro
\r\n
\r\n
\r\nWe have moved providers some time ago and we need to include an advertisement for our sponsor (Lunar pages) in the outro. I have edited all the episodes that are currently in the queue to have the new outro but going forward I would appreciate it if you could switch to the new outro which can be found here https://hackerpublicradio.org/media/theme-music/outro-mono.mp3. All the versions including the original slick0 master flac, can be found at https://hackerpublicradio.org/media/theme-music/\r\n
\r\n
\r\nThe text for the outro is in the file hpr-outro-text.txt and I\'d like to get a versions from every host and listener, with the idea of editing them together to have multiple versions with each line read by different people. Please submit those in high quality WAV or FLAC with spaces between each line to allow for easy editing.\r\n
\r\n
\r\nAfter recording a HPR news segment at my brother-in-law\'s studio he was inspired to record a intro and outro for HPR and he\'d appreciate your feedback. Give the files starting in https://hackerpublicradio.org/media/theme-music/ rollercostermusic.com* a listen.\r\n
\r\n
\r\nIt would also help greatly if you could provide shownotes with your episode in html as otherwise I need to listen to your shows and make the shownotes for you which will result in a delay in your show getting posted. We are now also officially CC-BY-SA so if you are releasing your show in any other format you need to make note of that\r\nin your show and in the shownotes.\r\n
\r\n\r\n\r\n
Month in Review
\r\n
\r\n
\r\n
We have ogg and spx feed !
\r\n
We changed the mp3 feed to make it RSS 2.0 compliant - finally !
\r\nA while back 5150 proposed that we produce an audiobook using only HPR contributors as actors. Several people responded positively, and said they would like to participate. Well, we now have a script. It was originally written as a screenplay, so it needs a little work to make the visual bits work as audio only, but I don\'t think that will take too long. It\'s almost ready to go as is. 5150 and Integgroll have stepped up to help me make editorial and casting decisions and get other producer type stuff done. \r\n\r\n This is a casting call of sorts. We need some voice actors, but we\'ll also need some sound effects, and perhaps some music. I may ask people to create sound effects, and upload them to the freesound project, or just to find such sounds. I\'m not sure what we\'ll need yet, but I\'d like to know who\'s interested in helping out. I was considering asking the Open Source Musician\'s Podcast to consider doing a \"tune storm\" for some music, but I\'d like to know if you guys think we should keep it all in house, or collaborate on that. \r\n\r\n The story is a SciFi/adventure that\'s also a lighthearted Free Software allegory, so it\'s a perfect fit for HPR. It will run between 50 and 80 minutes, I think, so it may be broken up into two or three episodes if it\'s too long for just one. I\'m really not sure. \r\n\r\n The plan is to record with actors using mumble but also recording locally to get the best possible sound quality. I\'ll mix it all in audacity, unless someone else wants that job, or wants to do it with ardour or whatever. \r\n\r\n As is, there are 4 male roles, 3 female roles, and 6 androgynous roles. Most of the male and female roles could be swapped also to match our supply of actors. If we get more people than that, We\'ll add parts to make sure that everyone who\'s interested can participate. The protagonist and major role is female. She will have a majority of the speaking parts, thus the biggest time commitment of all the actors. \r\n\r\n If you\'re interested, please send me a voice sample so I can sort out the cast, or let me know what you\'re willing to do so I have some idea about that too. Please use my personal email address for this so that we don\'t clutter up the regular mailing list. pdailey03@gmail.com \r\n\r\n Thank you for hearing me out on this. \r\npokey\r\n\r\n\r\n
The Linux News Podcast
\r\n
\r\nHi fellow podcaster, \r\n \r\nI have just launched a new podcast. You know as well as I do it is hard to get the news out. I was wondering if you would please be so kind as to give it a listen. Any feedback would be appreciated. And if you like it, a mention in your podcast would be very kind. If you do, please email me so I can put a link on my website to your show. \r\n \r\nAlso if you ever need a guest on your show, please feel free to email me and let me know. If you want to know a little more about me please check out my website under About. You can also email me any questions you may have. \r\n \r\nSo what is my new podcast? The Linux News Podcast. The Linux News Podcast was designed to fill a much needed gap in audio shows covering exclusively Linux, Android, and Open Source news. The podcast aims to be relevant, accurate, fair, clear, timely, interesting and concise. \r\n \r\nThe podcast aims to be relevant by focusing on topic of interest to Linux users. I focus on such topics such as software freedom, Linux development, Open Source software, Android and mobile devises, security issues, and Linux distribution releases. Special attention is given to the top ten Linux distributions: Ubuntu, Linux Mint, Fedora, Debian, openSUSE, Arch, PCLinuxOS, Puppy Linux, Sabayon, and CentOS. \r\n \r\nThe podcast is less than 15 minutes long and is released every Tuesday and Friday evenings. \r\n\r\n \r\nThank you so much for your help in spreading the news. \r\n \r\nHere is the Official Press Release: https://www.prlog.org/11624836-new-linux-news-podcast.html \r\n
\r\n\r\n ',159,47,1,'CC-BY-SA','Community News',0,1998,1),
+(806,'2011-09-04','HPR Community News for Aug 2011',2353,'HPR Community News for Aug 2011','
Wayne Myers from Fit and the Conniptions at OggCamp
\r\n
\r\n \r\n
805
\r\n
MrGadgets
\r\n
How Monster Cable got it\'s name
\r\n
\r\n \r\n \r\n
\r\n\r\n
Thanks To
\r\n
\r\n
Finux, Tony, Laura, Popey, Henderik, Yvonne, Pokey, Code Cruncher, Manon, Kevin O\'Brien, Ivan Privaci, DoorToDoorGeek, Kevin Barry for all the help getting ready for OggCamp
\r\n
Joshua Knapp for the server admin work
\r\n
Becky Newborough, Philip Newborough
\r\n
Johan Paul for checking our RSS feed
\r\n
Everyone that gave feedback on the podcatcher you use
\r\nAlso Shane Marks and some time Fab.\r\n\r\n\r\n
New Outro
\r\n
\r\n
\r\nWe have moved providers some time ago and we need to include an advertisement for our sponsor (Lunar pages) in the outro. I have edited all the episodes that are currently in the queue to have the new outro but going forward I would appreciate it if you could switch to the new outro which can be found here https://hackerpublicradio.org/media/theme-music/outro-mono.mp3. All the versions including the original slick0 master flac, can be found at https://hackerpublicradio.org/media/theme-music/\r\n
\r\n
\r\nThe text for the outro is in the file hpr-outro-text.txt and I\'d like to get a versions from every host and listener, with the idea of editing them together to have multiple versions with each line read by different people. Please submit those in high quality WAV or FLAC with spaces between each line to allow for easy editing.\r\n
\r\n
\r\nAfter recording a HPR news segment at my brother-in-law\'s studio he was inspired to record a intro and outro for HPR and he\'d appreciate your feedback. Give the files starting in https://hackerpublicradio.org/media/theme-music/ rollercostermusic.com* a listen.\r\n
\r\n
\r\nIt would also help greatly if you could provide shownotes with your episode in html as otherwise I need to listen to your shows and make the shownotes for you which will result in a delay in your show getting posted. We are now also officially CC-BY-SA so if you are releasing your show in any other format you need to make note of that\r\nin your show and in the shownotes.\r\n
\r\n\r\n\r\n
Month in Review
\r\n
\r\n
\r\n
We have ogg and spx feed !
\r\n
We changed the mp3 feed to make it RSS 2.0 compliant - finally !
\r\nA while back 5150 proposed that we produce an audiobook using only HPR contributors as actors. Several people responded positively, and said they would like to participate. Well, we now have a script. It was originally written as a screenplay, so it needs a little work to make the visual bits work as audio only, but I don\'t think that will take too long. It\'s almost ready to go as is. 5150 and Integgroll have stepped up to help me make editorial and casting decisions and get other producer type stuff done. \r\n\r\n This is a casting call of sorts. We need some voice actors, but we\'ll also need some sound effects, and perhaps some music. I may ask people to create sound effects, and upload them to the freesound project, or just to find such sounds. I\'m not sure what we\'ll need yet, but I\'d like to know who\'s interested in helping out. I was considering asking the Open Source Musician\'s Podcast to consider doing a \"tune storm\" for some music, but I\'d like to know if you guys think we should keep it all in house, or collaborate on that. \r\n\r\n The story is a SciFi/adventure that\'s also a lighthearted Free Software allegory, so it\'s a perfect fit for HPR. It will run between 50 and 80 minutes, I think, so it may be broken up into two or three episodes if it\'s too long for just one. I\'m really not sure. \r\n\r\n The plan is to record with actors using mumble but also recording locally to get the best possible sound quality. I\'ll mix it all in audacity, unless someone else wants that job, or wants to do it with ardour or whatever. \r\n\r\n As is, there are 4 male roles, 3 female roles, and 6 androgynous roles. Most of the male and female roles could be swapped also to match our supply of actors. If we get more people than that, We\'ll add parts to make sure that everyone who\'s interested can participate. The protagonist and major role is female. She will have a majority of the speaking parts, thus the biggest time commitment of all the actors. \r\n\r\n If you\'re interested, please send me a voice sample so I can sort out the cast, or let me know what you\'re willing to do so I have some idea about that too. Please use my personal email address for this so that we don\'t clutter up the regular mailing list. pdailey03@gmail.com \r\n\r\n Thank you for hearing me out on this. \r\npokey\r\n\r\n\r\n
The Linux News Podcast
\r\n
\r\nHi fellow podcaster, \r\n \r\nI have just launched a new podcast. You know as well as I do it is hard to get the news out. I was wondering if you would please be so kind as to give it a listen. Any feedback would be appreciated. And if you like it, a mention in your podcast would be very kind. If you do, please email me so I can put a link on my website to your show. \r\n \r\nAlso if you ever need a guest on your show, please feel free to email me and let me know. If you want to know a little more about me please check out my website under About. You can also email me any questions you may have. \r\n \r\nSo what is my new podcast? The Linux News Podcast. The Linux News Podcast was designed to fill a much needed gap in audio shows covering exclusively Linux, Android, and Open Source news. The podcast aims to be relevant, accurate, fair, clear, timely, interesting and concise. \r\n \r\nThe podcast aims to be relevant by focusing on topic of interest to Linux users. I focus on such topics such as software freedom, Linux development, Open Source software, Android and mobile devises, security issues, and Linux distribution releases. Special attention is given to the top ten Linux distributions: Ubuntu, Linux Mint, Fedora, Debian, openSUSE, Arch, PCLinuxOS, Puppy Linux, Sabayon, and CentOS. \r\n \r\nThe podcast is less than 15 minutes long and is released every Tuesday and Friday evenings. \r\n\r\n \r\nThank you so much for your help in spreading the news. \r\n \r\nHere is the Official Press Release: https://www.prlog.org/11624836-new-linux-news-podcast.html \r\n
\r\n\r\n ',159,47,1,'CC-BY-SA','Community News',0,1998,1),
(829,'2011-10-06','Interview with Prof Jocelyn Bell-Burnell',2230,'Prof Jocelyn Bell-Burnell, discoverer of pulsars, on the Jodcast podcast','
\r\nWelcome to hacker public radio\r\n
\r\n
\r\nEach Thursday we play Syndicated creative commons content\r\n
\r\n
\r\nTodays show is from the Jodcast podcast and is released under a Creative Commons Attribution-NonCommercial- ShareAlike 2.0 England & Wales License \r\n
\r\n
\r\n\"The Jodcast is a volunteer podcast about astronomy set up by astronomers based at the University of Manchester\'s Jodrell Bank but aims to cover astronomy carried out all over the Earth and beyond.\"\r\n
\r\n
\r\nIn todays show, aired in June two thousand and seven they interview Jocelyn Bell-Burnell on the 40th aniversary of her discovery of pulsars.\r\n
\r\n
\r\nTodays Syndicated Thursday show was recommended by DelWin \r\n
\r\n
\r\nIf you have a recommendation for syndicated thursday then please email it to admin at hacker public radio dot org\r\n
\r\n',159,54,1,'CC-BY-SA','astronomy,quasar,pulsar,\"radio telescope\",\"neutron star\",\"transient pulsar\"',0,2156,1),
(807,'2011-09-05','MaraDNS',1703,'Part 6 of the Networking series: How to set up a simple DNS server','
Klaatu continues his Networking Basics series with a howto set up a simple DNS server using MaraDNS.
\r\n\r\n
Get the ogg vorbis version from the Gnu World Order.
',78,61,0,'CC-BY-SA','networking,DNS,\"Domain Name System\",MaraDNS',0,2097,1),
(808,'2011-09-06','Interview with Yancy Smith',342,'Interview at SELF about a PC recycling project with the Carolina Free PC Foundation','
\r\nCheapskate Computing\r\n
\r\n
\r\nTranscriber\'s notes: This is probably 95%-97% accurate. I made sure to get most of the important parts, even slowing down the recording - but some stuff just did not come out clearly. We were in a very quiet room, but the Fuze\'s mic is not professional quality. Transcriptions marked with an asterisk * are my best guess / paraphrase. There aren\'t many.\r\n
\r\nAudio notes: Volume normalization & removal of bias, and the noise of me pressing buttons on the Fuze was removed. There is no editing for content.\r\n
\r\n
\r\nBroam: So hi, I\'m here with Yancy Smith, he was doing a...like a donation project he called the \"Scrapper Project\" here at SELF, I just wanted to ask him a couple questions about it.\r\n
\r\n
\r\nBroam: Hi Yancy.\r\n
\r\n
\r\nYancy: Hi. Um.\r\n
\r\n
\r\nBroam: So tell me about it.\r\n
\r\n
\r\nYancy: Well basically we take the time*, we take old computers from labs and computer stores, they give them to me; I recycle them to someone else. \r\n
\r\n
\r\nAnd a couple weeks ago I got clearance in talking Dave Yates, our president, said, \"can we do this here at our function\" here at SELF. and I sent out to all our club members and to most of my facebook friends, we didn\'t put on the general list, we just tryin\' this out. We didn\'t have no donations this time, but some of us bought some stuff in, mainly me, brought some old stuff in, to get rid of because I don\'t have the room...and... it didn\'t turn out so well, but had a couple of bags to send with the Athens [?] team home, so they enjoyed that.\r\n
\r\n
\r\nBroam: That\'s cool. I have some other questions here... let\'s see here... um. so professional. So is this mostly you organizing this on your own, or?\r\n
\r\n
\r\nYancy: Yeah. But I\'m working with the Carolina Free PC Foundation. I emailed them, they said they would be glad to take, and they emailed me back. Emailed Athens a week ago, but they didn\'t get my email in time, but they said next year, talk to such & such and they would know who to talk to. I\'d be willing to open it to anyone.\r\n
\r\n
\r\nBroam: Okay. Is this the first year you\'ve done this, or?\r\n
\r\n
\r\nYancy: Yeah, it\'s first time. It\'s an ad-hoc thing, our group - the club, Upstate Carolina Linux user group. ( www.uclug.org ), is a meritocracy, but I still asked for permission.\r\n
\r\n
\r\nBroam: Cool obviously crossing off a ton of questions here and who are you going to give the donated computers to? Other foundations, or?\r\n
\r\n
\r\nYancy: Mainly, um, if there had been some this year, there would have been a three-way split - who needs what parts. I found out that the Carolina [group] wanted the hard drives and certain memory sets and things, they would have gotten that. Free PCs they had certain amounts that wanted, and the rest I would have taken home or send on to someone else down the road.\r\n
\r\n
\r\nBroam: Ok. And uh, and did you look at any other projects - I know you contacted some people, but did you look at other, like, similar things that people have done on line, like, say Freegeek or Helios Initiative for anything like that, for ideas?\r\n
\r\n
\r\nYancy: Mainly it\'s between, um, I haven\'t heard of them too much; but like what I said I\'m following the guidelines of the Carolina PC and some of the Athens stuff. I happen to know um, what we - I had contact with them last year and so if there\'s something they can use...\r\n
\r\n
\r\nBroam: Ok. You said something in the Facebook post you sent me about Linux being required by South Carolina state law. Could you explain that a little more?\r\n
\r\n
\r\nYancy: Well it\'s... that was a misstatement. What I was saying was that by State law requires you to send off the parts and metals stuff, not in the trash they send it off to a scrapyard - \r\n
\r\n
\r\nBroam: Oh, ok... yeah I...\r\n
\r\n
\r\nYancy: but the part about the Linux is I put Linux on there because it wipes the drive down completely and clearly because of the data retention laws, that\'s why\r\n
\r\n
\r\nBroam: aaaah, ok.\r\n
\r\n
\r\nYancy: see a lot of the stores, I go into a thift store, like a Goodwill or a church store, they don\'t really wipe down the systems they build. They don\'t have the [expertise]. They just wipe* a couple directories and think it\'s sanitized. That is a dangeorus thing to do.\r\n
\r\n
\r\nBroam: Yes, I know... (In retrospect, sounds kinda flippant, sorry. I meant to agree with him here. ed.)\r\n
\r\n
\r\nYancy: That and the license - any issues of rebuilding windows, I do that only when I have a holographic key. So it\'s just like even if I have a key I still put Linux on top of it, so if there\'s an issue with Windows, I can recover but also I still can introduce them to Linux, because games, software, photos...\r\n
\r\n
\r\nBroam: Everything is free, everything is legally transferrable.\r\n
\r\n
\r\nYancy: Yeah. Especially there\'s an application called Photo...photo wall or photoroom, it\'s sorta like Apple\'s album* for all your photos. It\'s the coolest thing.\r\n
\r\n
\r\nBroam: Cool! And I have one last question ...got any stuff for me?\r\n
\r\n
\r\nYancy: Um...\r\n
\r\n
\r\nBroam: *laughter*\r\n
\r\n
\r\nYancy: Not much left. Athens took off with all of my stuff.\r\n
\r\n
\r\nBroam: All right. Thanks a lot, Yancy. I appreciate your time.\r\n
\r\n ',143,78,1,'CC-BY-SA','SELF,\"Carolina Free PC Foundation\",\"Upstate Carolina Linux User Group\"',0,2144,1),
@@ -17124,12 +17239,12 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(823,'2011-09-27','Klaatu talks to Trevor, a programmer for Phonon\'s Gstreamer backend',507,'Phonon\'s Gstreamer backend','
At the Ohio Linux Fest, Klaatu talks to Trevor, a programmer for Phonon\'s Gstreamer backend.
',78,78,0,'CC-BY-SA','KDE,Phonon,Gstreamer,Amarok,\"Dragon Player\"',0,2026,1),
(824,'2011-09-28','Opentech Conference 2011: Paula Graham, FOSSBox',961,'Fossbox at OpenTech 2011','
Hello world and welcome to our show on Hacker Public Radio. This episode is our interview with Paula Graham of Fossbox by my co-host is Les Pounder, following the Opentech Conference in London
Fossbox is a non-profit organisation supporting digital inclusion and helping other non-profits move towards lower-cost ICT systems with more flexibility and lower environmental impact.
\r\n\r\n
OpenTech 2011 is an informal, low cost, one-day conference on slightly different approaches to technology, transport and democracy. Talks by people who work on things that matter, guarantees a day of thoughtful talks leading to conversations with friends.
The full circle podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine dot org forward slash podcast, send us a comment to podcast (at) fullcirclemagazine.org
\r\n\r\n
Additional audio by Victoria Pritchard
\r\n\r\n
Runtime: 15mins 59seconds
',160,0,1,'CC-BY-SA','Full Circle Podcast',0,1986,1),
(825,'2011-09-29','Jamey Sharp Interview at X.Org Developer Conference (XDC) 2011',1226,'Interview with Jamey Sharp at XDC 2011','
\r\nJamey Sharp was placed on Ritalin, briefly, in fifth grade. His interests and activities have been varied ever since. Today his day job involves a computer test for attention deficit disorder, but his biggest projects have been the Portland State Aerospace Society, a student rocketry club at Portland State University; XCB, a new low-level binding to the X protocol, in the process of replacing Xlib; and Serialist, because his other projects didn’t leave him enough time to read his favorite webcomics without tool support. \r\nJamey’s interests span computer science fields including cryptography, combinatorial search, compilers, and computational complexity; systems-level programming, such as file format and network protocol implementations, Linux kernel development, and boot-loader hacking; computer architecture and its impact on software design; and functional programming, preferably in Haskell. \r\nThis interview focuses on Jamey\'s work on X.org, specifically the XCB project. The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility. \r\n \r\nXCB project site - https://xcb.freedesktop.org/ \r\nXCB mailing list - https://lists.freedesktop.org/mailman/listinfo/xcb \r\nXCB irc - irc.freenode.net #xcb \r\nhttps://opensourcebridge.org/users/432 \r\nhttps://www.ohloh.net/accounts/jamey \r\nhttps://www.tovatest.com/ \r\nhttps://psas.pdx.edu/ \r\nhttps://xcb.freedesktop.org/ \r\nhttps://serialist.net/ \r\n
',156,78,1,'CC-BY-SA','\"X.Org Developer Conference\",XDC,XCB',0,2011,1),
-(826,'2011-10-02','HPR Community News for Sep 2011',1617,'HPR Community News for Sep 2011','
Gemma Cameron aka @ruby_gem about Barcamp Blackpool
\r\n
\r\n \r\n
814
\r\n
Knightwise
\r\n
The Knightcast KC0054 : Setting up Amahi
\r\n
\r\n \r\n
815
\r\n
Ken Fallon
\r\n
Software Freedom Day Dundee 2011
\r\n
\r\n \r\n
816
\r\n
Tracy Holz (Holzster)
\r\n
Modern Survivalism part 1
\r\n
\r\n \r\n
817
\r\n
AukonDK
\r\n
Installing Linux and Windows 7 to a USB Hard Drive
\r\n
\r\n \r\n
818
\r\n
pokey
\r\n
Sansa Clip Plus for podcasting
\r\n
\r\n \r\n
819
\r\n
Robin Catling
\r\n
Editing Part Five Post and Packing
\r\n
\r\n \r\n
820
\r\n
klaatu
\r\n
Setting up a web server and a mySQL server
\r\n
\r\n \r\n
821
\r\n
MrGadgets
\r\n
Why Android tablets suck !
\r\n
\r\n \r\n
822
\r\n
Ken Fallon
\r\n
Vivean Parkhouse about the GiffGaff Community Phone project
\r\n
\r\n \r\n
823
\r\n
klaatu
\r\n
Klaatu talks to Trevor, a programmer for Phonon\'s Gstreamer backend
\r\n
\r\n \r\n
824
\r\n
Robin Catling
\r\n
Opentech Conference 2011: Paula Graham, FOSSBox
\r\n
\r\n \r\n
825
\r\n
marcoz
\r\n
Jamey Sharp Interview at X.Org Developer Conference (XDC) 2011
\r\n
\r\n \r\n \r\n
\r\n\r\n
Apologies To
\r\n
\r\n
Kris Findlay, and Thistleweb for scheduling mixups
\r\n
\r\n\r\n
Scheduling Shows
\r\n
\r\nHi Earthlings,\r\n\r\nAlong with the scheduling rules\r\nhttps://hackerpublicradio.org/calendar.php there is the line \"while\r\navoiding having any one host/series repeated in a week\". The idea was\r\nto allow for someone uploading an entire series in one go and us\r\nhaving to schedule it. That has worked well so that the queue is full\r\nand that host still gets their series played fairly often, but ...\r\n\r\nAfter an event like OggCamp/ILF/OLF/SELF etc we tend to get a load of\r\nshows at once that are outside the traditional series concept. Some of\r\nthese have the \"feel of the fest\" and may go stale after a time.\r\n\r\nShould we schedule those according to the same rules meaning there\r\nwould be no more than one a week, or should we open the floodgates and\r\nhave a few weeks dedicated to post festival interviews ?\r\n\r\nDiscuss.\r\n
\r\n\r\n
Month in Review
\r\n
\r\n
\r\n
DerbyCon : Louisville, Kentucky – September 30th to October 2nd, 2011
\r\n
Augmented podcast on HPR
\r\n
Outro Contribution Curbuntu, pokey
\r\n
HPR Theme Music
\r\n
HPR Roundtable at Phreaknic
\r\n
Code Cruncher in Amsterdam
\r\n
\r\n\r\n\r\n
HPR at OLF
\r\n
\r\n\r\n
',159,47,1,'CC-BY-SA','Community News',0,1889,1),
+(826,'2011-10-02','HPR Community News for Sep 2011',1617,'HPR Community News for Sep 2011','
Gemma Cameron aka @ruby_gem about Barcamp Blackpool
\r\n
\r\n \r\n
814
\r\n
Knightwise
\r\n
The Knightcast KC0054 : Setting up Amahi
\r\n
\r\n \r\n
815
\r\n
Ken Fallon
\r\n
Software Freedom Day Dundee 2011
\r\n
\r\n \r\n
816
\r\n
Tracy Holz (Holzster)
\r\n
Modern Survivalism part 1
\r\n
\r\n \r\n
817
\r\n
AukonDK
\r\n
Installing Linux and Windows 7 to a USB Hard Drive
\r\n
\r\n \r\n
818
\r\n
pokey
\r\n
Sansa Clip Plus for podcasting
\r\n
\r\n \r\n
819
\r\n
Robin Catling
\r\n
Editing Part Five Post and Packing
\r\n
\r\n \r\n
820
\r\n
klaatu
\r\n
Setting up a web server and a mySQL server
\r\n
\r\n \r\n
821
\r\n
MrGadgets
\r\n
Why Android tablets suck !
\r\n
\r\n \r\n
822
\r\n
Ken Fallon
\r\n
Vivean Parkhouse about the GiffGaff Community Phone project
\r\n
\r\n \r\n
823
\r\n
klaatu
\r\n
Klaatu talks to Trevor, a programmer for Phonon\'s Gstreamer backend
\r\n
\r\n \r\n
824
\r\n
Robin Catling
\r\n
Opentech Conference 2011: Paula Graham, FOSSBox
\r\n
\r\n \r\n
825
\r\n
marcoz
\r\n
Jamey Sharp Interview at X.Org Developer Conference (XDC) 2011
\r\n
\r\n \r\n \r\n
\r\n\r\n
Apologies To
\r\n
\r\n
Kris Findlay, and Thistleweb for scheduling mixups
\r\n
\r\n\r\n
Scheduling Shows
\r\n
\r\nHi Earthlings,\r\n\r\nAlong with the scheduling rules\r\nhttps://hackerpublicradio.org/calendar.php there is the line \"while\r\navoiding having any one host/series repeated in a week\". The idea was\r\nto allow for someone uploading an entire series in one go and us\r\nhaving to schedule it. That has worked well so that the queue is full\r\nand that host still gets their series played fairly often, but ...\r\n\r\nAfter an event like OggCamp/ILF/OLF/SELF etc we tend to get a load of\r\nshows at once that are outside the traditional series concept. Some of\r\nthese have the \"feel of the fest\" and may go stale after a time.\r\n\r\nShould we schedule those according to the same rules meaning there\r\nwould be no more than one a week, or should we open the floodgates and\r\nhave a few weeks dedicated to post festival interviews ?\r\n\r\nDiscuss.\r\n
\r\n\r\n
Month in Review
\r\n
\r\n
\r\n
DerbyCon : Louisville, Kentucky – September 30th to October 2nd, 2011
\r\n
Augmented podcast on HPR
\r\n
Outro Contribution Curbuntu, pokey
\r\n
HPR Theme Music
\r\n
HPR Roundtable at Phreaknic
\r\n
Code Cruncher in Amsterdam
\r\n
\r\n\r\n\r\n
HPR at OLF
\r\n
\r\n\r\n
',159,47,1,'CC-BY-SA','Community News',0,1889,1),
(827,'2011-10-03','HPR booth and HostGator',716,'HPR at OLF','
Klaatu talks about howto establish an HPR booth at your favourite tech conference, and gives a report about HPR\'s presence at the Ohio Linux fest this year. Also, an interview with Lance from HostGator.com
',78,0,0,'CC-BY-SA','\"Ohio Linux Fest\",OLF,\"lock picking\",HostGator.com',0,1910,1),
(828,'2011-10-04','a+g=-b',2306,'The demise of physical retail stores','In this episode Mr Gadgets talks about the demise of physical retail stores and ponders what the effect will be.',155,0,1,'CC-BY-SA','\"online store\",\"physical store\",\"book reader\"',0,2032,1),
(830,'2011-10-06','Peter Hutterer Interview at X.Org Developer Conference (XDC) 2011',1601,'Interview with Peter Hutterer at XDC 2011','
Peter Hutterer works on X.org, specifically the input system, at Red Hat.
\r\n
\r\n
Xorg project site (input is one of several parts to X) - https://x.org/wiki
\r\n',156,78,1,'CC-BY-SA','X.org,xinput,multitouch',0,2135,1),
(831,'2011-10-09','Chris from Sourceforge.net',694,'Klaatu interviews Chris from Sourceforge.net at OLF','
Klaatu interviews Chris from Sourceforge.net, at the Ohio Linux Fest.
',78,0,0,'CC-BY-SA','OLF,Sourceforge,Freshmeat,Slashdot,Geeknet',0,2031,1),
-(832,'2011-10-10','OggCamp11 Roundup',1899,'A round-up of OggCamp 11','
In today\'s show Ken gives a round-up of OggCamp 11.
\r\n
We start with a chat with Les Pounder who is crew manager \r\n \r\nhttps://oggcamp.org/\r\n
\r\n',30,62,1,'CC-BY-SA','oggcamp,oggcamp11',0,1968,1),
(833,'2011-10-11','Ian Romanick Interview at X.Org Developer Conference (XDC) 2011',1361,'Interview with Ian Romanick at XDC 2011','
Ian Romanick works on Mesa at Intel. Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics.
\r\n',156,78,1,'CC-BY-SA','X.org,Mesa,OpenGL',0,1992,1),
(834,'2011-10-12','The Knightcast KC0056 : Best of KWTV Live',6855,'A visit to the Knightcast podcast','
\r\nIn this weeks extra long podcast we bring you the excerpts from Septembers KWTV Live episode. Three interesting guests talk in depth about 3 interesting topics that is sure to interest anyone who runs ANY operating system. Larry Bushey from the Going Linux podcast talks about what is wrong with Linux, Bart Busschots comes to talk to us about OSX Lion and the future of the Apple operating system and Keith Murray brings us his views on the newest Windows 8 Developer preview. We ask skeptical questions and ponder on the future of the computer os in light of the Tablet revolution. All of that and more on this weeks Knightcast.\r\n
\r\n',111,54,1,'CC-BY-SA','\"KWTV Live\",\"OSX Lion\",\"Windows 8\"',0,2089,1),
(835,'2011-10-13','Amazon sets the world on Fire',1924,'Speculating about the Amazon Fire tablet','Mr Gadgets continues his investigation into tablets and wonders what Amazons Fire will bring.',155,0,1,'CC-BY-SA','\"Kindle Fire\",\"Amazon Fire\",camera',0,2127,1),
@@ -17148,7 +17263,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(848,'2011-11-01','Alan Cocks, the info point project',584,'An interview with Alan Cocks at Oggcamp 11','
\r\nIn todays show Ken talks to Alan Cocks about the info point project setup by Jono Bacon. It is an outreach program to get the message of open source to visitors at and how he has spread the open source message at the Bracknell Computer Fair each month https://www.britishcomputerfairs.com/cgi-bin/floorplan?vnu_id=5\r\n \r\n\r\nhttps://infopointproject.org/wordpress/ \r\nEditor\'s Note: The above site is no longer available. The link refers to the last copy made on the Wayback Machine
\r\n\r\n',30,78,1,'CC-BY-SA','\"Info Point Project\",\"Bracknell Computer Fair\"',0,2141,1),
(849,'2011-11-02','Sunday Morning Linux Review',2653,'SMLR episode 3','
\r\nEach Thursday we play Syndicated creative commons content. In todays show we focus on Sunday Morning Linux Review with Mat and Tony, a weekly news show for the Linux community \r\nhttps://www.smlr.us \r\n
\r\nKernel News: Mat \r\nThe Current Development kernel 3.2 \r\nThe Stable release is 3.1 \r\n
\r\n
\r\nDistro News: Tony \r\nDistrowatch.com \r\n10-27 SalineOS 1.5 Debian-based distribution with Xfce \r\n
\r\n
\r\n10-25 Puppy Linux 5.3 Slacko binary compatibility with Slackware Linux \r\nLast week releases: ZevenOS 2.0 Neptune and Finnix 103 \r\n
\r\n
\r\nComing up: FreeBSD 9.0 and openSUSE 12.1\r\n
\r\n
\r\nDistro of the Week: \r\nMint \r\nUbuntu \r\nopenSUSE \r\nFedora \r\nDebian \r\nOther Distro News: \r\n
\r\n
\r\nTech News: \r\nAmazon Introduces New Ebook Format \r\nThe new file format, Kindle Format 8 (KF8), is based on HTML5, and with it, Amazon aims to bring some of the flexibility and power that HTML5 offers to the world of e-books. HTML5 features such as CSS3 formatting, nested tables, SVG graphics, embedded fonts, and borders are all now supported. The new format includes much richer layout options, including fixed layoutsessential for accurate reproduction of many childrens booksand panel-based layouts for comic books. Books can include sidebars and callouts, text overlaid on background images, boxes, drop caps, and more.\r\n
\r\n
\r\nOpen Source: You Know, For Kids! \r\nRecently SCALE announced that the 2012 event, January 20-22 in Los Angeles, will include a SCALE Kids Conference\r\n
\r\n
\r\nMore about: ICANN is Taking Over the Olson Time Zone Database Astrolabe not looking for money but just wanted to make a point about infringement.\r\n
\r\n
\r\nOther Talk: \r\nApple Threatens Small, Family-Run Caf Over Trademark \r\nApple is threatening to sue a small, family run caf in Bonn because they are of the opinion that their logo infringes on Apples trademark. The owner of the caf Apfelkind, Christin Rmer, has registered her logo as a trademark for the service and fashion industry in June in Munich. Now Apple is claiming in a cease and desist letter that there could be confusion between the small caf in Bonn and their global entertainment brand.\r\n
\r\n
\r\nLinux Malware: Are We There Yet? \r\nUntrusted package sources \r\nBots, rootkits and unknown commands \r\n
\r\n
\r\nMore Talk: \r\nTonys Projects: XBMCbuntu HTPC: Fast Boot, Internet content, Local and network Content! \r\nMats Projects: PFsense\r\n
\r\n ',159,54,1,'CC-BY-SA','SMLR,Sunday Morning Linux Review',0,2122,1),
(850,'2011-11-03','Another Tech Giant Passes - Household Tech in the Pre-Micro Era',1923,'Remembering some pioneering greats in the tech field','
In today\'s show Mr Gadgets pauses to remember the passing of some pioneering greats in the tech field. He focuses on personal heroes who have had a profound impact on the direction of his life.
\r\nEdgar Marion Villchur (28 May 1917 - 17 October 2011) was an American inventor, educator, and writer widely known for his 1954 invention of the acoustic suspension loudspeaker which revolutionized the field of high-fidelity equipment. A speaker Villchur developed, the AR-3, is exhibited at the The Smithsonian Institutions Information Age Exhibit in Washington, DC. \r\nVillchur\'s speaker systems provided improved bass response while reducing the speaker\'s cabinet size. Acoustic Research, Inc. (AR), of which he was president from 1954 to 1967, manufactured high-fidelity loudspeakers, turntables, and other stereo components of his design, and demonstrated their quality through live vs. recorded concerts. The companys market share grew to 32 percent by 1966. After leaving AR, Villchur researched hearing aid technology, developing the multichannel compression hearing aid, which became the industry standard for hearing aids.\r\n
\r\nHenry Kloss (1929, Altoona, PA - January 31, 2002, Cambridge, MA) was a prominent American audio engineer and businessman who helped advance high fidelity loudspeaker and radio receiver technology beginning in the 1950s. Kloss (pronounced with a long o, like \"close\") was an undergraduate student in physics at Massachusetts Institute of Technology (class of 1953), but never received a degree. He was responsible for a number of innovations, including the acoustic suspension loudspeaker and the high fidelity cassette deck. In 2000, Kloss was one of the first inductees into the Consumer Electronics Association\'s Hall of Fame. He earned an Emmy Award for his development of a projection television system, the Advent Video Beam 1000.\r\n
\r\nAcoustic Research was a Cambridge, Massachusetts-based company that manufactured high-end audio equipment. The brand is now owned by Audiovox. Acoustic Research was well known for the AR-3 series of speaker systems, which used the 12-inch (305 mm) acoustic suspension woofer of the AR-1 with newly designed dome mid-range and high-frequency drivers, which were the first of their kind. AR\'s line of acoustic suspension speakers were extraordinary for their time, as they were the first loudspeakers with flat response, extended bass, wide dispersion, small size, and reasonable cost.\r\n
',155,0,1,'CC-BY-SA','\"Edgar Villchur\",\"Henry Kloss\",\"Acoustic Research\"',0,2229,1),
-(851,'2011-11-04','HPR Community News for Oct 2011',1358,'HPR Community News for Oct 2011','
',159,47,1,'CC-BY-SA','Community News',0,2508,1),
(852,'2011-11-07','GNU Emacs 1',1933,'Part 1 of a mini series on GNU Emacs','
A small mini series (three parts) on GNU Emacs; Klaatu tells you how to use it, when to use it and when not to, why you\'d want to use it, and most of all - how to become a pro on it! Not a sales pitch for Emacs, just a harmless introduction. First try is free.
\r\n
\r\n\r\n
\r\n
GNU Emacs is an extensible, customizable text editor—and\r\nmore. At its core is an interpreter for Emacs Lisp, a dialect of\r\nthe Lisp programming language with extensions to\r\nsupport text editing. The features of GNU Emacs include:
\r\n
\r\n
Content-sensitive editing modes, including syntax coloring, for a\r\nvariety of file types including plain text, source code, and\r\nHTML.
\r\n
Complete built-in documentation, including a tutorial for new\r\nusers.
\r\n
Full Unicode support for nearly\r\nall human languages and their scripts.
\r\n
Highly customizable, using Emacs Lisp code or a graphical\r\ninterface.
\r\n',78,0,0,'CC-BY-SA','\"GNU Emacs\",\"text editor\",\"Emacs Lisp\"',0,2635,1),
(853,'2011-11-08','Pat Volkerding of Slackware Linux chats with Klaatu',2888,'Pat Volkerding of Slackware Linux at the SELF afterparty','
Pat Volkerding of Slackware Linux chats with Klaatu and whomever happens to wander by (Maco, Vincent Batts, Chad Wallenberg, and others) at the SELF afterparty.\r\n
\r\n\r\n
Slackware
\r\n
From Wikipedia, the free encyclopedia
\r\n
\r\nSlackware is a free and open source Linux-based operating system. It was one of the earliest operating systems to be built on top of the Linux kernel and is the oldest currently being maintained. Slackware was created by Patrick Volkerding of Slackware Linux, Inc. in 1993. The current stable version is 13.37, released on April 27, 2011.\r\nSlackware aims for design stability and simplicity, and to be the most \"Unix-like\" Linux distribution, making as few modifications as possible to software packages from upstream and using plain text files and a small set of shell scripts for configuration and administration.\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
Warning: this is not a proper interview, just 40 minutes of aimless and fairly noisy chit chat at a party.\r\nSo it\'s probably not for everyone, although if you\'re a Slackware fan then it might be of some interest.
\r\n',78,0,0,'CC-BY-SA','Slackware',0,4321,1),
(854,'2011-11-09','All In IT Radio0007 - Should Cars Get Smarter ?',4319,'Syndicated Thursday welcomes All In IT Radio','\r\n
Welcome to syndicated Thursday on Hacker Public Radio
\r\n
\r\nToday we hilight the Hello and welcome to All In IT Radio! https://aiit.se/radio/\r\n
\r\n\r\n\r\n
Hello and welcome to All In IT Radio!
\r\n
Join us as we talk about everything related to Information Technology, and some other random stuff as well.\r\n Help us, as we try to find how IT relate to everyone of us, and what the story headlines really mean.
\r\n
This is a show made by Swedes, in english. Some think this is endearing, other think it is stupid. You are welcome to listen to us strugle with the language barrier any way.
\r\n
On your right, you find the episodes, at the bottom you can (and should) subscribe to our feed and in the upper right corner you can stream the latest show.
\r\n
We release a new episode when we feel like it.
\r\n\r\n
Welcome to All In IT Radio! :-)
\r\n\r\n
Episode 0007 - Should Cars Get Smarter?
\r\n
Subscribe! Then you won\'t miss any new shows. There are feeds for both ogg and mp3. You may also find other formats at Archive.org.
\r\n\r\n
How intelligent should your car really be? What will happen to the MeeGo operating system now that Nokia has abandoned the project? Will the new guy contribute to the show in any way? (Spoiler: He did.)
To reach us: Send your message to the group !aiitr at Identi.ca or mark it with hashtag #aiitr at Twitter, you find us at both Identi.ca and Twitter at @AlltInomIT and you find Henrik at @Sonnergard and @Warpfuz.
\r\n',192,54,1,'CC-BY-SA','\"Intelligent cars\",Nokia,Meego',0,2094,1),
@@ -17164,13 +17279,13 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(864,'2011-11-23','Opentech Conference 2011: Glen Mehn, SI Camp',1108,'Opentech Conference in London, interview with Glen Mehn of Social Innovation Camp','
Hello world and welcome to our show on Hacker Public Radio. This episode is our de-brief on the Opentech Conference in London, plus an interview with Glen Mehn of Social Innovation Camp by my co-host is Les Pounder
Social Innovation Camp brings together ideas, people and digital tools to build web-based solutions to social problems – all in just 48 hours
\r\n\r\n
OpenTech 2011 is an informal, low cost, one-day conference on slightly different approaches to technology, transport and democracy. Talks by people who work on things that matter, guarantees a day of thoughtful talks leading to conversations with friends.
The full circle podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine dot org forward slash podcast, send us a comment to podcast (at) fullcirclemagazine.org
\r\n\r\n
Additional audio by Victoria Pritchard
\r\n\r\n
Runtime: 18mins 26seconds
',160,0,1,'CC-BY-SA','Full Circle Podcast',0,2015,1),
(865,'2011-11-24','Desktop Transparency',884,'The history of Desktop Transparency','
Deltaray talks about the (true) history of Desktop Transparency.
\r\n\r\n\r\n\r\n\r\n',194,0,1,'CC-BY-SA','\"free software\",rxvt,\"background image\",\"transparent background\",Enlightenment,\"translucent window\",Berlin',0,2394,1),
(866,'2011-11-28','Publican, the user-friendly Perl frontend to Docbook XML',2478,'Publican is a tool for publishing material authored in DocBook XML','
Klaatu introduces you to Publican, the user-friendly Perl frontend to Docbook XML from the Fedora Linux Project. Also, how to set up vim with XML tag completion.
\r\nFeel free to glance over the dot-emacs file that Klaatu uses, mostly stolen from Unix guru Bill Von Hagen (who in turn stole it from lots of other people; read comments for credits)\r\n
\r\n',78,0,0,'CC-BY-SA','Perl,\"XML schema\",DocBook,\"GNU Emacs\",Vim',0,2255,1),
-(3846,'2023-05-01','HPR Community News for April 2023',3813,'HPR Volunteers talk about shows released and comments posted in April 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 16 comments in total.
\n
Past shows
\n
There are 6 comments on\n4 previous shows:
\n
\n
hpr3819\n(2023-03-23) \"Remapping Mouse Buttons with XBindKeys on Linux\"\nby Jon Kulp. \n
\n
\n
\nComment 1:\nZen_floater2 on 2023-04-03:\n\"LOOK EVERYBODY!!!\"
\n
hpr3822\n(2023-03-28) \"A tale of wonder, angst and woe\"\nby Bookewyrmm. \n
\n
\n
\nComment 2:\nBookewyrmm on 2023-04-17:\n\"small update\"
\n
hpr3823\n(2023-03-29) \"Gitlab Pages for website hosting\"\nby norrist. \n
\n
\n
\nComment 1:\nrho`n on 2023-04-01:\n\"Congfiguring HPR site generator\"
\n
hpr3825\n(2023-03-31) \"Creating a natural aquarium\"\nby minnix. \n
\n
\n
\nComment 3:\nminnix on 2023-04-01:\n\"video demonstration\"
\n
\nComment 4:\nAhuka on 2023-04-03:\n\"Brings back memories\"
Comment 1:\nbrian-in-ohio on 2023-04-27:\n\"interesting show\"
\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
Unicode characters in shows
\n
It came to light during the month that shows with Unicode characters\nin their title, summary or notes were not being represented properly on\nthe website.
Unicode, formally The Unicode Standard, is an information technology\nstandard for the consistent encoding, representation, and handling of\ntext expressed in most of the world\'s writing systems. The standard,\nwhich is maintained by the Unicode Consortium, defines as of the current\nversion (15.0) 149,186 characters covering 161 modern and historic\nscripts, as well as symbols, thousands of emoji (including in colors),\nand non-visual control and formatting codes.
\n
\n
The software and database behind the HPR website come from a time\nbefore Unicode, but had been updated to use this encoding a number of\nyears ago. However, it was discovered that some changes had been\noverlooked.
\n
We are currently making changes to ensure that Unicode is properly\ndisplayed on the web site, and in audio tags. It will be necessary to\nfind and correct encoding errors in the database, and this process will\nbe carried out as soon as possible. ✓
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3871,'2023-06-05','HPR Community News for May 2023',5632,'HPR Volunteers Rhon, Dave, Reto and Ken talk about shows released and comments posted in May 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 15 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3275\n(2021-02-19) \"D1 Mini Close Lid to Scan\"\nby Ken Fallon. \n
\n
\n
\nComment 1:\nKen Fallon on 2023-05-11:\n\"I need to put this on some Perfboard\"
\n
hpr3538\n(2022-02-23) \"Installing the Tenacity audio editor\"\nby Archer72. \n
\n
\n
\nComment 3:\nArcher72 on 2023-05-15:\n\"My memory\"
\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
Server move
\n
We are currently in the process of moving the HPR server. A server\nhas been set up on Amazon AWS, and we are currently setting up a copy of\nthe database, mail system and Mailman mailing list service.\nThe Gitea Git repository has already been moved and is in\nuse. The static site created by rho`n is being set up to\nprovide the main HPR website. Work is being done to provide the\ninteractive facilities that need the database, such as show and comment\nsubmission.
\n
Contacting old hosts
\n
The rate of show submission is unusually low this year. The number of\nactive contributors is low too, with a small group of hosts keeping the\nHPR project from sinking below the waves.
\n
A question for the HPR Community - can we contact old hosts to ask\nthem to contribute again?
\n
Conversion\nof Windows-1252 characters to UTF-8 Unicode
\n
As mentioned on the last Community News the Windows-1252\ncharacters (aka Latin1) in the database were converted to the\nUTF-8 Unicode format apparently without exceptions. If anyone finds any\nunexpected characters in episode titles, summaries, tags or notes from\nnow onwards please let us know and we\'ll fix them too!
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3846,'2023-05-01','HPR Community News for April 2023',3813,'HPR Volunteers talk about shows released and comments posted in April 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 16 comments in total.
\n
Past shows
\n
There are 6 comments on\n4 previous shows:
\n
\n
hpr3819\n(2023-03-23) \"Remapping Mouse Buttons with XBindKeys on Linux\"\nby Jon Kulp. \n
\n
\n
\nComment 1:\nZen_floater2 on 2023-04-03:\n\"LOOK EVERYBODY!!!\"
\n
hpr3822\n(2023-03-28) \"A tale of wonder, angst and woe\"\nby Bookewyrmm. \n
\n
\n
\nComment 2:\nBookewyrmm on 2023-04-17:\n\"small update\"
\n
hpr3823\n(2023-03-29) \"Gitlab Pages for website hosting\"\nby norrist. \n
\n
\n
\nComment 1:\nrho`n on 2023-04-01:\n\"Congfiguring HPR site generator\"
\n
hpr3825\n(2023-03-31) \"Creating a natural aquarium\"\nby minnix. \n
\n
\n
\nComment 3:\nminnix on 2023-04-01:\n\"video demonstration\"
\n
\nComment 4:\nAhuka on 2023-04-03:\n\"Brings back memories\"
Comment 1:\nbrian-in-ohio on 2023-04-27:\n\"interesting show\"
\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
Unicode characters in shows
\n
It came to light during the month that shows with Unicode characters\nin their title, summary or notes were not being represented properly on\nthe website.
Unicode, formally The Unicode Standard, is an information technology\nstandard for the consistent encoding, representation, and handling of\ntext expressed in most of the world\'s writing systems. The standard,\nwhich is maintained by the Unicode Consortium, defines as of the current\nversion (15.0) 149,186 characters covering 161 modern and historic\nscripts, as well as symbols, thousands of emoji (including in colors),\nand non-visual control and formatting codes.
\n
\n
The software and database behind the HPR website come from a time\nbefore Unicode, but had been updated to use this encoding a number of\nyears ago. However, it was discovered that some changes had been\noverlooked.
\n
We are currently making changes to ensure that Unicode is properly\ndisplayed on the web site, and in audio tags. It will be necessary to\nfind and correct encoding errors in the database, and this process will\nbe carried out as soon as possible. ✓
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3871,'2023-06-05','HPR Community News for May 2023',5632,'HPR Volunteers Rhon, Dave, Reto and Ken talk about shows released and comments posted in May 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 15 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3275\n(2021-02-19) \"D1 Mini Close Lid to Scan\"\nby Ken Fallon. \n
\n
\n
\nComment 1:\nKen Fallon on 2023-05-11:\n\"I need to put this on some Perfboard\"
\n
hpr3538\n(2022-02-23) \"Installing the Tenacity audio editor\"\nby Archer72. \n
\n
\n
\nComment 3:\nArcher72 on 2023-05-15:\n\"My memory\"
\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
Server move
\n
We are currently in the process of moving the HPR server. A server\nhas been set up on Amazon AWS, and we are currently setting up a copy of\nthe database, mail system and Mailman mailing list service.\nThe Gitea Git repository has already been moved and is in\nuse. The static site created by rho`n is being set up to\nprovide the main HPR website. Work is being done to provide the\ninteractive facilities that need the database, such as show and comment\nsubmission.
\n
Contacting old hosts
\n
The rate of show submission is unusually low this year. The number of\nactive contributors is low too, with a small group of hosts keeping the\nHPR project from sinking below the waves.
\n
A question for the HPR Community - can we contact old hosts to ask\nthem to contribute again?
\n
Conversion\nof Windows-1252 characters to UTF-8 Unicode
\n
As mentioned on the last Community News the Windows-1252\ncharacters (aka Latin1) in the database were converted to the\nUTF-8 Unicode format apparently without exceptions. If anyone finds any\nunexpected characters in episode titles, summaries, tags or notes from\nnow onwards please let us know and we\'ll fix them too!
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(867,'2011-11-29','Gift Guide for Electronics Engineers of the Future',1973,'Encouraging young people to get interested in technology','
In today\'s show Mr. Gadgets continues his quest to encouraging young people to get interested in technology.
\r\n',155,0,1,'CC-BY-SA','\"Radio Shack\",\"Tandy Co.\",arduino,AdaFruit',0,2164,1),
(868,'2011-11-30','Emacs Console',471,'As a keen nano user, JWP tries out EMACS on his NSLU2 \"SLUG\"','In today\'s show JWP returns with a look at emacs console. ',129,0,1,'CC-BY-SA','EMACS,nano,Pine,\"Linksys NSLU2\"',0,2041,1),
(869,'2011-12-01','The Count of Monte Cristo',3654,'A classic audio drama performance of The Count of Monte Cristo from the Mercury Theater','
Welcome to syndicated Thursday on Hacker Public Radio
\r\n
\r\nEach Thursday we play Syndicated creative commons content from around the web. If you know of some creative commons material that you would like to bring to the attention of the community then send an email to admin. \r\n
\r\n
\r\nToday we\'re going back in time, to a classic audio drama performance by the Mercury Theater and was originally aired in Aug 29, 1938. It is an adaptation of the classic novel The Count of Monte Cristo, by Alexandre Dumas.
\r\n
\r\n
Mercury Theatre
\r\n
\r\n \r\nThe Mercury Theatre was a theatre company founded in New York City in 1937 by Orson Welles and John Houseman. After a string of live theatrical productions, in 1938 the Mercury Theatre progressed into their best-known period as The Mercury Theatre on the Air, a radio series that included one of the most notable and infamous radio broadcasts of all time, The War of the Worlds, broadcast on October 30, 1938. The Mercury Theatre on the Air produced live radio dramas in 1938-1940 and again briefly in 1946.\r\n
\r\n
The Count of Monte Cristo
\r\n
\r\nThe Count of Monte Cristo (French: Le Comte de Monte-Cristo) is an adventure novel by Alexandre Dumas. It is often considered to be, along with The Three Musketeers, Dumas\'s most popular work. He completed the work in 1844. Like many of his novels, it is expanded from the plot outlines suggested by his collaborating ghostwriter Auguste Maquet.
\r\n
\r\n
\r\nThe story takes place in France, Italy, islands in the Mediterranean and the Levant during the historical events of 1815–1838 (from just before the Hundred Days through to the reign of Louis-Philippe of France). The historical setting is a fundamental element of the book. An adventure story primarily concerned with themes of hope, justice, vengeance, mercy and forgiveness, it tells of a man who is wrongfully imprisoned, escapes from jail, acquires a fortune and sets about getting revenge on the men who destroyed his life. However, his plans also have devastating consequences for the innocent as well as the guilty. The book is considered a literary classic today. According to Luc Sante, \"The Count of Monte Cristo has become a fixture of Western civilization\'s literature, as inescapable and immediately identifiable as Mickey Mouse, Noah\'s flood, and the story of Little Red Riding Hood.\"\r\n
',159,54,1,'CC-BY-SA','audio drama,Mercury Theater,The Count of Monte Cristo',0,2223,1),
(870,'2011-12-02','Computer Memories',1589,'Deltaray looks back at his early computer experiences','
In his second HPR episode, Deltaray looks back at his early computer experiences, from the Commodore to the Amiga, early computer stores, a BBS, and...The Strip.
\r\n\r\n
Sound effects by jppi-stu (117647) and timbre (84427) of freesound.org\r\n
\r\n
Apple Lisa
\r\n
\r\nFrom Wikipedia, the free encyclopedia \r\nhttps://en.wikipedia.org/wiki/Apple_Lisa \r\nThe Apple Lisa - also known as the Lisa - is a personal computer designed by Apple Computer, Inc. (now Apple, Inc.) during the early 1980s. \r\n\r\nDevelopment of the Lisa began in 1978 as a powerful personal computer with a graphical user interface (GUI) targeted toward business customers. \r\n\r\nIn 1982, Steve Jobs was forced out of the Lisa project, so he joined the Macintosh project instead. The Macintosh is not a direct descendant of Lisa, although there are obvious similarities between the systems and the final revision, the Lisa 2/10, was modified and sold as the Macintosh XL. \r\n\r\nThe Lisa was a more advanced system than the Macintosh of that time in many respects, such as its inclusion of protected memory, cooperative multitasking, a generally more sophisticated hard disk based operating system, a built-in screensaver, an advanced calculator with a paper tape and RPN, support for up to two megabytes (MB) of RAM, expansion slots, a numeric keypad, data corruption protection schemes such as block sparing, non-physical file names (with the ability to have multiple documents with the same name), and a larger higher-resolution display. It would be many years before many of those features were implemented on the Macintosh platform. Protected memory, for instance, did not arrive until the Mac OS X operating system was released in 2001. The Macintosh featured a faster 68000 processor (7.89 MHz) and sound. The complexity of the Lisa operating system and its programs taxed the 5 MHz Motorola 68000 microprocessor so that consumers said it felt sluggish, particularly when scrolling in documents. \r\n\r\n \r\nhttps://en.wikipedia.org/wiki/Apple_lisa\r\n
\r\n
TRS-80
\r\n
\r\nFrom Wikipedia, the free encyclopedia\r\nhttps://en.wikipedia.org/wiki/TRS_80 \r\nTRS-80 was Tandy Corporation\'s desktop microcomputer model line, sold through Tandy\'s Radio Shack stores in the late 1970s and early 1980s. The first units, ordered unseen, were delivered in November 1977, and rolled out to the stores the third week of December. The line won popularity with hobbyists, home users, and small-businesses. Tandy Corporation\'s leading position in what Byte Magazine called the \"1977 Trinity\" (Apple, Commodore and Tandy) had much to do with Tandy\'s retailing the computer through more than 3000 of its Radio Shack (Tandy in Europe) storefronts. Notable features of the original TRS-80 included its full-stroke QWERTY keyboard, small size, its Floating Point BASIC programming language, an included monitor, and a starting price of $600. The pre-release price was $500 and a $50 deposit was required, with a money back guarantee at time of delivery. One major drawback of the original system was the massive RF interference it caused in surrounding electronics. This became a problem when it was determined to violate FCC regulations, leading to the Model I\'s phase out in favor of the new Model III. \r\nBy 1979, the TRS-80 had the largest available selection of software in the microcomputer market. \r\n.... \r\nIn July 1980 Tandy released the Model III. The improvements of the Model III over the Model I included built-in lower case, a better keyboard, 1500-baud cassette interface, and a faster (2.03 MHz) Z-80 processor. With the introduction of the Model III, Model I production was discontinued as it did not comply with new FCC regulations as of 1 January 1981 regarding electromagnetic interference. The Model I radiated so much interference that while playing games an AM radio placed next to the computer could be used to provide sounds. \r\n\r\nThe Model III could run about 80% of Model I software, but used an incompatible disk format. Customers and developers complained of bugs in its BASIC and the TRSDOS operating system. The computer also came with the option of integrated disk drives. Since they took power from the same supply as the motherboard and screen, which was not upgraded for the disk drive models, it was common to see the screen image shrink noticeably during drive access. \r\n\r\n \r\n \r\n\r\nhttps://web.archive.org/web/20060425163924/https://www.kjsl.com/trs80/model3info.html\r\n
\r\n\r\n
Commadore 128
\r\n
\r\nhttps://en.wikipedia.org/wiki/Commodore_128 \r\nThe Commodore 128 (C128, CBM 128, C=128) home/personal computer was the last 8-bit machine commercially released by Commodore Business Machines (CBM). Introduced in January 1985 at the CES in Las Vegas, it appeared three years after its predecessor, the bestselling Commodore 64.\r\n \r\nThe C128 was a significantly expanded successor to the C64 and unlike the earlier Commodore Plus/4, nearly full compatibility with the C64 was retained, in both hardware and software. The new machine featured 128 KB of RAM, in two 64 KB banks and an 80-column RGBI video output (driven by the 8563 VDC chip with 16 KB dedicated video RAM), as well as a substantially redesigned case and keyboard. Also included was a Zilog Z80 CPU which allowed the C128 to run CP/M, as an alternate to the usual Commodore BASIC environment.\r\n \r\nThe primary hardware designer of the C128 was Bil Herd, who had worked on the Plus/4. Other hardware engineers were Dave Haynie and Frank Palaia, while the IC design work was done by Dave DiOrio. The main Commodore system software was developed by Fred Bowen and Terry Ryan, while the CP/M subsystem was developed by Von Ertwine\r\n \r\n\r\n
\r\n\r\n
Amiga 2000
\r\n
\r\nFrom Wikipedia, the free encyclopedia \r\nThe Amiga 2000, or A2000, is a personal computer released by Commodore in 1986. It is the successor to the Amiga 1000.\r\nhttps://en.wikipedia.org/wiki/Amiga_2000 \r\n\r\n
\r\n\r\n',194,0,1,'CC-BY-SA','Apple Lisa,TRS-80,Commodore 128,Amiga 2000',0,2468,1),
-(871,'2011-12-05','HPR Community News for Nov 2011',2537,'HPR Community News for Nov 2011','
Pat Volkerding of Slackware Linux chats with Klaatu
\n
klaatu
\n
\n
\n
hpr0854
\n
All In IT Radio0007 - Should Cars Get Smarter ?
\n
Syndicated Thursdays series.
\n
\n
\n
hpr0855
\n
Packaging for your distro
\n
Mike Hingley
\n
\n
\n
hpr0856
\n
GNU Emacs 2
\n
klaatu
\n
\n
\n
hpr0857
\n
Sam Tuke - Free Software Foundation Europe
\n
OggCamp11 series.
\n
\n
\n
hpr0858
\n
Pre micro computer tech in the home #2
\n
MrGadgets
\n
\n
\n
hpr0859
\n
Sourcetrunk: OwnCloud
\n
Syndicated Thursdays series.
\n
\n
\n
hpr0860
\n
Kaizendo, GNU Parallel and some more FSCONS
\n
FSCONS series.
\n
\n
\n
hpr0861
\n
Emacs Part 3: The Reckoning.
\n
klaatu
\n
\n
\n
hpr0862
\n
Breaking Down TFTP
\n
Kevin Granade
\n
\n
\n
hpr0863
\n
Tony Hughes Free Cycle
\n
Ken Fallon
\n
\n
\n
hpr0864
\n
Opentech Conference 2011: Glen Mehn, SI Camp
\n
Full Circle Podcast series.
\n
\n
\n
hpr0865
\n
Desktop Transparency
\n
Deltaray
\n
\n
\n
hpr0866
\n
Publican, the user-friendly Perl frontend to Docbook XML
\n
klaatu
\n
\n
\n
hpr0867
\n
Gift Guide for Electronics Engineers of the Future
\n
MrGadgets
\n
\n
\n
hpr0868
\n
Emacs Console
\n
JWP
\n
\n
\n
hpr0869
\n
The Count of Monte Cristo
\n
HPR Admins
\n
\n
\n
hpr0870
\n
Computer Memories
\n
Deltaray
\n
\n \n
\n
New HPR Community Spokesperson for 2012
\n
Communities like Debian and Fedora regularly change the person in the position of community manager so that the community is better represented, ideas are kept fresh and team work is fostered. With this in mind we are looking for a new member of the community to come forward and represent HPR as the community spokesperson.
\n
The job is focused on encouraging people to contribute to the project, spreading the word and building the community.
\n
If you are interested or would like to suggest someone for the position then please send your comments to the Mail list. Don\'t worry Ken and all the other \'regulars\' will continue to support HPR.
\n
Give to FLOSS
\n
Paying homage to the tradition started my Chess Griffin of Linux Reality we are asking people to contribute financially over the coming month to a FLOSS of CC project. Just email us what you contributed to and we\'ll mail you one of the last few HPR stickers and give you a shout out on the end of year show. Please Spread the word!
\n
End of Year show
\n
We will be organizing a open mic end of year show next month so please have your \"best of hpr\" story ready for the event. More information on time and date to follow. If you can\'t make it to the live recording, then please record a short segment and send it on in.
Pat Volkerding of Slackware Linux chats with Klaatu
\n
klaatu
\n
\n
\n
hpr0854
\n
All In IT Radio0007 - Should Cars Get Smarter ?
\n
Syndicated Thursdays series.
\n
\n
\n
hpr0855
\n
Packaging for your distro
\n
Mike Hingley
\n
\n
\n
hpr0856
\n
GNU Emacs 2
\n
klaatu
\n
\n
\n
hpr0857
\n
Sam Tuke - Free Software Foundation Europe
\n
OggCamp11 series.
\n
\n
\n
hpr0858
\n
Pre micro computer tech in the home #2
\n
MrGadgets
\n
\n
\n
hpr0859
\n
Sourcetrunk: OwnCloud
\n
Syndicated Thursdays series.
\n
\n
\n
hpr0860
\n
Kaizendo, GNU Parallel and some more FSCONS
\n
FSCONS series.
\n
\n
\n
hpr0861
\n
Emacs Part 3: The Reckoning.
\n
klaatu
\n
\n
\n
hpr0862
\n
Breaking Down TFTP
\n
Kevin Granade
\n
\n
\n
hpr0863
\n
Tony Hughes Free Cycle
\n
Ken Fallon
\n
\n
\n
hpr0864
\n
Opentech Conference 2011: Glen Mehn, SI Camp
\n
Full Circle Podcast series.
\n
\n
\n
hpr0865
\n
Desktop Transparency
\n
Deltaray
\n
\n
\n
hpr0866
\n
Publican, the user-friendly Perl frontend to Docbook XML
\n
klaatu
\n
\n
\n
hpr0867
\n
Gift Guide for Electronics Engineers of the Future
\n
MrGadgets
\n
\n
\n
hpr0868
\n
Emacs Console
\n
JWP
\n
\n
\n
hpr0869
\n
The Count of Monte Cristo
\n
HPR Admins
\n
\n
\n
hpr0870
\n
Computer Memories
\n
Deltaray
\n
\n \n
\n
New HPR Community Spokesperson for 2012
\n
Communities like Debian and Fedora regularly change the person in the position of community manager so that the community is better represented, ideas are kept fresh and team work is fostered. With this in mind we are looking for a new member of the community to come forward and represent HPR as the community spokesperson.
\n
The job is focused on encouraging people to contribute to the project, spreading the word and building the community.
\n
If you are interested or would like to suggest someone for the position then please send your comments to the Mail list. Don\'t worry Ken and all the other \'regulars\' will continue to support HPR.
\n
Give to FLOSS
\n
Paying homage to the tradition started my Chess Griffin of Linux Reality we are asking people to contribute financially over the coming month to a FLOSS of CC project. Just email us what you contributed to and we\'ll mail you one of the last few HPR stickers and give you a shout out on the end of year show. Please Spread the word!
\n
End of Year show
\n
We will be organizing a open mic end of year show next month so please have your \"best of hpr\" story ready for the event. More information on time and date to follow. If you can\'t make it to the live recording, then please record a short segment and send it on in.
A bonus episode in the Packaging Applications for Linux mini series! Inspired by Thrice in IRC, Klaatu discusses the yum package manager and how to weild it like an ancient RPM warrior.
',78,63,0,'CC-BY-SA','package manager,yum',0,2179,1),
(873,'2011-12-06','Philip and Rebecca Newborough of CrunchBang',727,'CrunchBang Linux','
\r\nToday we interview Philip Newborough (aka corenominal) project lead for CrunchBang Linux and their community manager Rebecca Newborough. CrunchBang is a Debian GNU/Linux based distribution offering a great blend of speed, style and substance. Using the nimble Openbox window manager, it is highly customisable and provides a modern, full-featured GNU/Linux system without sacrificing performance.\r\n
\r\n
\r\nIn September 2011, Philip gave up paid employment to concentrate on personal projects and is now working full-time on CrunchBang Linux. Feel free to donate a over on his sitehttps://crunchbang.org/donate\r\n
\r\n',30,62,1,'CC-BY-SA','CrunchBang Linux,Debian,Openbox',0,2439,1),
(874,'2011-12-07','Interview: Lucy Chambers, Open Knowledge Foundation',1219,'Full Circle Podcast, interview','
Hello World and welcome to our show on Hacker Public Radio. This episode is the last of our three interviews resulting from the Opentech Conference over the Summer by my co-host, Les Pounder
\r\n\r\n
We\'re going to jump straight in and skip the introductions; if you want to find out about the conference and our other interviews, you can listen back to the earlier preview show with conference organiser Sam Smith and interview shows with speakers Greg Mehne of Social Innovation Camp and Paula Graham of Fossbox.
\"Founded in 2004, we’re a not-for-profit organization promoting open knowledge: any kind of data and content – sonnets to statistics, genes to geodata – that can be freely used, reused, and redistributed. We promote open knowledge because of its potential to deliver far-reaching societal benefits.\"
Saturday 21st May 2011,Union Building, University of London.
\r\n
OpenTech 2011 is an informal, low cost, one-day conference on slightly different approaches to technology, transport and democracy. Talks by people who work on things that matter, guarantees a day of thoughtful talks leading to conversations with friends.
The full circle podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at https://www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine dot org forward slash podcast, send us a comment to podcast (at) fullcirclemagazine.org
\r\n\r\n
Additional audio by Victoria Pritchard
\r\n\r\n
Runtime: 20mins 17seconds
',160,78,1,'CC-BY-SA','Full Circle Podcast',0,2076,1),
@@ -17217,7 +17332,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(913,'2012-01-31','Exchanging Data Podcast 1',530,'An introduction to the data formats available when talking to web services','
\r\nThis podcast is the first in a series about accessing the data you have on your web site in any number of other locations. These can be other web sites or apps running on your mobile phone. Over the next few episodes, I will describe the different formats used for sharing your data, what goes into building the web application that serves up your data, how to access your data from other locations such as other web sites or mobile apps, and, finally, I will talk briefly on how to make something like this scale to support higher load demands.\r\n
\r\nThis episode is an introduction to the data formats available when talking to web services.\r\n
\r\nStable Releases \r\nGreg KH announced the release of the 2.6.32.54 Kernel Thu, 12 Jan 2012 20:13:20 UTC \r\nThere were 18 files changed, 167 files inserted, and 66 files deleted \r\n
\r\n
\r\nGreg KH announced the release of the 3.0.17 Kernel Thu, 12 Jan 2012 20:21:36 UTC \r\nThere were 52 files changed, 364 files inserted, and 179 files deleted \r\n
\r\n
\r\nGreg KH announced the release of the 3.1.9 Kernel Thu, 12 Jan 2012 20:22:18 UTC \r\nThere were 53 files changed, 367 files inserted, and 179 files deleted \r\n
\r\n
\r\nGreg KH announced the release of the 3.2.1 Kernel Thu, 12 Jan 2012 20:25:05 UTC \r\nThere were 63 files changed, 465 files inserted, and 200 files deleted \r\n
\r\n
\r\nKernel Quote \r\n
\r\n
\r\n\"Here’s the different active kernel versions that I am maintaining at the moment: \r\n3.2.y – this will be maintained until 3.3 comes out \r\n3.1.y – there will be only one, maybe two, more releases of this tree \r\n3.0.y – this is the new \"longterm\" kernel release, it will be \r\nmaintained for 2 years at the minimum by me. \r\n2.6.32.y – this is the previous \"longterm\" kernel release. It is \r\napproaching it’s end-of-life, and I think I only have \r\nanother month or so doing releases of this. After I am \r\nfinished with it, it might be picked up by someone else, but \r\nI’m not going to promise anything. \r\nAll other longterm kernels are being maintained in various forms \r\n(usually quite sporadically, if at all), by other people, and I can not \r\nspeak for their lifetime at all, that is up to those individuals.\" \r\n– Greg Kroah-Hartman \r\nThere was also a bit of a dust up between Tim Gardner of Canonical and Greg Kroah-Hartman over maintenance of the 2.6.32 kernel once greg gives it up. It appears to have been started by a misunderstanding and a conclusion jump by Tim. \r\n
\r\n
\r\nDistro News: Tony \r\n
\r\n
\r\nDistrowatch.com \r\n
\r\n
\r\n1-13 – PC-BSD 9.0 – desktop-oriented distribution based on the latest stable FreeBSD \r\n1-12 – FreeBSD 9.0 – a major new version of the BSD operating featuring a brand-new system installer \r\n1-12 – Webconverger 11.0 – a web browser-only specialist distribution for Internet kiosks \r\n1-11 – Astaro Security Gateway 8.3 – specialist distribution for firewall and gateways \r\n1-10 - Asturix 4 – Ubuntu-based desktop distribution with a custom desktop environment and many usability improvements \r\n1-10 – Fuduntu 2012.1 – a new quarterly update of the distribution that was forked from Fedora last year \r\n1-8 – Porteus 1.1 – Slackware-based live CD with a choice of Trinity (a KDE 3 fork), KDE 4 and LXDE desktops \r\nMat did you know about the KDE 3 fork, Trinity? \r\n
\r\nMicrosoft Now Collects Extortion On Approximatley 70% Of All US Sales Of Androids \r\n
\r\n
\r\nLG is the latest victim to pay Microsoft’s extortion demands. They are the eleventh victim in this extortion scheme. A list of the other victims includes Samsung, HTC, and Acer. This leaves Motorola Mobility as the only major manufacturer to not sign an extortion agreement with Microsoft. I would wager that Microsoft has not even approached Motorola as Google now owns Motorola and those pockets are deep enough to scare off the Microsoft patent trolls. Microsoft now claims that they are collecting \"royalties\" on over 70% of all Android smart phones sold in the US. The terms of this latest agreement are unknown as Microsoft makes part of the agreement that the parties can not make public the patents covered by Microsoft’s claims. In other words a typical extortion agreement. \r\n
\r\n
\r\nThe MPAA Instigates A Dustup with Ars Technica \r\nOn 1/10 the MPAA (Motion Picture Associtation of America) said on it’s blog, \"… Ars Technica, a tech blog with a long history of challenging efforts to curb content theft,\". This entire claim by the MPAA appears to be Ars Technica opposing things in the past like the broadcast flag which would have allowed remote control of peoples home entertainment recording devices, along with their stand against DRM that prevents owners from ripping legal backup copies of their DVDs. Ars also has publicly opposed the horrendous SOPA legislation currently in front of Congress. It is obvious that the MPAA’s position is the wacky correlation of fighting for consumers’ rights is the equivalent of having no enforcement at all. \r\n
\r\n
\r\nNot that any representative of the MPAA would ever engage in outlandish statements to further their cause. Like this quote from Jack Valenti when he appeared before congress in 1982, \"I say to you that the VCR is to the American film producer and the American public as the Boston strangler is to the woman home alone.\" \r\n
\r\n
\r\nUnited States Migrates Spy Drone Control Panels From Windows To Linux \r\nLast September the ground control systems for the Reaper drones, which reside at the Creech Air Force Base in Nevada, became infected with a virus. When it happed the Air Force dismissed this intrusion as a nuisance that posed no real threat, it was however taken very seriously. \r\n
\r\n
\r\nStill the discovery of this virus on the Air Force’s systems was a huge embarrassment. This is what they had to say at the time: \r\n
\r\n
\r\n\"The malware in question is a credential stealer, not a key logger, found routinely on computer networks and is considered more of a nuisance than an operational threat. It is not designed to transmit data or video, nor is it designed to corrupt data, files or programs on the infected computer. Our tools and processes detect this type of malware as soon as it appears on the system, preventing further reach.\", they also went on to say, \"The ground system is separate from the flight control system Air Force pilots use to fly the aircraft remotely; the ability of the pilots to safely fly these aircraft remained secure throughout the incident,\" \r\nScreen shots of drone control computers posted by security researcher Mikko Hypponen show that some of the systems have been migrated from Microsoft Windows to Linux. In a statement Mikko Hypponen said, \r\n
\r\n
\r\n\"If I would need to select between Windows XP and a Linux based system while building a military system, I wouldn’t doubt a second which one I would take.\" \r\nOpen Source Surgery, a Robot called Raven takes Flight \r\n
\r\n
\r\nThe Raven 2 is a surgical robot with 7 degrees of freedom, compact electronics and two wing-like arms which end in tiny gripper claws designed to perform surgery on simulated patients. The robot’s software is compatible with Robot Operating System, an open source robotics coding platform. \r\nJanuary 20, 2012 is Penguin Awareness Day \r\nep0898 :: Hacker Public Radio New Year’s Eve Part 8/8 (The After Show) \r\nfiftyonefifty mentions us as one of the new podcasts that he likes!! Thanks! \r\n
\r\n
\r\nRaspberry Pi Linux micro machine enters mass production \r\nThe Commodore 64 is 30 \r\nOuttro Music: \r\n
\r\n
\r\nAcross my way by Matthew Morris \r\n
\r\n',159,54,1,'CC-BY-SA','SMLR,Sunday Morning Linux Review',0,2250,1),
(915,'2012-02-02','TGTM Newscast for 2012/01/17',1399,'A newscast from Talk Geek to Me','
News from \"icelandreview.com, \" \"dissentingdemocrat.wordpress.com,\" \"maggiemcneill.wordpress.com,\" \"spankthespooki.blogspot.com,\" and \"techdirt.com\" used\r\nunder arranged permission. News from \"eff.org\" and \"torrentfreak.com\" used under permission of the Creative Commons by-attribution license. News from \"democracynow.org\" used under permission of the Creative Commons by-attribution non-commercial no-derivatives license.
\r\n
Audio Interlude, MOC #106, used under permission of Lee Camp. \r\n
\r\n',237,65,1,'CC-BY-SA','newscast,TGTM',0,2184,1),
-(916,'2012-02-05','HPR Community News for Dec 2011/Jan 2012',4884,'HPR Community News for Dec 2011/Jan 2012','
\r\n\r\n \r\nSailor 1: That new wife of your\'s isn\'t there Derik \r\nSailor 2: We\'re back at the same time that the Milk man is doing his rounds \r\nAnna: Derik !!! \r\nDerik: Anna !!! \r\nThose Fisherman\'s Friends are strong, hey !\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2184,1),
+(916,'2012-02-05','HPR Community News for Dec 2011/Jan 2012',4884,'HPR Community News for Dec 2011/Jan 2012','
\r\n\r\n \r\nSailor 1: That new wife of your\'s isn\'t there Derik \r\nSailor 2: We\'re back at the same time that the Milk man is doing his rounds \r\nAnna: Derik !!! \r\nDerik: Anna !!! \r\nThose Fisherman\'s Friends are strong, hey !\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2184,1),
(917,'2012-02-06','Uber Leet Hacker Force Radio 6',1007,'Uber Leet Hacker Force Radio issue 6','In a welcome return to HPR, SigFLUP talks to us about two of her projects:\r\n
concr
\r\n
\r\nconcr is an encryption framework for use to partially encrypt configuration files, or any file for that matter. concr is for use in UNIX systems and consist of two parts, libconcr and confcrypt. libconcr is an API for reading partially encrypted files and generating keys. confcrypt is a user-application for encrypting files using keyfile database or manually specified keys.\r\n
\r\n
\r\nconcr leverages the own-by-root aspect of programs in UNIX systems and stores its decryption key inside of the application. Applications that use libconcr must be installed with execute-only permissions.\r\n
\r\n
\r\n\r\nWhen an application is linked with and makes use of concr it, when run for the first time, will generate a copy of itself containing a private rsa-key and output a public rsa-key. confcrypt is a user program that encrypts messages to be decrypted by second runs of the application. concr provides an api similar to that of libc for reading in files thus making it transparent to the application developer what is and is not encrypted in those files.\r\n
\r\nyesplz is a screeenshot uploader command line utility written by sigFLUP that will take a screenshot, tag\r\nyour photo, log into unixporn.com, post the picture to your photo album, and return an ascii bunny on success.\r\n
\r\n
\r\nIn order for it to work, you must have an account at unixporn.com but that is free and you can enter nothing but fake information into it.\r\n
\r\n
\r\nThen simply run yesplz --help to see the possible tags and instructions for yesplz.\r\n
\r\n',115,87,1,'CC-BY-SA','concr,yesplz',0,2334,1),
(918,'2012-02-07','How I Started with Linux Part 2',932,'Frank Bell continues the story of his journey to Linux','In his long waited second part Frank continues his Linux story, describing how he used Linux to self-host his website from his guest room and some of the things he learned along the way. Some links mentioned in the show:\r\n \r\nSlackware (https://www.slackware.com) \r\nDebian (https://www.debian.org) \r\nSamba by Example (https://www.samba.org/samba/docs/man/Samba-Guide/) \r\nThe Slackware Wiki (https://wiki.linuxquestions.org/wiki/Slackware-FAQ) \r\nLinux Questions Linux Forums (https://www.linuxquestions.org/) \r\nno-ip dot com dynamic DNS service (https://www.no-ip.com/) ',195,29,1,'CC-BY-SA','linux,slackware,debian,samba,dns',0,2347,1),
(919,'2012-02-08','Elfstedentocht - To be or not to be',901,'A 200 kilometre skating tour in the province of Friesland in the north of the Netherlands','
\r\nIn today\'s show Ken interviews Klaas-Jan Koopman about the Elfstedentocht a particularly Dutch phenomenon. He gives us some background to the tour and tells the story of his Father who has a permit to participate should it go ahead. \r\n\r\n
\r\nThe Elfstedentocht (or, in West Frisian, Alvestêdetocht, sometimes in English : Eleven Cities Tour), at almost 200 km, is the world\'s largest speed skating competition and leisure skating tour, and is held in the province of Friesland, Netherlands only when the ice along the entire course is 15 cm thick.\r\n
\r\n
\r\nThe tour, almost 200 km in length, is conducted on frozen canals, rivers and lakes between the eleven historic Frisian cities: Leeuwarden, Sneek, IJlst, Sloten, Stavoren, Hindeloopen, Workum, Bolsward, Harlingen, Franeker, Dokkum then returning to Leeuwarden. The tour is not held every year, mostly because not every Dutch winter permits skating on natural ice. The last editions were in 1985, 1986 and 1997. Adding to that, the tour currently features about 15,000 amateur skaters taking part, putting high requirements on the quality of the ice. There is a stated regulatory requirement for the race to take place that the ice must be (and remain at) a minimum thickness of 15 centimetres along the entirety of the course. All skaters must be a member of the Association of the Eleven Frisian Cities. A starting permit is required. Further more, in each city the skater must collect a stamp, as well as a stamp from the three secret check points. The skater must finish before midnight.\r\n
\r\nIn the third in his series Dann, shows us the benefits of the cut command:\r\n
\r\n
\r\n\r\nThe cut command, as the man page states, \"removes sections from each line of a file.\" The cut command can also be used on a stream and it can do more than just remove section. If a file is not specified or \"-\" is used, the cut command takes input from standard in. The cut command can be used to extract sections from a file or stream based upon a specific criteria. An example of this would be cutting specific fields from a csv (comma separated values) file. For instance, cut can be used to extract the name and email address from a csv file with the following content:\r\n\r\n
\r\n',7,67,1,'CC-BY-SA','cut',0,2627,1),
(954,'2012-03-28','All Things Chrome',1444,'The Chromebook and ChromeOS','
Cast your minds back to Summer 2011, when Google Plus still looked like a good idea, before the HP Touchpad came and went in a fire sale and before the Euro debt crisis turned into a Keystone Cops movie.
\r\n\r\n
A presenter formerly of this parish, one Ed Hewitt, went out and bought himself a new toy; a Samsung Chromebook. ChromeOS marches on, but for how long? I stand back and referee as Ed and Dave Wilkins, fight it out.
\r\n\r\n
The Full Circle Podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community\r\nFind us at www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
Dave Wilkins (…had to go cook the dinner. @davidawilkins on Twitter)
\r\n
\r\n\r\n
Additional audio by Victoria Pritchard
\r\n\r\n
Runtime: 24mins 0seconds
\r\n',160,0,1,'CC-BY-SA','Full Circle Podcast',0,2166,1),
(955,'2012-03-29','Zombie Circus 00 - Pilot',4153,'A no-holds-barred discussion that might be a series pilot','
Cloning Windows WiFi Profiles and Installing Skype...
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
939
\r\n
Sunday Morning Linux Review: Episode 021
\r\n
HPR Admins
\r\n
\r\n \r\n
940
\r\n
TGTM Tech News for 2012-03-07
\r\n
deepgeek
\r\n
\r\n \r\n
941
\r\n
Whats in my bag / Portable Apps
\r\n
Digital Maniac
\r\n
\r\n \r\n
942
\r\n
Zentyal Linux Small Business Server
\r\n
riddlebox
\r\n
\r\n \r\n
943
\r\n
Freedom is not Free 2 - Bugs
\r\n
Ahuka
\r\n
\r\n \r\n
944
\r\n
LITS: Episode 002 - tr
\r\n
Dann
\r\n
\r\n \r\n
945
\r\n
TGTM Tech News for 2012-03-14
\r\n
deepgeek
\r\n
\r\n \r\n
946
\r\n
HPR Interview David Whitman with Carl Symons and J...
\r\n
David Whitman
\r\n
\r\n \r\n
947
\r\n
Presentation by Jared Smith at the Columbia Area L...
\r\n
Neodragon
\r\n
\r\n \r\n
948
\r\n
Exchanging Data Podcast 2
\r\n
dmfrey
\r\n
\r\n \r\n
949
\r\n
The cchits 2011 overview
\r\n
HPR Admins
\r\n
\r\n \r\n
950
\r\n
TGTM Newscast for 2012/03/21
\r\n
deepgeek
\r\n
\r\n \r\n
951
\r\n
Roku XD box
\r\n
riddlebox
\r\n
\r\n \r\n
952
\r\n
How I cut The Cable Cord Part 2
\r\n
BrocktonBob
\r\n
\r\n \r\n
953
\r\n
LITS: Episode 003 - cut
\r\n
Dann
\r\n
\r\n \r\n
954
\r\n
All Things Chrome
\r\n
Robin Catling
\r\n
\r\n \r\n
955
\r\n
Zombie Circus 00 - Pilot
\r\n
ZombieMaster
\r\n
\r\n \r\n\r\n
\r\n\r\n
Other items
\r\n
HPR site was down for a few hours on 2/March but Josh had it back in a few hours
\r\n
\r\nDavid Whitman writes to say that he will be having a table at https://linuxfestnorthwest.org/sponsors and he is still looking for volunteers to help out or even be the \'Big Cheese\'.\r\n
Cloning Windows WiFi Profiles and Installing Skype...
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
939
\r\n
Sunday Morning Linux Review: Episode 021
\r\n
HPR Admins
\r\n
\r\n \r\n
940
\r\n
TGTM Tech News for 2012-03-07
\r\n
deepgeek
\r\n
\r\n \r\n
941
\r\n
Whats in my bag / Portable Apps
\r\n
Digital Maniac
\r\n
\r\n \r\n
942
\r\n
Zentyal Linux Small Business Server
\r\n
riddlebox
\r\n
\r\n \r\n
943
\r\n
Freedom is not Free 2 - Bugs
\r\n
Ahuka
\r\n
\r\n \r\n
944
\r\n
LITS: Episode 002 - tr
\r\n
Dann
\r\n
\r\n \r\n
945
\r\n
TGTM Tech News for 2012-03-14
\r\n
deepgeek
\r\n
\r\n \r\n
946
\r\n
HPR Interview David Whitman with Carl Symons and J...
\r\n
David Whitman
\r\n
\r\n \r\n
947
\r\n
Presentation by Jared Smith at the Columbia Area L...
\r\n
Neodragon
\r\n
\r\n \r\n
948
\r\n
Exchanging Data Podcast 2
\r\n
dmfrey
\r\n
\r\n \r\n
949
\r\n
The cchits 2011 overview
\r\n
HPR Admins
\r\n
\r\n \r\n
950
\r\n
TGTM Newscast for 2012/03/21
\r\n
deepgeek
\r\n
\r\n \r\n
951
\r\n
Roku XD box
\r\n
riddlebox
\r\n
\r\n \r\n
952
\r\n
How I cut The Cable Cord Part 2
\r\n
BrocktonBob
\r\n
\r\n \r\n
953
\r\n
LITS: Episode 003 - cut
\r\n
Dann
\r\n
\r\n \r\n
954
\r\n
All Things Chrome
\r\n
Robin Catling
\r\n
\r\n \r\n
955
\r\n
Zombie Circus 00 - Pilot
\r\n
ZombieMaster
\r\n
\r\n \r\n\r\n
\r\n\r\n
Other items
\r\n
HPR site was down for a few hours on 2/March but Josh had it back in a few hours
\r\n
\r\nDavid Whitman writes to say that he will be having a table at https://linuxfestnorthwest.org/sponsors and he is still looking for volunteers to help out or even be the \'Big Cheese\'.\r\n
\r\nHPR Images, can you send your feedback to the list\r\n
\r\n
\r\nHaxradio.com is airing HPR episodes regularly\r\n
\r\n
\r\nWere we having FTP login Issues ?\r\n
\r\n
\r\nNELF Talk\r\n
\r\n
\r\nDavid Whitman made us buttons\r\n
\r\n
\r\nHPR vetting policy relating to adult, political, etc.... \r\nWe don\'t have one\r\n
\r\n\r\n
Episode 1000 and 1024
\r\n
\r\nWe should come up with an idea to celebrate Ep1000 ? \r\nAnswer = YES\r\n
\r\n
\r\nFor episode 1000 we will be gathering a sample of community members emailing their congratulations but for episode 1024 :) \r\n
\r\n
\r\nFiftyOneFifty will be coordinating a EPIC \"live\" show so please email your contributions to ep1k@hackerpublicradio.org\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2154,1),
(957,'2012-04-02','Freedom is not Free 3 - Documentation',1371,'Part 3 of the \"Freedom is not Free\" series','https://ohiolinux.org/node/186 \r\nhttps://www.zwilnik.com',198,69,1,'CC-BY-SA','FOSS,FLOSS,technical documentation,end-user documentation,translation',0,2285,1),
(958,'2012-04-03','KDE Gathering - Plasma Active - THE Tablet',1396,'An interview with Carl Symons and John Blanford: all things KDE','
\r\nKDE will get hosting a regional meeting of KDE for the Northwestern United States April 28 and 29, 2012 at LinuxFest Northwest \r\nhttps://linuxfestnorthwest.org\r\n
\r\n
\r\nAkademy 2012 \r\n30th June - 6th July 2012, Tallinn, Estonia \r\nhttps://akademy.kde.org/\r\n
\r\n
\r\nKDE is 15 years old. \r\nKool Desktop Environment\r\n
\r\n
\r\nKDE desktop is called the Plasma Workspace \r\nPlasma Workspaces is the umbrella term for all graphical environments provided by KDE. (from Wikipedia)\r\n
\r\nAnyone can attend this KDE gathering which is co-located with LinuxFest Northwest\r\nPlasma Active is not locked down and has office applications\r\n
\r\nCalendaring, PIM aspect to KDE has been refocused to touch and is avaiable right now\r\n
\r\n
\r\nSome KDE programs are still being optimized for the touch environment\r\n
\r\n
\r\nQt-questions about its openness has been resolved\r\n
\r\n
\r\nMight be some Raspberry Pi\'s at the gathering and they will be raffled after the KDE coders get done with them at the LinuxFest Northwest world famous raffle.\r\n
\r\n
\r\nYou can make your own tablet and use the OS for your project.\r\n
\r\nThese notes based on the interview by David Whitman with Carl Symons and John Blanford for Hacker Public Radio. \r\n
\r\n',209,0,1,'CC-BY-SA','KDE,Akademy,Plasma Workspace,Krita,Calligra',0,2101,1),
(959,'2012-04-05','The Orca Screen Reader',3221,'Joanmarie Diggs\' talk from NELF about the Orca Screen Reader','
\r\nJoanmarie Diggs\' talk entitled \"The Orca Screen Reader, how it does what it does and how you can help\" \r\nJoanmarie Diggs is the Lead Developer for Orca and this talk was recorded at the Northeast GNU/Linux Fest 2012-03-17\r\n
\r\n',109,79,1,'CC-BY-SA','Orca screen reader,NELF',0,2101,1),
@@ -17278,7 +17393,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(973,'2012-04-24','Freedom is not Free 4 - Money',1416,'Part 4 of the \"Freedom is not Free\" series','
In the fourth of his series \"Freedom is not Free\" Ahuka discusses how you can contribute money to support projects.
\r\nhttps://ohiolinux.org/node/186',198,69,1,'CC-BY-SA','FOSS,FLOSS,financial support',0,2042,1),
(974,'2012-04-25','NELF: FreeNAS ',2395,'A presentation from the North East Linux Fest about FreeNAS','
\r\n',158,54,1,'CC-BY-SA','NELF,NAS,FreeBSD,FreeNAS',0,2252,1),
(975,'2012-04-27','Why 16 Cores ?',265,'Do modern workstations need as many as 16 cores?','DeepGeek is on sabbatical but as luck would have it we have one of his regular contributions to fill the gap. \r\n \r\nThe title says it all.',73,0,1,'CC-BY-SA','workstation,CPU,cores',0,2289,1),
-(976,'2012-04-30','HPR Community News (March 2012)',4359,'HPR Community News (March 2012)','
\r\nDeep geek will be taking some time off from recording Talk Geek to Me, to upgrade some of his technology. He should be back in June or July.\r\n
\r\n
\r\nDavid Whitman says that the HPR conference kit, such as it is, has arrived safely and in time for LFNW (https://linuxfestnorthwest.org/). He has built quite a display to go behind the table, and he\'ll probably draw quite a crowd. He\'s making good use of Ken\'s presentation slides too, and those will play on a loop at the table. LFNW is going on as we record this, so we hope to hear back from David this month. \r\n\r\n
\r\n
Episode 1000 and 1024
\r\n
\r\nWe\'re a little desperate for show 1000 submissions. Please send in yours, and ask your favorite shows to play our ep1k promo. Tweet it, dent it, blog it, G+ it, facebook it... whatever you have, please help us get the word out that we need these QUICKLY. \r\n
\r\nDeep geek will be taking some time off from recording Talk Geek to Me, to upgrade some of his technology. He should be back in June or July.\r\n
\r\n
\r\nDavid Whitman says that the HPR conference kit, such as it is, has arrived safely and in time for LFNW (https://linuxfestnorthwest.org/). He has built quite a display to go behind the table, and he\'ll probably draw quite a crowd. He\'s making good use of Ken\'s presentation slides too, and those will play on a loop at the table. LFNW is going on as we record this, so we hope to hear back from David this month. \r\n\r\n
\r\n
Episode 1000 and 1024
\r\n
\r\nWe\'re a little desperate for show 1000 submissions. Please send in yours, and ask your favorite shows to play our ep1k promo. Tweet it, dent it, blog it, G+ it, facebook it... whatever you have, please help us get the word out that we need these QUICKLY. \r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1934,1),
(977,'2012-04-30','Setting Up a WordPress Blog: part 2',1795,'Episode 2 of the series Setting up a Wordpress blog','This is the second Frank\'s series on setting up a WordPress blog, now projected to be four episodes. \r\n\r\nThis episode discusses navigating the WordPress administrative interface and discusses important concepts, such as Posts and Post Categories, Pages, Links and Link Categories, and preventing comment spam. \r\n\r\nThe next episode will be about tweaking appearance. \r\n\r\nLinks from the show: \r\n\r\nWordpress Development blog: https://wordpress.org/news/ \r\n\r\nWordpress News blog: https://wordpress.tv/ \r\n\r\nWordPress Codex (documentation site): https://codex.wordpress.org/Main_Page \r\n\r\nWordpress \"Extend\" site (plugins and themes): https://wordpress.org/extend/ \r\n\r\nAkismet comment spam plugin: https://akismet.com/wordpress/ \r\n\r\nMy Local Weather plugin: https://wordpress.org/extend/plugins/my-local-weather/ \r\n\r\nStatpress plugin: \r\nhttps://wordpress.org/extend/plugins/statpress/ \r\n\r\nDownload some screenshots (JPG) of WP administrative pages: https://www.pineviewfarm.net/misc/WP-screens.zip \r\n\r\nContact Frank: frank at pineviewfarm dot net.\r\n',195,0,1,'CC-BY-SA','WordPress,blog,administration,plugins',0,2116,1),
(978,'2012-05-01','Dead_Hunt',4301,'A discussion of the book \"Dead Hunt\" written by Kenn Crawford','
\r\nIn this episode of the HPR audio book club resno, Klaatu, and pokey discuss the podiobooks.com presentation of Dead Hunt written and produced by Kenn Crawford. This episode contains spoilers, in the second half, so please listen to the audiobook for yourself before listening to the podcast all the way through. This audiobook was loved by two of the panelists, and liked by the third.\r\n
\r\nDuring this show the hosts also discuss beverages, and we suspect that one of them may not have contained ANY alcohol!!! \r\nKlaatu was drinking (surprise!) coffee; a brew called Winter Blend which is seasonally available from Trader Joe\'s. \r\nhttps://www.traderjoes.com/ \r\nresno was drinking Snow Day Winter Ale from New Belgium Brewery \r\nhttps://www.newbelgium.com/home.aspx \r\npokey was drinking Yellow Tail Chardonnay \r\nhttps://www.yellowtailwine.com/chardonnay\r\n
\r\n
\r\nOur next audiobook will be Space Casey by Christiana Ellis. It is available at podiobooks.com The direct link is: \r\nhttps://www.podiobooks.com/title/space-casey \r\nThis audiobook comes with a thumbs way up rating from pokey (as he\'s heard it already). So if you agree with his other picks then don\'t miss this one.\r\n
4-24 – Tails 0.11 – Debian-based live DVD designed for anonymous Internet surfing
\r\n
4-24 – Scientific Linux 5.8 – distribution rebuilt from source packages for Red Hat Enterprise Linux 5.8 and enhanced with extra software and tools useful in academic environments
4-24 – Untangle Gateway – Debian-based distribution designed for firewalls and gateways
\r\n
4-25 – Tiny Core Linux 4.5 – ast and minimalist Linux distribution for desktop use
\r\n
4-25 – Dragora GNU/Linux 2.2 – “libre” distribution built from scratch and featuring Xfce as the default desktop
\r\n
4-25 – ClearOS 6.2 “Community” – based on Red Hat Enterprise Linux 6.2 and designed for small business servers and gateways
\r\n
4-25 – Swift Linux 0.2.0 – lightweight desktop distribution with IceWM – now based on Linux Mint’s “Debian” edition
\r\n
4-26 – BackBox Linux 2.05 – Ubuntu-based distribution designed to perform penetration tests and security assessments
\r\n
4-26 – * Ubuntu 12.04 – Canonical’s flagship operating system featuring the Unity user interface and Head-Up Display menu system
\r\n
4-27 – Proxmox 2.1 “Virtual Environment” – an open-source virtualization platform for running virtual appliances and virtual machines, based on Debian GNU/Linux
\r\n
4-28 – ROSA 2012 RC – Mandriva Linux and enhanced with a variety of innovative desktop utilities and applications
Time: 21:09 \r\nGoogle Drive Released, Not So Much For Linux
\r\n
The long rumored on line storage from Google has been announced as a reality. Unless of course you are running a Linux desktop. I don’t know but if it where me and my entire business was built on top of Linux that it might be the first client I produced. They have an Android client how difficult can it be.
\r\n
Every subscriber will get 5GB for free with the opportunity to upgrade to any of the following plans.
You can access the service at dirve.google.com. Although it is currently not ready for me (insert picture). It will support over 30 file types that you will be able to open right in your browser. It will integrate with Google+, Gmail, and Google Docs. You can share files or folders with anyone, and control whether they will be able to view, edit or comment on your stuff. Extensive search capabilities including OCR for pictures and scanned documents. And my favorite feature document rollback for up to thirty days. Google Drive tracks all changes so that when you save a document, a new revision is saved. You can look back as far as 30 days.
\r\n\r\n
Slackware Alive And Well Despite Rumors
\r\n
When the main website for Slackware went down the rumor mill went into hyper-drive. These Discussions where hot and heavy on LinuxQuestions.org and DistroWatch. The discussions very quickly shifted from website problems to the long term viability of Slackware. This was compounded by Eric Hameleers, a top Slackware contributor, when he posted this early in the LinuxQuestions discussion “Old hardware, lack of funds…”. I am sure that it was not his intended effect but this was like throwing gasoline onto an already raging fire. The conversation quickly veered into the what can be done to save Slackware land.
\r\n
The fires where then fanned even higher when Caitlyn Martin, developer of Yarok Linux, made this statement on Distrowatch disparaging the long term viability of Slackware:
\r\n
“You remember that comment about my involvement in the development of a Slackware derivative? Forget it. We’re already discussing about delaying the release and rebasing off of something with a more secure future,”
\r\n
This successfully torqued off a large number of people in the discussions on both websites. She responded to these comments by maintaining her stance that she was only concerned about upstream stability. The positive to come out of Martin’s comments was that it prodded Hameleers into clarifying his comments:
\r\n
“The slackware.com server is down. This is a technical malfunction. It costs money to do something about that. Something will be done about that server, but if it takes a while, it is most likely caused by prioritizing and finances. Slackware was without its own web server for a long time in the past. And still active are ftp.slackware.com and connie.slackware.com, so what’s the big deal?
\r\n
This turning of the rumour mill is pretty much unfounded, and I see some of the same old people pouring oil on the fire as usual.
\r\n
There is no reason to doubt the availability, stability and long term viability of Slackware, the distribution. It has not been a one-man show for some time, the development effort is substantial and plainly visible in the ChangeLog, and there are no plans to switch to another development model or even ditch the distribution.”
\r\n
Hameleers went into greater detail about Slackwares finacial situation on LinuxQuestions:
\r\n
“It’s not that difficult: if everybody suddenly stops buying stuff from the Slackware store, then Slackware will not last another year in its present form–the Store sales are Pat’s income (and it feeds several other people too), but remember, the core team surrounding Pat do not get a penny of these revenues at all. Therefore, the rest of the team is not impacted in any way by Slackware sales figures and we will keep working with Pat on the distribution just like we have been doing for the past years. Look at the ChangeLog–sometimes there is a period of relative silence but that does not mean that no work is being done. Like last week, the updates can come in big gulps. Slackware will not die, its philosophy will not change, the team is dedicated and full of ideas.
\r\n
“If people start chickening out and cancel their subscriptions, then that is a pity. Thankfully, I see lots of other Slackware users who decided that this is a good point to make a donation or buy something at the Store (if their financial situation allows it). Thanks to all of you for ‘supporting the cause.’ And remember–if you can not financially support Slackware, then helping your fellow Slackware users in forums like this one is an invaluable form of support as well! Slackware will not die because of financial issues, it will die if all of its users leave.”
\r\n
As Hameleers points out a project like Slackware can never really go away as long as there is a strong community around it. Even if the project folds financially and Patrick did not transfer the copyrights on Slackware to the community it would continue under a different name. However for now there is absolutely no indication that any of that is either in the near or distant future.
\r\n\r\n
Hungarian Government Solidifies Commitment To ODF
\r\n
Last year the Hungarian government announced that from April 2012 forward all government documents needed to be produced in an internationally recognized open document standard. To further this commitment they are going to invest 370 million HUF (Hungarian Forint) which is approximately 1.7 million USD in applications that utilize the open document format (ODF). The two main beneficiaries of this investment will be the Department of Software Engineering at the University of Szeged and Multiráció, an open source development company.
\r\n
Multiráció developed an open office suite, originally based on OpenOffice.org, called EuroOffice. they are now going to produce a version for tablets and improve the collaborative functions within EuroOffice. Kázmér Koleszár, a developer at Multiráció, said that the development responsibilities would break out like this:
\r\n
“The University of Szeged will do the quality assurance and usability related research and tool development. Multiráció will develop the office application and work on several extensions.”
\r\n
All I have to say is good on you Hungary I wish that countries like mine would do more to push open formats. I have even considered suing entities like may state government for their continued use of proprietary formats on their websites.
Less Than 25% Of OSS Used In Corporations Managed Correctly
\r\n
Sonatype released the results of a recent survey showing that 500 out of 2500 respondents said they were locked down to only use corporate approved components. Only 49% said that their companies had a policy in place. Then 63% indicated that their corporate standards where not enforced or that they did not have a policy.
\r\n
Sonatype also noted that the use of open source components is on the rise. Almost 80% of respondents said they used open source tools regularly. Around 50% have migrated to an open source development stack. Also over 65% claimed to contribute to open source projects.
\r\n
In their press release Sonatype said this about the use of open source:
\r\n
“Key to modern development practices is the use of open source components to build mission critical applications,”
\r\n\r\n
Red Hat, SUSE, And IBM Form Partnership While Canonical Stays On The Sidelines
\r\n
IBM’s new POWER server line will be available with either Red Hat or SUSE Linux but not Ubuntu. After more than a year in development IBM rolled out their new POWER server systems and solutions. These machines are Linux specific utilizing the POWER7 processor-based hardware. These machines are targeted at midrange to large range enterprises. they are designed for big data analisis and delivering open source infrastructure services. Canonical chose not not to offer their server product on these units. Coould that be due to a fear of having to actually support an enterprise class customer.
\r\n
This is how IBM envisions the use of this new server line:
\r\n
“The new PowerLinux Solutions and supporting systems are designed to provide customers with lower deployment time and costs, and greater performance, dependability and workload density than competitive x86 platforms at similar price points.”
\r\n
So where was Canonical in all of this? they had been working with IBM to deliver Ubuntu on IBM’s System p mini computer. That partnership however floundered into nothing.
\r\n
Here is how Mark Shuttleworth, Canonical’s founder, spun the announcement:
\r\n
“We don’t support POWER because, by mutual agreement with IBM, there’s little to no overlap between the POWER user base and Ubuntu. People are choosing Ubuntu for farms of commodity servers, and POWER has been adopted for highly-specialized mission-critical roles. If IBM ever wanted to reach either the cloud or bulk computing market with POWER, then I expect the stats above would be relevant for their choice of OS, because they reflect the real choices of those markets.”
\r\n
Hunh? I had a hard time following that statment but what I think it boils down to is this. IBM and Ubuntu agree that Ubuntu would be hard pressed to actually support a large enterprise customer. IBM, Red Hat, and SUSE still believe that their is a market out there for the big machine built on quality hardware. As opposed to large farms of x86 systems trying to do the job of a bigger machine.
\r\n
Convention Scene
\r\n
Time: 36:17
\r\n
AnDevCon III \r\nAndroid Developers conference \r\nMay 14 – 17 \r\nAnDevCon III is the technical conference for software developers building Android apps. \r\nhttps://www.andevcon.com/AndevCon_III/index.html
\r\n
Libre Graphics Meeting 2012 \r\nMay 2 – 5 2012 \r\nThe 7th Libre Graphics Meeting will take place in Vienna at the UAS Technikum.
\r\n
The conference is the number one event for users and developers of free software for graphic design, photography, 3D modeling and animation. \r\nhttps://libregraphicsworld.org/
\r\n
Flossie 2012 \r\nMay 25 – May 26, 2012 , London \r\nFlossie 2012 is a free, two-day event for women who work with or are otherwise interested in Free and Open Source Software (FLOSS) and in Open Data, Knowledge and Education. \r\nhttps://www.flossie.org/?tribe_events=flossie-unconference-for-spring
\r\n
Linaro Connection \r\nMay 28/ through 6/1 \r\nGold Coast Hotel Hong Kong.
\r\n
Convention to discuss and develop features, infrastructure and optimizations for the Linux kernel, Android, Ubuntu and beyond on ARM. \r\nhttps://www.linaro.org/
\r\n
LinuxTag \r\nMay 23 – 26, 2012 \r\nLinux Tag the most important place for Linux and open source software in Europe. The 18th LinuxTag will take place o at the Berlin Fairgrounds. \r\nhttps://www.linuxtag.org/2012/ \r\nFOSSCOMM \r\nMay 12 – 13 2012 \r\nFOSSCOMM (Free and Open Source Software Communities) is a Greek conference aiming at Open Source enthusiasts, developers, and communities. The fifth FOSSCOMM will take place at the Technological Educational Institute of Serres, Greece. \r\nhttps://serres.fosscomm.gr/ \r\nOpen Source Business Conference (OSBC) 2012 \r\nMay 21-22 2012 \r\nSan Francisco, CA, USA – Hyatt Regency San Francisco \r\nOpen sources influence on cCloud, data, mobile software \r\nhttps://www.eiseverywhere.com/ehome/31601/50188/?&
\r\n
The Samba eXPerience 2012 \r\nin Göttingen, Germany is the 11th international Samba conference for users and developers. Meet the Samba Team and discuss requirements, new features and get an update on current developments! The conference is organized by SerNet. \r\nMay 8th – 11th, 2012 – Hotel Freizeit In Göttingen – Germany
\r\n
The Utah Open Source Foundation \r\nUtah Open Source Conference \r\n“Storming the cloud 5/3-5 \r\nThis year’s conference will be graciously hosted by Utah Valley University in their Computer Science and Engineering Building,
\r\n
Mil-OSS \r\nMilitary Open Source Software \r\nThe Rise of Open Source in a Declining Budget
\r\n',158,54,1,'CC-BY-SA','SMLR,Sunday Morning Linux Review',0,2218,1),
@@ -17299,13 +17414,13 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(992,'2012-05-22','LiTS 007: Chmod and Unix Permissions.',1341,'Change file and directory access permissions with the chmod command','
\r\nThis is LITS 007\r\n
\r\n
\r\nPay attention everyone, this is serious stuff. This is CHMOD a powerful and dangerous operator that has \r\ninfiltrated to the heart of every unix and linux system. We have been receiving reports that it has also behind many strange incidents leading to computer compromise and in some cases complete lock down.\r\n
\r\n
\r\nOur American colleague, Special Agent Washko, will show us how to, in his own words \"turn this bad boy around\" so we can get it working for us.\r\n
\r\nOn Linux For The Rest Of Us #74 - The Legistrative Session, one of our correspondents Mr. Gadgets, called in the following question. The segment begins at at 01:00:30 and in it he describes a conversation about the four freedoms where someone whose opinion he respected stated \"the four freedoms only cover programming. It is only the code that is covered in the four freedoms\".\r\n
Freedom 0: The freedom to run the program for any purpose.
\r\n
Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
\r\n
Freedom 2: The freedom to redistribute copies so you can help your neighbor.
\r\n
Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.
\r\n
\r\n
\r\nIf you read the The Free Software Definition, then yes all the references are to \"software\" only.... \r\n...that is of course until you get to the section Beyond Software, in the same document, which states: \r\n
\r\n
\r\n\r\nSoftware manuals must be free, for the same reasons that software must be free, and because the manuals are in effect part of the software.\r\n \r\nThe same arguments also make sense for other kinds of works of practical use - that is to say, works that embody useful knowledge, such as educational works and reference works. Wikipedia is the best-known example.\r\n \r\nAny kind of work can be free, and the definition of free software has been extended to a definition of free cultural works applicable to any kind of works.\r\n\r\n
\r\n
\r\nSo in summary, as HPR is now released under a Creative Commons Attribution-ShareAlike 3.0 Unported lisence, any shows that provide useful knowledge, such as educational works and reference works are covered by the four freedoms.\r\n
\r\n',30,0,1,'CC-BY-SA','free software definition',0,2235,1),
+(995,'2012-05-24','Do the four freedoms extend beyond software ?',893,'The Free Software Definition has a wider scope than just software','
\r\nOn Linux For The Rest Of Us #74 - The Legistrative Session, one of our correspondents Mr. Gadgets, called in the following question. The segment begins at at 01:00:30 and in it he describes a conversation about the four freedoms where someone whose opinion he respected stated \"the four freedoms only cover programming. It is only the code that is covered in the four freedoms\".\r\n
Freedom 0: The freedom to run the program for any purpose.
\r\n
Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
\r\n
Freedom 2: The freedom to redistribute copies so you can help your neighbor.
\r\n
Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.
\r\n
\r\n
\r\nIf you read the The Free Software Definition, then yes all the references are to \"software\" only.... \r\n...that is of course until you get to the section Beyond Software, in the same document, which states: \r\n
\r\n
\r\n\r\nSoftware manuals must be free, for the same reasons that software must be free, and because the manuals are in effect part of the software.\r\n \r\nThe same arguments also make sense for other kinds of works of practical use - that is to say, works that embody useful knowledge, such as educational works and reference works. Wikipedia is the best-known example.\r\n \r\nAny kind of work can be free, and the definition of free software has been extended to a definition of free cultural works applicable to any kind of works.\r\n\r\n
\r\n
\r\nSo in summary, as HPR is now released under a Creative Commons Attribution-ShareAlike 3.0 Unported lisence, any shows that provide useful knowledge, such as educational works and reference works are covered by the four freedoms.\r\n
\r\n',30,0,1,'CC-BY-SA','free software definition',0,2235,1),
(996,'2012-05-28','Command line cheat sheet',291,'A Unix command cheat sheet written by FossWire','
\r\nIn today\'s show JWP tries calling in a live over the UK call in number UK: +44-203-432-5879 (The US number +1-206-203-5729) and tells us of a CC-BY-SA cheat sheet written by FossWire.\r\n
\r\n\r\ndate - print or set the system date and time\r\n$ date\r\nWed Mar 7 19:53:05 CET 2012\r\n\r\ncal, ncal — displays a calendar and the date of Easter\r\n$ cal\r\ncal: setlocale: No such file or directory\r\n March 2012 \r\nSu Mo Tu We Th Fr Sa \r\n 1 2 3 \r\n 4 5 6 7 8 9 10 \r\n11 12 13 14 15 16 17 \r\n18 19 20 21 22 23 24 \r\n25 26 27 28 29 30 31 \r\n \r\nuptime - Tell how long the system has been running.\r\n\r\nuname - print system information\r\n$ uname -a\r\nLinux video 3.1.0-1-amd64 #1 SMP Tue Nov 29 13:47:12 UTC 2011 x86_64 GNU/Linux\r\n\r\n$ cat /proc/cpuinfo | head -5\r\nprocessor : 0\r\nvendor_id : AuthenticAMD\r\ncpu family : 15\r\nmodel : 44\r\nmodel name : AMD Sempron(tm) Processor 2600+\r\n\r\n$ cat /proc/meminfo | head -5\r\nMemTotal: 1027176 kB\r\nMemFree: 111016 kB\r\nBuffers: 136104 kB\r\nCached: 173992 kB\r\nSwapCached: 7964 kB\r\n\r\ndu - estimate file space usage\r\n$ du -ch | tail -1\r\n253M total\r\n\r\ndf - report file system disk space usage\r\n$ df -h\r\nFilesystem Size Used Avail Use% Mounted on\r\n/dev/sdd1 28G 22G 4.3G 84% /\r\ntmpfs 5.0M 4.0K 5.0M 1% /lib/init/rw\r\ntmpfs 101M 632K 100M 1% /run\r\nudev 496M 0 496M 0% /dev\r\ntmpfs 201M 0 201M 0% /run/shm\r\n
',129,0,1,'CC-BY-SA','command line,date,cal,ncal,uptime,uname,du,df',0,2244,1),
(997,'2012-05-28','Poorly Recorded Thoughts On Rural Computing',718,'Rural communications problems versus the urban equivalent','lostnbronx sends in a show which brings us down to earth when we talk about poor reception and slow Internet speeds. \r\n\r\n\r\nSorry for the sound quality. I recorded this in the car, Dave Yates style, with my Sanza Fuze v2, running Rockbox -- but my car is loud, and I had the Fuze hanging precariously from my jacket, where it was covered over half the time.',107,0,1,'CC-BY-SA','mobile computing,DSL,land line,cellphone,coverage',0,2164,1),
(998,'2012-05-29','Viva la Federation!',1441,'Setting up a Status.net instance','
\r\n In this episode, NYbill and\r\n Windigo explain their\r\n experience setting up their own instances of Status.net, a microblogging service.\r\n
\r\n
\r\n While they do not give a beginning to end installation guide, they\r\n do discuss some hurdles they encountered, and provide resources\r\n that may prove invaluable to someone who has just set up their own\r\n server.\r\n
',196,0,1,'CC-BY-SA','microblogging,status.net,identi.ca',0,2130,1),
(999,'2012-05-30','Simon Phipps on Open Software: OGG Camp Part One',1084,'The Full Circle Podcast with a recording of Simon Phipps at OggCamp 11','
This is the first of our highlights of last Summer\'s unconference, OGG Camp eleven, held at Farnham Maltings in the South of England.
\r\n\r\n
Introducing Simon Phipps, who presented the opening session of the unconference to a packed main hall, on Software Freedom.
\r\n\r\n
A computer industry veteran, Simon Phipps came on with an actual box of hats which he proceeded the change at speed, reminding me of Tommy Cooper in his heyday.
\r\n\r\n
Simon has come up through hands-on roles as field engineer, programmer and systems analyst, run a software publishing company, worked with OSI standards in the eighties, on the first commercial collaborative conferencing software in the nineties, and helped introduce both Java and XML at IBM.
\r\n\r\n
A founding Director of the Open Mobile Alliance, Simon is Chief Strategy Officer at independent software company ForgeRock and Director of the Open Source Initiative. Find his essays at webmink.com.
\r\n\r\n
Simon Phipps’ presentation on software freedom. Here’s a shortened version of the presentation which ran to 35 minutes in its entirety.
We\'ve more highlights of OGG Camp coming up on the Full Circle Podcast very soon, including Karen Sandler and the Ogg Camp Panel discussion.
\r\n\r\n
The Full Circle Podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community. Find us at www.fullcirclemagazine.org/podcast.
\r\n
Feedback; you can post comments and feedback on the podcast page at www.fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
Dave Wilkins (…had to go cook the dinner. @davidawilkins on Twitter)
\r\n
\r\n\r\n
Additional audio by Victoria Pritchard
\r\n\r\n
Runtime: 18mins 2seconds
',160,62,1,'CC-BY-SA','OggCamp',0,2177,1),
(1000,'2012-05-31','Episode 1000',1247,'Thoughts and wishes for the 1000th episode of HPR','
\r\nHacker Public Radio commemorated it\'s 1000th episode by inviting listeners, contributors, and fellow podcasters to send in their thoughts and wishes of the occasion. The following voices contributed to this episode.\r\n
\r\n
\r\nFiftyOneFifty, Chess Griffen, Claudio Miranda, Broam, Leo LaPorte and Dick DeBartolo, Dan Lynch, Becky and Phillip (Corenominal) Newborough, Dann Washko, Frank Bell, Jezra, Fabian Scherschel, k5tux, CafeNinja, imahuph, Johan Vervloet, Kevin Granade, Knightwise, MrX, NYBill, Quvmoh, pokey, MrGadgets, riddlebox, Saturday Morning Linux Review, Scott Sigler, Robert E. Wooden, Sigflup, BrocktonBob, Trevor Parsons, Ulises Manuel López Damián, Verbal, Ahuka, westoztux, Toby Meehan, Chris Garrett, winigo, Ken Fallon, Lord Draukenbleut, aukondk, Full Circle Podcast\r\n
\r\n',131,0,1,'CC-BY-SA','HPR,community,congratulations ',0,2524,1),
-(1001,'2012-06-04','HPR Community News May 2012',2540,'HPR Community News May 2012','
Going Linux: Introduction to Podcasting with Linux
\r\n
HPR Admins
\r\n
\r\n \r\n
985
\r\n
LFNW: A Short Talk with Thomas Stover
\r\n
David Whitman
\r\n
\r\n \r\n
986
\r\n
LFNW: Interview with Scott Newlon of MintCast
\r\n
David Whitman
\r\n
\r\n \r\n
987
\r\n
LFNW: Larry Cafiero - the Crunchbang guy
\r\n
David Whitman
\r\n
\r\n \r\n
988
\r\n
LFNW: Dawn McKenna of McKenna Interpreting Services
\r\n
David Whitman
\r\n
\r\n \r\n
989
\r\n
Juiced Penguin 079 – Early Spring
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
990
\r\n
Portable Apps
\r\n
JWP
\r\n
\r\n \r\n
991
\r\n
Making a Music Sampler with Midi and Pygame
\r\n
bgryderclock
\r\n
\r\n \r\n
992
\r\n
Linux In The Shell 007 - Chmod and Unix Permissions.
\r\n
Dann
\r\n
\r\n \r\n
993
\r\n
Setting up a Wordpress blog - tweaking appearance
\r\n
Frank Bell
\r\n
\r\n \r\n
994
\r\n
NELF: John Maddog Hall Talking About Talking About Free Software
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
995
\r\n
Do the four freedoms extend beyond software ?
\r\n
Ken Fallon
\r\n
\r\n \r\n
996
\r\n
Command line cheat sheet
\r\n
JWP
\r\n
\r\n \r\n
997
\r\n
Poorly Recorded Thoughts On Rural Computing
\r\n
lostnbronx
\r\n
\r\n \r\n
998
\r\n
Viva la Federation!
\r\n
NYbill and Windigo
\r\n
\r\n \r\n
999
\r\n
Simon Phipps on Open Software: OGG Camp Part One
\r\n
Robin Catling
\r\n
\r\n \r\n
1000
\r\n
Episode 1000
\r\n
FiftyOneFifty
\r\n
\r\n \r\n\r\n
\r\n\r\n
Apologies
\r\n
\r\nApologies to Dave Morriss for missing his show and code contribution\r\n
\r\n\r\n
New US Phone Number
\r\n
\r\nThe US number has changed to 206-203-5729 while the UK number remains the same +44-203-432-5879\r\n
\r\n\r\n
A short report from the HPR Table at LinuxFest Northwest
\r\n
\r\nFrom: David Whitman \r\n \r\nA friend from work got intersted in going to the LinuxFest and helped at the table - Much thanks to Brad Coffey. We got set up on time and were well received. We had a great run on our swag and ran out of the HPR pin buttons by closing on the first day and handed out quite a few informational cards.The little business cards were really a hit also. Lots of good conversation and exposure for HPR. There was a constant stream of people coming by. I have four interviews on my various recording devices and should be able to get about four to six more from the sign up sheet that was available on the table. With a bit of planning and a more formal interview \'track\' (using an appointment schedule and a designated room or area) I am sure a well staffed HPR table could easily get 20 interviews at this fest. Of course I will be interested in \r\nseeing if any of the many we talked to produces and post their own show. There was interest. I sensed that many of the speakers would have loved the extra exposure. HPR is probably becoming the embedded reporters of Linux Fests. The unofficial count of attendees that I heard was at \"over 800\". The table kit is ready to be shipped to the next venue. My intent is to put together a vertical layout canvas that can easily be shipped and set up as a backdrop and utilize a series of those 20 by 30 photo posters available at Costco Photo. This however will have to wait until after my annual spring fling of shutdown work that begins on May 5 and takes up to 3 weeks to complete. I\'ll post a G+pic of the backdrop we used at this fest. Best swag for me - a Tux 2012 bumper sticker from Pogo Linux. Look for a scan of this on G+ in the near future.\r\n \r\nThanks to the HPR community for the opportunity to represent the show. It was much fun. \r\n \r\ndavidWHITMAN\r\n
\r\n\r\n
New Banner
\r\n
\r\nThere was a very kind offer by David Whitman to sponsor a tall free standing banner and the call was put out for a design. Here is the final outcome of the discussions. \r\n\r\n
\r\n
One Community supporting another
\r\n
\r\nBack in episode https://hackerpublicradio.org/eps.php?id=0980 Broadband for Rural North, I suggested that people could sponsor a meter of cable for their project to show your support. Well they have gone ahead and done it\r\nhttps://b4rn.org.uk/sponsor-a-metre. It\'s £5 for a meter or Special offer, 5 names for £20.\r\n \r\nI will also extend the donation deal from the holiday period, so that anyone who donates to this gets some HPR swag when it\'s available.\r\n
\r\n\r\n
Explicit Tag
\r\n
\r\nThere was a discussion on whither we should have a ban on swearing. We already have a iTunes explicit tag so assume that all shows may contain controversial material. Hosts are free to add a \"safe for work\" warning or any other warning they wish to the shows. \r\nWe may add an option in the upload forms to support this on a show by show basis.\r\n
\r\n\r\n
Episode 1000 and 1024
\r\n
\r\nA note from Fifty OneFifty \r\nThis is a list of all the TWaTech correspondents that I either I had no contact information for or the best e-mail I could find bounced back: \r\n\r\nAdam, Coder365, DarkShadow, Draven, kotrin, Lunarsphere, MrE, spaceout, ThoughtPhreaker, killersmurf, Dominic Uilano, livinded, J-Hood, skyre, kitche, plexi, Scedha, Will Jasen, phizone, operat0r, blackratchet, merk, and Dr^ZigMan \r\n \r\n \r\nI\'d like you to mention the handles and maybe the community can help us make contact with them. I sent the invitations to the first year HPR correspondents today. One message bounced back, but I can contact that person by other means. I\'d also like you to read the message below and consider posting it on the site.\r\n
\r\n
\r\nHacker Public Radio is inviting the participants in podcasts and organizations that proceeded HPR and led to it\'s creation to join a recorded panel discussion on HPR\'s origins and history. We are reaching out to TWATech, BinRev Radio, Radio Freak America, Podfert, the Infonomicon Computer Club, and contributors to the first twelve months of HPR. Our discussion will be recorded via the LinuxBasix.com Mumble server (mumble.openspeak.cc , Port: 64747) and be released as HPR episode 1024 (Stankdawg\'s idea). Episode 1024 should fall on 5 July, but we would like to shoot for recording the panel about two weeks before hand. In case of technical or other unforeseen problems on the primary recording date, a two week lead would give us time to regroup and make a second attempt. The date and time will be set to make it convenient for the greatest number of people who are willing to participate to join in. Connections over Skype and SIP phone via Asterisk are possible, but it would be simplest for everyone to try to use the open source Mumble client.\r\n \r\nIf you decide to join in (and we hope you will), please include the time zone of where you will be in mid June, especially if you are outside the continental United States. If there are dates, days of the week and/or times you would like me to avoid scheduling the panel (i.e., \"I will be gone June 19-21\", \"I could only do it on a weekend\", \"only after 8PM\", \"only before 10PM\") I would like to know that as well. You may contact the organizers at ep1k@HackerPublicRadio.org\r\n
\r\n
Dedicated News Day
\r\n
\r\nFor some reason that escapes us the mail archiver stopped working after the server move. So I\'ll paste in here the mail list discussions on the dedicated news show. I wanted to make sure that everyone sees this discussion so I\'ll paste it in here.\r\n
\r\n
\r\nFrom: Ken Fallon \r\nDate: Mon, 30 Apr 2012 20:00:31 +0200\r\n\r\nHi All,\r\n\r\nWe mention it on today\'s show that /dev/random was in the queue for a\r\nlong time and some of the news may have been out of date. Would it be\r\nan idea to switch one of the days to a \"News\" show so that we can\r\ncarry shows that review news. Any shows in there would follow the\r\nregular scheduling rules\r\nhttps://hackerpublicradio.org/calendar.php#scheduling_rules.\r\n\r\nIt\'s a discussion - let your voice be heard\r\n\r\nKen.\r\n\r\nFrom: kevin granade \r\nDate: Mon, 30 Apr 2012 13:27:25 -0500\r\n\r\nI think this is a good idea, in fact, perhaps people could request a\r\npriority level? Most show ideas I have could sit in the queue for a while,\r\nand I\'d be happy to let more timely shows move ahead.\r\n\r\nFrom: lostnbronx \r\nDate: Mon, 30 Apr 2012 16:02:15 -0700\r\n\r\nI Think a certain day could easily be put aside as a day for topical\r\nor timely episodes. It might be best, though, not to announce it as\r\nbeing such to the general listenership, so that if there\'s a dearth of\r\nnews-type shows one week, another type of ep can be dropped in without\r\nany need for a special announcement.\r\n\r\n\r\nFrom: Kevin O\'Brien \r\nDate: Tue, 01 May 2012 16:03:11 -0400\r\n\r\nI\'m going to try this again since I hit the wrong button last time and \r\nsent it Ken personally instead of to the list.\r\n\r\nJust for the sake of discussion it occurs to me that while DeepGeek is \r\non a hiatus for the moment, he had a weekly news spot every Friday. I \r\ndon\'t know if there is any understanding that he will come back and \r\nresume his spot, but if so, would this mean 2 days a week reserved for \r\nnewscasts? That might be a bit much.\r\n\r\nRegards,\r\n\r\n-- \r\nKevin B. O\'Brien\r\nzwilnik@zwilnik.com\r\n\"A damsel with a dulcimer in a vision once I saw.\"\r\n\r\nFrom: lostnbronx \r\nDate: Mon, 30 Apr 2012 16:02:15 -0700\r\n\r\nI Think a certain day could easily be put aside as a day for topical\r\nor timely episodes. It might be best, though, not to announce it as\r\nbeing such to the general listenership, so that if there\'s a dearth of\r\nnews-type shows one week, another type of ep can be dropped in without\r\nany need for a special announcement.\r\n\r\n\r\nFrom: Cobra2 \r\nDate: Tue, 01 May 2012 17:30:34 -0300\r\n\r\nI honestly don\'t think news should be broadcast over HPR as it dilutes \r\nthe technology how to with mindless dribble that can be found almost \r\nanywhere else. \r\n-- cobra2 \r\n\r\nFrom: Todd \r\nDate: Tue, 1 May 2012 20:30:10 -0500\r\n\r\nI think HPR is a real treasure. Where else can so many people share\r\ntheir ideas. The strength of HPR is anything and everything is\r\nacceptable content as long as it is of interest to hackers. But as I\r\nlook back over the history of HPR, most attempts to add structure or a\r\nrigorous schedule just haven\'t worked. The one exception is the\r\ncurrent policy of syndicated Thursdays.\r\n\r\nI have to agree with cobra2. If people want to do news shows, that\'s\r\ngreat. But IMHO, unless it is really important (event announcements)\r\nit should take it\'s place in the queue with everybody else. Shows\r\nlike /dev/random are awesome, but it\'s not because of the news they\r\ncover. There awesome because the guests are hilarious. The stories\r\njust give them something to talk about. Even when their news is\r\nweeks old, they are still fun to listen to.\r\n\r\nSo, there\'s my two cents. For what it\'s worth from a long time\r\nlistener who has never contributed a show.\r\n\r\nTodd\r\n\r\nFrom: Jason Dodd \r\nDate: Fri, 04 May 2012 03:56:46 -0400\r\n\r\nWhy reserve any day? One of the things I like about hpr is I don\'t know \r\nwhat to expect. The more I know what to expect I think the less I\'ll \r\nlike it.\r\n\r\nFrom: Kevin O\'Brien \r\nDate: Fri, 04 May 2012 12:02:29 -0400\r\n\r\nI\'m a great believer in moderation in most things. I look forward to \r\nmany of the scheduled shows, and the ones that may not appeal to me \r\nprobably appeal to lots of other folks. But I would favor not adding to \r\nthem because part of the charm of HPR is not knowing what to expect. \r\nAbout one time out of every 30-40 shows I will hit the \"Next\" button on \r\nmy MP3 player, which is not bad, really. But I would rather the \r\noccasional show that does not appeal to me than missing out on the gems.\r\n\r\nRegards,\r\n\r\n-- \r\nKevin B. O\'Brien\r\nzwilnik@zwilnik.com\r\n\"A damsel with a dulcimer in a vision once I saw.\"\r\n\r\nFrom: Cobra2 \r\nDate: Fri, 04 May 2012 13:20:18 -0300\r\n\r\nI\'m not in favor of dropping rule #2. Unless it is going to be used to \r\nsyndicate some sort of news show. News is not content it\'s just a \r\nfiller if there is nothing else left to talk about. \r\n\r\nI know the rules state of interest to hackers. But the history of HPR \r\nand TWAT has been mostly shows that dig deep into a piece of software \r\nor hardware or are a detailed how to. Shows that have a fairly long \r\nshelf life not something that can be outdated if a week or two passes \r\nby.\r\n-- cobra2 \r\n\r\nFrom: Frank Bell \r\nDate: Fri, 4 May 2012 18:53:41 -0400\r\n\r\nI tend to agree with this.\r\n\r\nAlso, as someone who is very new here, I am concerned that, if many \r\nslots are filled up with scheduled shows, aspiring contributers miight \r\nbe dismayed to find that a show uploaded, say today, might not be \r\nposted until late June or July. This can be a demotivator.\r\n\r\nAs an aside, I can count on both sets of fingers the number of shows \r\nI\'ve hit \"Next\" on. The variety of HPR is one of its main attractions \r\nfor me. Usually, when I do hit \"Next,\" it\'s because the topic is so \r\ntechnical (say, a programming language) that I can\'t follow it. \r\n\r\nOnce or twice--no more than that--it has been because the premise of the \r\nshow was nonsensical--nevertheless, thanks to HPR, I got to hear and \r\nevaluate the premise, which, without the HPR\'s variety, I would not have \r\nhad the opportunity to do.\r\n\r\nFrom: Ken Fallon \r\nDate: Sat, 5 May 2012 09:14:08 +0200\r\n\r\nOK All,\r\n\r\nWhat I\'m hearing is that the following shows will be dropped into the\r\nregular First come First Served Queue:\r\nTalk Geek To Me News.\r\nDev Random\r\n\r\nThe following show will be dropped from Syndicated Thursday.\r\nSunday Morning Linux Review.\r\n\r\nIs this correct ?\r\n\r\nKen.\r\n\r\nFrom: dg \r\nDate: Sat, 5 May 2012 07:09:38 -0400\r\n\r\nHi, Guys,\r\n\r\nJust wanted to say that whatever you decide is fine by me. The news\r\nshows I submit to HPR are actually \"one half\" of my regular show. That\r\nis to say, I do a special tech-only version of my full world+tech news\r\nshow for HPR.\r\n\r\nTherefore, in theory, a news-lover would be able to go to my website\r\nand subscribe via RSS and get my shows rather quickly, if they so\r\ndesired. \r\n\r\nHowever, I also need to point out two more things. First, I agree with\r\nanother poster that a distinction needs to be made between a show that\r\nis about the guests, with current events thrown in as something for\r\nthem to comment upon; as opposed to my show which is purely about the\r\nstories (I do rarely make editorial comments, but I try to keep my\r\npersonal opinions to a minimum.)\r\n\r\nSecond, I disagree with yet another poster that what I offer should be\r\n\"filler\" and qualifies as something \"that can be found almost\r\nanywhere.\" The whole point of all the stories I cover is that a) they\r\nare not covered by the mainstream media and b) they are, nevertheless,\r\ntimely and important news. In regards to this opinion, I ask you to\r\nconsider whether or not it is widely held amongst the general\r\nlistnership, which to I understand is not entirely present on this list.\r\n\r\nThanks for considering,\r\n---\r\nDeepGeek\r\n\r\n\r\nFrom: Fifty OneFifty \r\nDate: Sat, 5 May 2012 12:51:29 -0500\r\n\r\nI our discussion of whether we want to keep syndicated shows, we should not\r\nlose sight of the fact that last year Ken was really scrambling to find\r\ncontent to keep HPR broadcasting on a daily basis. While I think most of\r\nthe shows in syndication would understand, I hate to put Ken in the\r\nposition of saying, \"Thanks, but we don\'t need you any more\". As for\r\nvariety, maybe we consider offering syndicated shows a limited run, 2 or 3\r\nshows, not in consecutive weeks, as an introduction to our listener base.\r\nAfterwards it would be incumbent on our listeners to add those shows to\r\ntheir queue if they like what they hear. It will also be up to\r\ncontributors and listeners to look for new shows that we can invite for\r\ntemporary syndication, like pokey has with https://distributedpodcast.com.\r\n\r\nFiftyOneFifty\r\n\r\nFrom: David Whitman \r\nDate: Sat, 5 May 2012 11:14:31 -0700\r\n\r\nI posted this on Henry Patrick Riley (Goggle+)\r\n\r\nWhat about making a MEGA syndicated day and combining 2 or more shows\r\ntogether with intro music between and posting the run time when one show\r\nends and another begins? Rotate the order which show airs first.\r\n\r\nThe following is more comments not on G+:\r\n\r\nI want produce some \'casual\' shows that could go into an \'emergency\' queue\r\nin case there are times when the regular queue get close to empty. Things I\r\nwant to share, but they are not time critical and I am willing to have HPR\r\nbank (such as How I found Linux, How to run a car in the Auto-X, A vacation\r\nto Moab, Utah, Troubleshooting an MR2 using a volt/ohm meter etc. My idea\r\nis that as soon as the emergency queue gets a month\'s worth of shows they\r\ncould be put out periodically into the regular queue. They could be tagged\r\nwith a 1-5 tech rating and the more techie ones used first.\r\n\r\nHow about having 2 parallel tracks? or 3? HPR News, HPR Command Line, HPR\r\nProjects, a weekly show track just for news....\r\n\r\nAll good and fine - I have 3 shows that need editing to help contribute to\r\nthe problem.\r\n\r\nThanks to all the HPR community members and admins. I love the show.\r\n\r\ndavidWHITMAN\r\n\r\nFrom: Frank Bell \r\nDate: Sat, 5 May 2012 15:28:05 -0400\r\n\r\nOn Sat, 5 May 2012 12:51:29 -0500\r\nFifty OneFifty wrote:\r\n\r\n> I our discussion of whether we want to keep syndicated shows, we should not\r\n> lose sight of the fact that last year Ken was really scrambling to find\r\n> content to keep HPR broadcasting on a daily basis. \r\n\r\n(snip)\r\n\r\n> As for\r\n> variety, maybe we consider offering syndicated shows a limited run, 2 or 3\r\n> shows, not in consecutive weeks, as an introduction to our listener base. \r\n\r\nI think these thoughts have a lot of merit. I rather enjoy learning about \r\nnew shows through Syndicated Thursdays (I had not heard of the Sunday Morning \r\nLinux show until HPR introduced it to me). Also, I must say I have heard \r\nsome syndicated shows that I do enjoy, but not enough to actually subscribe \r\nto, so I find the idea of maintaining variety appealing..\r\n\r\nMy concern is that, if there are too many dedicated days, the dedicated days \r\ncould turn into a regular line-up. \r\n\r\nJust my two cents.\r\n\r\nFrom: Patrick Dailey \r\nDate: Mon, 7 May 2012 23:17:11 -0400\r\n\r\nThis may be the \"healthiest\" discussion that I\'ve ever seen on the HPR\r\nmailing list, and I love it. I want to thank each and every person\r\nsubscribed for keeping the conversation respectful, and on topic. Most\r\nmailing lists that I\'ve seen could not have accomplished that.\r\n\r\nAs to the scheduling multi-lemma, I have a few thoughts that I would thank\r\nyou all in advance for considering:\r\n\r\nWe have the kind of crisis that we\'ve always wanted, namely: we have too\r\nmany shows. This is an opportunity that I don\'t think we should squander.\r\nAt the same time we\'re trying to establish a scheduling policy that an\r\nunmanned system can obey. The goal, as I see it, is to create rules that\r\ncan deal with an abundance of shows without wasting them. Right now what we\r\nhave is a scheduling policy that worked very well with a lack of shows, and\r\nin fact it helped to replenish them. So I believe that we need either: one\r\nset of rules that can cope with either situation, or two sets of rules and\r\na way for a deterministic system to identify and transition between them.\r\nPlease chime in on this if you are good with policy.\r\n\r\nAs I see it, at least part of what we\'re dealing with is a resource\r\nmanagement problem. People create content for us, and sometimes they assume\r\nthat it has an expiration timeframe. Some content simply must be used\r\nbefore it\'s creator feels that it has expired, or we can expect that that\r\ncreator will seek other venues in which to publish their content. We need a\r\nway of distinguishing \"perishable\" content from \"non-perishable\" content.\r\nWe also need a way of putting a date on the perishable content. If you have\r\nexperience with user feedback systems, we could really use your help\r\n(especially) with this part.\r\n\r\nSince identifying potential problems without offering solutions is just\r\nbitching, I have a couple of suggestions.\r\n\r\nSyndicated Thursdays and \"timely content\"\r\nI for one, am grateful to the shows who have allowed us to fill holes in\r\nour que with their content. While the syndicated Thursday slot was\r\noriginally implemented out of necessity, I feel that it is an overall plus\r\nto continue the practice. We have developed friendly and mutually\r\nbeneficial relationships with other podcasts that I would be hesitant (to\r\nput it mildly) to sever, and there are other great podcasts that we don\'t\r\neven know about yet. I agree with Frank Bell in that I think the syndicated\r\nThursday feed is a great discovery tool, and I\'d hate to loose it as such,\r\nbut I also see these shows as friends, and I want to make sure that we\r\ntreat them like it. I don\'t think it\'s in anyone\'s best interest for us to\r\nabandon that kind of relationship, or the content that has so generously\r\nbeen offered to us. If (and only if) there is a \"Timely news show\", I would\r\nlike to see it get the Thursday slot, but in order for the syndicated show\r\nto not be wasted, I would like to see that show bumped to Saturday.\r\n\r\nScheduled HPR exclusive shows and normal que shows\r\nI think if people commit to producing scheduled content before they record\r\nit, and live up to that commitment, that we should honor that commitment.\r\nPerhaps there needs to be some limit to the number of pre-schedulable slots\r\nper week and/or month that we make available, so that there is still room\r\nto play shows from our normal que, but we-as a group decided to ask people\r\nto produce content for us, and several people have stepped up and\r\ndelivered. Perhaps this is a situation where more than one show should be\r\nposted per day. I don\'t know.\r\n\r\nWhile it\'s easy for me to sit here and suggest these things, I don\'t think\r\nthat it\'s fair for any of us to vote for posting more than five shows per\r\nweek unless we are committing to posting more than the requested \"one show\r\nper year\" if the que ever gets low again.\r\n\r\nLastly, I believe that new hosts should continue to get the first\r\nunscheduled slot. This is critical to getting new people to contribute, and\r\nto return as hosts.\r\n\r\nIf I\'m wrong, or out of line, or TLDR, or whatever... feel free to say so.\r\nI can take it.\r\n\r\npokey\r\n\r\nFrom: \"Frank Bell\"\r\nDate: Tue, 08 May 2012 13:21:53 -0400\r\n\r\nOn Mon, 07 May 2012 23:17:11 -0400, Patrick Dailey \r\nwrote an extremely thoughtful and useful post from the \"be careful what \r\nyou wish for\" department:\r\n\r\n\r\n> Syndicated Thursdays and \"timely content\" \r\n\r\n> loose it as such, but I also see these shows as friends, and I want to \r\n> make sure that we treat them like it. I don\'t think it\'s in anyone\'s \r\n> best interest for us to abandon that kind of relationship, or the \r\n> content that has so generously been offered to us. If (and only if) \r\n> there is a \"Timely news show\", I would like to see it get the Thursday \r\n> slot, but in order for the syndicated show to not be wasted, I would \r\n> like to see that show bumped to Saturday. \r\n\r\nI think this is a wise suggestion. I wasn\'t here when the goal of five \r\ndays a week was set, but I\'m inclined to think that it was intended to be \r\na goal, not a limit.\r\n\r\nI would suggest, as an aside, that the scheduling rules could be displayed \r\nmore prominently. Currently, they are at the bottom of the calendar. I \r\nthink prospective or new (like me) hosts should have their attention drawn \r\nto them more forcefully, perhaps by giving them their own page linked from \r\nthe front page and linking to them from the calendar and from the \r\n\"Contribute\" page. I also suggest changing the terminology from \"rules\" \r\nto \"guidelines\"; that\'s not just PR softening of a phrase, for they are \r\nguidelines as exceptions can be made.\r\n\r\nIt may also be useful to suggest that new hosts glance as the calendar to \r\nsee when their available slots. I would also like to see a friendlier \r\ncalendar, meaning one that looks more like a wall calendar. If you all \r\nwish, I would be happy to explore the WordPress plugins to see what I can \r\nfind.\r\n\r\nI support continuing the practice of bumping new hosts up in the queue. \r\nIt\'s a recognition of effort and a motivator. Frankly, I found it a blast \r\n(if an intimidating one) to look at my podplayer and see my own name \r\nlooking back at me.\r\n\r\n> Perhaps there needs to be some limit to the number of pre-schedulable \r\n> slots per week and/or month that we make available, so \r\n\r\nThis might also be a good idea and it speaks to my concern of HPR\'s \r\nturning in to a line-up of a few scheduled shows, rather than a platform \r\nthat\'s open to newbies like me.\r\n\r\nOn the other hand, many persons have responded to the need for shows that \r\nKen sounded last fall, not only with shows, but by airing promos on their \r\nown podcasts and websites, which leads to exposre which leads to shows (by \r\nthe way, I think this flowering of support is a tribute to HPR and to the \r\nplace it has amongst the community).\r\n\r\nThe flowering may yet wither and need to be watered anew. In other words, \r\nonce the enthusiasm wears off, Ken might be having to appeal for shows \r\nagain.\r\n\r\nIn other words, I agree with some sort of limit and I lean towards a \r\nmonthly one, but have no idea what would be a reasonable one. If I were \r\nto try to word that as a guideline, it might come out like \"the number of \r\nscheduled shows and the intervals between them that HPR can commit to is \r\naffected by the number of submissions\" and leave it at that--that allows \r\nwiggle-room for adjusting to the realities of now.\r\n\r\n> that there is still room to play shows from our normal que, but we-as a \r\n> group decided to ask people to produce content for us, and several \r\n> people have stepped up and delivered. Perhaps this is a situation where \r\n> more than one show should be posted per day. I don\'t know. \r\n\r\n\"The following is an HPR special presentation . . . .\"\r\n\r\nI like it.\r\n\r\nJust my two cents.\r\n\r\nOnce again, thanks for the nice welcome. This is a good place to be. (I \r\nhave just cashed in some rewards points for a decent headset.)\r\n\r\nFrom: Ken Fallon \r\nDate: Wed, 9 May 2012 07:10:43 +0200\r\n\r\nI\'ve removed the extended calendar so that we have a better view of\r\nwhat shows are in the queue. There are under four weeks of shows left,\r\nacceptable but hardly anything to celebrate about. Without TGTMNews\r\nand the syndicated shows I would have been back begging for shows by\r\nnow.\r\n\r\nJust something to keep in mind.\r\n\r\nKen.\r\n\r\nFrom: Cobra 2 \r\nDate: Wed, 9 May 2012 13:18:51 -0300\r\n\r\nDeepgeek. I just wanted to apologize for using words which caused you to\r\nfeel like I don\'t appreciate the work that you do every week. (I pull down\r\nthe whole tgtm feed) I\'m not going to defend or back down from what I said.\r\nBut I just want you to know that what YOU do is appreciated. You\'ve been a\r\npart of this community for as long as I can remember. You also put most of\r\nus to shame on contributing content. So i\'m going to go back to my corner\r\nand attempt to not crush people next time I crawl out of my hole.\r\n\r\nSorry again dude.\r\n\r\n--cobra2\r\n\r\nFrom: Frank Bell \r\nDate: Sat, 12 May 2012 17:39:48 -0400\r\n\r\nOn Wed, 9 May 2012 07:10:43 +0200\r\nKen Fallon <ken.fallon@gmail.com> wrote:\r\n\r\n> I\'ve removed the extended calendar so that we have a better view of\r\n> what shows are in the queue. \r\n\r\nThat is much easier to read. Thank you.\r\n\r\nI\'m planning to do a simple tutorial on prepping pictures for posting to \r\nwebsite with the GIMP. I started my outline today and hope to have it done \r\nwithin two weeks.\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2129,1),
+(1001,'2012-06-04','HPR Community News May 2012',2540,'HPR Community News May 2012','
Going Linux: Introduction to Podcasting with Linux
\r\n
HPR Admins
\r\n
\r\n \r\n
985
\r\n
LFNW: A Short Talk with Thomas Stover
\r\n
David Whitman
\r\n
\r\n \r\n
986
\r\n
LFNW: Interview with Scott Newlon of MintCast
\r\n
David Whitman
\r\n
\r\n \r\n
987
\r\n
LFNW: Larry Cafiero - the Crunchbang guy
\r\n
David Whitman
\r\n
\r\n \r\n
988
\r\n
LFNW: Dawn McKenna of McKenna Interpreting Services
\r\n
David Whitman
\r\n
\r\n \r\n
989
\r\n
Juiced Penguin 079 – Early Spring
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
990
\r\n
Portable Apps
\r\n
JWP
\r\n
\r\n \r\n
991
\r\n
Making a Music Sampler with Midi and Pygame
\r\n
bgryderclock
\r\n
\r\n \r\n
992
\r\n
Linux In The Shell 007 - Chmod and Unix Permissions.
\r\n
Dann
\r\n
\r\n \r\n
993
\r\n
Setting up a Wordpress blog - tweaking appearance
\r\n
Frank Bell
\r\n
\r\n \r\n
994
\r\n
NELF: John Maddog Hall Talking About Talking About Free Software
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
995
\r\n
Do the four freedoms extend beyond software ?
\r\n
Ken Fallon
\r\n
\r\n \r\n
996
\r\n
Command line cheat sheet
\r\n
JWP
\r\n
\r\n \r\n
997
\r\n
Poorly Recorded Thoughts On Rural Computing
\r\n
lostnbronx
\r\n
\r\n \r\n
998
\r\n
Viva la Federation!
\r\n
NYbill and Windigo
\r\n
\r\n \r\n
999
\r\n
Simon Phipps on Open Software: OGG Camp Part One
\r\n
Robin Catling
\r\n
\r\n \r\n
1000
\r\n
Episode 1000
\r\n
FiftyOneFifty
\r\n
\r\n \r\n\r\n
\r\n\r\n
Apologies
\r\n
\r\nApologies to Dave Morriss for missing his show and code contribution\r\n
\r\n\r\n
New US Phone Number
\r\n
\r\nThe US number has changed to 206-203-5729 while the UK number remains the same +44-203-432-5879\r\n
\r\n\r\n
A short report from the HPR Table at LinuxFest Northwest
\r\n
\r\nFrom: David Whitman \r\n \r\nA friend from work got intersted in going to the LinuxFest and helped at the table - Much thanks to Brad Coffey. We got set up on time and were well received. We had a great run on our swag and ran out of the HPR pin buttons by closing on the first day and handed out quite a few informational cards.The little business cards were really a hit also. Lots of good conversation and exposure for HPR. There was a constant stream of people coming by. I have four interviews on my various recording devices and should be able to get about four to six more from the sign up sheet that was available on the table. With a bit of planning and a more formal interview \'track\' (using an appointment schedule and a designated room or area) I am sure a well staffed HPR table could easily get 20 interviews at this fest. Of course I will be interested in \r\nseeing if any of the many we talked to produces and post their own show. There was interest. I sensed that many of the speakers would have loved the extra exposure. HPR is probably becoming the embedded reporters of Linux Fests. The unofficial count of attendees that I heard was at \"over 800\". The table kit is ready to be shipped to the next venue. My intent is to put together a vertical layout canvas that can easily be shipped and set up as a backdrop and utilize a series of those 20 by 30 photo posters available at Costco Photo. This however will have to wait until after my annual spring fling of shutdown work that begins on May 5 and takes up to 3 weeks to complete. I\'ll post a G+pic of the backdrop we used at this fest. Best swag for me - a Tux 2012 bumper sticker from Pogo Linux. Look for a scan of this on G+ in the near future.\r\n \r\nThanks to the HPR community for the opportunity to represent the show. It was much fun. \r\n \r\ndavidWHITMAN\r\n
\r\n\r\n
New Banner
\r\n
\r\nThere was a very kind offer by David Whitman to sponsor a tall free standing banner and the call was put out for a design. Here is the final outcome of the discussions. \r\n\r\n
\r\n
One Community supporting another
\r\n
\r\nBack in episode https://hackerpublicradio.org/eps.php?id=0980 Broadband for Rural North, I suggested that people could sponsor a meter of cable for their project to show your support. Well they have gone ahead and done it\r\nhttps://b4rn.org.uk/sponsor-a-metre. It\'s £5 for a meter or Special offer, 5 names for £20.\r\n \r\nI will also extend the donation deal from the holiday period, so that anyone who donates to this gets some HPR swag when it\'s available.\r\n
\r\n\r\n
Explicit Tag
\r\n
\r\nThere was a discussion on whither we should have a ban on swearing. We already have a iTunes explicit tag so assume that all shows may contain controversial material. Hosts are free to add a \"safe for work\" warning or any other warning they wish to the shows. \r\nWe may add an option in the upload forms to support this on a show by show basis.\r\n
\r\n\r\n
Episode 1000 and 1024
\r\n
\r\nA note from Fifty OneFifty \r\nThis is a list of all the TWaTech correspondents that I either I had no contact information for or the best e-mail I could find bounced back: \r\n\r\nAdam, Coder365, DarkShadow, Draven, kotrin, Lunarsphere, MrE, spaceout, ThoughtPhreaker, killersmurf, Dominic Uilano, livinded, J-Hood, skyre, kitche, plexi, Scedha, Will Jasen, phizone, operat0r, blackratchet, merk, and Dr^ZigMan \r\n \r\n \r\nI\'d like you to mention the handles and maybe the community can help us make contact with them. I sent the invitations to the first year HPR correspondents today. One message bounced back, but I can contact that person by other means. I\'d also like you to read the message below and consider posting it on the site.\r\n
\r\n
\r\nHacker Public Radio is inviting the participants in podcasts and organizations that proceeded HPR and led to it\'s creation to join a recorded panel discussion on HPR\'s origins and history. We are reaching out to TWATech, BinRev Radio, Radio Freak America, Podfert, the Infonomicon Computer Club, and contributors to the first twelve months of HPR. Our discussion will be recorded via the LinuxBasix.com Mumble server (mumble.openspeak.cc , Port: 64747) and be released as HPR episode 1024 (Stankdawg\'s idea). Episode 1024 should fall on 5 July, but we would like to shoot for recording the panel about two weeks before hand. In case of technical or other unforeseen problems on the primary recording date, a two week lead would give us time to regroup and make a second attempt. The date and time will be set to make it convenient for the greatest number of people who are willing to participate to join in. Connections over Skype and SIP phone via Asterisk are possible, but it would be simplest for everyone to try to use the open source Mumble client.\r\n \r\nIf you decide to join in (and we hope you will), please include the time zone of where you will be in mid June, especially if you are outside the continental United States. If there are dates, days of the week and/or times you would like me to avoid scheduling the panel (i.e., \"I will be gone June 19-21\", \"I could only do it on a weekend\", \"only after 8PM\", \"only before 10PM\") I would like to know that as well. You may contact the organizers at ep1k@HackerPublicRadio.org\r\n
\r\n
Dedicated News Day
\r\n
\r\nFor some reason that escapes us the mail archiver stopped working after the server move. So I\'ll paste in here the mail list discussions on the dedicated news show. I wanted to make sure that everyone sees this discussion so I\'ll paste it in here.\r\n
\r\n
\r\nFrom: Ken Fallon \r\nDate: Mon, 30 Apr 2012 20:00:31 +0200\r\n\r\nHi All,\r\n\r\nWe mention it on today\'s show that /dev/random was in the queue for a\r\nlong time and some of the news may have been out of date. Would it be\r\nan idea to switch one of the days to a \"News\" show so that we can\r\ncarry shows that review news. Any shows in there would follow the\r\nregular scheduling rules\r\nhttps://hackerpublicradio.org/calendar.php#scheduling_rules.\r\n\r\nIt\'s a discussion - let your voice be heard\r\n\r\nKen.\r\n\r\nFrom: kevin granade \r\nDate: Mon, 30 Apr 2012 13:27:25 -0500\r\n\r\nI think this is a good idea, in fact, perhaps people could request a\r\npriority level? Most show ideas I have could sit in the queue for a while,\r\nand I\'d be happy to let more timely shows move ahead.\r\n\r\nFrom: lostnbronx \r\nDate: Mon, 30 Apr 2012 16:02:15 -0700\r\n\r\nI Think a certain day could easily be put aside as a day for topical\r\nor timely episodes. It might be best, though, not to announce it as\r\nbeing such to the general listenership, so that if there\'s a dearth of\r\nnews-type shows one week, another type of ep can be dropped in without\r\nany need for a special announcement.\r\n\r\n\r\nFrom: Kevin O\'Brien \r\nDate: Tue, 01 May 2012 16:03:11 -0400\r\n\r\nI\'m going to try this again since I hit the wrong button last time and \r\nsent it Ken personally instead of to the list.\r\n\r\nJust for the sake of discussion it occurs to me that while DeepGeek is \r\non a hiatus for the moment, he had a weekly news spot every Friday. I \r\ndon\'t know if there is any understanding that he will come back and \r\nresume his spot, but if so, would this mean 2 days a week reserved for \r\nnewscasts? That might be a bit much.\r\n\r\nRegards,\r\n\r\n-- \r\nKevin B. O\'Brien\r\nzwilnik@zwilnik.com\r\n\"A damsel with a dulcimer in a vision once I saw.\"\r\n\r\nFrom: lostnbronx \r\nDate: Mon, 30 Apr 2012 16:02:15 -0700\r\n\r\nI Think a certain day could easily be put aside as a day for topical\r\nor timely episodes. It might be best, though, not to announce it as\r\nbeing such to the general listenership, so that if there\'s a dearth of\r\nnews-type shows one week, another type of ep can be dropped in without\r\nany need for a special announcement.\r\n\r\n\r\nFrom: Cobra2 \r\nDate: Tue, 01 May 2012 17:30:34 -0300\r\n\r\nI honestly don\'t think news should be broadcast over HPR as it dilutes \r\nthe technology how to with mindless dribble that can be found almost \r\nanywhere else. \r\n-- cobra2 \r\n\r\nFrom: Todd \r\nDate: Tue, 1 May 2012 20:30:10 -0500\r\n\r\nI think HPR is a real treasure. Where else can so many people share\r\ntheir ideas. The strength of HPR is anything and everything is\r\nacceptable content as long as it is of interest to hackers. But as I\r\nlook back over the history of HPR, most attempts to add structure or a\r\nrigorous schedule just haven\'t worked. The one exception is the\r\ncurrent policy of syndicated Thursdays.\r\n\r\nI have to agree with cobra2. If people want to do news shows, that\'s\r\ngreat. But IMHO, unless it is really important (event announcements)\r\nit should take it\'s place in the queue with everybody else. Shows\r\nlike /dev/random are awesome, but it\'s not because of the news they\r\ncover. There awesome because the guests are hilarious. The stories\r\njust give them something to talk about. Even when their news is\r\nweeks old, they are still fun to listen to.\r\n\r\nSo, there\'s my two cents. For what it\'s worth from a long time\r\nlistener who has never contributed a show.\r\n\r\nTodd\r\n\r\nFrom: Jason Dodd \r\nDate: Fri, 04 May 2012 03:56:46 -0400\r\n\r\nWhy reserve any day? One of the things I like about hpr is I don\'t know \r\nwhat to expect. The more I know what to expect I think the less I\'ll \r\nlike it.\r\n\r\nFrom: Kevin O\'Brien \r\nDate: Fri, 04 May 2012 12:02:29 -0400\r\n\r\nI\'m a great believer in moderation in most things. I look forward to \r\nmany of the scheduled shows, and the ones that may not appeal to me \r\nprobably appeal to lots of other folks. But I would favor not adding to \r\nthem because part of the charm of HPR is not knowing what to expect. \r\nAbout one time out of every 30-40 shows I will hit the \"Next\" button on \r\nmy MP3 player, which is not bad, really. But I would rather the \r\noccasional show that does not appeal to me than missing out on the gems.\r\n\r\nRegards,\r\n\r\n-- \r\nKevin B. O\'Brien\r\nzwilnik@zwilnik.com\r\n\"A damsel with a dulcimer in a vision once I saw.\"\r\n\r\nFrom: Cobra2 \r\nDate: Fri, 04 May 2012 13:20:18 -0300\r\n\r\nI\'m not in favor of dropping rule #2. Unless it is going to be used to \r\nsyndicate some sort of news show. News is not content it\'s just a \r\nfiller if there is nothing else left to talk about. \r\n\r\nI know the rules state of interest to hackers. But the history of HPR \r\nand TWAT has been mostly shows that dig deep into a piece of software \r\nor hardware or are a detailed how to. Shows that have a fairly long \r\nshelf life not something that can be outdated if a week or two passes \r\nby.\r\n-- cobra2 \r\n\r\nFrom: Frank Bell \r\nDate: Fri, 4 May 2012 18:53:41 -0400\r\n\r\nI tend to agree with this.\r\n\r\nAlso, as someone who is very new here, I am concerned that, if many \r\nslots are filled up with scheduled shows, aspiring contributers miight \r\nbe dismayed to find that a show uploaded, say today, might not be \r\nposted until late June or July. This can be a demotivator.\r\n\r\nAs an aside, I can count on both sets of fingers the number of shows \r\nI\'ve hit \"Next\" on. The variety of HPR is one of its main attractions \r\nfor me. Usually, when I do hit \"Next,\" it\'s because the topic is so \r\ntechnical (say, a programming language) that I can\'t follow it. \r\n\r\nOnce or twice--no more than that--it has been because the premise of the \r\nshow was nonsensical--nevertheless, thanks to HPR, I got to hear and \r\nevaluate the premise, which, without the HPR\'s variety, I would not have \r\nhad the opportunity to do.\r\n\r\nFrom: Ken Fallon \r\nDate: Sat, 5 May 2012 09:14:08 +0200\r\n\r\nOK All,\r\n\r\nWhat I\'m hearing is that the following shows will be dropped into the\r\nregular First come First Served Queue:\r\nTalk Geek To Me News.\r\nDev Random\r\n\r\nThe following show will be dropped from Syndicated Thursday.\r\nSunday Morning Linux Review.\r\n\r\nIs this correct ?\r\n\r\nKen.\r\n\r\nFrom: dg \r\nDate: Sat, 5 May 2012 07:09:38 -0400\r\n\r\nHi, Guys,\r\n\r\nJust wanted to say that whatever you decide is fine by me. The news\r\nshows I submit to HPR are actually \"one half\" of my regular show. That\r\nis to say, I do a special tech-only version of my full world+tech news\r\nshow for HPR.\r\n\r\nTherefore, in theory, a news-lover would be able to go to my website\r\nand subscribe via RSS and get my shows rather quickly, if they so\r\ndesired. \r\n\r\nHowever, I also need to point out two more things. First, I agree with\r\nanother poster that a distinction needs to be made between a show that\r\nis about the guests, with current events thrown in as something for\r\nthem to comment upon; as opposed to my show which is purely about the\r\nstories (I do rarely make editorial comments, but I try to keep my\r\npersonal opinions to a minimum.)\r\n\r\nSecond, I disagree with yet another poster that what I offer should be\r\n\"filler\" and qualifies as something \"that can be found almost\r\nanywhere.\" The whole point of all the stories I cover is that a) they\r\nare not covered by the mainstream media and b) they are, nevertheless,\r\ntimely and important news. In regards to this opinion, I ask you to\r\nconsider whether or not it is widely held amongst the general\r\nlistnership, which to I understand is not entirely present on this list.\r\n\r\nThanks for considering,\r\n---\r\nDeepGeek\r\n\r\n\r\nFrom: Fifty OneFifty \r\nDate: Sat, 5 May 2012 12:51:29 -0500\r\n\r\nI our discussion of whether we want to keep syndicated shows, we should not\r\nlose sight of the fact that last year Ken was really scrambling to find\r\ncontent to keep HPR broadcasting on a daily basis. While I think most of\r\nthe shows in syndication would understand, I hate to put Ken in the\r\nposition of saying, \"Thanks, but we don\'t need you any more\". As for\r\nvariety, maybe we consider offering syndicated shows a limited run, 2 or 3\r\nshows, not in consecutive weeks, as an introduction to our listener base.\r\nAfterwards it would be incumbent on our listeners to add those shows to\r\ntheir queue if they like what they hear. It will also be up to\r\ncontributors and listeners to look for new shows that we can invite for\r\ntemporary syndication, like pokey has with https://distributedpodcast.com.\r\n\r\nFiftyOneFifty\r\n\r\nFrom: David Whitman \r\nDate: Sat, 5 May 2012 11:14:31 -0700\r\n\r\nI posted this on Henry Patrick Riley (Goggle+)\r\n\r\nWhat about making a MEGA syndicated day and combining 2 or more shows\r\ntogether with intro music between and posting the run time when one show\r\nends and another begins? Rotate the order which show airs first.\r\n\r\nThe following is more comments not on G+:\r\n\r\nI want produce some \'casual\' shows that could go into an \'emergency\' queue\r\nin case there are times when the regular queue get close to empty. Things I\r\nwant to share, but they are not time critical and I am willing to have HPR\r\nbank (such as How I found Linux, How to run a car in the Auto-X, A vacation\r\nto Moab, Utah, Troubleshooting an MR2 using a volt/ohm meter etc. My idea\r\nis that as soon as the emergency queue gets a month\'s worth of shows they\r\ncould be put out periodically into the regular queue. They could be tagged\r\nwith a 1-5 tech rating and the more techie ones used first.\r\n\r\nHow about having 2 parallel tracks? or 3? HPR News, HPR Command Line, HPR\r\nProjects, a weekly show track just for news....\r\n\r\nAll good and fine - I have 3 shows that need editing to help contribute to\r\nthe problem.\r\n\r\nThanks to all the HPR community members and admins. I love the show.\r\n\r\ndavidWHITMAN\r\n\r\nFrom: Frank Bell \r\nDate: Sat, 5 May 2012 15:28:05 -0400\r\n\r\nOn Sat, 5 May 2012 12:51:29 -0500\r\nFifty OneFifty wrote:\r\n\r\n> I our discussion of whether we want to keep syndicated shows, we should not\r\n> lose sight of the fact that last year Ken was really scrambling to find\r\n> content to keep HPR broadcasting on a daily basis. \r\n\r\n(snip)\r\n\r\n> As for\r\n> variety, maybe we consider offering syndicated shows a limited run, 2 or 3\r\n> shows, not in consecutive weeks, as an introduction to our listener base. \r\n\r\nI think these thoughts have a lot of merit. I rather enjoy learning about \r\nnew shows through Syndicated Thursdays (I had not heard of the Sunday Morning \r\nLinux show until HPR introduced it to me). Also, I must say I have heard \r\nsome syndicated shows that I do enjoy, but not enough to actually subscribe \r\nto, so I find the idea of maintaining variety appealing..\r\n\r\nMy concern is that, if there are too many dedicated days, the dedicated days \r\ncould turn into a regular line-up. \r\n\r\nJust my two cents.\r\n\r\nFrom: Patrick Dailey \r\nDate: Mon, 7 May 2012 23:17:11 -0400\r\n\r\nThis may be the \"healthiest\" discussion that I\'ve ever seen on the HPR\r\nmailing list, and I love it. I want to thank each and every person\r\nsubscribed for keeping the conversation respectful, and on topic. Most\r\nmailing lists that I\'ve seen could not have accomplished that.\r\n\r\nAs to the scheduling multi-lemma, I have a few thoughts that I would thank\r\nyou all in advance for considering:\r\n\r\nWe have the kind of crisis that we\'ve always wanted, namely: we have too\r\nmany shows. This is an opportunity that I don\'t think we should squander.\r\nAt the same time we\'re trying to establish a scheduling policy that an\r\nunmanned system can obey. The goal, as I see it, is to create rules that\r\ncan deal with an abundance of shows without wasting them. Right now what we\r\nhave is a scheduling policy that worked very well with a lack of shows, and\r\nin fact it helped to replenish them. So I believe that we need either: one\r\nset of rules that can cope with either situation, or two sets of rules and\r\na way for a deterministic system to identify and transition between them.\r\nPlease chime in on this if you are good with policy.\r\n\r\nAs I see it, at least part of what we\'re dealing with is a resource\r\nmanagement problem. People create content for us, and sometimes they assume\r\nthat it has an expiration timeframe. Some content simply must be used\r\nbefore it\'s creator feels that it has expired, or we can expect that that\r\ncreator will seek other venues in which to publish their content. We need a\r\nway of distinguishing \"perishable\" content from \"non-perishable\" content.\r\nWe also need a way of putting a date on the perishable content. If you have\r\nexperience with user feedback systems, we could really use your help\r\n(especially) with this part.\r\n\r\nSince identifying potential problems without offering solutions is just\r\nbitching, I have a couple of suggestions.\r\n\r\nSyndicated Thursdays and \"timely content\"\r\nI for one, am grateful to the shows who have allowed us to fill holes in\r\nour que with their content. While the syndicated Thursday slot was\r\noriginally implemented out of necessity, I feel that it is an overall plus\r\nto continue the practice. We have developed friendly and mutually\r\nbeneficial relationships with other podcasts that I would be hesitant (to\r\nput it mildly) to sever, and there are other great podcasts that we don\'t\r\neven know about yet. I agree with Frank Bell in that I think the syndicated\r\nThursday feed is a great discovery tool, and I\'d hate to loose it as such,\r\nbut I also see these shows as friends, and I want to make sure that we\r\ntreat them like it. I don\'t think it\'s in anyone\'s best interest for us to\r\nabandon that kind of relationship, or the content that has so generously\r\nbeen offered to us. If (and only if) there is a \"Timely news show\", I would\r\nlike to see it get the Thursday slot, but in order for the syndicated show\r\nto not be wasted, I would like to see that show bumped to Saturday.\r\n\r\nScheduled HPR exclusive shows and normal que shows\r\nI think if people commit to producing scheduled content before they record\r\nit, and live up to that commitment, that we should honor that commitment.\r\nPerhaps there needs to be some limit to the number of pre-schedulable slots\r\nper week and/or month that we make available, so that there is still room\r\nto play shows from our normal que, but we-as a group decided to ask people\r\nto produce content for us, and several people have stepped up and\r\ndelivered. Perhaps this is a situation where more than one show should be\r\nposted per day. I don\'t know.\r\n\r\nWhile it\'s easy for me to sit here and suggest these things, I don\'t think\r\nthat it\'s fair for any of us to vote for posting more than five shows per\r\nweek unless we are committing to posting more than the requested \"one show\r\nper year\" if the que ever gets low again.\r\n\r\nLastly, I believe that new hosts should continue to get the first\r\nunscheduled slot. This is critical to getting new people to contribute, and\r\nto return as hosts.\r\n\r\nIf I\'m wrong, or out of line, or TLDR, or whatever... feel free to say so.\r\nI can take it.\r\n\r\npokey\r\n\r\nFrom: \"Frank Bell\"\r\nDate: Tue, 08 May 2012 13:21:53 -0400\r\n\r\nOn Mon, 07 May 2012 23:17:11 -0400, Patrick Dailey \r\nwrote an extremely thoughtful and useful post from the \"be careful what \r\nyou wish for\" department:\r\n\r\n\r\n> Syndicated Thursdays and \"timely content\" \r\n\r\n> loose it as such, but I also see these shows as friends, and I want to \r\n> make sure that we treat them like it. I don\'t think it\'s in anyone\'s \r\n> best interest for us to abandon that kind of relationship, or the \r\n> content that has so generously been offered to us. If (and only if) \r\n> there is a \"Timely news show\", I would like to see it get the Thursday \r\n> slot, but in order for the syndicated show to not be wasted, I would \r\n> like to see that show bumped to Saturday. \r\n\r\nI think this is a wise suggestion. I wasn\'t here when the goal of five \r\ndays a week was set, but I\'m inclined to think that it was intended to be \r\na goal, not a limit.\r\n\r\nI would suggest, as an aside, that the scheduling rules could be displayed \r\nmore prominently. Currently, they are at the bottom of the calendar. I \r\nthink prospective or new (like me) hosts should have their attention drawn \r\nto them more forcefully, perhaps by giving them their own page linked from \r\nthe front page and linking to them from the calendar and from the \r\n\"Contribute\" page. I also suggest changing the terminology from \"rules\" \r\nto \"guidelines\"; that\'s not just PR softening of a phrase, for they are \r\nguidelines as exceptions can be made.\r\n\r\nIt may also be useful to suggest that new hosts glance as the calendar to \r\nsee when their available slots. I would also like to see a friendlier \r\ncalendar, meaning one that looks more like a wall calendar. If you all \r\nwish, I would be happy to explore the WordPress plugins to see what I can \r\nfind.\r\n\r\nI support continuing the practice of bumping new hosts up in the queue. \r\nIt\'s a recognition of effort and a motivator. Frankly, I found it a blast \r\n(if an intimidating one) to look at my podplayer and see my own name \r\nlooking back at me.\r\n\r\n> Perhaps there needs to be some limit to the number of pre-schedulable \r\n> slots per week and/or month that we make available, so \r\n\r\nThis might also be a good idea and it speaks to my concern of HPR\'s \r\nturning in to a line-up of a few scheduled shows, rather than a platform \r\nthat\'s open to newbies like me.\r\n\r\nOn the other hand, many persons have responded to the need for shows that \r\nKen sounded last fall, not only with shows, but by airing promos on their \r\nown podcasts and websites, which leads to exposre which leads to shows (by \r\nthe way, I think this flowering of support is a tribute to HPR and to the \r\nplace it has amongst the community).\r\n\r\nThe flowering may yet wither and need to be watered anew. In other words, \r\nonce the enthusiasm wears off, Ken might be having to appeal for shows \r\nagain.\r\n\r\nIn other words, I agree with some sort of limit and I lean towards a \r\nmonthly one, but have no idea what would be a reasonable one. If I were \r\nto try to word that as a guideline, it might come out like \"the number of \r\nscheduled shows and the intervals between them that HPR can commit to is \r\naffected by the number of submissions\" and leave it at that--that allows \r\nwiggle-room for adjusting to the realities of now.\r\n\r\n> that there is still room to play shows from our normal que, but we-as a \r\n> group decided to ask people to produce content for us, and several \r\n> people have stepped up and delivered. Perhaps this is a situation where \r\n> more than one show should be posted per day. I don\'t know. \r\n\r\n\"The following is an HPR special presentation . . . .\"\r\n\r\nI like it.\r\n\r\nJust my two cents.\r\n\r\nOnce again, thanks for the nice welcome. This is a good place to be. (I \r\nhave just cashed in some rewards points for a decent headset.)\r\n\r\nFrom: Ken Fallon \r\nDate: Wed, 9 May 2012 07:10:43 +0200\r\n\r\nI\'ve removed the extended calendar so that we have a better view of\r\nwhat shows are in the queue. There are under four weeks of shows left,\r\nacceptable but hardly anything to celebrate about. Without TGTMNews\r\nand the syndicated shows I would have been back begging for shows by\r\nnow.\r\n\r\nJust something to keep in mind.\r\n\r\nKen.\r\n\r\nFrom: Cobra 2 \r\nDate: Wed, 9 May 2012 13:18:51 -0300\r\n\r\nDeepgeek. I just wanted to apologize for using words which caused you to\r\nfeel like I don\'t appreciate the work that you do every week. (I pull down\r\nthe whole tgtm feed) I\'m not going to defend or back down from what I said.\r\nBut I just want you to know that what YOU do is appreciated. You\'ve been a\r\npart of this community for as long as I can remember. You also put most of\r\nus to shame on contributing content. So i\'m going to go back to my corner\r\nand attempt to not crush people next time I crawl out of my hole.\r\n\r\nSorry again dude.\r\n\r\n--cobra2\r\n\r\nFrom: Frank Bell \r\nDate: Sat, 12 May 2012 17:39:48 -0400\r\n\r\nOn Wed, 9 May 2012 07:10:43 +0200\r\nKen Fallon <ken.fallon@gmail.com> wrote:\r\n\r\n> I\'ve removed the extended calendar so that we have a better view of\r\n> what shows are in the queue. \r\n\r\nThat is much easier to read. Thank you.\r\n\r\nI\'m planning to do a simple tutorial on prepping pictures for posting to \r\nwebsite with the GIMP. I started my outline today and hope to have it done \r\nwithin two weeks.\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2129,1),
(1002,'2012-06-05','LiTS 008: free: Understanding Linux Memory Usage',853,'The free command and memory usage','
\r\nIn today\'s show Dann explains to us what it means to be free. \r\n
\r\n
\r\n\r\nThe free command is a handy snapshot into your systems memory and how much of it is being used. In conjunction with other tools like top you can begin to understand where your system resources are being utilized and weed out potential bottlenecks and bugs. But before jumping into the deep end in system analysis, you need to have a decent grasp on how the Linux kernel utilizes memory, or your initial observations may send you tearing through the interwebs looking for a solution to a problem that does not exist.\r\n\r\n
\r\n',214,0,1,'CC-BY-SA','microphone,mixer,sound card,Ardour ',0,1978,1),
(1004,'2012-06-06','Sunday Morning Linux Review Episode 34 - SUSE and Venus',4732,'SMLR episode 34','In today\'s syndicated Thursday we again return to SMLR Towers and join Mat Enders, Tony Bemus, and Mary Tomich for Sunday Morning Linux Review Episode 34 - SUSE and Venus. The complete shownotes can be found at https://smlr.us/?p=1082',158,54,1,'CC-BY-SA','SMLR,Sunday Morning Linux Review',0,2254,1),
@@ -17325,7 +17440,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1018,'2012-06-26','Interview with Christel Dahlskjaer of the FreeNode project.',842,'Ken interviews Christel Dahlskjaer of the FreeNode project','
\r\nTodays show is a much delayed recording from OggCamp11. \r\nIt\'s late and Ken is out having a pint when he hears a voice from the https://podcast.freenode.net/ podcast.\r\nHe looks up and who is it but Christel Dahlskjaer of the FreeNode project.\r\n
\r\n',30,78,1,'CC-BY-SA','Interview,Oggcamp,Freenode',0,2178,1),
(1019,'2012-06-28','The 8 Billion Dollar iPod',482,'Rob Reid, creator of \"Rhapsody\", gives a TED talk','
Syndicated Thursdays is a chance to showcase other Creative Commons works. We try to expose podcasts, speeches, presentations, music, etc that you may not have heard. If you have suggestions for items then send your recommendation to admin at hpr and we\'ll add it to the queue.
\r\n\r\n
\r\nToday we\'re going to play the audio from a Ted presentation\r\n
\r\n
\r\nFrom Wikipedia, the free encyclopedia \r\nTED (Technology, Education and Design) is a global set of conferences owned by the private non-profit Sapling Foundation, formed to disseminate \"ideas worth spreading.\"\r\n
\r\n
\r\nThe title of the talk is \"The 8 Billion Dollar iPod\" and the speaker is Rob Reid who is a humor author and the founder of the company that created the music subscription service Rhapsody. \r\nhttps://www.ted.com/talks/rob_reid_the_8_billion_ipod.html\r\n
\r\n
\r\nTodays HPR presentation is an enhanced podcast, where we describe any slides that are not explained in the narrative. \r\n
\r\n
\r\nThis would be a good time to remind you that Jonathan Nadeau is looking for donations for The Accessible Computing Foundation. \r\nThe Accessible Computing Foundation exists to design Free software to help bridge the gap between accessibility and technology. As a nonprofit we will hire developers to create Free accessible software and bring awareness to people\'s accessible needs around the world. \r\nhttps://www.accessiblecomputingfoundation.org/\r\n
\r\n',158,54,1,'CC-BY-SA','TED,\"Technology, Education and Design\",Rhapsody',0,2161,1),
(1020,'2012-06-29','TGTM Newscast for 2012/6/27 DeepGeek',1350,'A newscast from Talk Geek to Me','
Linux In The Shell 008 - free: Understanding Linux Memory Usage
\r\n
Dann
\r\n
\r\n \r\n
1003
\r\n
My audio gear
\r\n
Nido Media
\r\n
\r\n \r\n
1004
\r\n
Sunday Morning Linux Review Episode 34 - SUSE and Venus
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1005
\r\n
TGTM Newscast for 2012/6/6
\r\n
deepgeek
\r\n
\r\n \r\n
1006
\r\n
More Experiences Out of a Mental Hostpital
\r\n
sigflup
\r\n
\r\n \r\n
1007
\r\n
My Linux Adventure, Pt. 2
\r\n
Bob Wooden
\r\n
\r\n \r\n
1008
\r\n
Fix the \"Sticky Keys\" Bug in Minecraft
\r\n
Windigo
\r\n
\r\n \r\n
1009
\r\n
John Sullivan Why should I care about Free software?
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1010
\r\n
John Doe on copyright infringement lawsuits
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1011
\r\n
NELF interview with Robert_Schweikert of Open Suse
\r\n
pokey
\r\n
\r\n \r\n
1012
\r\n
LiTS 009 - w command and linux load averages
\r\n
Dann
\r\n
\r\n \r\n
1013
\r\n
Saving Programs From TiVo
\r\n
Ahuka
\r\n
\r\n \r\n
1014
\r\n
Radio FreeK America 15 (2002/06/05) - Special Rax-only Episode
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1015
\r\n
TGTM Newscast for 2012/6/18 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n
1016
\r\n
Nix: The Functional Package Manager
\r\n
goibhniu
\r\n
\r\n \r\n
1017
\r\n
Phone hacking Samsung Admire
\r\n
Brotherred
\r\n
\r\n \r\n
1018
\r\n
Interview with Christel Dahlskjaer of the FreeNode project.
\r\n
Ken Fallon
\r\n
\r\n \r\n
1019
\r\n
The 8 Billion Dollar iPod
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1020
\r\n
TGTM Newscast for 2012/6/27 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2181,1),
(1022,'2012-07-03','LiTS 010: df - Exploring Disk Filesystem Usage',1075,'Report file system disk space usage with the df command','The df command is used to report file system usage. The df command will show you the amount of storage available, used, and free per partition for each fileystem currently mounted on the system. Values are shown in blocks. \n\nhttps://www.linuxintheshell.com\n',7,67,1,'CC-BY-SA','df',0,2772,1),
(1023,'2012-07-04','About Rivendell with Rivendell',3064,'Rivendell Radio Automation software','
AukonDK
\r\n
About Rivendell with Rivendell
\r\n\r\n
\r\nIn this episode I talk about the Rivendell Radio Automation software whilst using the same software to play music and sound.\r\nThis show was recorded \"as live\" and unscripted. I need a bit more practise as I\'d like to use a similar setup to do my own podcast show. Did a bit of normalising and amplifing as the levels weren\'t that great (another thing to practise)\r\n
\r\n[42:34]\r\nNote\r\nOdd thing happened, I thought the bed music had bypassed the recording when in fact it had just bypassed the mixer so it played full volume. Again, more practice needed.\r\n
\r\n
\r\nStuff I forgot to mention:\r\nTalking about multiple tracks in Carts, you can set each track to only play under certain conditions, such as time or day of the week.\r\nRDPanel is an appilcation which is a large version of the sound panel in RDAirplay, great to have on a second monitor.\r\nLogs are playlists which can be saved and loaded an can be generated just by playing music in Airplay or building them manually in RDLogedit or automatically with RDLogManager.\r\nRivendell can manage more than one radio station if needed and share the same DB.\r\n
\r\n',191,0,1,'CC-BY-SA','Rivendell,radio,automation',0,2240,1),
(1024,'2012-07-05','Episode 1024',4940,'Celebration of Hacker Public Radio\'s first 1K episodes','
In the second and final installment of\r\nHacker Public Radio\'s first 1K episodes (yes Lord D, we know it\'s\r\nreally 1324 :) anniversary celebration, FiftyOneFifty hosts a panel\r\nconsisting of the following hosts from Today With a Techie and the\r\ninaugural year of Hacker Public Radio: jrullo, klaatu, willjasen,\r\nLord Drachenblut, and Xoke (with Mrs. Xoke). Special thanks to\r\naparanoidshell, who stepped in to keep the conversation rolling when\r\nFiftyOneFifty momentarily lost the connection.
\r\n',109,0,1,'CC-BY-SA','HPR,community,anniversary',0,2358,1),
@@ -17350,7 +17465,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1043,'2012-07-31','Hacking Second Hand - Obtaining Old Tech',1735,'Where to go to get old tech and things you should know before buying','
\r\nA talk about where to go to get old tech and things you should know before venturing into the second hand market.\r\nCovers using who you know, using the internet, yard sales, flea markets, rummage sales, auctions, thrift stores, and trash picking.\r\n
',218,0,1,'CC-BY-SA','second hand,yard sale,flea market,rummage sale,auction,thrift store,trash picking',0,2472,1),
(1044,'2012-08-02','OggCamp11: Oracle Linux',1701,'An interview with JWP followed by the talk he gave','In todays long over due show we interview out very own presenter JWP and listen to his talk given at OggCamp11.',129,62,1,'CC-BY-SA','oggcamp,oggcamp11,Oracle Linux',0,2315,1),
(1045,'2012-08-03','Genealogy',608,'A look at the process of researching a UK family tree','
\r\nI\'ve been researching my family tree for a short while now, and through I\'d share some of my resources and tips with other hackers. \r\n
\r\n\r\n',185,0,1,'CC-BY-SA','genealogy,Gramps,FreeBMD,census,ancestry.co.uk',0,2374,1),
-(1046,'2012-08-06','HPR Community News July 2012',2350,'HPR Community News July 2012','
Karen Sandler on Medical Devices: OGG Camp Part Two
\r\n
Robin Catling
\r\n
\r\n \r\n
1030
\r\n
Ruben Rodriquez talks about Trisquel Linux
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1031
\r\n
Backing up your dvd collection using mencoder
\r\n
BrocktonBob
\r\n
\r\n \r\n
1032
\r\n
LiTS 011: du - disk usage
\r\n
Dann
\r\n
\r\n \r\n
1033
\r\n
Go RTFM
\r\n
aparanoidshell
\r\n
\r\n \r\n
1034
\r\n
PXE Boot
\r\n
Ken Fallon
\r\n
\r\n \r\n
1035
\r\n
OGG Camp 11 Panel Discussion
\r\n
Robin Catling
\r\n
\r\n \r\n
1036
\r\n
Setting up Your First Ham Radio Station
\r\n
Joel
\r\n
\r\n \r\n
1037
\r\n
Soldering Part 1
\r\n
MrX
\r\n
\r\n \r\n
1038
\r\n
Interview with George Vlahavas and Andreas born of the SalixOS project
\r\n
pokey
\r\n
\r\n \r\n
1039
\r\n
Matt Lee Gnu FM and Libre FM
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1040
\r\n
Steam on Linux
\r\n
Lord Drachenblut and Downer
\r\n
\r\n \r\n
1041
\r\n
Home from H.O.P.E.
\r\n
Various Hosts
\r\n
\r\n \r\n
1042
\r\n
LiTS: 012 - tail
\r\n
Dann
\r\n
\r\n \r\n
1043
\r\n
Hacking Second Hand - Obtaining Old Tech
\r\n
Famicoman
\r\n
\r\n \r\n
1044
\r\n
OggCamp11: Oracle Linux
\r\n
JWP
\r\n
\r\n \r\n
1045
\r\n
Genealogy
\r\n
Mike Hingley
\r\n
\r\n \r\n\r\n
\r\n\r\n
Thanks to
\r\n
\r\n
Iwan Gabovitch for the heads up about the wrong CC lisence on the site
\r\n
Dave Morriss for all the fantastic work he\'s doing on the backend system
\r\n
Frank Bell and Ehtyar Holmes for all the fantastic work he\'s doing on the frontend system
\r\n
David Whitman for tracking the keywords on past episodes and for the kind donation towards paying for the European HPR banner
\r\n
Richard Querin for the fantastic artwork
\r\n
Xoke for the idea
\r\n
Jonathan Nadeau for the cpanel script
\r\n
\r\n
Apologies to
\r\n
\r\n
DeepGeek who sent in this I wanted to ask in regards to the next community news that a mention that I installed a new webpage design while on my May sabbatical, and please also announce that the second month of my sabbatical will be taken for the month of July. In August, I will resume my full schedule of three-per-month and will produce three for this month, June.
\r\n
DeepGeek when I forgot to announce that he would be at hope
\r\n
Windigo for missing that he was a new host
\r\n
Mike Hingley and DoorToDoorGeek for not sending him the FTP details
\r\n
Dave Morriss, Frank Bell and Ehtyar Holmes for not providing them enough information for the new site
\r\n
NYbill for not putting their show out sooner
\r\n
Everyone for the delay in getting the Queue and Calendar published
\r\n
\r\n
Other Notes
\r\n
\r\n
We\'re pushing out all the 2011 OggCamp content from last year
Ken will be at OggCamp on August 18 / 19, Art and Design Academy, Liverpool John Moores University, Liverpool, L3 5RD. If you are there coma along to the booth and sign the table. There will be a very limited number of t-shirts. Stickers were too expensive this time. If there is time, Ken will put together a booklet on the podcasts listed on thelinuxlink.net site.\r\n
\r\n
Ohio LinuxFest 2012 Registration is Open for Business
\r\n
\r\nA message from Kevin O\'Brien \r\nWe are opening up Registration for the 2012 Ohio LinuxFest event, and we\'d appreciate it if you could pass along this message through whichever social media you prefer. The Registration page is at https://ohiolinux.org/register\r\n
\r\n
AccessibleComputingFoundation fundraiser
\r\n
\r\nWe would like to announce the first fundraiser for the Accessible Computing Foundation!. It will be held on August 25 from 12pm EST until 12am EST August 26. This event will be streamed at The New Radiofor the entire event. It\'s going to be held over at Linux Basix, using their Mumble server. To find out the information for the Mumble server, please visit the Linuxbasixsite . We\'ll be able to have up to 30 people in the room at once, so come and join us in talking about accessibility and Free software. \r\n \r\nSo far, joining the event we will be having Jono Bacon from Ubuntu, and Zack the Debian project leader. If you\'d like to speak with either of them, please come and join us on August 25. The goal for this fundraiser is to have 1000 people become members of the ACF at $2 a month. We have 3 other levels of membership options if anyone is interested. This would be a great help to the foundation and really get us off of the ground to start bridging the gap between accessibility and technology. \r\n \r\nThe reason we\'re focusing on the $2/month level is because it\'s only 50 cents a week and we think this is a goal most people could meet, even if living on a fixed income like so many people with disabilities. Since monthly membership is so low, we are really depending on MANY people to become members to make this difference. Granted $2 a month isn\'t much, but if we can get a large number of people thinking this way, it will add up quickly and help out the Accessible Computing Foundation in a great way. So please, join us on August 25 and help bring Accessible Freedom to people around the world!\r\n
\r\n\r\n\r\n\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,2174,1),
+(1046,'2012-08-06','HPR Community News July 2012',2350,'HPR Community News July 2012','
Karen Sandler on Medical Devices: OGG Camp Part Two
\r\n
Robin Catling
\r\n
\r\n \r\n
1030
\r\n
Ruben Rodriquez talks about Trisquel Linux
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1031
\r\n
Backing up your dvd collection using mencoder
\r\n
BrocktonBob
\r\n
\r\n \r\n
1032
\r\n
LiTS 011: du - disk usage
\r\n
Dann
\r\n
\r\n \r\n
1033
\r\n
Go RTFM
\r\n
aparanoidshell
\r\n
\r\n \r\n
1034
\r\n
PXE Boot
\r\n
Ken Fallon
\r\n
\r\n \r\n
1035
\r\n
OGG Camp 11 Panel Discussion
\r\n
Robin Catling
\r\n
\r\n \r\n
1036
\r\n
Setting up Your First Ham Radio Station
\r\n
Joel
\r\n
\r\n \r\n
1037
\r\n
Soldering Part 1
\r\n
MrX
\r\n
\r\n \r\n
1038
\r\n
Interview with George Vlahavas and Andreas born of the SalixOS project
\r\n
pokey
\r\n
\r\n \r\n
1039
\r\n
Matt Lee Gnu FM and Libre FM
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1040
\r\n
Steam on Linux
\r\n
Lord Drachenblut and Downer
\r\n
\r\n \r\n
1041
\r\n
Home from H.O.P.E.
\r\n
Various Hosts
\r\n
\r\n \r\n
1042
\r\n
LiTS: 012 - tail
\r\n
Dann
\r\n
\r\n \r\n
1043
\r\n
Hacking Second Hand - Obtaining Old Tech
\r\n
Famicoman
\r\n
\r\n \r\n
1044
\r\n
OggCamp11: Oracle Linux
\r\n
JWP
\r\n
\r\n \r\n
1045
\r\n
Genealogy
\r\n
Mike Hingley
\r\n
\r\n \r\n\r\n
\r\n\r\n
Thanks to
\r\n
\r\n
Iwan Gabovitch for the heads up about the wrong CC lisence on the site
\r\n
Dave Morriss for all the fantastic work he\'s doing on the backend system
\r\n
Frank Bell and Ehtyar Holmes for all the fantastic work he\'s doing on the frontend system
\r\n
David Whitman for tracking the keywords on past episodes and for the kind donation towards paying for the European HPR banner
\r\n
Richard Querin for the fantastic artwork
\r\n
Xoke for the idea
\r\n
Jonathan Nadeau for the cpanel script
\r\n
\r\n
Apologies to
\r\n
\r\n
DeepGeek who sent in this I wanted to ask in regards to the next community news that a mention that I installed a new webpage design while on my May sabbatical, and please also announce that the second month of my sabbatical will be taken for the month of July. In August, I will resume my full schedule of three-per-month and will produce three for this month, June.
\r\n
DeepGeek when I forgot to announce that he would be at hope
\r\n
Windigo for missing that he was a new host
\r\n
Mike Hingley and DoorToDoorGeek for not sending him the FTP details
\r\n
Dave Morriss, Frank Bell and Ehtyar Holmes for not providing them enough information for the new site
\r\n
NYbill for not putting their show out sooner
\r\n
Everyone for the delay in getting the Queue and Calendar published
\r\n
\r\n
Other Notes
\r\n
\r\n
We\'re pushing out all the 2011 OggCamp content from last year
Ken will be at OggCamp on August 18 / 19, Art and Design Academy, Liverpool John Moores University, Liverpool, L3 5RD. If you are there coma along to the booth and sign the table. There will be a very limited number of t-shirts. Stickers were too expensive this time. If there is time, Ken will put together a booklet on the podcasts listed on thelinuxlink.net site.\r\n
\r\n
Ohio LinuxFest 2012 Registration is Open for Business
\r\n
\r\nA message from Kevin O\'Brien \r\nWe are opening up Registration for the 2012 Ohio LinuxFest event, and we\'d appreciate it if you could pass along this message through whichever social media you prefer. The Registration page is at https://ohiolinux.org/register\r\n
\r\n
AccessibleComputingFoundation fundraiser
\r\n
\r\nWe would like to announce the first fundraiser for the Accessible Computing Foundation!. It will be held on August 25 from 12pm EST until 12am EST August 26. This event will be streamed at The New Radiofor the entire event. It\'s going to be held over at Linux Basix, using their Mumble server. To find out the information for the Mumble server, please visit the Linuxbasixsite . We\'ll be able to have up to 30 people in the room at once, so come and join us in talking about accessibility and Free software. \r\n \r\nSo far, joining the event we will be having Jono Bacon from Ubuntu, and Zack the Debian project leader. If you\'d like to speak with either of them, please come and join us on August 25. The goal for this fundraiser is to have 1000 people become members of the ACF at $2 a month. We have 3 other levels of membership options if anyone is interested. This would be a great help to the foundation and really get us off of the ground to start bridging the gap between accessibility and technology. \r\n \r\nThe reason we\'re focusing on the $2/month level is because it\'s only 50 cents a week and we think this is a goal most people could meet, even if living on a fixed income like so many people with disabilities. Since monthly membership is so low, we are really depending on MANY people to become members to make this difference. Granted $2 a month isn\'t much, but if we can get a large number of people thinking this way, it will add up quickly and help out the Accessible Computing Foundation in a great way. So please, join us on August 25 and help bring Accessible Freedom to people around the world!\r\n
\r\n\r\n\r\n\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,2174,1),
(1047,'2012-08-07','Soldering Part 2: An audio demonstration of soldering',1638,'More about the process of soldering','
\r\nHere is a list of useful links to go along with my 2nd episode in soldering\r\n
',201,0,1,'CC-BY-SA','multicore solder,flux,perf board,strip board,bread board',0,2265,1),
(1048,'2012-08-08','Get off this Rock !!!',2810,'Mr Gadgets talks about Space travel and living on other planets','
\r\nIn this episode Mr Gadgets talks about Space. \r\n
\r\nKen reckons that the ping times will be terrible.\r\n
\r\n',155,0,1,'CC-BY-SA','space,space travel,SpaceX',0,2345,1),
(1049,'2012-08-09','OGG Camp 11: Laura Czajowksi, Life Outside of IRC in a FLOSS Community',1054,'Fifth in a series of OggCamp 11 highlights from the Full Circle Podcast','
welcome to the Full Circle Podcast on Hacker Public Radio. This is the fifth, if I\'m counting correctly, of our highlights of last Summers unconference, OGG Camp eleven, held at Farnham Maltings in the South of England.
\r\n\r\n
This show is a recording of a presentation from Laura Czajkowski on the benefits of real-world, as opposed to cyber-community. Entitled Life Outside of IRC in a FLOSS Community, Laura evangelises on the on the benefits of real-world interaction, beyond that on-line.
\r\n\r\n
Laura describes herself as Argumentative, Stubborn, Geek, Ubuntu Fan and MUNSTER FAN. Munster, for those who don\'t know, being a major rugby team from the town of Munster back in her native Ireland.
\r\n\r\n
Laura has this year joined Canonical as Launchpad Support Specialist
The Full Circle Podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community. Find us at www.fullcirclemagazine.org/podcast.
\r\n\r\n
Feedback; you can post comments and feedback on the podcast page at www.fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
',160,54,1,'CC-BY-SA','OggCamp,Full Circle Podcast,IRC',0,2236,1),
@@ -17370,7 +17485,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1063,'2012-08-29','Freedom and Licensing',1619,'Following an interview with Richard Stallman on the Linux Action Show','
\r\n',198,0,1,'CC-BY-SA','software freedom,GPL,BSD licence',0,2310,1),
(1064,'2012-08-30','OGG Camp 11 Panel Discussion',2458,'Recording of the panel discussion at OggCamp11','
This was recorded last year
\r\n
Welcome to the Full Circle Podcast on Hacker Public Radio. This is the third of our highlights of last Summers unconference, OGG Camp-11, held at Farnham Maltings in the South of England.
\r\n\r\n
Introducing the OGG Camp-11 Panel Discussion
\r\n\r\n
On the panel we have:
\r\n
\r\n
Dan Lynch of Linux Outlaws, our Chairman
\r\n
Karen Sandler of the Gnome Foundation and ex-Software Freedom Law Center
\r\n
Simon Phipps of Forgerock and the Open Software Initiative
\r\n
Stuart ‘Aq’ Langridge, from Canonical\'s UbuntuOne team and ex-LUG Radio presenter
\r\n
Fabian Scherschel of Linux Outlaws
\r\n
\r\n\r\n
Like every good panel Discussion, this all begins with questions from the floor\r\n
We\'ve more highlights of OGG Camp coming up on the Full Circle Podcast very soon, including Andy Piper and Laura Cjaikowski.
\r\n\r\n
The Full Circle Podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community. Find us at www.fullcirclemagazine.org/podcast.
\r\n\r\n
Feedback; you can post comments and feedback on the podcast page at www.fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
',160,62,1,'CC-BY-SA','oggcamp11,panel discussion',0,2595,1),
(1065,'2012-08-30','Wireless tip',111,'Using an Android phone as a wireless hotspot','And now for the shortest show ever on HPR, we have a very useful tip about tethering to a WiFi hotspot over usb on android.',221,0,1,'CC-BY-SA','android,wireless,wifi,tether',0,2599,1),
-(1066,'2012-09-03','HPR Community News August 2012',2442,'HPR Community News August 2012','
Soldering Part 2: An audio demonstration of soldering
\r\n
MrX
\r\n
\r\n \r\n
1048
\r\n
Get off this Rock !!!
\r\n
MrGadgets
\r\n
\r\n \r\n
1049
\r\n
OGG Camp 11: Laura Czajowksi, Life Outside of IRC in a FLOSS Community
\r\n
Robin Catling
\r\n
\r\n \r\n
1050
\r\n
TGTM Newscast for 2012/8/8 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n
1051
\r\n
Intro to the music
\r\n
ccmusique
\r\n
\r\n \r\n
1052
\r\n
LiTS: 013 - Top of Top
\r\n
Dann
\r\n
\r\n \r\n
1053
\r\n
Zoke with a question
\r\n
Xoke
\r\n
\r\n \r\n
1054
\r\n
Becky Hogge: Barefoot into Cyberspace
\r\n
Robin Catling
\r\n
\r\n \r\n
1055
\r\n
TGTM Newscast for 2012/8/15
\r\n
deepgeek
\r\n
\r\n \r\n
1056
\r\n
OggCamp 12 Day 1 Part 1
\r\n
Ken Fallon
\r\n
\r\n \r\n
1057
\r\n
OggCamp 2012: Simon Phipps: mini-intro to the CDB
\r\n
doubi
\r\n
\r\n \r\n
1058
\r\n
OggCamp12 Hardware Hackers
\r\n
Ken Fallon
\r\n
\r\n \r\n
1059
\r\n
OggCamp12 Day2 The morning after the night before
\r\n
Ken Fallon
\r\n
\r\n \r\n
1060
\r\n
OggCamp12 Farewell
\r\n
Ken Fallon
\r\n
\r\n \r\n
1061
\r\n
TGTM Newscast for 2012/08/22
\r\n
deepgeek
\r\n
\r\n \r\n
1062
\r\n
LiTS 014: The Bottom of Top, top pt 2
\r\n
Dann
\r\n
\r\n \r\n
1063
\r\n
Freedom and Licensing
\r\n
Ahuka
\r\n
\r\n \r\n
1064
\r\n
OGG Camp 11 Panel Discussion
\r\n
Robin Catling
\r\n
\r\n \r\n
1065
\r\n
Wireless tip
\r\n
cleavey
\r\n
\r\n \r\n\r\n
\r\n\r\n
Thanks to
\r\n
\r\n
David Whitman for the fantastic banner.
\r\n
Everyone involved in OggCamp12
\r\n
Everyone who helped out with the podcast list - especially Dave Morriss
\r\n
DeepGeek for allowing his show to be bumped.
\r\n
\r\n\r\n
Apologies to
\r\n
\r\n
Again Deep Geek for messing up the show notes on TGTM news #72
\r\n
\r\n\r\n
Other Notes
\r\n
\r\n
The queue may not be up to date
\r\n
Ken will be taking it easy for the coming months
\r\n
Dave Yates is OK.
\r\n
HPR New year show
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,2239,1),
(2100,'2016-08-19','Re-Enable Copy and Paste in Browsers',280,'How to bypass the roadblocks implemented by JavaScript','
\r\nThis episode deals with the annoying, and frustrating practice of disabling copy and paste on websites through the use of javascript. \r\n
\r\n
\r\nFor a detailed explanation of the why please read this excellent article by Nicholas Miller\r\nRe-Enable Copy & Paste on Annoying Sites That Block It. In this article Nicholas explains that you can set dom.event.clipboardevents.enabled in Firefox to prevent this. \r\n
\r\n
\r\nIn Chrome, you are going to need to install extensions to get the same functionality. The following ones worked for me:\r\n
\r\n',30,0,1,'CC-BY-SA','web browser,cut,paste,plugin,javascript',0,0,1),
(1067,'2012-09-04','echo 01 > /dev/random',9952,'An episode of the /dev/random podcast','In this long winded episode we are joined by Pokey, we discuss many things and many laughs are had. There are no links for the shownotes because pegwole may or may not have lost them all. By \"may or may not\" we mean he totally did.\r\n\r\nThis show contains swears.',120,0,1,'CC-BY-SA','podcast',0,2333,1),
(1068,'2012-09-04','Reformatting Creative Commons Content For Non-Computer Settings',501,'Thoughts on reformatting CC content for emergency redistibution','In this episode, Stephen Michael Kellat of The Air Staff of Erie Looking Productions discusses reformatting contented licensed under the Creative Commons regime for use outside typical computer/portable media player contexts.',222,0,1,'CC-BY-SA','creative commons,emergency',0,2206,1),
@@ -17391,7 +17506,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1083,'2012-09-26','compilers part1',591,'The concept of a compiler','From the studios of miscellaneous radio theater 4096 \r\n \r\nIn this multipart episode sigflup describes the general concept of a compiler as well as the stages of a compiler.',115,84,1,'CC-BY-SA','compiler,neocortex,lexical analysis,preprocessing,parsing,semantic analysis,code generation,assembling,linking',0,2438,1),
(1084,'2012-09-26','Paul Levy on Learning to Dance with Spiders',1653,'A Full Circle Podcast interview with Paul Levy','
Hello world. And welcome to the Full Circle Podcast on Hacker Public Radio. This episode consists of an interview with entrepreneur, thinker and author Paul Levy.
\r\n\r\n
The founder of Cats3000 and Rational Madness and author of the play Texts, Paul is also convener of the Critical Incident unconference, which together lead to Learning to Dance with Spiders, a workshop in which Paul shares some experiments from his book about living consciously with your mobile phone and staying intact in the world of social media. \"Truly ground-breaking, uncomfortable, and usable.”
\r\n\r\n
Also discussed: \r\n Jaron Lanier: You are not a Gadget \r\n Sherri Turkel: Alone Together
\r\n\r\n
Paul Levy’s site combines Cats3000 and Rational Madness at https://rationalmadness.wordpress.com/, where you will also find the e-book The Collusion of Mediocrity.
\r\n\r\n
The Critical Incident un-Conference for 2012 has been announced on the theme of the I. Take a look over the conference plan for this year over at the Critical Incident website, www.thecriticalincident.com/
\r\n\r\n
The Full Circle Podcast is the companion to Full Circle Magazine, the Independent Magazine for the Ubuntu Community. Find us at www.fullcirclemagazine.org/podcast.
\r\n\r\n
Feedback; you can post comments and feedback on the podcast page at www.fullcirclemagazine.org/podcast, send us a comment to podcast (at) fullcirclemagazine.org
\r\n',160,0,1,'CC-BY-SA','Interview,Full Circle Podcast',0,2480,1),
(1085,'2012-09-27','A Stream',470,'An ambient recording of a stream','
Back in episode 1058, OggCamp12 Hardware Hackers, (https://hackerpublicradio.org/eps.php?id=1058) we met Zack at the hardware village at OggCamp12. He was busy with his project to orchestrate music based on the movement of a Kite.
\r\n
\r\nToday he sent us in a recording of a stream. Ideal to use as ambient noise in the workplace or in your audio dramas. He has uploaded it to www.freesound.org but we will also host the flac version of the original and of the edited show\r\n
\r\n',224,101,1,'CC-BY-SA','ambient sound',0,2443,1),
-(1086,'2012-10-01','HPR Community News September 2012',2894,'HPR Community News September 2012','
Reformatting Creative Commons Content For Non-Computer Settings
\r\n
The Air Staff of Erie Looking Production
\r\n
\r\n \r\n
1069
\r\n
Eric S. Raymond speaks at the Central Phila. LUG
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1070
\r\n
TGTM Newscast for 9/5/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1071
\r\n
How I Cut The Cable Cord: My Settup
\r\n
BrocktonBob
\r\n
\r\n \r\n
1072
\r\n
LiTS 015: top part 3 - Control Top
\r\n
Dann
\r\n
\r\n \r\n
1073
\r\n
Separate Presentation from Content - 1 The Web
\r\n
Ahuka
\r\n
\r\n \r\n
1074
\r\n
OGG Camp 11. Post-event Commentary with Alan Pope
\r\n
Robin Catling
\r\n
\r\n \r\n
1075
\r\n
tgtm-news-75-20120912
\r\n
deepgeek
\r\n
\r\n \r\n
1076
\r\n
Ohio LinuxFest 2012
\r\n
Ken Fallon
\r\n
\r\n \r\n
1077
\r\n
FSCONS: Haralanova Hack for Freedom!
\r\n
Seetee
\r\n
\r\n \r\n
1078
\r\n
A podcast about software patents/unitary patent
\r\n
Frederic Couchet
\r\n
\r\n \r\n
1079
\r\n
Distributed Systems Podcast
\r\n
HPR Admins
\r\n
\r\n \r\n
1080
\r\n
TGTM Newscast for 9/19/2012 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n
1081
\r\n
Preparing Pictures for Posting with the GIMP
\r\n
Frank Bell
\r\n
\r\n \r\n
1082
\r\n
LiTS 016: top pt 4: Alternate Windows
\r\n
Dann
\r\n
\r\n \r\n
1083
\r\n
compilers part1
\r\n
sigflup
\r\n
\r\n \r\n
1084
\r\n
Paul Levy on Learning to Dance with Spiders
\r\n
Robin Catling
\r\n
\r\n \r\n
1085
\r\n
A Stream
\r\n
Zachary De Santos
\r\n
\r\n \r\n\r\n
\r\n\r\n
Thanks to
\r\n
\r\n
David Whitman for paying for the fantastic banner and then some for HPR swag !
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,2429,1),
+(1086,'2012-10-01','HPR Community News September 2012',2894,'HPR Community News September 2012','
Reformatting Creative Commons Content For Non-Computer Settings
\r\n
The Air Staff of Erie Looking Production
\r\n
\r\n \r\n
1069
\r\n
Eric S. Raymond speaks at the Central Phila. LUG
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1070
\r\n
TGTM Newscast for 9/5/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1071
\r\n
How I Cut The Cable Cord: My Settup
\r\n
BrocktonBob
\r\n
\r\n \r\n
1072
\r\n
LiTS 015: top part 3 - Control Top
\r\n
Dann
\r\n
\r\n \r\n
1073
\r\n
Separate Presentation from Content - 1 The Web
\r\n
Ahuka
\r\n
\r\n \r\n
1074
\r\n
OGG Camp 11. Post-event Commentary with Alan Pope
\r\n
Robin Catling
\r\n
\r\n \r\n
1075
\r\n
tgtm-news-75-20120912
\r\n
deepgeek
\r\n
\r\n \r\n
1076
\r\n
Ohio LinuxFest 2012
\r\n
Ken Fallon
\r\n
\r\n \r\n
1077
\r\n
FSCONS: Haralanova Hack for Freedom!
\r\n
Seetee
\r\n
\r\n \r\n
1078
\r\n
A podcast about software patents/unitary patent
\r\n
Frederic Couchet
\r\n
\r\n \r\n
1079
\r\n
Distributed Systems Podcast
\r\n
HPR Admins
\r\n
\r\n \r\n
1080
\r\n
TGTM Newscast for 9/19/2012 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n
1081
\r\n
Preparing Pictures for Posting with the GIMP
\r\n
Frank Bell
\r\n
\r\n \r\n
1082
\r\n
LiTS 016: top pt 4: Alternate Windows
\r\n
Dann
\r\n
\r\n \r\n
1083
\r\n
compilers part1
\r\n
sigflup
\r\n
\r\n \r\n
1084
\r\n
Paul Levy on Learning to Dance with Spiders
\r\n
Robin Catling
\r\n
\r\n \r\n
1085
\r\n
A Stream
\r\n
Zachary De Santos
\r\n
\r\n \r\n\r\n
\r\n\r\n
Thanks to
\r\n
\r\n
David Whitman for paying for the fantastic banner and then some for HPR swag !
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,2429,1),
(1087,'2012-10-02','The FSCONS of Jonas Öberg ',1231,'Two interviews from FSCONS 2011','
At the conference FSCONS I have a talk with both Henrik (who has no previous experience of FSCONS) and Jonas (who organise the conference). Two very different perspectives and a few completing comments from me.
\r\n\r\n
Henrik
\r\n\r\n
Henrik mentioned the two All In IT Radio episodes \"Assembly Overclocked\" where he told us of his experiences from the demo party Assembly and \"Should Cars Get Smarter?\" where we talk about Qt, In Vehicle Infotainment and such. The later show was featured as episode 0854 on Syndicated Thursday on Hacker Public Radio. We also referenced Jeremiah Foster, Johan Thelin and Mathias Klang
\r\n\r\n
Jonas
\r\n\r\n
When Jonas mentions \"Henrik\", he does not mean the Henrik of All In IT Radio fame, but rather Henrik Sandklef who sits on the board of \"Föreningen fri kultur och programvara\".
\r\n',192,78,1,'CC-BY-SA','Interview,FSCONS,FSCONS 2011,Qt',0,2453,1),
(1088,'2012-10-03','Penguicon 2012',1463,'A report from Penguicon 2012 - a Linux Fest and Sci Fi convention','
\r\n',198,96,1,'CC-BY-SA','Penguicon 2012',0,2358,1),
(1089,'2012-10-04','Max Mether of SkySQL talks about MariaDB',3612,'A recording from the Northeast GNU/Linux Fest 2012','
\r\nRecorded at the Northeast GNU/Linux Fest 2012-03-17\r\n
\r\n
MariaDB
\r\n
From Wikipedia, the free encyclopedia\r\n
\r\n
\r\nMariaDB is a community-developed branch of the MySQL database, the impetus being the community maintenance of its free status under the GNU GPL, as opposed to any uncertainty of MySQL license status under its current ownership by Oracle. The contributors are required to share their copyright with Monty Program AB.\r\n
\r\n
\r\n\r\nThe intent also being to maintain high fidelity with MySQL, ensuring a \"drop-in\" replacement capability with library binary equivalency and exacting matching with MySQL APIs and commands. It includes the XtraDB storage engine as a replacement for InnoDB,[4] as well as a new storage engine, Aria, that intends to be both a transactional and non-transactional engine perhaps even included in future versions of MySQL.\r\n
\r\n
\r\n\r\nIts lead developer is Michael \"Monty\" Widenius, the founder of MySQL and Monty Program AB. He had previously sold his company, MySQL AB, to Sun Microsystems for 1 billion USD.
\r\n',158,54,1,'CC-BY-SA','database,MySQL,MariaDB',0,2358,1),
@@ -17416,7 +17531,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1108,'2012-10-31','What\'s In my Bag?',540,'We examine the contents of Mike\'s bag','\r\n
\r\n\r\n
\r\n
Kit
\r\n
Description
\r\n
\r\n
\r\n
\r\n\r\n My Backpack\r\n\r\n
\r\n
My Backpack - note the HPR Badge - this is the bag I take to work every day.
\r\n
\r\n
\r\n
\r\n\r\n My Acer Aspire netbook\r\n\r\n
\r\n
This is a refurbed type unit I got from the Acer Direct.
\r\n
\r\n
\r\n
\r\n\r\n\r\n My Kindle 2\r\n\r\n
\r\n
This kindle was a birthday present from Rachel, last year. She knows me so well :)Its loaded with a load of ebooks from the great folks at O\'reilly.The case for this was from Tesco
\r\n
\r\n
\r\n
\r\n\r\n\r\n My Car-pod ipod\r\n\r\n
\r\n
When I upgraded cars the biggest disappointment for me was that going from a Kia Cee\'d , where I could plug in USB keys with pod-casts on - I now no longer had a USB port in my SEAT. Rachel bought this for me from CEX. I\'ve replaced the firmware with rockbox.
\r\n
\r\n
\r\n
\r\n\r\n\r\n My newest iPod\r\n\r\n
\r\n
My newest iPod - this used to belong to my Rachel, but the screen has started to go - She looked at getting it repaired - pricey as it is out of the warranty period - so she got herself a new one (cue a long process of me transferring her songs to the new iPod :() and I acquired her old one. I have replaced the Apple firmware with rockbox, and it works great under Linux.
\r\n
\r\n
\r\n
\r\n\r\n\r\n My 2GB USB Key\r\n\r\n
\r\n
This key contains nothing (at the moment) apart from a design for a leaving cake (Keep calm and Google it) and a file called ldlinux.sys, left over from the previous contents.\r\n\r\n\r\n Google cake\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n My Conference Folio\r\n\r\n
\r\n
This is a pleather folio I picked up ages ago from I know now where - probably before Opal Telecoms was bought by TalkTalk. Currently the old web address (www.opal.co.uk) seems to redirect to opal-solutions.com which seems to redirect to TalkTalk, only it actually doesn\'t work.
\r\n
\r\n
\r\n
\r\n\r\n\r\n I keep an Oxford pad (i like the paper) in here.\r\n\r\n
My Microsoft mouse was missing from my bag, as I had been using it with my Raspberry Pi - but it\'s like this.
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n',185,23,1,'CC-BY-SA','backpack,Acer Aspire,Kindle,iPod,Rockbox ',0,2402,1),
(1109,'2012-11-01','Astricon 2012 - Virtues of the Open Source Telephony Platform',3037,'A conversation recorded at Astricon','
\r\n\r\nHost - sunzofman1 -> https://bkaeg.org/blog\r\nGuests - Randy Resnick, Allison Smith, Eric Ostenberg, Kevin Bushong\r\n
\r\n
\r\nRandy discusses the history of the VUC (VoIP Users Conference)-> https://vuc.me\r\nEarly Talkshoe days (RIP Talkshoe), pre-dates mumble servers.\r\nAllison (voice of Asterisk) explains how she got involved with the telephony and asterisk in general.\r\nShe graciously authenticates herself with a genuine echo test ;-) \r\nEric and Kevin wax poetic about their early experiences with telcos and telephony.\r\nEveryone talks about some of the useful features and applications within Asterisk.\r\n
\r\n\r\n
\r\n
DISA\r\n
\r\n
chan_dahdi\r\n
\r\n
SIP\r\n
\r\n
g722 codec\r\n\r\nWe later get into what we believe asterisk will become in the future.\r\n\r\n
\r\n
Supplement GSM networks\r\n
\r\n
Automobile telematics (sunzofman1 has a special place in his heart for telematics)\r\n\r\nHost encourages everyone to contribute a HPR show! \r\n
\r\n
',158,54,1,'CC-BY-SA','Astricon,Asterisk,VOIP ',0,2359,1),
(1110,'2012-11-02','The Doctor Who Restoration Team',469,'The restoration of old Doctor Who episodes','
\r\nIn this episode I talk about the team of people behind the restoration of old Doctor Who episodes and some of the techniques used to make 40 year old telly look as good as new.\r\n
Apologies again to BuyerBrown for the show mixup.\r\n
\r\n
FOSDEM - HPR/Podcast table
\r\n
\r\nIf anyone is going to FOSDEM (https://fosdem.org/2013/ and would be interested in covering a booth, please get in touch with admin at hpr \r\nThis also counts for other podcasters who want to share a table.\r\n
\r\n
Reshaping HPR
\r\n
\r\nThere has been a lot of activity on the mail list this month about changes to the scheduling rules and about the upload formats. \r\n
\r\nAs we didn\'t have shows to fill the feed, we introduced other Non-HPR exclusive content to fill the gaps. \r\nAs contributions increased this resulted in a long delay in getting the HPR exclusive content out. \r\nThe rest can be read via manually created mail archive https://hackerpublicradio.org/archive/hpr-at-hackerpublicradio.org_2012-10-archive.pdf\r\n
\r\n
\r\nThere is also a discussion about changing the upload to FLAC only\r\n
\r\n
Dev News
\r\n
\r\nThe cpanel website is giving problems and Josh is working to get them fixed. \r\n
\r\n
mordancy pointed out that we didn\'t have a full feed for the ogg and spx. So after thinking about it for too long these have also been added.\r\n
\r\n
\r\nWe made some clean up to the website so please have a look around and report anything out of the ordinary.\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2439,1),
+(1111,'2012-11-05','HPR Community News October 2012',7392,'HPR Community News October 2012','\r\n
Apologies again to BuyerBrown for the show mixup.\r\n
\r\n
FOSDEM - HPR/Podcast table
\r\n
\r\nIf anyone is going to FOSDEM (https://fosdem.org/2013/ and would be interested in covering a booth, please get in touch with admin at hpr \r\nThis also counts for other podcasters who want to share a table.\r\n
\r\n
Reshaping HPR
\r\n
\r\nThere has been a lot of activity on the mail list this month about changes to the scheduling rules and about the upload formats. \r\n
\r\nAs we didn\'t have shows to fill the feed, we introduced other Non-HPR exclusive content to fill the gaps. \r\nAs contributions increased this resulted in a long delay in getting the HPR exclusive content out. \r\nThe rest can be read via manually created mail archive https://hackerpublicradio.org/archive/hpr-at-hackerpublicradio.org_2012-10-archive.pdf\r\n
\r\n
\r\nThere is also a discussion about changing the upload to FLAC only\r\n
\r\n
Dev News
\r\n
\r\nThe cpanel website is giving problems and Josh is working to get them fixed. \r\n
\r\n
mordancy pointed out that we didn\'t have a full feed for the ogg and spx. So after thinking about it for too long these have also been added.\r\n
\r\n
\r\nWe made some clean up to the website so please have a look around and report anything out of the ordinary.\r\n
\r\nThe split command is used to split up a file into smaller files. For example, if you need to transfer a 3GB file but are restricted in storage space of the transfer to 500 MB you can split the 3GB file up into about 7 smaller files each 500MB or less in size. Once the files are transferred restoring them is done using the cat command and directing the output of each file back into the master file: \r\n \r\nsplit -b500M some3GBfile\r\n\r\n
\r\n
\r\nPlease visit his site for more splitty goodness
I recently discovered apt shell\r\n(aptsh), a psuedo shell which gives users of distributions which use\r\napt for package management quick access to the functionality of\r\napt-get. You should find aptsh in the repositories of Debian based\r\ndistros. Once installed, you can launch \'aptsh\' as root from the\r\ncommand prompt (i.e. \'sudo aptsh\').
\r\n
\r\n
\r\n
\r\nOne of the drawbacks of installing software from the terminal is that\r\nsometimes you don\'t know the exact name of the package you want to\r\ninstall. From the aptsh> prompt, \'ls\' plus a search string will\r\nshow all the packages that have that string in their names. You can\r\ntype \'install\' plus a partial package name and use TAB completion to\r\nfinish the instruction. The function of the \'update\' and \'upgrade\'\r\ncommands are self explanatory, unfortunately, you can\'t string them\r\ntogether on the same line like you can in bash:
Instead, you use the backtick [ ` ] key\r\nto put aptsh into queue mode. In queue mode, you can enter commands\r\none by one to be launched in sequence at a later time. To bring your\r\nsystem up to date, you could run:
\r\n
\r\n
\r\n
aptsh> ` \r\n
\r\n
* aptsh> update \r\n
\r\n
* aptsh> upgrade \r\n
\r\n
* aptsh> ` \r\n
\r\n
aptsh> queue-commit-say yes \r\n
\r\n
\r\n
\r\n
Backtick toggles queue entry, and\r\nqueue-commit runs the queue. “queue-commit-say y” tells aptsh to\r\nanswer in the affirmative to any queries from the commands executed\r\nin the queue in much the same way “apt-get -y safe-upgrade”\r\nconfirms software updates without user interaction. Apt shell is\r\ncapable of other apt related tasks, but I think I\'ve covered the most\r\nuseful ones.
\r\n
\r\n
\r\n
The trouble with running aptsh is that\r\nunless you start it in a terminal with the computer and leave it\r\nrunning all day (as opposed to opening it as a new shell within you\r\nterminal every time you want to update or install), despite the\r\nconvienience of package name search and TAB completion, it really\r\nwon\'t save you any keystrokes. With that in mind, I started looking\r\nfor ways to have the apt shell available at a keystroke (we will\r\nleave the wisdom of leaving a shell open with a subset of root\r\nprivileges for another day). I had guake installed, but rarely used\r\nit because I usually have multiple terminal tabs open since I am\r\nlogged into my server remotely. [Actually, I had forgotten guake\r\nsupports tabbed terminals quite well. You can open a new tab with\r\n<Shift><Ctrl>T and switch between terminal tabs by\r\n<Ctrl><PgUp> and <Ctrl><PgDn> or clicking\r\nbuttons that appear at the bottom of the guake window. I had how,\r\nforgotten this until doing further research on this story. Since\r\nthis revelation ruins my story, we will forget about tabbed terminal\r\nsupport in guake and not mention it again.]
\r\n
\r\n
\r\n
I am also going to assume everyone is\r\nfamiliar with guake. If not, suffice it to say guake is a terminal\r\nthat pops down in the top third of the screen when you hit a hotkey,\r\n<F12> being the default. It returns to the background when you\r\npress <F12> again or click the lower part of the desktop. It\r\nis patterned after the command shell in the game Quake that let you\r\ninput diagnostic and cheat codes, hence the name. Since I wasn\'t\r\nusing guake as a terminal anyway, I wanted to see if I could make it\r\nrun apt shell by default. I found you can access guake\'s graphical\r\nconfiguration manager by right clicking inside the open terminal and\r\nselecting preferences. \r\n
\r\n
\r\n
\r\n
On the first preferences tab, I found\r\n“command interpreter”, but since aptsh is only a pseudo shell, it\r\nisn\'t found in the dropdown list. However, one option was “screen”,\r\nwhich would give me a way to run multiple terminals that I thought\r\nguake lacked. Next, I had to look up how to configure screen. I\r\nfigured there must be a way to make screen run aptsh in one session\r\nby default, and I found it. In the show notes I\'ve included my\r\n.screenrc file from my home folder, which I make with the help of\r\nthis article from the online Red Hat Magazine: \r\n
The first two lines set up the screen\r\nstatus line, the first puts it at the bottom of the terminal, the\r\nsecond sets up the status line to display the hostname and date, and\r\nan indicator that highlights which screen windows you are looking at.\r\n The # Default screens section below sets up sessions screen opens by\r\ndefault. The first line opens up a regular terminal named “shell1”\r\nand assigns it to session zero. The second opens a window called\r\n“apt-shell” (this is how it\'s identified on the status line) and\r\nlaunches apt shell. The last two log me into my server (host name\r\naliasing made possible by configuring my homefolder/.ssh/config ,\r\nthanks Ken Fallon) and my laptop running Fedora respectively. I\r\nstill have to cycle through your screen windows and type in my\r\npasswords for sudo and ssh. The configuration could be set up to\r\nlaunch any bash command or script by default. The cited article\r\ndoesn\'t include any more configuration tips, but I\'m certain there\r\nare ways to set up other options, such as split windows by default. \r\n
\r\n
\r\n
\r\n
Since I also run screen on my remote\r\nconnection to my server, I have to remember the command prefix is\r\n<Crtl>a,a. Ergo, if I want to move to the next window in the\r\nscreen session (running under guake) on the local PC, the command is\r\n<Ctrl>a, then n. To go to the next screen window in the screen\r\nsession on my server, running inside another screen session on my\r\nlocal PC, it\'s <Ctrl>a,a,n. \r\n
\r\n
\r\n
\r\n
So, that\'s how I learned to run apt\r\nshell inside screen inside guake. I can be contacted at\r\nFiftyOneFifty@linuxbasement.com\r\nor by using the contact form on TheBigRedSwitch.DrupalGardens.Com
',131,0,1,'CC-BY-SA','aptsh,screen,guake ',0,2519,1),
(1114,'2012-11-08','DudmanoviPodcast Episode 7 - A geeks Journey to nature',3700,'DudeMan\'s Journey, part 7','
Feature
\r\n
10 years compressed into perhaps an hour, how an English computer programmer ended up owning cows/horses/pigs/chickens and speaking Czech ? And after all this time, is still into tech, but is perhaps a little more discerning. What started it all Free-And-Opensource, YES
\r\n
Updates
\r\n
\r\n
Got locked out of wordpress blog,
\r\n
Still waiting for the new cow, hasn’t been delivered yet.
\r\n
Work continues to fix the house, been making some brick arches in an old chimney, first one fell down, but I rushed removing the support and then poked it to much at the edge, 2nd one looks good
\r\n
Wife had a bit of a panic this week, for 10 seconds
\r\n
The Guinea pig is hard to catch, Mr’s BB, we’ll catch him.
\r\n
Understanding derived distros Debian and Ubuntu and its derivatives, wishing to make an informed choice.
\r\n
\r\n
Links mentioned
\r\n
The place I stayed at for 4/6 months and had a great experience, learnt alot falconblanco.com
\r\n',158,54,1,'CC-BY-SA','Dudmanovi podcast ',0,2516,1),
@@ -17424,7 +17539,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1116,'2012-11-12','Interview with Richard Stallman',5272,'Interview with Richard Stallman','
\r\nHoly cow! I just interviewed RMS! Check it out.\r\n
\r\n
\r\nI tried to conduct a friendly interview with Richard here. Every time I\'ve heard him interviewed before, it\'s been pretty hostile, and I didn\'t want that. That doesn\'t mean that I only asked him softball questions, but I didn\'t get in his face about anything, and I gave him the time he needed to explain his answers fully. I hope I did a good job of making Mr. Stallman feel welcome at Hacker Public radio, and I hope the interview is as enjoyable to listen to as it was to record. His views on Free Software are pretty well known, so I tried to cover some things that I\'ve never heard Richard\'s opinoins on as well. I KNOW... I missed some pretty obvious followup questions. I realized most of them while editing. I\'m sorry. The good news is that RMS is pretty accessable, and you can probably get him to do a followup interview that we\'ll publish right here on hackerpublicradio.org . \r\n
\r\nI want to thank the following people who helped in the production of this episode:\r\nRichard for the interview itself. It was a real pleasure. I hope we can do it again sometime.\r\nMartin Dluhos, Richard\'s assistant, for setting up mumble on an FSF computer, and handeling the scheduling, etc... \r\nirc.freenode.net #oggcastplanet for all of the great questions and inspiration. You guys rock (as always)! I wish I had thought to write down who each question belonged to. Sorry about that.\r\nDoor-to-door-geek, and the Linux Basix podcast for the use of their mumble server.\r\nNeil Dudeman and the other guys who listened live for the support and some more great questions.\r\nBroam (a.k.a. Brian, NOT Bryan with a why) for being a good friend, and trying to get home in time to co-host. Happy Birthday, buddy.\r\n
\r\n
\r\nAdditional media used in this episode:\r\n
\r\n\r\n
\r\n
MooGNU by the anonymous posters on the 4chan technology image board /g/ is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.\r\n
',128,78,1,'CC-BY-SA','interview,Richard Stallman ',0,3667,1),
(1117,'2012-11-13','The Wayback Machine-SDF.org',1191,'Theru, Navigium, and NYbill talk about joining an old school Unix network, SDF','Theru, Navigium, and NYbill talk about joining an old school Unix network, SDF.\r\n \r\nhttps://sdf.org/ \r\ngopher://sdf.org/0/users/irl/blog/2012-08-22-mosh-in-a-lift.md',109,0,1,'CC-BY-SA','sdf.org,Unix,Gopher ',0,2529,1),
(1118,'2012-11-14','My First Brush With FLOSS: Doom ',386,'The open sourcing of the game engine behind Doom and its legacy','
\r\nNB: Normal Priority. Not intended as a series, I just liked the pun! (Perhaps others could use the \"brush with Floss\" title for other subjects.)\r\n
\r\n
\r\nShow Notes:\r\n
\r\n
\r\nIn this episode I talk about the open sourcing of the game engine behind Doom and it\'s legacy.\r\n
\r\nThe music was by Tyler \"Picklehammer\" Pantella for the Freedoom project.\r\n
',191,0,1,'CC-BY-SA','FLOSS,Doom,Freedoom ',0,2323,1),
-(1119,'2012-11-15','Spread the Word',509,'Inspirational stories told on the road','
Inspirational stories told on the road
\r\n\r\n
A few months ago I went on a longer trip, alone in my car. As many podcasters before me, I decided to record an episode. An episode I almost immediately forgot about. Fast forward to a couple of weeks ago, when I once again found the recording. It sounded quite bad, but after some sound wizardry I think it can pass for an HPR show. The content is where it\'s at, after all.
\r\n\r\n
Referenses
\r\n\r\n
\r\n
\r\n Examples of other podcasters who do it in the car:\r\n
\r\n',192,0,1,'CC-BY-SA','FLOSS,Creative Commons,Cory Doctorow,Science Fiction ',0,2338,1),
+(1119,'2012-11-15','Spread the Word',509,'Inspirational stories told on the road','
Inspirational stories told on the road
\r\n\r\n
A few months ago I went on a longer trip, alone in my car. As many podcasters before me, I decided to record an episode. An episode I almost immediately forgot about. Fast forward to a couple of weeks ago, when I once again found the recording. It sounded quite bad, but after some sound wizardry I think it can pass for an HPR show. The content is where it\'s at, after all.
\r\n\r\n
Referenses
\r\n\r\n
\r\n
\r\n Examples of other podcasters who do it in the car:\r\n
\r\n',192,0,1,'CC-BY-SA','FLOSS,Creative Commons,Cory Doctorow,Science Fiction ',0,2338,1),
(1120,'2012-11-16','Jerome Leclanche from the razor-qt project',2246,'Ken interviews Jerome Leclanche from the Razor-qt project','
The Razor-qt team is proud to release version 0.5.0. It is the culmination of all our efforts since our last release in February of 2012.
\r\n
There have been several improvements and added features for 0.5.0, as noted in the Change Log, but the most noticeable are:
\r\n
\r\n
New Appearance GUI for configuring themes
\r\n
Several new plugins for added functionality
\r\n
Many bug fixes resulting in better performance
\r\n
New Notification daemon
\r\n
\r\n
The Razor-qt team would like to thank its staff of 8 members for all the hard work, and the community as well, for all the support. A list of the Razor-qt development team is available here, on github.
\r\n',30,0,1,'CC-BY-SA','Qt,desktop environment,Razor-qt ',0,2403,1),
(1121,'2012-11-19','Klaatu continues his Networking Basics series with a SAMBA howto.',2054,'A SAMBA howto from klaatu','Klaatu continues his Networking Basics series with a SAMBA howto.\r\n \r\nhttps://samba.org',78,61,0,'CC-BY-SA','networking,SMB,CIFS,SAMBA,file server,NFS,AFP ',0,2523,1),
(1122,'2012-11-20','LiTS 018: ln',1517,'Make links between files with the ln command','
\r\nLinux In The Shell aims to explore the use of many commands a user can run in the Bash Shell. Tutorials include a write up with examples, an audio component about the write up, and a video component to demonstrate the usage of the command. \r\nThe website is https://www.linuxintheshell.com/\r\n
\r\n
\r\nToday it\'s the turn of the ln command. The rest of the shownotes and video can be found at \r\nhttps://www.linuxintheshell.com/2012/11/20/episode-018-ln-command/\r\n\r\nThe ln command is used to create a link between an existing file and a destination, typically newly created, file. Some operating systems may all this creating a short-cut. Recall that Linux treats everything like a file, thus you can create links to files, directories, or even devices. \r\n \r\nThere are two types of links: \r\n \r\nHard Links: A hard like is a connection where two files share the same inode. \r\nSymbolic Links: A symbolic link is a special file that refers to a different file.\r\n\r\n
\r\n',7,67,1,'CC-BY-SA','ln,hard link,soft link',0,2787,1),
@@ -17495,14 +17610,14 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1174,'2013-01-31','Low Tech Fab (PCB Etching)',1142,'NYbill makes his own copper PCB boards at home','
\nDue to an error in the encoding (ken\'s fault) the episode is been re-transmitted - sorry all\n
\n
\nI this episode NYbill talks about etching copper PCB boards at home.. \n
\nAnyone driving through the Capital District of New York, this old, locally owned, electronics shop is still kicking:\nhttps://www.trojanelectronics.com/\n
\n
\nA few things I forgot to mention in the episode. The muriatic acid/hydrogen peroxide etching solution can be used multiple times. Store it in plastic or glass containers. The tinting fluid can also be reused. But, it will need to be agitated and or slightly heated (place container in a bath of hot water) before reuse as the mix will settle out.\n
',235,103,1,'CC-BY-SA','Electronics,PCB,Etching,DIY',1,1570,1),
(1175,'2013-02-01','how to start irssi in screen after reboot',285,'Using cron to start screen after a reboot and run irssi in it','
\r\nIn this episode Lord Drachenblut shows us how to start irssi in screen after reboot.\r\n
\r\n-d -m Start screen in \"detached\" mode. This creates a new session but doesn\'t attach to it. This is useful for system startup scripts. \r\n -U Run screen in UTF-8 mode. This option tells screen that your terminal sends and understands UTF-8 encoded characters. It also sets the\r\n default encoding for new windows to `utf8\'. \r\n -S sessionname\r\n When creating a new session, this option can be used to specify a meaningful name for the session. This name identifies the session for\r\n \"screen -list\" and \"screen -r\" actions. It substitutes the default [tty.host] suffix.\r\n\r\n\r\n \r\nhttps://www.gnu.org/software/screen/ \r\nhttps://www.irssi.org/ \r\nhttps://en.wikipedia.org/wiki/Cron\r\n
',24,0,1,'CC-BY-SA','cron,screen,crontab,reboot',0,1999,1),
(1176,'2013-02-04','Intro to editing the Open Street Map ',3765,'The OpenStreetMap editor and how to use it','
\r\nI\'m going to call this an experimental episode. It\'s a tutorial on eding the Open Street Map at https://www.openstreetmap.org/ . By all rights, this should have been done as a screen cast, but since I have no interest in doing a screen cast, we\'re going to try something different. For this episode to work, I\'ll need your cooperation, and for it to make any sence to you, you\'ll need to be signed into https://www.openstreetmap.org/ . So go ahead and create an account over there (or begin the password reset process) while you\'re downloading this audio file. You\'re going to need an account if you want to edit anyway, so I\'m not asking for anything you wouldn\'t be doing anyway. You may find it helpful to have a second tab open to https://wiki.openstreetmap.org/wiki/Map_Features . It won\'t be much help while listening to the episode, but it is very helpful while editing in general. \r\n
\r\n
\r\nSome people enjoy finding mistakes. For their enjoyment I have included a few.\r\n
',128,0,1,'CC-BY-SA','OpenStreetMap,OSM,Potlatch',0,1773,1),
-(1177,'2013-02-05','HPR Community News Dec 12/Jan 13',4102,'HPR Community News Dec 12/Jan 13','
\r\nDude-Man for missing that he was a new podcaster. \r\nThanks to Emilien for the patch to the readme \r\nThanks to Mike Hingley, and Dave for the heads up about the problems with the website \r\nBig thanks to everyone who supported the New Year Show. \r\nApologies to everyone that was offended by my posts to the mail lists\r\n
\r\n\r\n
Show Review
\r\n
\r\n
\r\n
id\r\n
title\r\n
host\r\n
\r\n\r\n \r\n
1132
\r\n
LiTS 019: Kill the worms!
\r\n
Dann
\r\n
\r\n \r\n
1133
\r\n
How I got in to Linux
\r\n
Dick Thomas
\r\n
\r\n \r\n
1134
\r\n
Scannerdrome Ep. 1 - Lola Lariscy
\r\n
Various Hosts
\r\n
\r\n \r\n
1135
\r\n
TGTM Newscast for 12/01/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1136
\r\n
01 Introduction to Office software
\r\n
Ahuka
\r\n
\r\n \r\n
1137
\r\n
Open Street Maps
\r\n
NewAgeTechnoHippie
\r\n
\r\n \r\n
1138
\r\n
Programming languages 2 - Python
\r\n
garjola
\r\n
\r\n \r\n
1139
\r\n
The missing episode
\r\n
MrGadgets
\r\n
\r\n \r\n
1140
\r\n
TGTM Newscast for 12/9/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1141
\r\n
mumble client intro
\r\n
Delwin
\r\n
\r\n \r\n
1142
\r\n
LiTS 020: pgrep and pkill
\r\n
Dann
\r\n
\r\n \r\n
1143
\r\n
The N Days of Christmas? Intro to Recreational Math
\r\n
Charles in NJ
\r\n
\r\n \r\n
1144
\r\n
Who Owns Your Files
\r\n
Ahuka
\r\n
\r\n \r\n
1145
\r\n
TGTM Newscast for 12/20/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1146
\r\n
Wireshark-1
\r\n
NewAgeTechnoHippie
\r\n
\r\n \r\n
1147
\r\n
Eulogy for the Netbook
\r\n
AukonDK
\r\n
\r\n \r\n
1148
\r\n
Development Discussion
\r\n
Dave Morriss
\r\n
\r\n \r\n
1149
\r\n
02 LibreOffice Writer Default Template
\r\n
Ahuka
\r\n
\r\n \r\n
1150
\r\n
Hacking Karma And Reincarnation With The Forgiveness Discipline
\r\n
deepgeek
\r\n
\r\n \r\n
1151
\r\n
Hacker Public Radio New Year Show Part 1
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1152
\r\n
Hacker Public Radio New Year Show Part 2
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1153
\r\n
Hacker Public Radio New Year Show Part 3
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1154
\r\n
Hacker Public Radio New Year Show Part 4
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1155
\r\n
Hacker Public Radio New Year Show Part 5
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1156
\r\n
Hacker Public Radio New Year Show Part 6
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1157
\r\n
Hacker Public Radio New Year Show Part 7
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1158
\r\n
Hacker Public Radio New Year Show Part 8
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1159
\r\n
Food - Health - Nutrially Densce food
\r\n
Dude-man
\r\n
\r\n \r\n
1160
\r\n
TGTM Newscast for 1/8/2013 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n
1161
\r\n
PAM Two Factor Auth SSH
\r\n
Beto
\r\n
\r\n \r\n
1162
\r\n
LiTS 021 - killall
\r\n
Dann
\r\n
\r\n \r\n
1163
\r\n
Installing PYWWS on a Raspberry Pi
\r\n
Peter64
\r\n
\r\n \r\n
1164
\r\n
About git
\r\n
johanv
\r\n
\r\n \r\n
1165
\r\n
TGTM Newscast for 1/17/2013
\r\n
deepgeek
\r\n
\r\n \r\n
1166
\r\n
Airtime Radio Automation
\r\n
AukonDK
\r\n
\r\n \r\n
1167
\r\n
Kernels in the Boot, or What to Do When Your /boot folder Fills Up
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1168
\r\n
How I started my local Linux User Group
\r\n
Emilien Klein
\r\n
\r\n \r\n
1169
\r\n
Autotools
\r\n
Nido Media
\r\n
\r\n \r\n
1170
\r\n
TGTM Newscast for 1/20/2013
\r\n
deepgeek
\r\n
\r\n \r\n
1171
\r\n
Tech and Loathing 13 - Remote Desktop Protocols
\r\n
K5TUX
\r\n
\r\n \r\n
1172
\r\n
LiTS 022: Sort
\r\n
Dann
\r\n
\r\n \r\n
1173
\r\n
Sonar GNU/linux
\r\n
Jonathan Nadeau
\r\n
\r\n \r\n
1174
\r\n
Low Tech Fab (PCB Etching)
\r\n
NYbill
\r\n
\r\n \r\n
1175
\r\n
how to start irssi in screen after reboot
\r\n
Lord Drachenblut
\r\n
\r\n \r\n\r\n
\r\n\r\n
Events
\r\n
\r\n
https://www.socallinuxexpo.org/scale11x Scale11x. The Eleventh Annual Southern California Linux Expo February 22-24, 2013 Hilton Los Angeles International Airport
Setup for the New Year Show - there is no cli client for mumble or for piping to ice-cast
\r\n
DeepGeek asks for help in a new Segment about corporate use for web proxies
\r\n
cobra2 discusses RSS torrents
\r\n
Problems playing episodes ? Always mail admin@hackerpublicradio.org
\r\n
KT4KB_Jon Lambdin [Hpr] CQ CQ CQ de KT4KB - Let\'s do a podcast Via Amateur Radio
\r\n
Aaron Swartz - passed away
\r\n
Stickers!
\r\n
Nido Media HPR Saturday Sessions (Digest is a once a day thing)
\r\n
Reassign the shows to the TGTM News Team
\r\n
Changes to the owner of TGTM Tech News Show
\r\n
Should we add the intro/outro - yes if you want to
\r\n
klaatu https://radio.pittsburgharts.org:8000, dosman is running a part15 radio station at my house. While most people agree with the explicit tag, Ken strongly disagreed with the suggestion.
\r\n
\r\n\r\n
Reminder of how HPR is governed
\r\n
\r\nWhile Stankdwag pays for the hosting, HPR is run by the community, not the Admins! That means what the community decides is the direction we take it. \r\n
\r\n\r\n
Filtering \"Clean\" shows
\r\n
\r\nThe necessary changes to accommodate a per show explicit field has been made. \r\nTo get the filtered feeds, please append \'explicit=0\' to the end of any of the fields. \r\nThis will trigger the field \'rss/channel/item/itunes:explicit=\"Clean\"\'\r\n\r\n\r\nhttps://hackerpublicradio.org/hpr_mp3_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_ogg_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_spx_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_total_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_total_ogg_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_total_spx_rss.php?explicit=0\r\n\r\nThis will leave the <itunes:explicit> on the <channel> as \"Yes\" but will\r\ntoggle the <item> to <itunes:explicit>clean</itunes:explicit>.\r\nCurrently the only shows flagged as \'explicit=0\' are the ones from\r\nklaatu. For those wishing to reclassify your shows please review the\r\nattached guidelines from the FCC and follow the link to Apples website\r\nhttps://www.apple.com/itunes/podcasts/specs.html. Apple has a policy of\r\nbanning incorrectly flagged shows, so we could loose approximately 7 -\r\n20 % of HPR listeners in one fell swoop if you classify your show\r\nincorrectly.\r\n\r\nPlease alert me or admin@hackerpublicradio.org if anything strange\r\nstarts to happen.\r\n\r\nKen (as HPR Admin)\r\n
\r\n\r\n
Website Changes
\r\n
\r\n
Website Updates, RSS Feeds, Cal page: new list, new post script, explains how the queuing is done. Still need to update the contribute, readme and intro outro.
\r\n
HPR Transcode script - Help needed by one and all
\r\n
Cannot get the mailing list to archive
\r\n
\r\n\r\n
Sonar Fundraiser
\r\n
\r\nThe Sonar Project is to build a Linux operating system focused on accessibility. There are 1 billion people in the world with some type of disability. Jonathan Nadeau is a blind user and has already made the Sonar GNU/Linux distribution completely accessible to blind people. Now he needs our help to take it to the next level. \r\nPimp and pay https://www.indiegogo.com/sonar\r\n
\r\n\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,1743,1),
+(1177,'2013-02-05','HPR Community News Dec 12/Jan 13',4102,'HPR Community News Dec 12/Jan 13','
\r\nDude-Man for missing that he was a new podcaster. \r\nThanks to Emilien for the patch to the readme \r\nThanks to Mike Hingley, and Dave for the heads up about the problems with the website \r\nBig thanks to everyone who supported the New Year Show. \r\nApologies to everyone that was offended by my posts to the mail lists\r\n
\r\n\r\n
Show Review
\r\n
\r\n
\r\n
id\r\n
title\r\n
host\r\n
\r\n\r\n \r\n
1132
\r\n
LiTS 019: Kill the worms!
\r\n
Dann
\r\n
\r\n \r\n
1133
\r\n
How I got in to Linux
\r\n
Dick Thomas
\r\n
\r\n \r\n
1134
\r\n
Scannerdrome Ep. 1 - Lola Lariscy
\r\n
Various Hosts
\r\n
\r\n \r\n
1135
\r\n
TGTM Newscast for 12/01/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1136
\r\n
01 Introduction to Office software
\r\n
Ahuka
\r\n
\r\n \r\n
1137
\r\n
Open Street Maps
\r\n
NewAgeTechnoHippie
\r\n
\r\n \r\n
1138
\r\n
Programming languages 2 - Python
\r\n
garjola
\r\n
\r\n \r\n
1139
\r\n
The missing episode
\r\n
MrGadgets
\r\n
\r\n \r\n
1140
\r\n
TGTM Newscast for 12/9/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1141
\r\n
mumble client intro
\r\n
Delwin
\r\n
\r\n \r\n
1142
\r\n
LiTS 020: pgrep and pkill
\r\n
Dann
\r\n
\r\n \r\n
1143
\r\n
The N Days of Christmas? Intro to Recreational Math
\r\n
Charles in NJ
\r\n
\r\n \r\n
1144
\r\n
Who Owns Your Files
\r\n
Ahuka
\r\n
\r\n \r\n
1145
\r\n
TGTM Newscast for 12/20/2012
\r\n
deepgeek
\r\n
\r\n \r\n
1146
\r\n
Wireshark-1
\r\n
NewAgeTechnoHippie
\r\n
\r\n \r\n
1147
\r\n
Eulogy for the Netbook
\r\n
AukonDK
\r\n
\r\n \r\n
1148
\r\n
Development Discussion
\r\n
Dave Morriss
\r\n
\r\n \r\n
1149
\r\n
02 LibreOffice Writer Default Template
\r\n
Ahuka
\r\n
\r\n \r\n
1150
\r\n
Hacking Karma And Reincarnation With The Forgiveness Discipline
\r\n
deepgeek
\r\n
\r\n \r\n
1151
\r\n
Hacker Public Radio New Year Show Part 1
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1152
\r\n
Hacker Public Radio New Year Show Part 2
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1153
\r\n
Hacker Public Radio New Year Show Part 3
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1154
\r\n
Hacker Public Radio New Year Show Part 4
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1155
\r\n
Hacker Public Radio New Year Show Part 5
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1156
\r\n
Hacker Public Radio New Year Show Part 6
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1157
\r\n
Hacker Public Radio New Year Show Part 7
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1158
\r\n
Hacker Public Radio New Year Show Part 8
\r\n
Various Creative Commons Works
\r\n
\r\n \r\n
1159
\r\n
Food - Health - Nutrially Densce food
\r\n
Dude-man
\r\n
\r\n \r\n
1160
\r\n
TGTM Newscast for 1/8/2013 DeepGeek
\r\n
deepgeek
\r\n
\r\n \r\n
1161
\r\n
PAM Two Factor Auth SSH
\r\n
Beto
\r\n
\r\n \r\n
1162
\r\n
LiTS 021 - killall
\r\n
Dann
\r\n
\r\n \r\n
1163
\r\n
Installing PYWWS on a Raspberry Pi
\r\n
Peter64
\r\n
\r\n \r\n
1164
\r\n
About git
\r\n
johanv
\r\n
\r\n \r\n
1165
\r\n
TGTM Newscast for 1/17/2013
\r\n
deepgeek
\r\n
\r\n \r\n
1166
\r\n
Airtime Radio Automation
\r\n
AukonDK
\r\n
\r\n \r\n
1167
\r\n
Kernels in the Boot, or What to Do When Your /boot folder Fills Up
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1168
\r\n
How I started my local Linux User Group
\r\n
Emilien Klein
\r\n
\r\n \r\n
1169
\r\n
Autotools
\r\n
Nido Media
\r\n
\r\n \r\n
1170
\r\n
TGTM Newscast for 1/20/2013
\r\n
deepgeek
\r\n
\r\n \r\n
1171
\r\n
Tech and Loathing 13 - Remote Desktop Protocols
\r\n
K5TUX
\r\n
\r\n \r\n
1172
\r\n
LiTS 022: Sort
\r\n
Dann
\r\n
\r\n \r\n
1173
\r\n
Sonar GNU/linux
\r\n
Jonathan Nadeau
\r\n
\r\n \r\n
1174
\r\n
Low Tech Fab (PCB Etching)
\r\n
NYbill
\r\n
\r\n \r\n
1175
\r\n
how to start irssi in screen after reboot
\r\n
Lord Drachenblut
\r\n
\r\n \r\n\r\n
\r\n\r\n
Events
\r\n
\r\n
https://www.socallinuxexpo.org/scale11x Scale11x. The Eleventh Annual Southern California Linux Expo February 22-24, 2013 Hilton Los Angeles International Airport
Setup for the New Year Show - there is no cli client for mumble or for piping to ice-cast
\r\n
DeepGeek asks for help in a new Segment about corporate use for web proxies
\r\n
cobra2 discusses RSS torrents
\r\n
Problems playing episodes ? Always mail admin@hackerpublicradio.org
\r\n
KT4KB_Jon Lambdin [Hpr] CQ CQ CQ de KT4KB - Let\'s do a podcast Via Amateur Radio
\r\n
Aaron Swartz - passed away
\r\n
Stickers!
\r\n
Nido Media HPR Saturday Sessions (Digest is a once a day thing)
\r\n
Reassign the shows to the TGTM News Team
\r\n
Changes to the owner of TGTM Tech News Show
\r\n
Should we add the intro/outro - yes if you want to
\r\n
klaatu https://radio.pittsburgharts.org:8000, dosman is running a part15 radio station at my house. While most people agree with the explicit tag, Ken strongly disagreed with the suggestion.
\r\n
\r\n\r\n
Reminder of how HPR is governed
\r\n
\r\nWhile Stankdwag pays for the hosting, HPR is run by the community, not the Admins! That means what the community decides is the direction we take it. \r\n
\r\n\r\n
Filtering \"Clean\" shows
\r\n
\r\nThe necessary changes to accommodate a per show explicit field has been made. \r\nTo get the filtered feeds, please append \'explicit=0\' to the end of any of the fields. \r\nThis will trigger the field \'rss/channel/item/itunes:explicit=\"Clean\"\'\r\n\r\n\r\nhttps://hackerpublicradio.org/hpr_mp3_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_ogg_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_spx_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_total_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_total_ogg_rss.php?explicit=0\r\nhttps://hackerpublicradio.org/hpr_total_spx_rss.php?explicit=0\r\n\r\nThis will leave the <itunes:explicit> on the <channel> as \"Yes\" but will\r\ntoggle the <item> to <itunes:explicit>clean</itunes:explicit>.\r\nCurrently the only shows flagged as \'explicit=0\' are the ones from\r\nklaatu. For those wishing to reclassify your shows please review the\r\nattached guidelines from the FCC and follow the link to Apples website\r\nhttps://www.apple.com/itunes/podcasts/specs.html. Apple has a policy of\r\nbanning incorrectly flagged shows, so we could loose approximately 7 -\r\n20 % of HPR listeners in one fell swoop if you classify your show\r\nincorrectly.\r\n\r\nPlease alert me or admin@hackerpublicradio.org if anything strange\r\nstarts to happen.\r\n\r\nKen (as HPR Admin)\r\n
\r\n\r\n
Website Changes
\r\n
\r\n
Website Updates, RSS Feeds, Cal page: new list, new post script, explains how the queuing is done. Still need to update the contribute, readme and intro outro.
\r\n
HPR Transcode script - Help needed by one and all
\r\n
Cannot get the mailing list to archive
\r\n
\r\n\r\n
Sonar Fundraiser
\r\n
\r\nThe Sonar Project is to build a Linux operating system focused on accessibility. There are 1 billion people in the world with some type of disability. Jonathan Nadeau is a blind user and has already made the Sonar GNU/Linux distribution completely accessible to blind people. Now he needs our help to take it to the next level. \r\nPimp and pay https://www.indiegogo.com/sonar\r\n
\r\n\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,1743,1),
(1178,'2013-02-06','Interviews with Laura Creighton and Armin Rigo',1327,'Seetee interviews Laura Creighton and Armin Rigo','
Creighton and Rigo about PyPy
\r\n\r\n
\"We\'re really really really really fast.\" - Laura Creighton (2011)
\r\n\r\n
Today you will hear two interviews, with Laura Creighton and Armin Rigo. You\'ll get a really unique perspective of Richard Stallman, as well as of the PyPy project. Below you will find links to most of the projects mentioned in the interviews, but first and foremost I would like to recommend you to have a look at Laura\'s keynote interview \"Dialogue with Richard Stallman\" and Armin\'s talk \"PyPy\".
\r\n\r\n',192,78,1,'CC-BY-SA','PyPy',0,1823,1),
(1179,'2013-02-07','Interview with Mark A Davis of TWUUG',3566,'Interview: Mark Davis, head of the Tidewater Unix Users Group','
\r\nFrank Bell interviews Mark Davis, IT Director for Lake Taylor Transistional Care Hospital and head of the Tidewater Unix Users Group (TWUUG), an organization which predates the creation of the Linux kernel.\r\n
\r\n
\r\nMark talks about how his early computer experience and he got started with computers and *nix, the history and development of TWUUG, and the history and architecture of Lake Taylor\'s Linux-based network. He also shares his thoughts about Ubuntu\'s Wayland project and distributed versus centralized computing, as well as a summary his reaction to his new Windows 8 computer.\r\n
\r\n',195,78,1,'CC-BY-SA','TWUUG,X-Windows,Wayland,Slackware,Windows 8',0,1851,1),
(1180,'2013-02-08','TGTM Newscast for 2/6/2013',1087,'A newscast from Talk Geek to Me','
Staffed and produced by the TGTM news team, Editorial Selection by DeepGeek, views of the story\r\nauthors reflect their own opinions and not neccesarily those of TGTM\r\nnews.\r\n
\r\nNews from \"techdirt.com,\" \"thestand.org,\" \"icelandreview.com,\"\r\nand\r\n\"allgov.com\" used\r\nunder arranged\r\npermission.
\r\n
News\r\nfrom \"torrentfreak.com\" and \"eff.org\" used\r\nunder\r\npermission of the Creative Commons\r\nby-attribution license.
\r\n
News from \"democracynow.org\" used under permission of the Creative Commons\r\nby-attribution non-commercial no-derivatives license. \r\n
\r\n
News Sources retain their respective copyrights.
',237,65,1,'CC-BY-SA','newscast,TGTM',0,4125,1),
(1181,'2013-02-11','Mumble Audio Issues',349,'Some advice on avoiding audio issues in Mumble','
\r\nI had a couple of requests for more specific information regarding audio quality in mumble, so here I go through a few of the more common audio issues I\'ve run into with a few tips about what you can try to do about them. These issues are: overdriven audio, quiet audio, distorted audio and choppy audio. \r\n
\r\n
\r\nEve bot (https://frymaster.127001.org/mumble) is also mentioned as an alternative to using the loopback settings within mumble for troubleshooting.\r\n
\r\n
\r\nThanks to Peter64 for his help with generating the choppy audio segment.\r\n
\r\n ',228,0,1,'CC-BY-SA','overdriven audio,quiet audio,distorted audio,choppy audio,opus',0,1751,1),
-(1182,'2013-02-12','LiTS 023: Date',1443,'Print or set the system date and time with the date command','
\r\nSpring is in the air and Valentine\'s day is just around the corner and Dann Sexy Washko tells us all we need to know about dates on his regular Linux In The Shell series.
\r\n
The date command will not only display or let you change the current date and time but is the go-to utility for getting date and time information into scripts. Invoked by itself the date command will output the current system date based upon the rules of the LC_TIME format. The LC_TIME format defines the rules for formatting dates and times. LC_TIME is a subset of locale which defines the overall environment based upon the chosen language and cultural conventions. You can see the current LC value by issuing the locale command. You can see time specific information for your system by issuing:
\r\n',7,67,1,'CC-BY-SA','date',0,2491,1),
+(1182,'2013-02-12','LiTS 023: Date',1443,'Print or set the system date and time with the date command','
\r\nSpring is in the air and Valentine\'s day is just around the corner and Dann Sexy Washko tells us all we need to know about dates on his regular Linux In The Shell series.
\r\n
The date command will not only display or let you change the current date and time but is the go-to utility for getting date and time information into scripts. Invoked by itself the date command will output the current system date based upon the rules of the LC_TIME format. The LC_TIME format defines the rules for formatting dates and times. LC_TIME is a subset of locale which defines the overall environment based upon the chosen language and cultural conventions. You can see the current LC value by issuing the locale command. You can see time specific information for your system by issuing:
',110,0,1,'CC-BY-SA','Doom,WAD files,Vavoom,Valve,Steam',0,1795,1),
-(1184,'2013-02-14','Installing Linux without a monitor',5626,'An audio-only demonstration of installing Sonar GNU/Linux','
\nTwo weeks ago we aired a show about the Sonar Project which is a specialized GNU/Linux distribution to develop and proof accessibility in a modern distribution. This is a test bed and so every single enhancement and discovery will be sent back upstream so that all distributions will be accessible by default.\n
\n
\n\n\nThe Sonar Project show was downloaded a total of 14,219 times so far and yet only 127 people have donated.\n\n\n
\n
\nToday it\'s a case of the blind leading the (simulated) blind as Jonathan Nadeau walks pokey through an install of the Sonar GNU/Linux distribution without a monitor.\n
\n
\nSo listen along and experience what life is like if you are a blind hacker. \nPress PAUSE to hear what it would be like if Jonathan had not done so much work already.\n
',109,0,1,'CC-BY-SA','Accessible Computing Foundation,ACF,Sonar Linux',0,2038,1),
+(1184,'2013-02-14','Installing Linux without a monitor',5626,'An audio-only demonstration of installing Sonar GNU/Linux','
\nTwo weeks ago we aired a show about the Sonar Project which is a specialized GNU/Linux distribution to develop and proof accessibility in a modern distribution. This is a test bed and so every single enhancement and discovery will be sent back upstream so that all distributions will be accessible by default.\n
\n
\n\n\nThe Sonar Project show was downloaded a total of 14,219 times so far and yet only 127 people have donated.\n\n\n
\n
\nToday it\'s a case of the blind leading the (simulated) blind as Jonathan Nadeau walks pokey through an install of the Sonar GNU/Linux distribution without a monitor.\n
\n
\nSo listen along and experience what life is like if you are a blind hacker. \nPress PAUSE to hear what it would be like if Jonathan had not done so much work already.\n
',109,0,1,'CC-BY-SA','Accessible Computing Foundation,ACF,Sonar Linux',0,2038,1),
(1185,'2013-02-15','Shooting the Breeze',2002,'Two HPR hosts having a geeky conversation','
\r\nJezra and NYbill look back on their last episode (https://hackerpublicradio.org/eps.php?id=0923). They review their predictions for 2012. Then go into a bit of what they see happening in the tech world in 2013. Basically, they are just having a geeky conversation. Listen at your own peril! \r\n
',205,0,1,'CC-BY-SA','technical predictions 2013',0,1925,1),
(1186,'2013-02-18','A plea and a Follow up',987,'A plea to donate to the Sonar project and a follow-up to show 1184','
\nIn today\'s show, we hear a plea from David Whitman about why you should join us all and donate to the sonar project. \nThen pokey lets us in on what he did wrong when installing sonar\n
\n',109,0,1,'CC-BY-SA','donation,Sonar Linux,screen reader,Orca',0,1617,1),
(1187,'2013-02-19','I live in GNU/Emacs',689,'A journey through the many capabilities of GNU/Emacs','\r\n\r\n
\r\nI live in GNU/Emacs\r\n===================\r\n\r\n1 Emacs on HPR \r\n===============\r\nKlaatu\'s 3 part series\r\n- ep0852\r\n- ep0856\r\n- ep0861\r\n\r\n2 EmacsWiki \r\n============\r\n- Ultimate source of information for GNU/Emacs\r\n- [https://emacswiki.org/]\r\n\r\n3 Appearance \r\n=============\r\n- no menus nor scroll bars\r\n- black background on a tiling window, full screen (no decorations)\r\n - people often think that I am on the console (no X)\r\n\r\n4 Daemon \r\n=========\r\n- [https://www.emacswiki.org/emacs/EmacsAsDaemon]\r\n- so that clients can connect (org protocol)\r\n- use the same emacs from the consoles\r\n - if x crashes, for instance\r\n\r\n5 Editing code \r\n===============\r\n- c++\r\n- with repls\r\n - lisp/scheme/clojure/elisp (slime and geiser)\r\n - python\r\n - octave\r\n- compilation\r\n- latex\r\n\r\n6 Org \r\n======\r\n- [https://orgmode.org/]\r\n- Note taking\r\n- GTD, agenda, spreadsheet\r\n- Reports, papers, slides, blog\r\n- export to mobile org\r\n\r\n7 Gnus \r\n=======\r\n- [https://www.emacswiki.org/emacs/GnusTutorial]\r\n- Mails\r\n- RSS and mailing lists via gwene\r\n- store links into and open from org-mode\r\n\r\n8 w3m \r\n======\r\n- [https://www.emacswiki.org/emacs/emacs-w3m]\r\n- search and more and more navigation\r\n\r\n9 Conkeror (in/out) \r\n====================\r\n- [https://conkeror.org/]\r\n- only when javascript is required\r\n- org protocol for vzpturing links\r\n- org open link to open pages\r\n\r\n10 ERC for IRC \r\n===============\r\n- [https://www.emacswiki.org/emacs/ERC]\r\n\r\n11 Small utilities \r\n===================\r\n- Info reader\r\n - [https://emacswiki.org/emacs/InfoMode]\r\n- Calendar\r\n - [https://emacswiki.org/emacs/CalendarMode]\r\n- Scratch buffer as calculator\r\n - Evaluating expressions\r\n - [https://emacswiki.org/emacs/EvaluatingExpressions]\r\n- Dired\r\n - [https://emacswiki.org/emacs/DiredMode]\r\n- Docview\r\n - [https://www.emacswiki.org/emacs/DocViewMode]\r\n- Version control\r\n - [https://emacswiki.org/emacs/VersionControl]\r\n
',197,0,1,'CC-BY-SA','GNU/Emacs,orgmode,Gnus,w3m,Conkeror ',0,2014,1),
@@ -17536,7 +17651,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1215,'2013-03-29','Pair Programming',498,'An agile software development technique where two programmers work together at one workstation','
',241,0,0,'CC-BY-SA','\"agile software\",\"pair programming\",\"GNU Screen\",tmux',0,1904,1),
(1219,'2013-04-04','The Care and Feeding of the Flintlock Muzzleloading Rifle',1557,'Russ speaks about a hobby he used to be very involved in','
\r\nIn this the first in a series exploring The Open Systems Interconnection (OSI) model (ISO/IEC 7498-1)\r\n
\r\n
\r\n\r\nOSI model \r\nFrom Wikipedia, the free encyclopedia https://en.wikipedia.org/wiki/OSI_model\r\n\r\n
\r\n
\r\n\r\nThe Open Systems Interconnection (OSI) model (ISO/IEC 7498-1) is a product of the Open Systems Interconnection effort at the International Organization for Standardization. It is a prescription of characterizing and standardizing the functions of a communications system in terms of abstraction layers. Similar communication functions are grouped into logical layers. A layer serves the layer above it and is served by the layer below it.\r\n\r\n
\r\n
\r\n\r\nFor example, a layer that provides error-free communications across a network provides the path needed by applications above it, while it calls the next lower layer to send and receive packets that make up the contents of that path. Two instances at one layer are connected by a horizontal connection on that layer.\r\n\r\n
\r\n
\r\nIn today\'s show Ken starts off with a practical example of Layer One, the The Physical Layer, https://en.wikipedia.org/wiki/Physical_layer. Although we are limited to audio for the purposes of the show, the same techniques could and are used across the light spectrum.\r\n
\r\n',30,83,1,'CC-BY-SA','OSI,ISO/IEC 7498-1,7-layer model',0,6100,1),
-(1217,'2013-04-02','HPR Community News for March 2013',3300,'HPR Community News for March 2013','
Search was removed, Google added, some discussion happened
\r\n
To wordpress or not to wordpress, how to safely accept input from the web
\r\n
FTP Server moved off web server - README has moved
\r\n
Implemented a deny list on HPR
\r\n
Preview upcomming shows for hosts
\r\n
\r\n\r\n
Todo List
\r\n
\r\nAutomate the presentation \r\nSecuring the website \r\nSearch options \r\nIntroduction to HPR video \r\nUpload Form \r\nAdd ATOM Feed \r\nOpus Support \r\nIntroduction of show Tags \r\nEvents Page \r\nTwitter/Identi.CA Feed \r\nUpload to Archive.org \r\nAutomatic tagging of media files \r\nAutomating media upload, identification and transcoding \r\nFixing broken links \r\nFixing broken HTML/Converting to HTML5/CSS3 \r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1807,1),
+(1217,'2013-04-02','HPR Community News for March 2013',3300,'HPR Community News for March 2013','
Search was removed, Google added, some discussion happened
\r\n
To wordpress or not to wordpress, how to safely accept input from the web
\r\n
FTP Server moved off web server - README has moved
\r\n
Implemented a deny list on HPR
\r\n
Preview upcomming shows for hosts
\r\n
\r\n\r\n
Todo List
\r\n
\r\nAutomate the presentation \r\nSecuring the website \r\nSearch options \r\nIntroduction to HPR video \r\nUpload Form \r\nAdd ATOM Feed \r\nOpus Support \r\nIntroduction of show Tags \r\nEvents Page \r\nTwitter/Identi.CA Feed \r\nUpload to Archive.org \r\nAutomatic tagging of media files \r\nAutomating media upload, identification and transcoding \r\nFixing broken links \r\nFixing broken HTML/Converting to HTML5/CSS3 \r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1807,1),
(1843,'2015-08-26','Some Bash tips',1277,'A few useful Bash features that may not be well known','
Today I want to talk about three Bash commands:
\r\n
\r\n
pushd
\r\n
popd
\r\n
dirs
\r\n
\r\n
These let you change directory on a Linux system (and others which support Bash) but keep a record of where you have been in a stack structure. The stack can be viewed and manipulated with these commands as well.
',225,42,1,'CC-BY-SA','Bash,pushd,popd,dirs',0,0,1),
(1218,'2013-04-03','TGTM Newscast for 2013/03/27 DeepGeek and Pokey',1843,'A newscast from Talk Geek to Me','
Staffed and produced by the TGTM news team, Editorial Selection by\r\nDeepGeek, views of the story\r\nauthors reflect their own opinions and not neccesarily those of TGTM\r\nnews.\r\n
\r\n
News from \"techdirt.com,\" \"havanatimes.org,\" \r\n\"maggiemcneill.wordpress.com,\"\r\nand\r\n\"allgov.com\" used\r\nunder arranged\r\npermission.
\r\n
News\r\nfrom \"torrentfreak.com\" and \"eff.org\" used\r\nunder\r\npermission of the Creative Commons\r\nby-attribution license.
\r\n
News from \"democracynow.org\" used under permission of the Creative\r\nCommons\r\nby-attribution non-commercial no-derivatives license. \r\n
\r\nHowdy folks, this is FiftyOneFifty, and today I wanted to talk about my experiences installing the 64 bit version of Cinnarch net edition on a dual core notebook. Cinnarch of course is a relatively new Arch based distro running the Cinnamon fork of Gnome. I had previously installed Arch proper on this notebook, but when I rebooted to the hard drive, I lost the Ethernet connection. This is not uncommon, but there the notebook sat while until I had time to work the problem. I wanted to start using the notebook, and I\'d heard good things about Cinnarch, so it seemed like a simple solution. I went into knowing Cinnarch was in alpha, so i shouldn\'t have been surprised when an update broke the system less then a week after the install, but that comes later in my story.\r\n
',131,0,1,'CC-BY-SA','Cinnarch',0,1938,1),
@@ -17559,7 +17674,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1238,'2013-05-01','Word processors are overrated',603,'The typical tools people use to write a text, are often the wrong tools.','
\r\nWord processors are overrated. Too often they are used instead of better\r\nalternatives. For example: to write a report, to describe a workflow\r\nor a vision, a lot of people just grab Microsoft Word. Which is a bad\r\nidea. Should you use LibreOffice Writer then? OpenOffice? Maybe Google\r\ndocs? They are not much better.\r\n
\r\n
\r\nIf the focus of your text is on its content, if the structure of your\r\ntext is important, if the way the text is laid out is less important\r\nthan the consistency of the lay-out, or if you want to collaborate with\r\nother people, you should not use a typical mainstream word processor.\r\n
',233,0,0,'CC-BY-SA','file formats,writing,markdown',0,1967,1),
(1239,'2013-05-02','HPR Saturday Sessions: What is hacking?',6580,'Saturday Sessions, Hackers, Hacking, Culture, Media','
\nNido is joined by dude-man, Epicanis, and artv61 to \ndiscuss how one could or should define \"Hacker\" and \"Hacking\", particularly in \nreference to the \"Hackers\" that Hacker Public Radio episodes are intended to be\n\"of interest to\". Unfortunately, all participants seemed to be largely in\nagreement with each other, so there isn\'t enough contention to make the \ndiscussion dramatic. Listeners may find the discussion insightful anyway,\nand we do come up with some suggestions and ultimately encourage everyone to\nbe a lot more public about using the words \"hacker\" and \"hacking\" as\nmuch as possible outside the context of criminal and computer-programming\nactivity until outdated dictionaries finally update their definitions.
\n\n
Although Nido deserves the credit for Saturday Sessions, recording, cleanup, \nand editing of today\'s session was done by Epicanis, so if the sound sucks\nit\'s all his fault and not Nido\'s. Same goes for these show notes.
',214,0,1,'CC-BY-SA','Saturday Sessions, Hackers, Hacking, Culture, Media',0,1941,1),
(1240,'2013-05-03','Doomsday Rule',2405,'A method of finding the day of the week for any date','
\r\nHPR Episode: Doomsday Perpetual Calendar Method\r\n\r\nWhat is it? https://en.wikipedia.org/wiki/Doomsday_rule \r\n (due to John H. Conway, a mathematician born in Liverpool)\r\n\r\n * He\'s done other research that hackers might like to check out. \r\n * Look up the \"Game of Life\" and \"cellular automata\". \r\n * There may be episodes on these topics, but those should come\r\n with visualization software.\r\n\r\nJohn H. Conway\r\n https://en.wikipedia.org/wiki/John_Horton_Conway\r\n\r\nGame of Life\r\n https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\r\n \r\n\r\nDoomsday Rule lets you find the day of the week for any date\r\n * Dates in history, in immediate past or in future are all good.\r\n * Works for both the Gregorian and Julian calendar. \r\n - I\'ll only be looking at Gregorian dates for now.\r\n - Method should work well for dates from 1800 onward.\r\n - If dates for non-Gregorian calendars are converted to their\r\n (extrapolated) Gregorian equivalents, this method works.\r\n\r\nWikipedia entry (includes recent optimization):\r\n https://en.wikipedia.org/wiki/Doomsday_algorithm\r\n\r\n\r\nWhy do this? It came up in Episode Zero of my \"N Days\" show on \r\ncalendar counting, where I used it without explanation.\r\n\r\n https://hackerpublicradio.org/eps.php?id=1143\r\n\r\n\r\nDemos: Check these answers at www.day-calculator.com \r\n * Some listeners may now adjourn to the latest Linux Outlaws episode.\r\n\r\n\r\nMethod: Get Century Anchor Day, calculate offset for the year to find\r\n Doomsday\'s reference location for current year, find closest \r\n reference date to target date, and count off to the answer.\r\n\r\na) Isaac Newton\'s date of birth: \r\n - 25 December 1642 - 1600\'s Tuesday. \r\n Year 42 = 3*12 + 6 and (6/4) = 1. \r\n Hence 3 + 6 + 1 = 10 for an offset of 3.\r\n Tuesday + 3 = Friday. 12/12 is Friday, so 12/26 is Friday\r\n Newton was born 12/25, so that was a Thursday\r\n\r\nb) My grandfather\'s date of birth:\r\n - 20 January 1898 - 1800\'s anchor is Friday. \r\n Year 98 = 8*12 + 2, (2/4) = 0. \r\n So 8 + 2 + 0 = 10 gives an offset of 3.\r\n\r\n - 1898 wasn\'t a leap year, so 10 January was Monday \r\n - That means 17 January was a Monday, too.\r\n - So 20 January 1898 was a Thursday.\r\n\r\nc) A wedding anniversary that I like to remember: 15 May 2000\r\n - 2000 has anchor day on Tuesday, and no offset.\r\n - Rule: \"I work 9 to 5 at 7-11\", so 9 May (16 May) are on Tuesday.\r\n - 15 May 2000 was a Monday. True. \'Twas the day after Mother\'s Day.\r\n \r\nd) My parent\'s wedding day: 19 May 1957\r\n - 1900 has anchor day Wednesday. 57 = 4*12 + 9 and (9/4) = 2. \r\n - So 4 + 9 + 2 = 15 or an offset of 1.\r\n - 9 May is Thursday, as is 16 May. The 19th is 3 days later.\r\n - So 19 May 1957 was a Sunday.\r\n\r\n\r\nPlan: I\'m going to reveal the magic behind this, and introduce some \r\nmental shortcuts to help you learn to do this in your head. \r\n\r\nIf you can master the 12\'s row in your times tables up to 8 times 12, \r\nand the 4\'s row up the 20s or 30s, and you can tell time on a 12-hour \r\nclock, you should be able to do this. \r\n\r\nWe\'re not in school, so paper and pencil to track the numbers, and \r\nfinger-counting offsets to days of the week are all allowed. \r\n\r\n\r\nExplanation:\r\n1. Certain memorable dates fall on the same day of the week as\r\n \"Doomsday\" = last day of February, whatever that is.\r\n\r\n2. Dates recycle every 400 years, and Doomsday Anchor dates by Century\r\n are 1600: Tuesday, 1700: Sunday, 1800: Friday, 1900: Wednesday.\r\n\r\n3. That\'s enough, but to simplify mental math notice 12-year cycles.\r\n - Every completed 12 years pushes the days of the week ahead by +1\r\n - Each year within the current incomplete cycle adds +1\r\n - Each leap year in current cycle adds +1 (including current year) \r\n\r\n4. Doomsday dates are:\r\n a. January 10 and Doomsday (last day of February)\r\n \r\n b. Odd months: Add +4 through July, then subtract 4.\r\n 7 March, 9 May, 11 July\r\n 5 September, 7 November\r\n \r\n c. Even months are reflexive: 4/4, 6/6, 8/8, 10/10, 12/12\r\n\r\n\r\nSee the attached spreadsheets for examples and annotated calculations.\r\n\r\n - LibreOffice Calc: 229-Charles-in-NJ-Doomsday-Rule-v1.ods\r\n \r\n - Excel 5/95 \'xls\' for LibreOffice or Gnumeric:\r\n 229-Charles-in-NJ-Doomsday-Rule.xls\r\n \r\n - Gnumeric: 229-Charles-in-NJ-Doomsday-Rule-v1.gnumeric\r\n\r\n\r\nBonus Content:\r\n - Excel VBA module: 229-Charles-in-NJ-Doomsday-Rule.vbaxl.bas \r\n * Import the .bas module\r\n * Input is an Excel \"Date\" object\r\n * Very proprietary formats and code, but some people use it.\r\n \r\n - Python: doomsday.py\r\n * Contains two functions: Each returns a string value for the day\r\n of the week, e.g., \"Sunday\"\r\n \r\n dayOfWeek(year, month, day): Doomsday is last day of February,\r\n and the (month, day) are converted to relative ordinal dates.\r\n For leap years, we have to push both Doomsday and any target\r\n date after 28 February up by one for the leap day.\r\n \r\n dayOfWeek2(year, month, day): Doomsday date anchors are computed\r\n for each month, so leap years require adjustments to the\r\n anchors for January and February to account for the shift\r\n in the February ending date. Later months are fine.\r\n\r\n - Script for GNU \'bc\': doomsday.bc is a bc \'port\' of the Python code\r\n * Differences: Return value is a number from 0-6 that represents\r\n the day of the week by its relative position.\r\n \r\n 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, \r\n 4 = Thursday, 5 = Friday, 6 = Saturday\r\n \r\n * In a shell, run \'bc\' with the filename as an argument:\r\n catintp@Derringer:~$ bc doomsday.bc\r\n \r\n - This loads the two functions in the file. You can invoke them\r\n within \'bc\' like any other function:\r\n \r\n dayofweek(1981, 5, 15)\r\n dayofweek2(1642, 12, 25)\r\n dayofweek(2013, 11, 22)\r\n dayofweek2(2059, 5, 19)\r\n\r\n - Alternate Script for GNU \'bc\': doomsday2.bc \r\n * Return value is still a number from 0-6 that represents\r\n the day of the week by its relative position.\r\n \r\n * Uses a side effect to print a human-friendly answer. \r\n \r\n * English only, but localisation should be easy.\r\n
\r\n',229,0,0,'CC-BY-SA','calendar,\"day of week\",\"John H. Conway\",\"Doomsday rule\"',0,1896,1),
-(1241,'2013-05-06','HPR Community News for April 2013',5579,'HPR Community News for April 2013','
The Care and Feeding of the Flintlock Muzzleloading Rifle
\r\n
Russ Wenner
\r\n
\r\n \r\n
1220
\r\n
Cinnarch 64 bit, Installation Review
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1221
\r\n
TGTM Newscast 93 for 2013-04-02 DeepGeek and Dann Washko
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1222
\r\n
LiTS 027: mathematical commands
\r\n
Dann
\r\n
\r\n \r\n
1223
\r\n
How I got into linux
\r\n
Jezra
\r\n
\r\n \r\n
1224
\r\n
Podio Book Report on Jake Bible\'s "Dead Mech"
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1225
\r\n
Modern Survivalism Part 2
\r\n
Tracy Holz_Holzster
\r\n
\r\n \r\n
1226
\r\n
TGTM Newscast for 2013-04-09 DeepGeek & Pokey
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1227
\r\n
Not-A-Con interview
\r\n
mordancy
\r\n
\r\n \r\n
1228
\r\n
Utilizing Maximum Space on a Cloned BTRFS Partition
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1229
\r\n
Chromebook Acer C7 Review
\r\n
Helvetin
\r\n
\r\n \r\n
1230
\r\n
Google How Could You
\r\n
Neodragon
\r\n
\r\n \r\n
1231
\r\n
TGTM Newscast for 2013-04-16 Bobobex
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1232
\r\n
LiTS 028: extended attributes
\r\n
Dann
\r\n
\r\n \r\n
1233
\r\n
Playing Ingress
\r\n
Epicanis
\r\n
\r\n \r\n
1234
\r\n
fightcodegame.com
\r\n
Mike Hingley
\r\n
\r\n \r\n
1235
\r\n
Talk Cyberpunk To Me
\r\n
sigflup
\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\nI would like to suggest the following amendments to the scheduling\r\nrules detailed below in ALL CAPS bellow:\r\n\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\nhttps://hackerpublicradio.org/calendar.php#normal_priority\r\nWe now release shows based on when the hosts last had a show aired.\r\nThis brings new hosts and returning hosts to the top of the queue to\r\nencourage their efforts, and it also spreads out shows submitted in\r\nbatches and gives a wider variety of hosts. Once a host is determined,\r\nthe first show uploaded by that host is released. If you wish your\r\nshows to be released in a particular order then make sure you make that\r\nobvious in the title and by emailing admin@hackerpublicradio.org.\r\nYou can swap the order of the shows but it involves additional effort\r\nand is frowned upon :).\r\nWHERE POSSIBLE WE WILL NOT RELEASE SHOWS FROM THE SAME HOST IN ANY ONE\r\nWEEK.\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\nhttps://hackerpublicradio.org/calendar.php#synicated_shows\r\nSyndicated Shows\r\nWe will continue to promote new podcasts and other creative commons\r\nmaterial but due to a lack of slots, we are only releasing material\r\ncreated exclusively for HPR. If there is a piece of creative commons\r\ncontent that you would like to promote, then feel free to record a\r\nregular show where you introduce the content and explain why it is\r\nimportant and providing links to where we can get more information.\r\nTHESE SHOWS CAN BE RELEASED EITHER UNDER YOUR OWN NAME OR UNDER\r\nTHE GENERIC HOST CALLED \"VARIOUS CREATIVE COMMONS WORKS\" (HOSTID 158) \r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\nThe amendment \"WHERE POSSIBLE WE WILL NOT RELEASE SHOWS FROM THE SAME\r\nHOST IN ANY ONE WEEK.\" had been included prior to the changes in\r\nJanuary, but I would like to put it back.\r\n\r\nThe amendment \"THESE SHOWS WILL CAN BE RELEASED EITHER UNDER YOUR\r\nOWN NAME OR UNDER THE GENERIC HOST CALLED \"VARIOUS CREATIVE COMMONS\r\nWORKS\" was discussed in the mail list under the title of \"Various\r\nCreative Commons Works\" but the discussions got derailed. \r\n\r\nPlease keep discussion to these two points only. \r\n\r\nAs always Silence, or no comment is assumed to be approval.\r\n\r\nKen.\r\n\r\nAlso the addition of the following text to the Scheduling Rules: \r\nPlease be aware that we cannot predict when your show will be out, but \r\nsooner of later it will be released. Sometimes a new host will jump to \r\nthe top of the queue, while other hosts seem to be waiting a long time. \r\nThis is because all the shows at HPR are scheduled according to the \r\nScheduling Guidelines, which apply to everyone without exception.\r\n\r\n
Various Creative Commons Works/ Is there a backlog or not \r\nTo hide the actual number of shows, Not the hacker ethic \r\nShould there be regular backup and a end of the line\r\n
\r\n
Think about how we should rotate the HPR lead role
\r\n
\r\n\r\n\r\n
Todo List
\r\n
New
\r\n
\r\n
Show Flow Rate/Average wait times
\r\n
Android App
\r\n
Crediting multiple hosts
\r\n
\r\n
Processing
\r\n
\r\n
Securing the website
\r\n
Upload Form
\r\n
Fixing broken links
\r\n
Fixing broken HTML/Converting to HTML5/CSS3
\r\n
thelinuxlink.pl
\r\n
\r\n
Done
\r\n
\r\n
DB support for summary and tags
\r\n
Move FTP Server internally, add new links to readme and sample show notes \r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1753,1),
+(1241,'2013-05-06','HPR Community News for April 2013',5579,'HPR Community News for April 2013','
The Care and Feeding of the Flintlock Muzzleloading Rifle
\r\n
Russ Wenner
\r\n
\r\n \r\n
1220
\r\n
Cinnarch 64 bit, Installation Review
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1221
\r\n
TGTM Newscast 93 for 2013-04-02 DeepGeek and Dann Washko
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1222
\r\n
LiTS 027: mathematical commands
\r\n
Dann
\r\n
\r\n \r\n
1223
\r\n
How I got into linux
\r\n
Jezra
\r\n
\r\n \r\n
1224
\r\n
Podio Book Report on Jake Bible\'s "Dead Mech"
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1225
\r\n
Modern Survivalism Part 2
\r\n
Tracy Holz_Holzster
\r\n
\r\n \r\n
1226
\r\n
TGTM Newscast for 2013-04-09 DeepGeek & Pokey
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1227
\r\n
Not-A-Con interview
\r\n
mordancy
\r\n
\r\n \r\n
1228
\r\n
Utilizing Maximum Space on a Cloned BTRFS Partition
\r\n
FiftyOneFifty
\r\n
\r\n \r\n
1229
\r\n
Chromebook Acer C7 Review
\r\n
Helvetin
\r\n
\r\n \r\n
1230
\r\n
Google How Could You
\r\n
Neodragon
\r\n
\r\n \r\n
1231
\r\n
TGTM Newscast for 2013-04-16 Bobobex
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1232
\r\n
LiTS 028: extended attributes
\r\n
Dann
\r\n
\r\n \r\n
1233
\r\n
Playing Ingress
\r\n
Epicanis
\r\n
\r\n \r\n
1234
\r\n
fightcodegame.com
\r\n
Mike Hingley
\r\n
\r\n \r\n
1235
\r\n
Talk Cyberpunk To Me
\r\n
sigflup
\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\nI would like to suggest the following amendments to the scheduling\r\nrules detailed below in ALL CAPS bellow:\r\n\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\nhttps://hackerpublicradio.org/calendar.php#normal_priority\r\nWe now release shows based on when the hosts last had a show aired.\r\nThis brings new hosts and returning hosts to the top of the queue to\r\nencourage their efforts, and it also spreads out shows submitted in\r\nbatches and gives a wider variety of hosts. Once a host is determined,\r\nthe first show uploaded by that host is released. If you wish your\r\nshows to be released in a particular order then make sure you make that\r\nobvious in the title and by emailing admin@hackerpublicradio.org.\r\nYou can swap the order of the shows but it involves additional effort\r\nand is frowned upon :).\r\nWHERE POSSIBLE WE WILL NOT RELEASE SHOWS FROM THE SAME HOST IN ANY ONE\r\nWEEK.\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\nhttps://hackerpublicradio.org/calendar.php#synicated_shows\r\nSyndicated Shows\r\nWe will continue to promote new podcasts and other creative commons\r\nmaterial but due to a lack of slots, we are only releasing material\r\ncreated exclusively for HPR. If there is a piece of creative commons\r\ncontent that you would like to promote, then feel free to record a\r\nregular show where you introduce the content and explain why it is\r\nimportant and providing links to where we can get more information.\r\nTHESE SHOWS CAN BE RELEASED EITHER UNDER YOUR OWN NAME OR UNDER\r\nTHE GENERIC HOST CALLED \"VARIOUS CREATIVE COMMONS WORKS\" (HOSTID 158) \r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\nThe amendment \"WHERE POSSIBLE WE WILL NOT RELEASE SHOWS FROM THE SAME\r\nHOST IN ANY ONE WEEK.\" had been included prior to the changes in\r\nJanuary, but I would like to put it back.\r\n\r\nThe amendment \"THESE SHOWS WILL CAN BE RELEASED EITHER UNDER YOUR\r\nOWN NAME OR UNDER THE GENERIC HOST CALLED \"VARIOUS CREATIVE COMMONS\r\nWORKS\" was discussed in the mail list under the title of \"Various\r\nCreative Commons Works\" but the discussions got derailed. \r\n\r\nPlease keep discussion to these two points only. \r\n\r\nAs always Silence, or no comment is assumed to be approval.\r\n\r\nKen.\r\n\r\nAlso the addition of the following text to the Scheduling Rules: \r\nPlease be aware that we cannot predict when your show will be out, but \r\nsooner of later it will be released. Sometimes a new host will jump to \r\nthe top of the queue, while other hosts seem to be waiting a long time. \r\nThis is because all the shows at HPR are scheduled according to the \r\nScheduling Guidelines, which apply to everyone without exception.\r\n\r\n
Various Creative Commons Works/ Is there a backlog or not \r\nTo hide the actual number of shows, Not the hacker ethic \r\nShould there be regular backup and a end of the line\r\n
\r\n
Think about how we should rotate the HPR lead role
\r\n
\r\n\r\n\r\n
Todo List
\r\n
New
\r\n
\r\n
Show Flow Rate/Average wait times
\r\n
Android App
\r\n
Crediting multiple hosts
\r\n
\r\n
Processing
\r\n
\r\n
Securing the website
\r\n
Upload Form
\r\n
Fixing broken links
\r\n
Fixing broken HTML/Converting to HTML5/CSS3
\r\n
thelinuxlink.pl
\r\n
\r\n
Done
\r\n
\r\n
DB support for summary and tags
\r\n
Move FTP Server internally, add new links to readme and sample show notes \r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1753,1),
(1242,'2013-05-07','What\'s Wrong With Free, Anyway?',1398,'Free of Charge versus Free as in Freedom','
In looking at the distinction between free of charge and free as in freedom, some interesting issues emerge. I argue that free of charge is often not what we should be looking for if we want good software options. But because I like going the long way around behind the barn to get anywhere, I start off in the Music business.
\r\n',198,0,0,'CC-BY-SA','Apps,software,market',0,1910,1),
(1243,'2013-05-08','Wargames Anniversary',325,'The film is 30 years old','
\r\nWargames is 30 years old, this is my tribute to one of my favourite films. \r\nSome text taken from Wikipedia page for the film CC-BY-SA \r\nModem sound from Freesound user joedeshon CC-BY\r\n
',191,0,0,'CC-BY-SA','movies, nostalgia, modem, AI, 1983',0,1803,1),
(1244,'2013-05-09','LiTS 029: ab - apache benchmark.',1790,'Apache HTTP server benchmarking tool: ab','
\r\nThis episode of LITS talks about using Apache Benchmark utility to test \r\nwebsites. Learn how to use and interpret the results of Apache Benchmark.\r\n
\r\n',7,67,1,'CC-BY-SA','apache,http,benchmark,ab',0,2334,1),
@@ -17579,7 +17694,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1258,'2013-05-29','How to Build a Desktop Computer',1298,'Describes how to build a desktop computer with guidance on the order in which to pick components.','
Show Notes for How to Build a Desktop\r\n
\r\n
\r\n
\r\n
Build vs Buy
\r\n
Do you have the interest and time to\r\nresearch and build a desktop computer?
\r\n
You probably won\'t save a lot of money,\r\nbut with all the research you may get better quality parts.
\r\n
You will know exactly what\'s in your\r\nsystem should issues or questions ever arise.
\r\n
\r\n
\r\n
Gather requirements
\r\n
Define the purpose of the system \r\n
\r\n
Use: gaming,\r\nvideo/photo processing, web browsing/documents
\r\n
Applications\r\nshould drive most of your hardware decisions.
\r\n
Data protection: \r\nhow much data, how resilient (on-site mirroring, RAID vs. off-site)
\r\n
Power protection: \r\nsurge suppression, UPS
\r\n
Physical\r\nprotection: keyed case lock (disassembly prevention), cable anchor
\r\n
\r\n
\r\n
Define a budget \r\n
\r\n
Decide what are\r\nyou willing to spend (max, target, min)
\r\n
Check\r\noff-the-shelf models to get the going price points
\r\n
Understand there\r\nare trade-offs and if everything is needed at once
\r\n
Adding\r\ncapabilities later can help with sticker shock
\r\n
If you have time,\r\nbuy components when prices dip
\r\n
Be careful about\r\nreturn policies...some 30 or 90 days
\r\n
\r\n
\r\n
Learn about current technology &\r\nprices
\r\n
Core: CPU,\r\nmemory, motherboard, graphics controller, power supply
\r\n
Storage: solid\r\nstate drives, rotating hard drives, removable media (DVD, USB)
\r\n
Auxiliary: audio,\r\nmonitor, power protection, web cam, printer/scanner, backup drive
Where to research\r\nthis stuff: Wikipedia, Tom\'s Hardware, Anandtech, Specs on vendor web sites
\r\n
Where to shop: NewEgg.com,\r\nAmazon.com, Dell.com
\r\n
\r\n
\r\n
Understand compatibility
\r\n
Hardware-Hardware\r\ncompatibility
\r\n
Check qualified\r\nhardware list (QHL) on CPU/memory/motherboard
\r\n
Also known as CPU\r\nsupport list, memory support list, qualified vendor list, etc.
\r\n
If you can stick\r\nto the QHL parts, h/w compatibility is more assured
\r\n
Hardware-Operating\r\nSystem compatibility \r\n
\r\n
Drivers, either\r\nbuilt into the OS or from vendor web site
\r\n
Pay attention to\r\n32-bit vs. 64-bit in both operating systems and drivers
\r\n
Operating\r\nSystem-Application compatibility
\r\n
I\'m not going to\r\naddress this, but it is something to research and understand.
\r\n
\r\n
\r\n
Define what components you need
\r\n
You will need the\r\ncore and storage components.
\r\n
\r\n
\r\n
If you have\r\ncomponents (particularly auxiliary components) from a previous\r\nsystem, you may find you can use them with the new system. Speakers,\r\nprinter, and monitors are all prime candidates.
\r\n
\r\n
\r\n
Steps
\r\n\r\n
CPU
\r\n
\r\n
\r\n
Decide on CPU brand (typically\r\n Intel or AMD)
\r\n
Decide on CPU model, which is\r\n dictated by your needs and budget
\r\n
CPU will dictate motherboard\r\n socket type
\r\n
Be sure to buy CPU in box set so\r\n it includes CPU fan & heat-sink. Otherwise, you\'ll need to\r\n figure out the thermal dissipation needs and physical dimension\r\n limitations of the case in order to select an appropriate 3rd party\r\n CPU fan & heat-sink. This can involve liquid cooling solutions.\r\n I\'m not covering thermal solutions in detail here.
\r\n
\r\n\r\n
Motherboard
\r\n
\r\n
\r\n
Narrow search to motherboards with\r\n socket type that matches CPU.
\r\n
Decide on motherboard form factor\r\n (ATX, Mini-ATX, Micro-ATX, Mini-ITX, etc.). See Wikipedia.
\r\n
Video on-board or discrete. \r\n
\r\n
\r\n
If on-board, check if it has\r\n dedicated memory or borrows memory from main system. If it borrows\r\n from the main system, you may want to increase your memory size. \r\n Recommend using discrete if 3-D requirements exist. You can go\r\n discrete later, but you\'ll have wasted money on the motherboard.
\r\n
If discrete, ensure motherboard\r\n has enough high-end PCI-e slots for your needs. \r\n
\r\n
\r\n
\r\n
\r\n
Audio on-board, discrete or\r\n external.
\r\n
\r\n
If on-board, check motherboard has\r\n suitable output ports for your needs.
\r\n
If discrete, ensure motherboard\r\n has a slot for the audio card.
\r\n
\r\n
\r\n
If external audio system will be\r\n used, make sure motherboard has ports to support it.
\r\n
WiFi / Blue Tooth
\r\n
While a few motherboards have these,\r\n they are generally considered inferior for connectivity and security\r\n on a non-mobile device like a desktop. It\'s also easy to add a card\r\n or USB device to obtain them. Also, when integrated on the\r\n motherboard, they are harder to upgrade later.
\r\n
\r\n
\r\n
\r\n
Outputs ports meet your needs\r\n (PS2, Parallel, Serial COM, USB, eSATA, S/PDIF, HDMI, Ethernet,\r\n etc.)
\r\n
At this point, you search should\r\n be fairly narrow – compare prices, read reviews and compare\r\n ratings. \r\n
\r\n
Decide on motherboard vendor and\r\n model
\r\n
\r\n\r\n
Memory
\r\n
\r\n
\r\n
Based on motherboard, find\r\n matching memory type. DDR2 and DDR3 are the common types. \r\n
\r\n
There are 5 memory properties: \r\n
\r\n\r\n
DDR revision (currently they\r\n include DDR, DDR2, and DDR3)
\r\n
Chip Classification (like\r\n DDR2-1333) where the number (1333) is the maximum clock speed (in\r\n MHz) the memory chips support, which is halved for real clock speed\r\n (666.5MHz).
\r\n
Module Classification (like\r\n PC3-10666) where the number (10666) is the maximum transfer rate (in\r\n MB/s). This is typically 8 times the first memory chip\r\n classification clock speed, so DDR400 transfers data at 3,200 MB/s. \r\n
\r\n
Timing (like 7-8-8-24) measures\r\n the time the memory chip delays doing something internally.
\r\n
Voltage (like 1.5v) \r\n
\r\n
\r\n
\r\n
\r\n
Note the memory properties are\r\n maximums. Actual rates will be lower based on the motherboard. \r\n Match the first 3 properties – DDR revision, chip classification\r\n and module classification. DDR revision must match. If you can\'t\r\n get an exact match on Chip and Module classifications, make sure the\r\n memory module is faster (higher numbers) than the motherboard.
\r\n
If you plan to over-clock, you\'ll\r\n need to pay attention to all 5 properties, but I\'m not going to\r\n cover over-clocking.
\r\n
For more assurance, buy memory\r\n that\'s on the motherboard maker\'s certified list.
\r\n
Recommend buying memory in higher\r\n capacities per module for future expansion. If you have 4 memory\r\n module slots which can accept 1G, 2G, and 4G modules, opt for the 4G\r\n modules.
\r\n
Recommend that all memory modules\r\n be the same size, optimally the same brand/model if possible.
\r\n
\r\n\r\n
Video Card
\r\n
\r\n
\r\n
If using on-board video\r\n controller, you\'ve already decided this.
\r\n
If using discrete video card,\r\n narrow search to available motherboard slots. \r\n
\r\n
For example, if you only have one\r\n PCI-e 16x slot, narrow search to video cards that can use that slot.\r\n Don\'t worry about AMD\'s CrossfireX or NVIDIA\'s SLI card linking\r\n because you don\'t have two slots. \r\n
\r\n
If you buy a high-end discrete\r\n card or cards, be sure to check the video card vendor\'s recommended\r\n power supply wattage and required power connector. These cards\r\n often require a separate power connector from the power supply.
\r\n
\r\n\r\n
Internal Storage
\r\n
\r\n
\r\n
By internal\r\n storage, I mean storage devices that will be housed inside the\r\n computer case.
\r\n
Most\r\n motherboards come with an on-board storage controller, typically\r\n SATA 2. Some have an IDE controller for legacy support. Server\r\n motherboards may have some version of SCSI or SAS (serial attached\r\n storage) controllers.
\r\n
These\r\n on-board controllers are configured from within the BIOS or UEFI. \r\n Depending on the motherboard\'s south bridge chipset, it may support\r\n a few RAID levels, usually levels 0 (striping) and 1 (mirroring).
\r\n
Storage\r\n devices come in different physical sizes which require different\r\n sized bays - 5.25 inch, 3.5 inch, 2.5 inch, and 1.8 inch. These\r\n refer the size of the storage medium, not the actual bay size. The\r\n 5.25 inch bays come in half-height versions, which are the standard\r\n for CD and DVD drives in todays\' computers. The 3.5 inch bays are\r\n usually used for floppy or Zip drives...more legacy equipment. See\r\n Wikipedia.
\r\n
Storage\r\n devices can vary significantly in storage capacity. Often, the\r\n larger the storage capacity, the higher the latency in storing and\r\n retrieving data. Cache on-board the disk can mitigate this latency,\r\n so larger cache sizes are preferred particularly for large capacity\r\n drives. Cache sizes currently include 8MB, 16MB, 32MB and 64MB.
\r\n
With rotating\r\n magnetic disks, the speed at which they rotate can also mitigate\r\n this latency. Rotation speeds include 5400 rpm, 7200 rpm, and 10000\r\n rpm and 15000 rpm with each step in speed requiring more power and\r\n giving off more heat.
\r\n
If you need\r\n more than 2 or 3 drives, you\'ll need to ensure your case has\r\n adequate physical space for them and that your power supply is sized\r\n appropriately.
\r\n
\r\n
\r\n
\r\n\r\n
Case & Power Supply
\r\n
\r\n
\r\n
Some cases are bundled with a\r\n power supply, which might work great for average to low-end system\r\n configurations.
\r\n
Based on motherboard form factor\r\n and internal storage requirements, pick out a computer case. \r\n
\r\n
Case features to consider:
\r\n\r\n\r\n
Power supply location is always\r\n in rear, but can be on top or bottom of a tower configuration. If\r\n the computer will sit on the floor, having the power supply on the\r\n bottom might turn it into a dust bunny haven.
\r\n
Number and type of storage drive\r\n bays.
\r\n
Removable and/or washable dust\r\n filters.
\r\n
Lighting kits
\r\n
Front panel ports and static\r\n suppression
\r\n
\r\n
\r\n
\r\n
The number and size of fans is\r\n limited by the case design. Typically a case will come with one\r\n rear fan, but most offer front, side, or top vents where fans can be\r\n mounted. Fan sizes range from 25mm to 250mm, with popular sizes at\r\n 80mm, 92mm, 120mm and 140mm.
\r\n
Make sure power supply is sized\r\n correctly:
\r\n\r\n\r\n
Physical dimensions fits in case\r\n (beware “slim” power supplies for smaller form factor cases).
\r\n
Wattage output, which is driven by\r\n video cards and number of internal storage devices.
\r\n
Connectors required by the\r\n motherboard, CPU fan, case fans, video card and internal storage\r\n devices.
\r\n
\r\n
\r\n
\r\n
Without a discrete video card and\r\n 2-3 internal storage devices, 300-400 Watts power supplies are\r\n typical. If getting a discrete video card, check on its power\r\n requirements.
\r\n
Power supplies also have\r\n efficiency ratings under the "80 PLUS" certifications, which\r\n span from vanilla 80 PLUS, Bronze, Silver, Gold and Platinum. See\r\n Wikipedia for more info.
\r\n
\r\n',247,0,0,'CC-BY-SA','build, desktop, computer',0,2147,1),
(1259,'2013-05-30','Cyanide Cupcake and Klaatu ',1220,'Using Scratch in teaching','
Cyanide Cupcake talks to Klaatu about the Scratch programming language.
',78,0,0,'CC-BY-SA','programming,scratch,video games,mit',0,1807,1),
(1260,'2013-05-31','Interview with GMC about OHM 2013',741,'Nido Media interviews GMC about OHM 2013','
\r\nOHM2013 is a five day outdoor international camping festival for hackers and makers, and those with an inquisitive mind. On 31st July 2013, 3000 of those minds will descend upon on an unassuming patch of land, at the Geestmerambacht festival grounds, 30km north of Amsterdam. We are interrupted by Nick Farr, who will tell us a bit about Hackers on a Plane, who organise a trip from North America to Europe to participate in this event.\r\n
TGTM Newscast for 2013-06-05 for by Dann Washko and DeepGeek
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1246
\r\n
David Whitman On Location at LinuxFest Northwest
\r\n
David Whitman
\r\n
\r\n \r\n
1247
\r\n
Recording Terrestrial Radio with bash scipts and cron jobs
\r\n
Jon Kulp
\r\n
\r\n \r\n
1248
\r\n
Frank Bell Achieves Enlightenment Adventures with E17 Pt One
\r\n
Frank Bell
\r\n
\r\n \r\n
1249
\r\n
Software Patents: Who\'s Behind the Curtain?
\r\n
Deb Nicholson
\r\n
\r\n \r\n
1250
\r\n
Interview With YTCracker
\r\n
pokey
\r\n
\r\n \r\n
1251
\r\n
TGTM Newscast for 2013-05-19 DeepGeek
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1252
\r\n
The Long Road To Linux
\r\n
Beeza
\r\n
\r\n \r\n
1253
\r\n
Linux in the Shell Ep 30 - vmstat
\r\n
Dann
\r\n
\r\n \r\n
1254
\r\n
X2go Remote Linux server/client
\r\n
JWP
\r\n
\r\n \r\n
1255
\r\n
A life in a software project
\r\n
garjola
\r\n
\r\n \r\n
1256
\r\n
TGTM Newscast for 2013-05-20 Bobobex
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1257
\r\n
Getting things done.
\r\n
Knightwise
\r\n
\r\n \r\n
1258
\r\n
How to Build a Desktop Computer
\r\n
Toby Meehan
\r\n
\r\n \r\n
1259
\r\n
Cyanide Cupcake and Klaatu
\r\n
klaatu
\r\n
\r\n \r\n
1260
\r\n
Interview with GMC about OHM 2013.
\r\n
Nido Media
\r\n
\r\n \r\n\r\n
\r\n\r\n\r\n
New show posting algorithm
\r\n
\r\nFollowing a post from klaatu noting that he was waiting 42 days to get a show released, he suggest simplifying the process to a first in first out solution with some options. Ken replied that the entire scheduling should be first in first out, while giving hosts the option to pick a day in the future that was free. \r\nJoin the mail list for more discussions on this topic.\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1709,1),
+(1261,'2013-06-03','HPR Community News for May 2013',2551,'HPR Community News for May 2013','
TGTM Newscast for 2013-06-05 for by Dann Washko and DeepGeek
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1246
\r\n
David Whitman On Location at LinuxFest Northwest
\r\n
David Whitman
\r\n
\r\n \r\n
1247
\r\n
Recording Terrestrial Radio with bash scipts and cron jobs
\r\n
Jon Kulp
\r\n
\r\n \r\n
1248
\r\n
Frank Bell Achieves Enlightenment Adventures with E17 Pt One
\r\n
Frank Bell
\r\n
\r\n \r\n
1249
\r\n
Software Patents: Who\'s Behind the Curtain?
\r\n
Deb Nicholson
\r\n
\r\n \r\n
1250
\r\n
Interview With YTCracker
\r\n
pokey
\r\n
\r\n \r\n
1251
\r\n
TGTM Newscast for 2013-05-19 DeepGeek
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1252
\r\n
The Long Road To Linux
\r\n
Beeza
\r\n
\r\n \r\n
1253
\r\n
Linux in the Shell Ep 30 - vmstat
\r\n
Dann
\r\n
\r\n \r\n
1254
\r\n
X2go Remote Linux server/client
\r\n
JWP
\r\n
\r\n \r\n
1255
\r\n
A life in a software project
\r\n
garjola
\r\n
\r\n \r\n
1256
\r\n
TGTM Newscast for 2013-05-20 Bobobex
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1257
\r\n
Getting things done.
\r\n
Knightwise
\r\n
\r\n \r\n
1258
\r\n
How to Build a Desktop Computer
\r\n
Toby Meehan
\r\n
\r\n \r\n
1259
\r\n
Cyanide Cupcake and Klaatu
\r\n
klaatu
\r\n
\r\n \r\n
1260
\r\n
Interview with GMC about OHM 2013.
\r\n
Nido Media
\r\n
\r\n \r\n\r\n
\r\n\r\n\r\n
New show posting algorithm
\r\n
\r\nFollowing a post from klaatu noting that he was waiting 42 days to get a show released, he suggest simplifying the process to a first in first out solution with some options. Ken replied that the entire scheduling should be first in first out, while giving hosts the option to pick a day in the future that was free. \r\nJoin the mail list for more discussions on this topic.\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1709,1),
(1262,'2013-06-04','LiTS 031: who',1042,'Show who is logged on with the who command','Episode 31 of Linux in the Shell discuses the use of the who command. The who command does more than just identify who is logged into a system. Who is coupled with init and will produce statistical information about the system since the last boot. Make sure you visit the entry on https://www.linuxintheshell.com/2013/06/04/episode-031-who/ to get the full write up of the who command and for further information in the bibliography on topics discussed.\n',7,67,1,'CC-BY-SA','who',0,2264,1),
(1263,'2013-06-05','3G Tunnels (Sshuttle)',2209,'3G connectivity and Sshuttle','
\r\nTimttmy and NYbill have a chat about 3G connectivity and Sshuttle. Sshuttle is\r\napp that blends VPN and SSH proxy like features. They also touch on AUR packaging and \r\nthe recent Linode hacks. Then start to reminisce about OGGcamps past and the good\'ol days of\r\nthe Linux Outlaw forums. And what do most geeks do when they hang out? They finish up \r\ntalking about their computer gear. \r\n
',235,0,1,'CC-BY-SA','3G,Sshuttle',0,1765,1),
(1264,'2013-06-06','Open Accessibility: Interview with Steve Lee',3253,'Ken Catches up with Steve Lee just before he gave his talk on Open Accessability.','
\r\nIn today\'s show Ken finally gets around to releasing shows recorded at OggCamp11 \r\n
\r\n
\r\nOggCamp 11 was a two-day unconference where technology enthusiasts came together to exchange knowledge on a wide range of topics from Linux and open source software to building home automation systems. It was held August 13 and 14 at Farnham Maltings in Surrey in the UK.\r\n
\r\n\r\n
Open Accessibility
\r\n\r\n
\r\nKen Catches up with Steve Lee just before he gave his talk on Open Accessability. After the talk we get to hear his presentation.\r\n
\r\n',30,79,1,'CC-BY-SA','oggcamp',0,1656,1),
@@ -17597,7 +17712,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1278,'2013-06-26','OggCamp11: Interview with Marie Assen from Flatter',1637,'Ken releases an interview from OggCamp11','
In today\'s show Ken finally gets around to releasing shows recorded at OggCamp11
\r\n\r\n
\r\nOggCamp 11 was a two-day unconference where technology enthusiasts came together to exchange knowledge on a wide range of topics from Linux and open source software to building home automation systems. It was held August 13 and 14 at Farnham Maltings in Surrey in the UK. \r\n
\r\n\r\n
Flattr: The social way to get paid
\r\n
\r\nIn today\'s show Ken chats with Marie and stories are told of life and trust.\r\n
',30,62,1,'CC-BY-SA','OggCamp11',0,2345,1),
(1277,'2013-06-25','Icecast 102',2219,'How to run Icecast - part 2','
\r\nKlaatu talks about how to feed Icecast with different sources like\r\nMPD and BUTT, and how to use the front-ends ncmpcpp and gmpc.\r\n
\r\n
\r\nHere are the simple and ugly shell scripts that Klaatu uses to manage\r\nhis Icecast streaming station. They aren\'t quite finished products yet\r\nbut they\'ll give you an idea of how one might realistically manage an\r\ninternet radio station from the shell:\r\n
\r\nKlaatu is indebted to Delwin, The Last Known God, and Ruji for their\r\nhelp on this episode.\r\n
\r\n ',78,0,0,'CC-BY-SA','Icecast,MPD,BUTT,ncmpcpp,gmpc',0,2401,1),
(1279,'2013-06-27','Russ Pavlicek on Xen Project',3448,'A talk at Texas Linux Fest about Xen','
\r\nThis show was recorded on June 1st at Texas Linux fest \r\nI was lucky enough to hear Russ Pavlicek talk about his Xen project and open source. \r\n
',248,0,0,'CC-BY-SA','Russ Pavlicek, Texas linux fest, xen project',0,2518,1),
-(1276,'2013-06-24','Two Hacker Public Radio hosts meet face-to-face for the first time',519,'A meeting between Jon Kulp and windigo (and the cat)','
I have known windigo for more than 4 years as a virtual\r\nacquaintance, first on the Linux Outlaws\r\nforums, then on identica, and finally on the Federated Statusnet\r\nnetwork. It was awesome when he and his girlfriend stopped by my\r\nhouse today to visit while on a massive road trip around the\r\nUnited States. We took advantage of the opportunity to record a\r\nbrief conversation for Hacker Public Radio. Here\'s a photo of\r\nwindigo, me, and Dingle the cat between us.
\r\n',238,0,1,'CC-BY-SA','\"Jon Kulp\",windigo,HPR',0,2326,1),
+(1276,'2013-06-24','Two Hacker Public Radio hosts meet face-to-face for the first time',519,'A meeting between Jon Kulp and windigo (and the cat)','
I have known windigo for more than 4 years as a virtual\r\nacquaintance, first on the Linux Outlaws\r\nforums, then on identica, and finally on the Federated Statusnet\r\nnetwork. It was awesome when he and his girlfriend stopped by my\r\nhouse today to visit while on a massive road trip around the\r\nUnited States. We took advantage of the opportunity to record a\r\nbrief conversation for Hacker Public Radio. Here\'s a photo of\r\nwindigo, me, and Dingle the cat between us.
\r\n',238,0,1,'CC-BY-SA','\"Jon Kulp\",windigo,HPR',0,2326,1),
(1285,'2013-07-05','LibreOffice 06 Writer Creating a Paragraph Style LibreOffice',1079,'Creating a Paragraph Style in LibreOffice','
\r\nKnightwise reports in after attending Samsungs 2013 premiere event in Kings Court london last thursday, where the company presented its upcoming line of smartphone camera and computer products. He takes a look on what was new and noticable and how the Hulk is probably doing most of Samsungs innovations these days.\r\n
',111,0,1,'CC-BY-SA','Samsung',0,2327,1),
(1282,'2013-07-02','My Homemade Recumbent Bicycle',2089,'Jon made his own recumbent bicycle and tells us about it','
\r\n\r\n\r\n \r\nThe Green ♲ Machine \r\n \r\nIn this episode I discuss my experience building a Recumbent Bicycle from donor bikes. A couple of things I forgot to mention while recording the podcast. First of all I had to use tandem bicycle cables for the brakes and the rear derailleur because they had to be very long. I also forgot to talk about the time when I was in a panic that the rear triangle was a bit out of alignment with the front, such that it would make the bike turn a little bit to the left by default. I called Andrew Carson and asked him if there was anything I could do to fix it and his solution was just awesome. What he told me to do was to put a spare hub in the rear triangle to keep the seat- and chain stays from collapsing together, lay the frame on the ground with the front end propped up on a step or something, and then just stand on it, jumping up and down slightly on it if necessary until I could feel it bend back a little bit. This actually worked! It straightened the frame right out. :) Finally, the total cost for this project was under $300. The most expensive single part of it by far was the powder coat, which cost $120. Here are links to resources mentioned in the podcast or simply of general interest.
My Project Gallery: (Editor\'s Note 2016-01-13: the original pictures were here https://pics.jonkulp.net/index.php?/category/2, but the server is no longer available. They have now been imported to the HPR server) https://hackerpublicradio.org/eps/hpr1282/images.html
\r\n',238,115,0,'CC-BY-SA','DIY, Bicycles, Recycling',0,2386,1),
-(1284,'2013-07-04','Blather Speech Recognition for Linux: Interview with Jezra',2450,'Jon Kulp interviews Jezra about speech recognition with Blather','
\r\n \r\nA conversation with Jezra, sometime HPR host and the lead developer of the Blather speech recognition program for Linux.
Editor\'s Note 2019-05-22: some links in these notes were broken but have been updated with the kind help of Jon himself.
\r\n',238,78,0,'CC-BY-SA','accessibility, Speech Recognition, Speech Recognition In Linux, bash scripting, GNU/Linux (Operating System), sphinx, pocketsphinx',0,2623,1),
(1286,'2013-07-08','iCalendar Hacking',1127,'Creating iCalendar rules by hand and with a Perl script','
Editor’s Note 2020-01-02
\r\n
The notes for this episode have been reformatted, particularly the long-form notes. This was done to make them more readable. Also, the original Git repository has been changed from Gitorious to GitLab. \r\nIn 2019 an iCalendar file was placed on the HPR server at https://hackerpublicradio.org/HPR_Community_News_schedule.ics which you can use in your own calendar application. The file contains the recording times of 12 months of Community News shows and is updated monthly.
\r\n
The Problem
\r\n
Back in 2012 Ken Fallon tried to use Google Calendar to set up an event for the recording of the monthly Community News shows on HPR. He wanted to set these on the Saturday before the first Monday of the month. Surprisingly he didn’t find a way to do this and ended up deleting the attempt.
\r\n
I looked at the calendaring application I use: Thunderbird with the Lightning calendar plugin, to see if I could manage it. I also couldn’t find a way.
\r\n
This episode documents my journey to find a way to make the calendar entries we need.
\r\n
Long notes
\r\n
Detailed notes are available for this episode, and these can be viewed here.
\r\n',225,0,1,'CC-BY-SA','iCalendar,Perl,RFC 5545,pcal,remind',0,2448,1),
-(1287,'2013-07-09','HPR Community News For June 2013',5223,'HPR Community News For June 2013','
Mitigating SQL Injection And Other Message Protocol Attacks Through Compiler Signatures
\r\n
sigflup
\r\n
\r\n \r\n
1266
\r\n
TGTM Newscast for 2013-06-06 by Dann Washko and DeepGeek
\r\n
Tgtm News Team
\r\n
\r\n \r\n
1267
\r\n
LibreOffice 04 Writer Style Properties 1
\r\n
Ahuka
\r\n
\r\n \r\n
1268
\r\n
Whats in my bag
\r\n
David Whitman
\r\n
\r\n \r\n
1269
\r\n
Frank Bell Achieves Enlightenment Adventures with E17 Pt Two
\r\n
Frank Bell
\r\n
\r\n \r\n
1270
\r\n
Fathers Day Special: Jon Kulp interviews his Dad
\r\n
Jon Kulp
\r\n
\r\n \r\n
1271
\r\n
Out of style or retro chique.
\r\n
Knightwise
\r\n
\r\n \r\n
1272
\r\n
Open Badges?
\r\n
klaatu
\r\n
\r\n \r\n
1273
\r\n
LiTS 032: cat
\r\n
Dann
\r\n
\r\n \r\n
1274
\r\n
Nathan Dumont on Open Source Hardware
\r\n
Ken Fallon
\r\n
\r\n \r\n
1275
\r\n
LibreOffice 05 Writer Style Properties 2
\r\n
Ahuka
\r\n
\r\n \r\n
1276
\r\n
Two Hacker Public Radio hosts meet face-to-face for the first time
\r\n
Jon Kulp
\r\n
\r\n \r\n
1277
\r\n
Icecast 102
\r\n
klaatu
\r\n
\r\n \r\n
1278
\r\n
OggCamp11: Interview with Marie Assen from Flatter
\r\n
Ken Fallon
\r\n
\r\n \r\n
1279
\r\n
Russ Pavlicek on Xen Project
\r\n
Alek Grigorian
\r\n
\r\n \r\n
1280
\r\n
Homemade Antennas for OTA Hi-Def TV
\r\n
Jon Kulp
\r\n
\r\n \r\n
1281
\r\n
Samsung Ativ Premiere
\r\n
Knightwise
\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
Website updates
\r\n
\r\nThere have been many small changes to the back end to allow first in first out scheduling.\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,2407,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1300,'2013-07-26','Maker Faire: Kansas City',1121,'MrGadgets phones in a show after visiting Maker Faire: Kansas','
\r\nEver mobile MrGadgets phones in a show after visiting Maker Faire: Kansas\r\n
\r\n
\r\nMaker Faire: Kansas City celebrates things people create themselves — from new technology and electronic gizmos to urban farming and “slow-made” foods to homemade clothes, quilts and sculptures. This family-friendly event demonstrates what and how people are inventing, making and creating. It brings together Makers, Crafters, Inventors, Hackers, Scientists and Artists for a faire full of fun and inspiration. Come see what others are making and be inspired to tap into your own creativity!\r\n
',155,0,1,'CC-BY-SA','\"Maker Faire\",Kansas',0,2452,1),
(1289,'2013-07-11','Short Xen Update From JWP',807,'A response to Russ Pavlicek about the Xen Project','
\r\nShow Title - Short Xen Update From JWP\r\n
\r\n
\r\nIn the Tilts 507 Rus came on as the Xen project manager.\r\nHad a lot to say about Xen but not about how xen is funded in the linux foundation by who.\r\n
\r\n
\r\nIn the course of preparing for the podcast I learned that is not easy to see who gives money to the linux foundation. But Oracle is on the board directors along with all the major players in the IT space.\r\n
\r\n
\r\nI also learned weather it is type 1 or type 2 hypervisor it is not clear as it used to be.\r\nAt work I do not get very many requests for anything but ESX, HyperV or KVM in that order. Once in a while a Xen or Oracle VM comes up. This might change with the open stack a bit but I am not sure.\r\n
',129,0,1,'CC-BY-SA','Xen,\"Linux Foundation\",hypervisor',0,2348,1),
(1291,'2013-07-15','Parsing an ISO8601 formatted duration field with Perl',4832,'A step-by-step explanation of writing a regular expression in Perl to parse an ISO8601 time duration','
\r\nIn this show Ken and Dave discuss this script at some (considerable)\r\nlength. Keen listeners might want to view the script as they listen.\r\nDetailed show notes describing how to put together a Perl regular\r\nexpression are also available at https://hackerpublicradio.org/eps/hpr1291/.\r\n
\r\n
\r\nUnfortunately some of the line numbers in the script referred to in the\r\nshow are now incorrect since Dave could not stop himself updating it.\r\n
\r\n
\r\nFor detailed show notes on how Dave created the script see:\r\n
\r\n',225,0,1,'CC-BY-SA','Perl,regular expression,ISO8601 time duration',0,2342,1),
@@ -17628,7 +17743,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1297,'2013-07-23','Mobile Hackspace (what\'s in my bag)',1422,'NYbill talks about what\'s in his computer & 2600 bags.','
\r\nIn todays episode NYbill talks about what is in his bag. Not just the every day\r\ncomputer bag, but also his 2600 bag of hacking goodies.\r\n
\r\n',235,23,0,'CC-BY-SA','toolkit,\"USB/SATA adaptor\"',0,2463,1),
(1298,'2013-07-24','Recording for HPR using Audacity',1161,'Some hints on using Audacity','
\r\nThe almost failsafe short of it. Use \"alsamixer\" to boost all recording\r\nvolumes on main pulse and all cards (e.g. \"alsamixer -c 0\"). Start Audacity,\r\nedit -> preferences, stay in the \"device\" submenu, don\'t bother with the\r\n\"recording\" submenu. For each of the \"Hosts\" (alsa/jack), try all \"Device\"s\r\nunder the \"Recording\" tab, start speaking, notice volume (or not and try\r\nthe next one)\r\n
',214,0,1,'CC-BY-SA','audio,audacity,\"recording an episode\",alsamixer',0,2439,1),
(1299,'2013-07-25','What\'s in my Bag',543,'What\'s in my Toolkit','
I go through the usual stuff in my bag. One thing I forgot to say\r\nis that my laptop is a Toshiba Satellite with i3 processor, 6gb of\r\nRAM, 750gb hard drive running Crunchbang Linux. Here are links to two\r\nof the items mentioned in the episode.
\r\n',238,23,0,'CC-BY-SA','laptop,\"Zoom H1\",screwdriver',0,2419,1),
-(1301,'2013-07-29','Conversation with Nybill and Jon Kulp',3258,'HPR hosts Nybill and Jon Kulp meet face-to-face','
While I am on vacation near New York City, fellow HPR host NYbill drives down from \r\nupstate and we meet for the first time face-to-face. Of course we \r\nhave to record a conversation for posterity. Topics include \r\nactivities at LUG meetings, Cory Doctorow, Neal Stephenson, \r\nblather speech recognition (a live demonstration!), guitars, and more. Outtakes after the outro.
',238,0,0,'CC-BY-SA','\"LUG meetings\",\"Cory Doctorow\",\"Neal Stephenson\",\"speech recognition\",Blather',0,2425,1),
+(1301,'2013-07-29','Conversation with Nybill and Jon Kulp',3258,'HPR hosts Nybill and Jon Kulp meet face-to-face','
While I am on vacation near New York City, fellow HPR host NYbill drives down from \r\nupstate and we meet for the first time face-to-face. Of course we \r\nhave to record a conversation for posterity. Topics include \r\nactivities at LUG meetings, Cory Doctorow, Neal Stephenson, \r\nblather speech recognition (a live demonstration!), guitars, and more. Outtakes after the outro.
',238,0,0,'CC-BY-SA','\"LUG meetings\",\"Cory Doctorow\",\"Neal Stephenson\",\"speech recognition\",Blather',0,2425,1),
(1303,'2013-07-31','A Music Pairing Under Unlikely Circumstances',1640,'Dave interviews Tim, his son, and Tim\'s friend John, who is visiting from the USA','
\r\nToday Dave interviews Tim, his son, and Tim\'s friend John, who is\r\nvisiting from the USA.\r\n
\r\n
\r\nTim and John met on the Internet in 2006 as collaborating composers of\r\nelectronic music. They have become good friends over the years; Tim has\r\nvisited John in the States, in 2011 where they met for the first time in real\r\nlife, for John\'s wedding. This also marks the first time that John and his\r\nwife Caitlin have travelled overseas, which they did to visit Tim in the UK.\r\n
\r\n
\r\nIn the podcast we discuss how they met, how their different world\r\nviews affected each other, and how their relationship quickly\r\ntranscended music.\r\n
\r\n
\r\nHere\'s a picture of Tim and John visiting Edinburgh Castle in July\r\n2013:\r\n
\r\n
\r\n\r\n
\r\n
\r\nContrary to what was said in the podcast, Tim prepared a mix of the\r\nvarious compositions he and John have made. Links to some of the full\r\ntracks are available below.\r\n
',225,0,1,'CC-BY-SA','music,composition,collaboration,InternetDJ,FL Studio',0,2324,1),
(1302,'2013-07-30','How I Got to Linux',788,'Accipiter\'s journey to Linux','
\r\nIn this show, I cover my early years learning code in the late 60s. I move on to my history with home computers, and finding out about Linux around 2007 or so. I comment on Ubuntu and Mint. I mention dual booting and my one episode of triple booting.\r\n
\r\n
\r\nListeners, this is my first attempt at a show. It\'s not that hard, and I would like to hear from others as to how they got to Linux.\r\n
',249,0,1,'CC-BY-SA','Linux, Ubuntu, Mint, dual boot',0,2503,1),
(1304,'2013-08-01','Jon Kulp and His Son Talk Hacking',2461,'Jon Kulp and his son talk Hacking','
I chat with my son about the concept of hacking, Linux, Blacksmithing,\r\nand about some of the other stuff he does that smacks of hacking.
Auphonic: excellent one-click post-production\r\ncompression and normalization on this podcast audio file. Check\r\nit out at https://auphonic.com/
\r\n
\r\n',238,0,0,'CC-BY-SA','hacking',0,2406,1),
@@ -17648,8 +17763,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1319,'2013-08-22','Frank Bell Presents HPR to His LUG',1442,'The Tidewater Unix Users Group hears about HPR','
',195,0,0,'CC-BY-SA','\"Geek News Central\",\"GNU World Order\",TwaTech,BinRev,\"The Sunday Morning Linux Review\"',0,1661,1),
(1320,'2013-08-23','How I got into Linux',414,'jrobb gives a short show about how he got into Linux and programming','
\r\nThis is my first HPR, first ever podcast, and first ever attempt at editing any audio. Don\'t expect greatness.\r\nThe banging in the background is my daughter playing with something.\r\nI give a very quick rundown of my introduction to Linux, programming, and tech in general. This is a pretty short show.\r\n
\r\n
\r\nI forgot to mention that early on in high school or middle school I enjoyed playing with DOS on an old 386 and that is probably what got my interest and led me to enroll in the High School computer science class that I mention.\r\nI didn\'t really have anything planned to talk about, I should probably do that next time.\r\n
',253,29,1,'CC-BY-SA','Pascal,RedHat,Ubuntu,Arch,Debian,PHP,MySQL',0,1773,1),
(1322,'2013-08-27','Kevin O\'Brien - Ohio LinuxFest 2013',2918,'A discussion with Kevin O\'Brien about Ohio LinuxFest','
About the Ohio LinuxFest
\r\n
\r\nThe Ohio LinuxFest is a grassroots conference for the GNU/Linux/Open Source Software/Free Software community that started in 2003 as a large inter-LUG meeting and has grown steadily since. It is a place for the community to gather and share information about Linux and Open Source Software.\r\n
\r\n
\r\nA large expo area adjacent to the conference rooms will feature exhibits from our sponsors as well as a large .org section from non-profit Open Source/Free Software projects.\r\n
\r\n
\r\nThe Ohio LinuxFest welcomes people from all 50 states and international participants. We\'ve had participants from Canada, England, Argentina, Brazil, and Australia in years past.\r\n
',30,0,1,'CC-BY-SA','\"Ohio LinuxFest 2013\"',0,1624,1),
-(1323,'2013-08-28','HPR Community News For July 2013',3861,'HPR Community News For July 2013','
\"We will continue to promote new podcasts and other creative commons material but due to a lack of slots, we are only releasing material created exclusively for HPR. If there is a piece of creative commons content that you would like to promote, then feel free to record a regular show where you introduce the content and explain why it is important, providing links to where we can get more information.\"
Sonar Project donators \"Those kind people who donated to the sonar project your laptop stickers are in and they are awesome. Please send me your postal address off list and I will send you a sheet of six stickers.\"
\n
Owe me a show list.
\n
OggCamp 2013
\n
WARNING !! Update to the RSS feed
\n
HPR1300 posted
\n
',159,47,1,'CC-BY-SA','Community News',0,1597,1),
-(1351,'2013-10-07','HPR Community News For August 2013',2423,'HPR Community News For August 2013','
\"We will continue to promote new podcasts and other creative commons material but due to a lack of slots, we are only releasing material created exclusively for HPR. If there is a piece of creative commons content that you would like to promote, then feel free to record a regular show where you introduce the content and explain why it is important, providing links to where we can get more information.\"
Sonar Project donators \"Those kind people who donated to the sonar project your laptop stickers are in and they are awesome. Please send me your postal address off list and I will send you a sheet of six stickers.\"
\n
Owe me a show list.
\n
OggCamp 2013
\n
WARNING !! Update to the RSS feed
\n
HPR1300 posted
\n
',159,47,1,'CC-BY-SA','Community News',0,1597,1),
+(1351,'2013-10-07','HPR Community News For August 2013',2423,'HPR Community News For August 2013','
Deepgeek interviews Birgitta Jonsdottir (Icelandic Pirate Party parliamentarian)
\r\n
Epicanis
\r\n
\r\n
\r\n
1313
\r\n
2013-08-14
\r\n
How I Manage Contacts
\r\n
Jon Kulp
\r\n
\r\n
\r\n
1314
\r\n
2013-08-15
\r\n
Impressions of Mageia
\r\n
Frank Bell
\r\n
\r\n
\r\n
1315
\r\n
2013-08-16
\r\n
LibreOffice 09 Writer Working With Paragraph-Level Styles
\r\n
Ahuka
\r\n
\r\n
\r\n
1316
\r\n
2013-08-19
\r\n
What is my bag
\r\n
MrGadgets
\r\n
\r\n
\r\n
1317
\r\n
2013-08-20
\r\n
What\'s In My 2 Bags
\r\n
Curtis Adkins (CPrompt^)
\r\n
\r\n
\r\n
1318
\r\n
2013-08-21
\r\n
How I found Linux
\r\n
Sunzofman1
\r\n
\r\n
\r\n
1319
\r\n
2013-08-22
\r\n
Frank Bell Presents HPR to His LUG
\r\n
Frank Bell
\r\n
\r\n
\r\n
1320
\r\n
2013-08-23
\r\n
How I got into Linux
\r\n
jrobb
\r\n
\r\n
\r\n
1321
\r\n
2013-08-26
\r\n
What\'s in my Bag
\r\n
Christopher M. Hobbs
\r\n
\r\n
\r\n
1322
\r\n
2013-08-27
\r\n
Kevin O\'Brien - Ohio LinuxFest 2013
\r\n
Ken Fallon
\r\n
\r\n
\r\n
1323
\r\n
2013-08-28
\r\n
HPR Community News For July 2013
\r\n
HPR Admins
\r\n
\r\n
\r\n
1324
\r\n
2013-08-29
\r\n
Porting Mega Happy Sprite To Windows
\r\n
sigflup
\r\n
\r\n
\r\n
1325
\r\n
2013-08-30
\r\n
LibreOffice 10 Writer Paragraph Styles in Templates
\r\n
Ahuka
\r\n
\r\n \r\n
\r\n
Monthly Downloads
\r\n
\r\n
\r\nStarted: 7 years, 6 months, 22 days ago (2005-10-10)\r\nRenamed HPR: 5 years, 3 months, 29 days ago (2007-12-31)\r\nTotal Shows: 1685\r\nTotal TWAT: 300\r\nTotal HPR: 1385\r\nHPR Hosts: 200\r\nNext free slot: 25\r\nHosts in Queue: 13\r\nShows in Queue: 22\r\nAugust Downloads: 86,109\r\nAverage Daily Download: 2,620\r\nEstimated Episodes Downloaded: 7,567,791\r\nhttps://hackerpublicradio.org/report.bz2\r\n
Host Pages
\r\n
Should we update the host pages to include information like PGP Key, a photo etc.
\r\n
On the Mailing List
\r\n
\r\n
Everyone is going to OGGCamp except Ken.
\r\n
HPR Episodes with Code is OK
\r\n
\r\n',159,47,1,'CC-BY-SA','Community News',0,1550,1),
(1324,'2013-08-29','Porting Mega Happy Sprite To Windows ',877,'Porting with the mingw32 cross-compiler','
\r\nIn this episode of HPR sigflup talks about her experiences porting her favorite program to windows using the mingw32 cross-compiler\r\n
',115,0,1,'CC-BY-SA','mingw32,cross-compiler',0,1634,1),
(1326,'2013-09-02','What\'s in my bag',570,'jrobb details the contents of his laptop backback','
\r\nIn this show jrobb goes through his laptop backback and details the contents.\r\nI had a few minutes while the wife had most of the kids out running errands and figured I\'d make another HPR.\r\n
\r\n
\r\nIf anyone is otherwise interested, this is my second recording, which was made with audacity. \r\nI ran the noise removal (which is basically magic), and then I ran the compressor tool which seemed to bring the volume level up a bit.\r\n
',253,23,0,'CC-BY-SA','\"SWISSGEAR backpack\",\"Lenovo X1 Carbon\",\"Lenovo X220\"',0,1656,1),
(1327,'2013-09-03','Frank Bell Bakes Bread',1587,'Frank bakes two loaves of honey wheat bread','
\r\nFrank Bell prattles on about baking bread while he bakes two loaves of honey wheat bread.\r\n
',195,93,1,'CC-BY-SA','baking,bread,dough,sourdough',0,1631,1),
@@ -17681,7 +17796,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1357,'2013-10-15','Whats in my bag, and other stories',1245,'A minimalist carry; travelling light','
In the show I discuss my philosophy of travelling light, how to travel without baggage or computers, how to setup disposable accounts and protect your accounts from compromise. Also I talk about how I am adjusting to living without a car in Kansas, and other topics.
',260,23,0,'CC-BY-SA','\"public transport\"',0,1611,1),
(1358,'2013-10-16','How to set up GnuPG, a PGP-compliant encryption system',3107,'Setting up GnuPG for use with Thunderbird and Mutt','
\r\nKlaatu explains how to set up GnuPG, a PGP-compliant encryption\r\nsystem, and use it with both Thunderbird and Mutt mail clients.\r\n
\r\n',78,0,0,'CC-BY-SA','encryption,PGP,GnuPG,Thunderbird,Mutt',0,1710,1),
(1359,'2013-10-17','Pipes',1015,'How to fill and smoke a pipe','
\r\nIn this episode I take a look at a \"low-tech\" pasttime. In the spirit of the campfire episode and the bread baking episode, I give a simple episode about filling and smoking a pipe (tobacco, not 420!).\r\n
',255,0,0,'CC-BY-SA','pipes,smoking,tobacco,howto',0,1589,1),
-(1360,'2013-10-18','HPR Community News For September2013',6865,'HPR Community News For September 2013','
How to properly evangelize linux or why I use linux as my daily driver.
\r\n
Riley Gelwicks (glwx)
\r\n
\r\n \r\n
\r\nStarted: 7 years, 6 months, 22 days ago\r\nRenamed HPR: 5 years, 3 months, 29 days ago\r\nTotal Shows: 1685\r\nTotal TWAT: 300\r\nTotal HPR: 1385\r\nHPR Hosts: 202\r\nNext free slot: 13\r\nHosts in Queue: 9\r\nShows in Queue: 12\r\nSeptember Downloads: 75,774\r\nhttps://hackerpublicradio.org/report.bz2\r\n
Host Pages
\r\n
Should we update the host pages to include information like PGP Key, a photo etc.
\r\n
TGTM as a general newscast now over
\r\nHey, Ken,\r\n\r\nI just published TGTM news #103, which is my explanation of its\r\nclosure and next month\'s new format. I now plan to do two audios a\r\nmonth, one tech piece for HPR and one non-tech for my personal site.\r\n\r\nCould you please announce this in the next HPR community news, as well\r\nas putting this link in the show notes:\r\n\r\nhttps://www.talkgeektome.us/tgtmnews-103.xhtml\r\n\r\nyours, \r\n---\r\nDeepGeek\r\n
Other News
\r\n
\r\n
Is it Spam ?
\r\n
Mumble HPR - a show about banners, stickers, and HPR tables at events like Linux Fests etc.
\r\n
Upcoming Series on \"Units\": Help with Medical Maths? Help with the units used in medicine dosages.
\r\n',159,47,1,'CC-BY-SA','Community News',0,1569,1),
+(1360,'2013-10-18','HPR Community News For September2013',6865,'HPR Community News For September 2013','
How to properly evangelize linux or why I use linux as my daily driver.
\r\n
Riley Gelwicks (glwx)
\r\n
\r\n \r\n
\r\nStarted: 7 years, 6 months, 22 days ago\r\nRenamed HPR: 5 years, 3 months, 29 days ago\r\nTotal Shows: 1685\r\nTotal TWAT: 300\r\nTotal HPR: 1385\r\nHPR Hosts: 202\r\nNext free slot: 13\r\nHosts in Queue: 9\r\nShows in Queue: 12\r\nSeptember Downloads: 75,774\r\nhttps://hackerpublicradio.org/report.bz2\r\n
Host Pages
\r\n
Should we update the host pages to include information like PGP Key, a photo etc.
\r\n
TGTM as a general newscast now over
\r\nHey, Ken,\r\n\r\nI just published TGTM news #103, which is my explanation of its\r\nclosure and next month\'s new format. I now plan to do two audios a\r\nmonth, one tech piece for HPR and one non-tech for my personal site.\r\n\r\nCould you please announce this in the next HPR community news, as well\r\nas putting this link in the show notes:\r\n\r\nhttps://www.talkgeektome.us/tgtmnews-103.xhtml\r\n\r\nyours, \r\n---\r\nDeepGeek\r\n
Other News
\r\n
\r\n
Is it Spam ?
\r\n
Mumble HPR - a show about banners, stickers, and HPR tables at events like Linux Fests etc.
\r\n
Upcoming Series on \"Units\": Help with Medical Maths? Help with the units used in medicine dosages.
\r\n',159,47,1,'CC-BY-SA','Community News',0,1569,1),
(1361,'2013-10-21','SFS and Linux Camp',1197,'Software Freedom School helps anyone interested in expanding their knowledge of free software','
\r\nThe Software Freedom Society/School is a local movement to help anyone interested in expanding their knowledge of free software. Linux Camp, the latest success of SFS is discussed along with several of our other past and future projects.\r\n
\r\n
\r\nWe hope to do another show soon, a Linux Camp Radio Show. We said in this interview that Linux Camp was a series of \"real world task\" labs, and we think that with a little work, they would make a good radio show. A show that an aspiring Linux SysAdmin, especially one that is studying for the LPIC-1 exams, could use as a list of challenge tasks to reinforce their skills.\r\n
\r\n
\r\nThis is the book that we\'re using in our study groups:\r\n
\r\n
\r\n CompTIA Linux+ Study Guide\r\n Publication Date: January 14, 2013\r\n ISBN-10: 1118531744\r\n ISBN-13: 978-1118531747\r\n
\r\nEventually, we\'ll clean it up and put it on our website.\r\n
\r\n
\r\nOur goal is to build a fully free (libre) knowledge-sharing group with learning and payment options that work for everyone, from the penny-pinching enthusiast to the well-funded professional.\r\n
\r\n
\r\nTo that end, we want your suggestions and welcome your feedback!\r\n
\r\n
\r\nTo find out more about SFS and it\'s upcoming projects, go to: https://www.sofree.us\r\n
\r\n
\r\nTo give feedback, leave a comment here or email any of the authors above. To join the conversation, send the word \"subscribe\" by email to sfs-request@thegeek.nu.\r\n
',261,0,0,'CC-BY-SA','SFS,Software Freedom School,Linux Camp',0,1504,1),
(1362,'2013-10-22','Fixing a bad RSS feed',1267,'Perl scripts to modify broken RSS feeds on the fly','
\r\nThere have been problems with the podcast feed for \"mintCast\",\r\napparently as a result of a bug in Wordpress. The feed contains\r\nmultiple \"enclosure\" tags containing the same audio over and over\r\nagain. While the mintCast hosts are looking for a fix I would like to\r\nfind a local work-around.\r\n
\r\n
\r\nI have also encountered a problem with the \"Pod Delusion Extra\" feed\r\nwhich contains multiple enclosures in some episodes. Unlike the\r\n\"mintCast\" example I don\'t want to lose these enclosures but want to\r\nfind a way of repackaging them into individual episodes.\r\n
\r\n
\r\nThese problems affect some podcatchers, the modified Bashpodder I use\r\nbeing amongst them. To counteract this problem I have written two\r\nshort Perl scripts to copy and clean each feed before submitting it to\r\nmy podcatcher.\r\n
',225,0,1,'CC-BY-SA','RSS,Perl,podcast,scripting',0,1509,1),
(1363,'2013-10-23','Some pacman Tips By Way of Repacing NetworkManager With WICD',1177,'So you\'ve just installed Arch Linux now what? Arch Lessons from a Newbie Ep 02: Some pacman tips','
A while back, I used my Arch laptop to pre-configure a router for a customer, which of course required me set up a static IP on my eth0. I should have done this from the command line, instead I used the graphical Network Manager. I had a lot of trouble getting the graphical application to accept a change in IP, and in getting to go back to DHCP when I was done, and I wound up going back and forth between the Network Manager and terminal commands. I\'ve mentioned before my ISP is behind two NATed networks, the router in the outbuilding where the uplink to the ISP is (this is also the network my server is on) and the router in my house. The static IP I used for the customer router configuration was in the same address range as my \"outside\" network Though I successfully got eth0 back on DHCP, there was a phantom adapter still out there on the same range as the network my server was on, preventing me from ssh\'ing in. I did come across a hack, if I set eth0 to an IP and mask of all zeros, then stopped and started dhcpcd on eth0, I could connect. I had also used the laptop on a customer\'s WiFi recently, and the connection was horrible.
\n
I decided to see if just installing the wicd network manager would clear everything up (and it did), but before installing Wicd, I had to update the system, so first a little bit about pacman
\n
Arch\'s primary package manager is pacman. The -S operator is for sync operations, including package installation, for instance:
\n# sudo pacman -S <package_name>\n
..... installs a package from the standard repos and is more or less equivalent to the Debian instruction ....
\n# sudo apt-get install <package_name>\n
The option -y used with -S refreshes the master package list and -u updates all out of date packages, so the command
\n\n# sudo pacman -Syu .... is equivalent to the Debian instruction .... \n# sudo apt-get update .... followed by .... \n# sudo apt-get upgrade\n# sudo pacman -Syu <package_name1> <package_name2>\n\n
would update the system, then install the selected packages Perhaps because of my slow Internet, the first time through a few of the update packages timed out without downloading, so nothing installed. The second time through, even one of the repos didn\'t refresh. Thinking this was a connectivity problem, I kept trying the same update command over and over. Finally, I enlisted the help of Google. \'pacman -Syy\' forces a refresh of all package lists \"even if they appear to be up to date\". This seems to automagically fix the timeout and connection problems, and the next time I ran the update, it completed without complaint. I was mad at myself when I found the solution, because I remember I\'d had the exact same problem and the exact same solution before and had forgotten them. Podcasting your errors is a great way of setting them in your memory. About the same time, I ran out of space on my 10Gb root partition. I remembered Peter64 had a similar problem, but I found a different solution than he did.
\n# sudo pacman -Sc\n
.... cleans packages that are no longer installed from the pacman cache as well as currently unused sync databases to free up disk space. I got 3Gb back! \'pacman -Scc\' removes all files from the cache. https://wiki.archlinux.org/index.php/Wicd Use pacman to install the package \'wicd\' and if you want a graphical front end, \'wicd-gtk\' or \'wicd-kde\' (in the AUR). For network notifications, install \'notification-daemon\', or the smaller \'xfce4-notifyd\' if you are NOT using Gnome. None of this enables wicd or makes it your default network manager on reboot, that you must do manually. First, stop all previously running network daemons (like netctl, netcfg, dhcpcd, NetworkManager) you probably won\'t have them all. Lets assume for the rest of the terminal commands, you are root, then do:
Then we have to disable the old network tools so they don\'t conflict with wicd on reboot.
\n# systemctl disable <package_name> i.e. # systemctl disable NetworkManager\n
Make sure your login is in the users group
\n# gpasswd -a USERNAME users\n
Now, we have to initialize wicd
\n# systemctl start wicd.service\n# wicd-client\n
Finally, enable wicd.service to load on your next boot up
\n# systemctl enable wicd.service\n
',131,0,0,'CC-BY-SA','Arch,pacman,wicd',0,1485,1),
@@ -17706,9 +17821,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1376,'2013-11-11','How Should We Then Teach the Art of Computing?',2120,'Teaching specific packages versus the Art of Computing','In this episode Klaatu discusses the Art of Computing.',78,0,0,'CC-BY-SA','teaching,computing,\"generic solutions\",\"problem solving\"',0,1672,1),
(1381,'2013-11-18','How We Found Linux',3432,'Kevin Wisher and Honkey Magoo each discuss their journey to Linux','
',265,29,1,'CC-BY-SA','TRS-80,\"IBM portable PC\",modem,\"Texas Instruments TI-99/4A\",\"Fedora Core\",Freespire,\"Linux Mint\",Manjaro,Debian,MythTV',0,1560,1),
(1382,'2013-11-19','Interview with Dave Hingley',1415,'Interview with Dave Hingley from www.titaniumbunker.com, about #OggCamp, linux and hardware issues.','
\r\nIn this episode Mike Hingley interviews his brother after oggcamp 2013 (www.oggcamp.org), and Dave talks about linux and hardware problems.\r\n
\r\n',185,62,1,'CC-BY-SA','OggCamp,presentation,Ubuntu,\"slide projector\"',0,1413,1),
-(1383,'2013-11-20','HPR Community News for October 2013',2962,'HPR Community News for October 2013','
LibreOffice 13 Writer A Bullet Style Deconstructed
\n
Ahuka
\n
\n
\n
1356
\n
2013-10-14
\n
So, you\'ve just installed Arch Linux, now what? Arch Lessons from a Newbie, Ep. 01
\n
FiftyOneFifty
\n
\n
\n
1357
\n
2013-10-15
\n
Whats in my bag, and other stories
\n
James Michael DuPont (h4ck3rm1k3)
\n
\n
\n
1358
\n
2013-10-16
\n
how to set up GnuPG, a PGP-compliant encryption
\n
klaatu
\n
\n
\n
1359
\n
2013-10-17
\n
Pipes
\n
Matt McGraw (g33kdad)
\n
\n
\n
1360
\n
2013-10-18
\n
HPR Community News For September2013
\n
HPR Admins
\n
\n
\n
1361
\n
2013-10-21
\n
SFS and Linux Camp
\n
David Willson
\n
\n
\n
1362
\n
2013-10-22
\n
Fixing a bad RSS feed
\n
Dave Morriss
\n
\n
\n
1363
\n
2013-10-23
\n
Some pacman Tips By Way of Repacing NetworkManager With WICD
\n
FiftyOneFifty
\n
\n
\n
1364
\n
2013-10-24
\n
Vintage Tech Iron Pay Phone Coin Box
\n
FiftyOneFifty
\n
\n
\n
1365
\n
2013-10-25
\n
LibreOffice 14 Writer A Numbered List Style Deconstructed
\n
Ahuka
\n
\n
\n
1366
\n
2013-10-28
\n
What I do with my Raspberry Pi
\n
Neandergeek
\n
\n
\n
1367
\n
2013-10-29
\n
I\'m Sorry Dan
\n
Jezra
\n
\n
\n
1368
\n
2013-10-30
\n
How to Fold a Fitted Sheet
\n
Jon Kulp
\n
\n
\n
1369
\n
2013-10-31
\n
NaNoWriMo Prep
\n
Heisenbug
\n
\n \n
\nStarted: 7 years, 6 months, 22 days ago\nRenamed HPR: 5 years, 3 months, 29 days ago\nTotal Shows: 1715\nTotal TWAT: 300\nTotal HPR: 1415\nHPR Hosts: 206\nNext free slot: 16\nHosts in Queue: 7\nShows in Queue: 15\nOctober Downloads: 101,572\nhttps://hackerpublicradio.org/report.bz2\n
2013-14 New Years 24-hour show
\n
Hello All, \n We are roughly around 10 weeks away from the next 24-hour New Year\'s show. This a call out for all parties who are interested in helping with this year\'s show. We mainly need to make arrangements for a Mumble server and a few streaming servers. If you have any of these resources available then please send me your name, email address, available resources, and a day/time that is convenient for you to meet on-line on a Mumble server for organizational purposes. \n Thank you, \n Kwisher on IRC kevin dot wisher at gmail dot com
\n
Other News
\n
\n
Request for Ahuka - doing car payments as an example
\n
Queue Management/Disposing of current backup shows \"It was scary to me that there are only two shows in the queue, until I realized that there are 13 shows in the backup queue.\"
\n
Worst of as a backup show - not in line with HPR philosophy
',159,47,1,'CC-BY-SA','Community News',0,1411,1),
+(1383,'2013-11-20','HPR Community News for October 2013',2962,'HPR Community News for October 2013','
LibreOffice 13 Writer A Bullet Style Deconstructed
\n
Ahuka
\n
\n
\n
1356
\n
2013-10-14
\n
So, you\'ve just installed Arch Linux, now what? Arch Lessons from a Newbie, Ep. 01
\n
FiftyOneFifty
\n
\n
\n
1357
\n
2013-10-15
\n
Whats in my bag, and other stories
\n
James Michael DuPont (h4ck3rm1k3)
\n
\n
\n
1358
\n
2013-10-16
\n
how to set up GnuPG, a PGP-compliant encryption
\n
klaatu
\n
\n
\n
1359
\n
2013-10-17
\n
Pipes
\n
Matt McGraw (g33kdad)
\n
\n
\n
1360
\n
2013-10-18
\n
HPR Community News For September2013
\n
HPR Admins
\n
\n
\n
1361
\n
2013-10-21
\n
SFS and Linux Camp
\n
David Willson
\n
\n
\n
1362
\n
2013-10-22
\n
Fixing a bad RSS feed
\n
Dave Morriss
\n
\n
\n
1363
\n
2013-10-23
\n
Some pacman Tips By Way of Repacing NetworkManager With WICD
\n
FiftyOneFifty
\n
\n
\n
1364
\n
2013-10-24
\n
Vintage Tech Iron Pay Phone Coin Box
\n
FiftyOneFifty
\n
\n
\n
1365
\n
2013-10-25
\n
LibreOffice 14 Writer A Numbered List Style Deconstructed
\n
Ahuka
\n
\n
\n
1366
\n
2013-10-28
\n
What I do with my Raspberry Pi
\n
Neandergeek
\n
\n
\n
1367
\n
2013-10-29
\n
I\'m Sorry Dan
\n
Jezra
\n
\n
\n
1368
\n
2013-10-30
\n
How to Fold a Fitted Sheet
\n
Jon Kulp
\n
\n
\n
1369
\n
2013-10-31
\n
NaNoWriMo Prep
\n
Heisenbug
\n
\n \n
\nStarted: 7 years, 6 months, 22 days ago\nRenamed HPR: 5 years, 3 months, 29 days ago\nTotal Shows: 1715\nTotal TWAT: 300\nTotal HPR: 1415\nHPR Hosts: 206\nNext free slot: 16\nHosts in Queue: 7\nShows in Queue: 15\nOctober Downloads: 101,572\nhttps://hackerpublicradio.org/report.bz2\n
2013-14 New Years 24-hour show
\n
Hello All, \n We are roughly around 10 weeks away from the next 24-hour New Year\'s show. This a call out for all parties who are interested in helping with this year\'s show. We mainly need to make arrangements for a Mumble server and a few streaming servers. If you have any of these resources available then please send me your name, email address, available resources, and a day/time that is convenient for you to meet on-line on a Mumble server for organizational purposes. \n Thank you, \n Kwisher on IRC kevin dot wisher at gmail dot com
\n
Other News
\n
\n
Request for Ahuka - doing car payments as an example
\n
Queue Management/Disposing of current backup shows \"It was scary to me that there are only two shows in the queue, until I realized that there are 13 shows in the backup queue.\"
\n
Worst of as a backup show - not in line with HPR philosophy
',159,47,1,'CC-BY-SA','Community News',0,1411,1),
(1384,'2013-11-21','How I Got Into Linux and OSS',663,'New HPR podcaster Keith Murray shares how he came to the Linux and OSS world.','
\r\nIt seems that telling the tale of how you came to be an active user of Linux or open source software has become the de facto first show topic, so here\'s my story. I hope this slightly different take on the how-I-came-to-Linux story will be of some interest to you. If you\'re interested in any of the other things I do you can find me on twitter @kdmurray (https://twitter.com/kdmurray) or on my blog at https://kdmurray.net/.\r\n
',266,29,1,'CC-BY-SA','\"Red Hat\",Audacity,Notepad++,Windows7,Ubuntu',0,1566,1),
-(1386,'2013-11-25','Hacking Public Policy: The Underground Press',4507,'An exploration on how to hack public policy','
\r\nIn this Hacker Public Radio episode Bob Tregilus continues an exploration on how to hack public policy. Because outreach and education is so critical to building a successful movement, Tregilus talks to Ken Wachsberger of Lansing, Michigan, about the underground press of the late \'60s and early \'70s. Wachsberger was involved with the \"Joint Issue,\" an underground paper serving southeastern Michigan.\r\n
\r\n
\r\nQuestions addressed and answered include:\r\n
\r\n\r\n\r\n
The history of the underground press.\r\n
\r\n
Constraints on leisure time in the \'60s vs. the 2000s.\r\n
\r\n
Differences between the underground press, the alternative press, and the corporate press.\r\n
\r\n
Community organizing in the \'60s vs. the 2000s.\r\n
Independent Voices is a four-year project to digitize over 1 million pages from the magazines, journals and newspapers of the alternative press archives of participating libraries: <https://www.revealdigital.com/>.\r\n
\r\n
',251,0,0,'CC-BY-SA','public policy, media, underground press, alternative press, outreach, education, activism, radicalism, community organizing',0,1539,1),
+(1386,'2013-11-25','Hacking Public Policy: The Underground Press',4507,'An exploration on how to hack public policy','
\r\nIn this Hacker Public Radio episode Bob Tregilus continues an exploration on how to hack public policy. Because outreach and education is so critical to building a successful movement, Tregilus talks to Ken Wachsberger of Lansing, Michigan, about the underground press of the late \'60s and early \'70s. Wachsberger was involved with the \"Joint Issue,\" an underground paper serving southeastern Michigan.\r\n
\r\n
\r\nQuestions addressed and answered include:\r\n
\r\n\r\n\r\n
The history of the underground press.\r\n
\r\n
Constraints on leisure time in the \'60s vs. the 2000s.\r\n
\r\n
Differences between the underground press, the alternative press, and the corporate press.\r\n
\r\n
Community organizing in the \'60s vs. the 2000s.\r\n
Independent Voices is a four-year project to digitize over 1 million pages from the magazines, journals and newspapers of the alternative press archives of participating libraries: <https://www.revealdigital.com/>.\r\n
\r\n
',251,0,0,'CC-BY-SA','public policy, media, underground press, alternative press, outreach, education, activism, radicalism, community organizing',0,1539,1),
(1387,'2013-11-26','Christmas Light Synchronization',1835,'Christmas Holiday Light synchronization','
Hello hacker public radio
\n
I have wanted to contribute to HPR for several months now. I find it annoying and pointless to create a script to read off. But after several attempts of trying to recording my self blathering on with stuttering, cursing, air gaps, and humming I had to script my episode. In this episode I would like to talk about building a Christmas light synchronization system.
\n
I had first seen someone\'s home brew system years ago synchronized to music by the trans-Siberian orchestra. I was immediately mesmerized and went to work on figuring out how it was done.
\n
I have had a fair amount of experience with fabrication and electricity over the years. However I really only know how to maintain systems that have already been engineered and fully vetted by others. My exploration led me to first find all of the unreliable sources and then on to the sites that leave out the magic step into getting their system to work. Truly reliable sources were scarce.
\n
Frustrated with what I was finding, I gave up and my time was consumed with remodelling our home and moving to a different state into our new house.
\n
Last year I wanted to start another attempt at making a system but time was short and planning something like this during the holidays is extremely dumb.
\n
After the last holiday season and while putting away the holiday lights all I could think about is getting these lights synchronized for the next season. So I went back to the disinformation highway continuing my research.
\n
Although I was looking strictly for technical information personal information leaked through.
\n
The common theme amongst other people is to start planning for the next season in July. Starting to plan in January is a bad idea and all you will have is anguish when it comes time to deploy your show.
\n
Soon July came along and I argued with myself if I was really going to commit myself to doing this. From what I have read I can be reassured that there is no backing out once you start. Most people talk about what they are going to add to their system next year.
\n
So lets talk about the first step.
\n
Some sites will say \"GET AS MANY LIGHTS AS YOU CAN AS SOON AS POSSIBLE\"
\n
This theme seems like a logical step, but I don\'t know what I\'m doing!
\n
I already have lots of lights, its not like I\'m going to put up one hundred thousand lights this year. No my plans are to put up the same old lights I already have and incorporate them into the system and then grow from there.
\n
So if I already have some lights I need a new step one.
\n
Unfortunately most of the so called step by step lists don\'t agree on anything. So I chose what was most important just to get lights to work, even if I was never able to build my own synchronization system. The most important thing in any holiday lighting set-up is electricity. So that is the first thing I concentrated on. The front of my house has two outlets on two different circuits. One conveniently placed on the front porch, at the lowest spot on the porch with a plastic cover that is hinged to open upwards preventing direct line of sight when trying to plug an extension cord in. The second is behind a razor sharp ornamental grass bush. The two circuits are on 15 amp breakers and each outlet is installed with a ground fault circuit interrupter (GFCI). You make have seen these in your bathroom, they have a rest button and a test button. These circuits are not dedicated to these two outlets. They are connected to all of the rooms on the front side of the house. For me this simply will not do. Because when or if a breaker trips part of the house will go dark. Instead of fussing with these difficult circuits I decided to install two new circuits that would be exclusively dedicated for any out door lighting. My garage has a relatively empty breaker box so whatever I decide to do I\'ll have plenty of room to do it.
\n
With my mind on future needs I made a check list of what I wanted
\n
\n
# One. Two separate circuits
\n
# Two. 20 amps on each line
\n
# Three. The circuits need to terminate in two separate two gang boxes somewhere out in the yard where all the lights would connect to them.
\n
And thats just what I did. From the breaker box I ran 12 gauge 3 wire (12/3) over head and down the wall into two separate junction boxes.
A GFCI outlet is the first device connected from the home run between the breaker box and this junction box. So anything installed after this point will have GFCI protection. The second thing installed is a light switch that can create an open circuit to the power leaving the garage. I had thought about installing a digital timer instead of the light switches but the light switches are a cheap place holder until I make up my mind. the GFCI outlets and light switches are rated at 20 amps not 15. After the light switches, the circuits run out of the garage and are trenched about 30 inches below ground in PVC conduit. They reappear in a spot in the yard, terminated at the 2 gang outlets. This took quite sometime to do. All of my expenses are going into copper so the budget doesn\'t call for any machinery to help along the. So at this point regardless if I continue on with my adventures I should always have enough power just to run lights.
\n
As the month went on I stumbled across Instructables.com and found a few people actually showing their secret sauce. I probably spent a whole month reading and then rereading what they were doing. There were only about six people that truly knew how to make a synchronization system and they all had one thing in common, Arduino. Without even really knowing what an Aduino is, I knew this was going to be the key to getting a system of my very own! Without hesitation I linked over to adafruit and bought an Arduino Uno. Everyone else had one, so why shouldnt I?
\n
The Uno would only cost me $30 and I would be on my way to completing my goal. If you\'ve never seen or heard of an Arduino they are credit card sized micro controllers that are made in Italy and are open sourced. The Arduino has one little hang up. Everything is programmed in C language. I know nothing of C or any real programming language. The only programing I have any experience with is HTML 1.0. These geriatric skills would not help me with the Arduino. Arduino helps you learn basic skills. You can read practice pages at Arduino.cc or you can use the Arduino examples built into their IDE software. The first tutorial I explored was the Blink command. The blink command you assign a name to the pin you want to use and then create a loop of turning the pin on and off, or HIGH and LOW. For me this was fun and now I am the lord of the blinks. I\'ve been told that music is math. So I chose to experiment with this idea as my first arduino sketch. Arduino calls your program a sketch. So I found some sheet music with around eight notes. I printed the sheet music and then translated all of the notes into integers. Then I mapped the numbers to coordinate with the pins on ardunio. Uploaded the sketch and nothing happened.
\n
You cant see the electricity moving around on the Arduino, I need to do something to ensure the program is working. I run over to Radio Shack to try to remedy this hang up as soon as possible. Radio Shack carries Arduino parts, so I bought a prototyping board, resistors and LED\'s.
\n
LED\'s are great for flash lights and such. But when it comes to prototyping and experimenting LEDs are great indicators that circuits are working correctly. So I soldered up 8 leds, resistors and wires to the prototyping shield and placed the shield onto the Arduino.
\n
I plugged power into the Arduino in and the lights started blinking. I gave my self a mental high five and congratulated my brain on a job well done. This test was successful, it was time to move on to the next step. I had already been over on amazon browsing relays and found a company on there called SainSmart that has prebuilt relay modules. I picked out a module that had 8 relays on it. This module was about $9 and I didn\'t think that I would be able to build something as nice as this for the same price. What I did next is sloppy and dangerous. Don\'t do this, I did it because I was following other peoples\' instructions. People think its OK to run 120v into shoe boxes or clear rubber made totes. I did mine in an $8 home depot tool box. I wired everything up correctly and tested the system. I was able to get 8 strings of light to blink but I wasn\'t very happy with what I had. My idea for making the sequence, looked nice when it was only 8 leds blinking in a two by two inch square. Translate that to strings with 100 bulbs and it doesn\'t look sequenced. In-fact it looks like a sloppy attempt at being random. Maybe even call it laggy. it was bad.
\n
I left out everything I had to do to get the system working because I don\'t want anyone to do this. Seriously don\'t run push high voltage into cheap plastic products. It\'s dumb and dangerous, I did it for you, so you don\'t have to.
\n
However this first experiment passed all of my tests and filled in all the gaps in my mind. I know exactly what to do now and I\'ll cover my new box in detail. I suppose I skipped over what a relay is. You can think of a relay as an electromechanical light switch. They use direct current to drive a magnet to mechanically move an internal switch to create an open or closed circuit. These are the the devices that make it physically possible to synchronize a light show. While running my first prototype system a blue genie escaped from the board so I only have seven of eight relays working. It didn\'t bother me too much that one of them was broken because my plans are to build a larger system. I went back to Amazon again and this time purchased another eight relay module and then two sixteen relay modules. When talking about syncro systems a relay is called a channel, so with all my new hardware I now have enough to do 47 channels. The ardunio UNO only has 17 usable pins. So I needed to build multiple system or get a new controller. So I got a new controller. My new controller is still an Arduino, but instead of being the UNO it is now the MEGA. The MEGA is advertised to have 54 input/output ports. This more than enough to drive the relays I have. The issues of a proper enclosure is not trivial. This system contains high voltage and direct current electronics. I chose a Cantex twelve by twelve by six inch PVC junction box. The lid has six screws and a gasket to make the enclosure water tight.
\n
The box was fairly expensive at thirty dollars but made everything feel better. In my collection of spare parts and junk I found a fist full of stand-offs and screws that actually had the same thread spacing. I drilled holes in the box and screwed in the stand-offs once I had the relays and Arduino parts mounted the way I liked I removed the hardware only leaving the screws and stand-offs.
\n
Around all of the mounting hardware I used a combination of hot glue, silicone caulk and PVC cement to insulate the metal screws and to make their connections water tight. With the lid open and looking into the box the entire back side of the box fits the MEGA and two 16 relay modules. On the six inch side walls I was able to mount the eight relay modules. Before I mounted the relays for the last time I wired them up for high voltage. The relays have three set screws. The center screw is the common hot wire. For example from relay one I have a short 14 gauge wire running out of this screw and into a four port wire nut. Ideal makes a Push-In Wire connector that has 4 ports. The ports are bussed together and make for a cleaner install when compared to a standard twist wire nut. One push in connector can connect two relays and then jumper on to the next wire nut with two more relays, so on and so on. So there are 4 total relay modules and I connected all the common hots among all of them this way. When it came to the 16 relay modules I used tall standoffs so I could hide all this wire under them. So these connections are a little bit longer. The set screws in these modules can only handle up to 14 gauge wire. So thats what I used throughout. Before placing the modules you need to look at the other two set screws and make a decision. to the right of the common hot is the open side and to the left of the common hot is the closed side. At this point you have to think about your Christmas lights. Do you want them to be off all the time and have the relays turn them on to create your sequence. Your default state will be to have a dark yard. I chose to have them on at all times and I was going to create sequences where I would be turning them off. So even if nothing is happening the default state will be that my yard will be bright with lights. I also chose this way because if something breaks along the way I don\'t have to run out and re plug everything just to have lights on. But be careful as this will become confusing as we go along, its inverted from tradition thinking. With the relays wired with common hots, I installed them into the box and screwed them in. After that I tied the modules hots together. But made it more complicated than it needed to be. For some dumb reason I decided to load balance my box. Two relays per circuit. Back to my power, I ran two lines A and B. In side my box I made it so there was an A and B side too. Honestly everything can be tied together and it won\'t stress the system out the slightest. All it does is makes things more complicated. The next thing I did was connect all of the DC cables in the system. I created connectors from bits and parts laying around. Old IDE cables are nice for this. I wanted a completely modular system in case anything failed. So nothing is hard-wired soldered. I started out on the MEGA with Pin 22 and wired one pin to one relay pin. over and over again 47 times.
\n
Then I created a power distribution board that distributes 12 volts to all of the relays and Arduino. I fitted everything up and ensured that everything fit and I had good connections. Then pulled the MEGA back out. Even though I have the relays in a box and all the hardware is connected the Mega has never been powered on. Its still dumb and doesn\'t know what it\'s supposed to be doing. Earlier I was talking about using sheet music to make a sequence and how that\'s a bad idea. I needed a new way to make blinky blinky. I found some popular windows software called Vixen Lights. Vixen is extremely granular lighting synchronization software. To the best of my knowledge it only works under Windows, although I have been trying to get it to work in WINE. Someday I\'ll get this to work. When you get Vixen up and running the screen looks like a spreadsheet, full of cells. Each cell represents time on a channel, double click the cell to turn it on or off. Some estimate that it could take several hours to synchronize three minutes of music. I\'m not really concerned about making a sequence at this time. I move on because its more important to get a completed box in my mind. So let me help you spend some more money. When using Vixen the Ardunio needs to be connected to your computer via a USB cable. You\'ll configure Vixen to send serial to the com port that Ardunio is connected to. I have spare computers. But installing windows xp on a box and getting it configured is extremely annoying in its self. Then figuring out how to put a desktop in the yard adds to pointlessness. Some people might jump on the wifi bandwagon. There are to many devices on my network and I really don\'t want a power system to be available to the Internet. Plus why would you want your lights to be remotely operated like this. If you\'re not home why do you care if your lights are on or off. I\'m doing this for me. The challenge is to eliminate the USB cable and keep it off the Internet.
\n
I found out about wireless radios called xbee\'s. They are expensive, but do exactly what I want. They create a wireless serial connection at 9600 baud. When you\'re out shopping for your own there are two different types of xbee\'s. S1 and S2. I believe the S2\'s are also called zigbees and you can make them more secure than the S1. I ordered the wrong ones, I ordered the S1\'s. The S1\'s are extremely easy to set up. But to set them up you need more hardware. I ordered a majority of my hardware from Adafruit. So along with two xbees, I also got two xbee adapter kits and one FTDI cable. After building the adapter kits and plugging in the xbees I wired one of them into the Ardunio. For the Arduino side all you need is four wires. Ground, five volt power, transmit, and receive. The Uno has one TX/RX connection while the Mega has four. This doesn\'t matter since all Ardunio needs to do is listen. On your computer all you need to do is plug in the xbee using the FTDI. It is recognized as serial I believe in both Windows and Linux no drivers were needed to make it work. The only computer configuration needed is changing in Vixen, you need to tell Vixen what port it needs to use to send serial commands. But before you test this, you need to give your Arduino instructions. Here is the sketch I created for my system:
All the sketch really says is, listen to serial, take that info and do this. Upload the sketch using the USB cable plugged into your computer. I don\'t believe you can upload the sketch or make any changes to the sketch using xbee. Once I had this all setup, I built a 47 led array connected to the pins I want to use, plus the xbee. With a 9 volt battery and the Arduino, I tested this setup. My I created a one at a time sequence on my desktop and hit play. Immediately the lights started flashing. I walked away from the desktop antenna and I was able to venture about 100 feet from the antenna and maintain the signal. Everything is looking great.
\n
I didn\'t change a thing with the Arduio and placed it in the box and connected it to the relays. I connected up the DC system and then tested the relays one at a time. This part was fairly amusing, 47 relays clicking is funny for some reason. I also used this time to play with my multimeter, I tested every aspect of the system before moving on. Making sure the set screws worked as claimed and everything was connected correctly. This will be the last time you have easy access to all the hardware so it needs to be verified. The next step is wiring the relays to do work. So lets do some money math real quick. I have 47 channels. Outdoor outlet boxes are only two gang. If you break the tabs off your outlets you can put 4 channels in one outdoor PVC box. Lets say that since you didn\'t destroy one of your relays you would have 48. 48 divided by 4 is twelve. You need 12 outdoor PVC boxes. At roughly $7 per box at a minimum that cost $84. Then add onto that receptacle covers They generally cost about $14 each. 12 times 14 equals 168 dollars. 84 + 168 = 252 dollars! This doesn\'t cover the cost of wire, outlets, and PVC fittings. 250 dollars just for molded plastic seems wasteful.
\n
Its best practice to go with that method. I simply can not spend the money for that. Instead I went to the dollar store and bought enough green extension cords to complete my task. The extension cords are about 6 foot long. I cut about one third of the cable off of the male side. Since these extension cords are not solid core copper I stripped off a bit of the ends and twisted them before tinning the tips with solder. The relays have set screws and stranded wire doesn\'t make as nice of a connection as solid wire so by tinning the tips you\'re giving the screws something to bite onto. In conjunction with the extension cords I used electric glands to pass the wires through the wall of the junction box. I bought 6 of them and randomly divided all 47 extension cords through only 5 of them. The 6th one will be used for main power later on. As I installed the extension cords I labelled and color coordinated the female parts. And also hit it with the multimeter to double check my work. Once all the extension cords have been connected and verified, it\'s time to install the main power. In my junk pile I had about eight feet of 14/3 outdoor romex. I color coordinated both of these to indicate which one is A and B. There\'s nowhere to tie in the ground in this system, so I clipped that end off and then moved on to the white wires. I tied all of the neutrals together and then tested that with a multimeter, testing across the two furthest points ensuring a sure path. I used the same push-in connectors and several hot glue sticks to create a solid brick of push in connectors. Finally I tied the hot black wires into their sides and the system is complete. I ran a live test of the system a few weeks ago. I pulled out a few strings of lights and played around experimenting with the Vixen environment. I have a few ideas on how I would like to change the system but I haven\'t incorporated these ideas yet. What I would like to do is bring a raspberry pi in to remove my desktop. I found a program on SourceForge called Lumos. The creator claims that his program can play Vixen sequences via the command line in Linux. I would like to give this a try, or just get Vixen to work under Linux. I don\'t want to dedicate my main computer to perform this yearly task. I hope I have explained this clear enough. I don\'t participate in all the social media sites, but I do wear tinfoil hats. If you would like to reach me I hangout in the Podnutz Chat on freenode, my user name is Underruner. Thank you for listening.
',267,0,0,'CC-BY-SA','Christmas,Holiday,Light,synchronization',0,1517,1),
(1394,'2013-12-05','Setting Up Your Own Blog',697,'Keith Murray talks about the things you need to consider when setting up your own blog.','
Keith Murray talks about the things you need to consider when setting up your own blog. Topics discussed include hosting options, software platforms and a brief discussion of some of the underlying technologies involved.
\n
Links to many of the topics and projects discussed are included below.
',266,0,0,'CC-BY-SA','blog,Apache,nginx,Wordpress,Joomla,Drupal,Jekyll,\"Second Crack\",Markdown',0,1610,1),
(1388,'2013-11-27','JavaScript',613,'Introduction to JavaScript, its origins, characteristics, and uses.','
\r\nSigflup calls in a \"off the cuff\" episode about JavaScript from the Hospital. \r\n
\r\n
\r\nJavaScript \r\nFrom Wikipedia, the free encyclopedia\r\n
\r\nJavaScript (JS) is an interpreted computer programming language. As part of web browsers, implementations allow client-side scripts to interact with the user, control the browser, communicate asynchronously, and alter the document content that is displayed. It has also become common in server-side programming, game development and the creation of desktop applications. \r\nJavaScript is a prototype-based scripting language with dynamic typing and has first-class functions. Its syntax was influenced by C. JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have very different semantics. The key design principles within JavaScript are taken from the Self and Scheme programming languages. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles. \r\nThe application of JavaScript to uses outside of web pages—for example, in PDF documents, site-specific browsers, and desktop widgets—is also significant. Newer and faster JavaScript VMs and frameworks built upon them (notably Node.js) have also increased the popularity of JavaScript for server-side web applications. \r\nJavaScript was formalized in the ECMAScript language standard and is primarily used as part of a web browser (client-side JavaScript). This enables programmatic access to computational objects within a host environment.\r\n
\r\n\r\n',115,0,1,'CC-BY-SA','programming languages,javascript,web programming',0,1595,1),
@@ -17718,7 +17833,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1392,'2013-12-03','Beginner\'s guide to the night sky',1055,'A personal view of the Universe, as viewed from Earth, by a geeky chap.','
\r\nThis is a personal view of the Universe, as viewed\r\nfrom the Earth in the early 21st Century, by a somewhat\r\ngeeky chap. In this episode, I talk a little about my first memories\r\nof looking at the night sky and how the modern science of astronomy\r\nhas its roots in ancient mythology, and how the sky provided\r\na picture book for humanity before we even did our first cave painting.\r\n
\r\n',268,0,0,'CC-BY-SA','astronomy,\"Moon Illusion\",constellation,mythology,astrology',0,1701,1),
(1393,'2013-12-04','Audio Metadata in Ogg, MP3, and others',2709,'Epicanis discusses metadata tags in mp3, opus, ogg, flac, speex, and other audio formats.','\r\n\r\n
\r\nMetadata in MP3, Opus/Ogg/FLAC/Speex, and other audio files.\r\n
\r\n
\r\nToday\'s episode discusses (and encourages) the use of metadata tags in audio files. \r\nMost of the episode is spent on id3v2.3 (metadata for mp3 files) and vorbiscomments (metadata for opus, ogg vorbis, flac, and speex files), and how to mix them, though metadata in webm/matroska, windows media, and wav files is briefly discussed as well.\r\n
\r\n
\r\nThis episode\'s files have also been crafted with substantially more metadata than the ID3v1 set of tags that HPR normally limits itself to, to serve as examples.\r\n
\r\n
\r\nListeners to the opus, ogg (vorbis), or speex versions will also have access to chapter markings if your playback software recognizes standard vorbiscomment chapter metadata. (No chapter markings in the mp3, as support for it is extremely sparse, and I\'ve not \r\nyet even managed to find a tool for making mp3 chapters that actually works - the java utility I mention in the episode crashes on me without starting...)\r\n
\r\n
\r\nAll metadata conforms to the published standards, so your playback software should at best fully use it all, or at worst simply ignore it. If your player software actually DOES have a real problem with this file, I would very much like to know!\r\n
\r\n
\r\nIf there\'s anything wrong with the metadata, blame Epicanis, not HPR (I did the metadata myself). \r\n
\r\n
\r\nIf you hear or see any errors in this episode, please tell me. I\'ll issue appropriate corrections in subsequent episodes. If I\'m a big enough screwup with this episode, I could even do a small episode on \"everything I got wrong in my metadata episode\" if I did \r\nbadly enough. I don\'t THINK there should be more than a few minor errors or omissions here, though.\r\n
\r\n
\r\nERRATA: In chapter 18 (at 34:53) there is one small error: oggenc does NOT transfer attached pictures from flac input (though it DOES transfer all vorbiscomment metadata. FLAC stores attached pictures in a separate metadata structure so oggenc misses it. \r\nopusenc - at least in recent beta versions - DOES appear to transfer the attached pictures as well as the vorbiscomments, though. Another reason to upgrade to opus, I suppose...)\r\n
\r\n ',182,0,0,'CC-BY-SA','thoughtkindness, audio, metadata, ogg, mp3, vorbis, opus, flac, speex, matroska, webm, asf, mp4, wav, file formats, HTML5, tagging',0,1680,1),
(1396,'2013-12-09','First Thoughts of the Google Chromecast',737,'A description of the Google Chromecast and some experiences with it','
\r\nI discuss my first experience with the Google Chromecast. I go through my process of setting up the device and start streaming Netflix, Music and Podcasts. \r\n
\r\n',252,0,0,'CC-BY-SA','google chromecast,netflix',0,1790,1),
-(1397,'2013-12-10','HPR Community News for November 2013',4734,'HPR Community News for November 2013','
Rootstrikers.org and federal election commission data processing
\n
James Michael DuPont (h4ck3rm1k3)
\n
\n
\n
1373
\n
2013-11-06
\n
01 - Why Do We Need Privacy, And Isn\'t It A Waste Of Time Anyway?
\n
Ahuka
\n
\n
\n
1374
\n
2013-11-07
\n
Updating The 2009 LifeHacker QuadCore Hackintosh to Mavericks
\n
Richard Hughes
\n
\n
\n
1375
\n
2013-11-08
\n
LibreOffice 15 Writer Nested Lists Introduced
\n
Ahuka
\n
\n
\n
1376
\n
2013-11-11
\n
How Should We Then Teach the Art of Computing?
\n
klaatu
\n
\n
\n
1377
\n
2013-11-12
\n
Zareason ZaTab 2 Android Tablet
\n
Frank Bell
\n
\n
\n
1378
\n
2013-11-13
\n
Day one of interviews from OGGcamp 13.
\n
Various Hosts
\n
\n
\n
1379
\n
2013-11-14
\n
Day two of interviews from OGGcamp 13.
\n
Various Hosts
\n
\n
\n
1380
\n
2013-11-15
\n
OGGCamp13 Bonus Track
\n
Various Hosts
\n
\n
\n
1381
\n
2013-11-18
\n
How We Found Linux
\n
Kevin Wisher
\n
\n
\n
1382
\n
2013-11-19
\n
Interview with Dave Hingley
\n
Mike Hingley
\n
\n
\n
1383
\n
2013-11-20
\n
HPR Community News for October 2013
\n
HPR Admins
\n
\n
\n
1384
\n
2013-11-21
\n
How I Got Into Linux and OSS
\n
Keith Murray
\n
\n
\n
1385
\n
2013-11-22
\n
LibreOffice 16 Writer Nested Lists Controlled via Styles
\n
Ahuka
\n
\n
\n
1386
\n
2013-11-25
\n
Hacking Public Policy: The Underground Press
\n
Bob Tregilus
\n
\n
\n
1387
\n
2013-11-26
\n
Christmas Light Synchronization
\n
Underruner
\n
\n
\n
1388
\n
2013-11-27
\n
JavaScript
\n
sigflup
\n
\n
\n
1389
\n
2013-11-28
\n
Javascript Corrections
\n
sigflup
\n
\n
\n
1390
\n
2013-11-29
\n
02 - Encryption Basics
\n
Ahuka
\n
\n \n
\n
Other News
\n
\n
Mike Dupont (h4ck3rm1k3) is writing a HPR Publisher tool
\n
Discussion of the infrastructure for New Year\'s 24-hour show
\n
Danny Meeks has offered to print a replacement banner There was a Mumble discussion about the design
\n
Indiegogo campaign for Linux Voice
\n
Calls for more shows
\n
Development of a torrent for collecting archived shows
\n
\n',159,47,1,'CC-BY-SA','Community News',0,1499,1),
+(1397,'2013-12-10','HPR Community News for November 2013',4734,'HPR Community News for November 2013','
Rootstrikers.org and federal election commission data processing
\n
James Michael DuPont (h4ck3rm1k3)
\n
\n
\n
1373
\n
2013-11-06
\n
01 - Why Do We Need Privacy, And Isn\'t It A Waste Of Time Anyway?
\n
Ahuka
\n
\n
\n
1374
\n
2013-11-07
\n
Updating The 2009 LifeHacker QuadCore Hackintosh to Mavericks
\n
Richard Hughes
\n
\n
\n
1375
\n
2013-11-08
\n
LibreOffice 15 Writer Nested Lists Introduced
\n
Ahuka
\n
\n
\n
1376
\n
2013-11-11
\n
How Should We Then Teach the Art of Computing?
\n
klaatu
\n
\n
\n
1377
\n
2013-11-12
\n
Zareason ZaTab 2 Android Tablet
\n
Frank Bell
\n
\n
\n
1378
\n
2013-11-13
\n
Day one of interviews from OGGcamp 13.
\n
Various Hosts
\n
\n
\n
1379
\n
2013-11-14
\n
Day two of interviews from OGGcamp 13.
\n
Various Hosts
\n
\n
\n
1380
\n
2013-11-15
\n
OGGCamp13 Bonus Track
\n
Various Hosts
\n
\n
\n
1381
\n
2013-11-18
\n
How We Found Linux
\n
Kevin Wisher
\n
\n
\n
1382
\n
2013-11-19
\n
Interview with Dave Hingley
\n
Mike Hingley
\n
\n
\n
1383
\n
2013-11-20
\n
HPR Community News for October 2013
\n
HPR Admins
\n
\n
\n
1384
\n
2013-11-21
\n
How I Got Into Linux and OSS
\n
Keith Murray
\n
\n
\n
1385
\n
2013-11-22
\n
LibreOffice 16 Writer Nested Lists Controlled via Styles
\n
Ahuka
\n
\n
\n
1386
\n
2013-11-25
\n
Hacking Public Policy: The Underground Press
\n
Bob Tregilus
\n
\n
\n
1387
\n
2013-11-26
\n
Christmas Light Synchronization
\n
Underruner
\n
\n
\n
1388
\n
2013-11-27
\n
JavaScript
\n
sigflup
\n
\n
\n
1389
\n
2013-11-28
\n
Javascript Corrections
\n
sigflup
\n
\n
\n
1390
\n
2013-11-29
\n
02 - Encryption Basics
\n
Ahuka
\n
\n \n
\n
Other News
\n
\n
Mike Dupont (h4ck3rm1k3) is writing a HPR Publisher tool
\n
Discussion of the infrastructure for New Year\'s 24-hour show
\n
Danny Meeks has offered to print a replacement banner There was a Mumble discussion about the design
\n
Indiegogo campaign for Linux Voice
\n
Calls for more shows
\n
Development of a torrent for collecting archived shows
\n
\n',159,47,1,'CC-BY-SA','Community News',0,1499,1),
(1398,'2013-12-11','Batteries Part 1',1222,'A show about batteries - Part 1','
A show about batteries - Part 1
\n
I can\'t take the credit for all this detailed information in my podcast, I found this fantastic website many years ago while investigating why the battery in my expensive razor prematurely failed. I tried to hunt for the site but couldn\'t find it. I wrote up all my notes from memory and recorded the show. It wasn\'t until I started working on part 2 of my batteries show that I stumbled across this long forgotten site - at least I think it\'s the same one as it talks about the memory effect on satellites and doctor\'s pagers so I guess it must be the same one. I\'m indeed delighted to find it still exists, and I may very well read it again from top to bottom. It looks like it\'s been updated a little too. Well done ka7oei a fantastic resource right enough.
I found it very difficult to find a slow trickle charger, here are two possibilities, you may need to settle for a fast charger as the slow ones now seem to be like hen\'s teeth, (VERY HARD TO GET).
\n
This is perhaps a little slow with a charge current of only 150ma, would take about 17Hrs to charge 2100 mAh batteries.
The charger I use is made by the same company as this although mine is a different model. My model charges at 200ma, and takes about 13 Hrs to charge a 2100 mAh battery. I can\'t tell what charge current this charger deliveries, but suspect it\'s a simple slow charger, probably old stock, as I said slow chargers are getting like hen\'s teeth.
',201,0,0,'CC-BY-SA','battery,\"alkaline cells\",\"rechargeable battery\",NiMH,NiCd,Lithium-Ion,Li-Ion',0,1656,1),
(1425,'2014-01-17','20 - LibreOffice Writer Frames - Introduction and the Type Tab',1849,'This episode introduces the discussion of Frames in LibreOffice Writer','
This episode introduces the discussion of Frames in LibreOffice Writer by opening the Properties window and looking at the first tab, Type. Because there is so much to discuss about this tab, it is the only one we will look at in this episode. In the next episode we will wrap up the discussion of Frame properties by looking at the other tabs in this window
',198,70,0,'CC-BY-SA','libreoffice,frames',0,1440,1),
(1435,'2014-01-31','21 - LibreOffice Writer Frame Properties Completed',1000,'The second of two programs about Frame properties in LibreOffice Writer','
\r\nThis is the second of two programs that look at Frame properties in LibreOffice Writer. In the first program we looked at how to size and position Frames. Here we look at other things you can do, such as name your frames for linking, wrap text around frames, set the borders and backgrounds, and even add columns to the frame. This finishes the look at the Properties window and what you can do there.\r\n
',198,70,0,'CC-BY-SA','libreoffice,frame properties',0,1431,1),
@@ -17742,7 +17857,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1421,'2014-01-13','Statistics and Polling',2427,'Polling and the statistical background behind it','
\r\nWe are given polling results constantly in news stories, and even more so when an election is near. But how accurate are these polls? What are the limitations? And what kinds of questions should you have when looking at these surveys? I will attempt to answer these questions in this podcast.\r\n
',198,0,0,'CC-BY-SA','Statistics,polling,politics,surveys',0,1425,1),
(1440,'2014-02-07','Creating a Key Pair - GUI Client',966,'Using a GUI client (KGpg) to generate an RSA key pair.','
In the previous program we explained how to use the command line tools to generate encryption keys. This time we look at the GUI clients that some people may prefer. Using KGpg as an example, we can see that it does all the things we did last time on the command line.
',198,0,0,'CC-BY-SA','Security, encryption, keys, GUI',0,1564,1),
(1416,'2014-01-06','2013-2014 HPR New Year Show Part 1 2013-12-31T10:00:00Z to 2013-12-31T16:00:00Z',21595,'New Year Show 2014, part 1','
2013-12-31T10:00:00Z
\r\n
\r\n
Greetings to Christmas Island/Kiribati and Samoa Kiritimati, Apia, followed by a short reminder of the ORCA fundraiser.
\r\n
\r\nGeneral links / references mentioned on the show for the show notes:\r\n
Greetings to Western Australia/Australia Eucla, followed by a short reminder of the ORCA fundraiser.
\r\n
SndChaser asked FlyingRich about FAA lifting the ban on devices on planes
\r\n
Pokey asked about the concerns regarding interference on devices at altitude
\r\n
William asked if standard ECC is good enough for this application
\r\n
Somehow transitioned throught lighting to plants.
\r\n
Popey joins us!
\r\n
Hash LUGRadio gets a shout out
\r\n
SoundChaser adds a bullet point <- HAHAHAHAHAHAH
\r\n
Talk with popey about the codec repositories
\r\n
Commercials are just terrible - not for the tech market that we are in
\r\n
',159,121,1,'CC-BY-SA','New Year,2014',0,1554,1),
-(1417,'2014-01-07','2013-2014 HPR New Year Show Part 2 2013-12-31T16:00:00Z to 2013-12-31T21:00:00Z',19158,'New Year Show 2014, part 2','
2013-12-31T16:00:00Z
\n
\n
Greetings to China and 12 more Beijing, Hong Kong, Manila, Singapore, followed by a short reminder of the ORCA fundraiser.
\n
Dave from The Bugcast podcast joins us.
\n
Conversation about being able to identify different generations of devices. Comparison to cars.
\n
Talks about batteries and the MrX HPR Episode regarding batteries (top 10 HPR ep.)
17 - LibreOffice Writer Overview of Page Layout Options
\n
Ahuka
\n
\n
\n
1396
\n
2013-12-09
\n
First Thoughts of the Google Chromecast
\n
Curtis Adkins (CPrompt^)
\n
\n
\n
1397
\n
2013-12-10
\n
HPR Community News for November 2013
\n
Various Hosts
\n
\n
\n
1398
\n
2013-12-11
\n
Batteries Part 1
\n
MrX
\n
\n
\n
1399
\n
2013-12-12
\n
Interview with Ben Everard https://www.linuxvoice.com
\n
Curtis Adkins (CPrompt^)
\n
\n
\n
1400
\n
2013-12-13
\n
How We Use Linux
\n
Honkeymagoo
\n
\n
\n
1401
\n
2013-12-16
\n
Huawei Mate review
\n
Knightwise
\n
\n
\n
1402
\n
2013-12-17
\n
How I Started Using Linux and Free and Open Source Software
\n
Thaj Sara
\n
\n
\n
1403
\n
2013-12-18
\n
hiro from GamingGrannar at Retrospelsmässan
\n
Seetee
\n
\n
\n
1404
\n
2013-12-19
\n
Editing pre-recorded audio in Audacity
\n
Ken Fallon
\n
\n
\n
1405
\n
2013-12-20
\n
18 - LibreOffice Writer Page Styles Introduced
\n
Ahuka
\n
\n
\n
1406
\n
2013-12-23
\n
ORCA fundraiser
\n
Ahuka
\n
\n
\n
1407
\n
2013-12-24
\n
Mars Needs Women, and Hacker Public Radio Needs Shows
\n
Ahuka
\n
\n
\n
1408
\n
2013-12-25
\n
Drupal in Gothenburg with Addison Berry and others
\n
Seetee
\n
\n
\n
1409
\n
2013-12-26
\n
Xircom PE pocket ethernet adapter
\n
Ken Fallon
\n
\n
\n
1410
\n
2013-12-27
\n
Generating Keys on the Command Line
\n
Ahuka
\n
\n
\n
1411
\n
2013-12-30
\n
ohmroep live 1, 31-06-2013, pirate parties
\n
Nido Media
\n
\n
\n
1412
\n
2013-12-31
\n
ohmroep hpr live 2, 31-06-2013, advancing local communities
\n
Nido Media
\n
\n \n
\n
Other News
\nDownloads in 2013 = 1,134,478\nPer episode download = 4,364\n
Other News
\n
\n
Discussion of the infrastructure for New Year\'s 24-hour show
\n
Indiegogo campaign for Orca
\n
Calls for more shows
\n
Torrents
\n
HPR new year show promo
\n
Proposal to add show Reservations to HPR \"This means that \"Next Available Slot\" skips reserved slots. If any host wants the same day then well they should try and make arrangements with the other host. If both hosts cannot reach a resolution, then the mailing list will decide for them.\"
\n
Brochure for HPR?
\n
Please Please use the TXT template
\n
New HPR website design
\n
New Year Show/ Orca
\n
Shared pad for show notes for the New Years show
\n
\n \n
\n
Greetings to Iraq and 20 more Baghdad, Khartoum, Nairobi, and Addis Ababa, followed by a short reminder of the ORCA fundraiser.
I mis-spoke and stated that jlindasy had said that it was only the X60 for corebot. That was incorrect, jlindsay stated that Gluglug had the X60\'s: https://shop.gluglug.org.uk/
It is possible Coreboot is the solution to BadBIOS
\n
',159,121,1,'CC-BY-SA','New Year,2014',0,1380,1),
+(1417,'2014-01-07','2013-2014 HPR New Year Show Part 2 2013-12-31T16:00:00Z to 2013-12-31T21:00:00Z',19158,'New Year Show 2014, part 2','
2013-12-31T16:00:00Z
\n
\n
Greetings to China and 12 more Beijing, Hong Kong, Manila, Singapore, followed by a short reminder of the ORCA fundraiser.
\n
Dave from The Bugcast podcast joins us.
\n
Conversation about being able to identify different generations of devices. Comparison to cars.
\n
Talks about batteries and the MrX HPR Episode regarding batteries (top 10 HPR ep.)
17 - LibreOffice Writer Overview of Page Layout Options
\n
Ahuka
\n
\n
\n
1396
\n
2013-12-09
\n
First Thoughts of the Google Chromecast
\n
Curtis Adkins (CPrompt^)
\n
\n
\n
1397
\n
2013-12-10
\n
HPR Community News for November 2013
\n
Various Hosts
\n
\n
\n
1398
\n
2013-12-11
\n
Batteries Part 1
\n
MrX
\n
\n
\n
1399
\n
2013-12-12
\n
Interview with Ben Everard https://www.linuxvoice.com
\n
Curtis Adkins (CPrompt^)
\n
\n
\n
1400
\n
2013-12-13
\n
How We Use Linux
\n
Honkeymagoo
\n
\n
\n
1401
\n
2013-12-16
\n
Huawei Mate review
\n
Knightwise
\n
\n
\n
1402
\n
2013-12-17
\n
How I Started Using Linux and Free and Open Source Software
\n
Thaj Sara
\n
\n
\n
1403
\n
2013-12-18
\n
hiro from GamingGrannar at Retrospelsmässan
\n
Seetee
\n
\n
\n
1404
\n
2013-12-19
\n
Editing pre-recorded audio in Audacity
\n
Ken Fallon
\n
\n
\n
1405
\n
2013-12-20
\n
18 - LibreOffice Writer Page Styles Introduced
\n
Ahuka
\n
\n
\n
1406
\n
2013-12-23
\n
ORCA fundraiser
\n
Ahuka
\n
\n
\n
1407
\n
2013-12-24
\n
Mars Needs Women, and Hacker Public Radio Needs Shows
\n
Ahuka
\n
\n
\n
1408
\n
2013-12-25
\n
Drupal in Gothenburg with Addison Berry and others
\n
Seetee
\n
\n
\n
1409
\n
2013-12-26
\n
Xircom PE pocket ethernet adapter
\n
Ken Fallon
\n
\n
\n
1410
\n
2013-12-27
\n
Generating Keys on the Command Line
\n
Ahuka
\n
\n
\n
1411
\n
2013-12-30
\n
ohmroep live 1, 31-06-2013, pirate parties
\n
Nido Media
\n
\n
\n
1412
\n
2013-12-31
\n
ohmroep hpr live 2, 31-06-2013, advancing local communities
\n
Nido Media
\n
\n \n
\n
Other News
\nDownloads in 2013 = 1,134,478\nPer episode download = 4,364\n
Other News
\n
\n
Discussion of the infrastructure for New Year\'s 24-hour show
\n
Indiegogo campaign for Orca
\n
Calls for more shows
\n
Torrents
\n
HPR new year show promo
\n
Proposal to add show Reservations to HPR \"This means that \"Next Available Slot\" skips reserved slots. If any host wants the same day then well they should try and make arrangements with the other host. If both hosts cannot reach a resolution, then the mailing list will decide for them.\"
\n
Brochure for HPR?
\n
Please Please use the TXT template
\n
New HPR website design
\n
New Year Show/ Orca
\n
Shared pad for show notes for the New Years show
\n
\n \n
\n
Greetings to Iraq and 20 more Baghdad, Khartoum, Nairobi, and Addis Ababa, followed by a short reminder of the ORCA fundraiser.
I mis-spoke and stated that jlindasy had said that it was only the X60 for corebot. That was incorrect, jlindsay stated that Gluglug had the X60\'s: https://shop.gluglug.org.uk/
It is possible Coreboot is the solution to BadBIOS
\n
',159,121,1,'CC-BY-SA','New Year,2014',0,1380,1),
(1418,'2014-01-08','2013-2014 HPR New Year Show Part 3 2013-12-31T22:00:00Z to 2014-01-01T04:00:00Z',20552,'New Year Show 2014, part 3','
2013-12-31T22:00:00Z
\r\n
\r\n
Greetings to Greece and 30 more Cairo, Ankara, Athens, and Bucharest, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
Discussion of the new cast of TuxRadar\r\n
\r\n
Got talking about Jupiter Broadcasting\r\n
\r\n
Deep discussion on the world of Jono Bacon\r\n
\r\n
The discussion of Jono / Aq on LugRadio evolves into a debate on the nature of debate\r\n
\r\n
This conversation evolved into a question / debate about software morality, SndChaser suggested that maybe it is an ethical question instead of a moral question\r\n
\r\n
\r\n
2013-12-31T23:00:00Z
\r\n
\r\n
Greetings to Germany and 43 more Brussels, Madrid, Paris, and Rome, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
Our co-hosts pound on the morality topic some more...\r\n
\r\n
We should all be advocates for Free / Libre software wherever and whenever we can.\r\n
\r\n
Software applications that are Open Source which are better than their closed-source counterparts:\r\n
Ease of use vs control over the operating system.\r\n
\r\n
Dann: thinking about using desktop environments, always found that he was setting them up like Fluxbox, so just sticking to fluxbox now.\r\n
\r\n
\r\n
2014-01-01T00:00:00Z
\r\n
\r\n
Greetings to United Kingdom and 24 more London, Casablanca, Dublin, and Lisbon, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
(0002Z) Pokey: Mac OS was moderne when it was created, but now it\'s looking old and tired\r\n
\r\n
SndChaser thinks we are kind of spoiled with all the options - includnig things that don\'t exist elsewhere - like Awesome. But lovest the ability we have to build our desktops to fit our workflows and optimize how we work.\r\n
\r\n
(0020Z) K5Tux: Easy to learn (he\'s coming back to it...) -- \"Going to change lanes: When discussing ease of use, what about \"don\'t care to know\" folks, gamers, etc -- those who don\'t worry about privacy and software freedom, I have my own thoughts on but I\'d like to hear the consensus on the danger for those who just don\'t care.\"\r\n
\r\n
(0045Z) How did you come to Linux?\r\n
\r\n
(0048Z) Free Software\'s major achievements in 2014:\r\n
\r\n
Watches or glasses (marcusbaird)\r\n
\r\n
SteamBox (ThistleWeb)\r\n
\r\n
ROMs for entry-level mobile phones (pokey)\r\n
\r\n
\r\n
\r\n
\r\n
2014-01-01T01:00:00Z
\r\n
\r\n
Greetings to Cape Verde, some regions of Greenland and 1 more Praia, Ponta Delgada (Azores), Ittoqqortoormiit, and Mindelo, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
Is Windows made for the consumer or is it made just to look that way on the store shelves? (pokey)\r\n
\r\n
Thistleweb expounds upon the evils of extended warranties\r\n
\r\n
eBook discussion\r\n
\r\n
\r\n
2014-01-01T02:00:00Z
\r\n
\r\n
Greetings to regions of Brazil, Uruguay and 1 more Rio de Janeiro, S??o Paulo, Brasilia, Montevideo, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
Pokey mentions that he is furious that the authors guild forced the text-to-speech to be disabled on the Kindle... and names Roy Bloundt Jr.\r\n
\r\n
Electronic versions of textbooks are not reducing the number of printed books. Students have to buy / lease the paper books, then get the electronic version. And, in many cases they cannot (easily) re-selly the paper copy for even half of what they paid. In the case of grade school / highschool they cannot sell the books since they are just leased.\r\n
Greetings to regions of Brazil, Argentina and 7 more Buenos Aires, Santiago, Asuncion, Paramaribo, followed by a short reminder of the ORCA fundraiser.\r\n
It is determined that Perberos, Stefano Karapetsas (stefano-k), Steve Zesch (amanas) and Clement Lefebvre (clem) are the people responsible for removing all accessibility features from MATE, the Gnome2 fork. Gnome2 used to be the most accessible desktop.\r\n
\r\n
\r\n
2014-01-01T03:30:00Z
\r\n
\r\n
Greetings to Newfoundland and Labrador/Canada St. John\'s, Conception Bay South, Corner Brook, Gander, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
Jon Kulp: Open Dyslexic Font\r\n
\r\n
SndChaser installs Open Dyslexic extension in chromium\r\n
\r\n
Pokey looks at the Open Dyslexic website and is able to read the page very quickly (quickly for pokey anyway), goes ahead and tries to install the font on Mint\r\n
\r\n
\r\n
\r\n
\r\n',159,121,1,'CC-BY-SA','ORCA,FocusWriter,DarkTable,LightZone,GIMP,Sound Converter,Maelstrom,TuxPaint,mtpaint,Jitsi,kid3,EasyTag,Audacity,gPodder,PuddleTag,avidemux,OpenShot,EtherPad,WordPress,Abiword,gnumeric,LibreOffice',0,1672,1),
(1419,'2014-01-09','2013-2014 HPR New Year Show Part 4 2014-01-01T04:00:00Z to 2014-01-01T10:00:00Z',18739,'New Year Show 2014, part 4','
2014-01-01T04:00:00Z
\r\n
\r\n
Greetings to some regions of Canada and 26 more La Paz, San Juan, Santo Domingo, Halifax, followed by a short reminder of the ORCA fundraiser.\r\n
Greetings to Venezuela Caracas, Barquisimeto, Maracaibo, Maracay, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
More gun talk: Broam, Pokey, FiftyOneFifty, Greybeard, FlyingRich...(yawn)\r\n
\r\n
\"Only Accurate Guns are Interesting\" - Col. Townsend Whelen\r\n
\r\n
\r\n
2014-01-01T05:00:00Z
\r\n
\r\n
Greetings to the eastern region of U.S.A., regions of Canada and 12 more New York, Boston, Rochester, Marriland, Washington D.C., 20,000 feet over Florida, Washington DC, Detroit, Havana, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
5150: OCPLive is probably going to happen this year. No official location. Sounds like plans are going to be hammered out in the near future.\r\n
Peter64 regales us with his tale of how he electrocuted himself with christmas lights\r\n
\r\n
\r\n
2014-01-01T06:00:00Z
\r\n
\r\n
Greetings to the midwest region of U.S.A., some regions of Canada and 8 more Mexico City, Chicago, Guatemala, Dallas, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
General and random chaos conversation - this is turning into a jumbled, mixed up, and fun conversation\r\n
\r\n
General pissing match about the Affordable Care Act / Obama Care.\r\n
\r\n
Food conversation inlcuding the Aussie version of the Turducken\r\n
Greetings to the mountain region of U.S.A., some regions of Canada and 1 more Calgary, Denver, Edmonton, Phoenix, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
JonDoe, Discusses an upcomming show on goodwill computing\r\n
Greetings to the western region of U.S.A., some regions of Canada and 2 more Los Angeles, San Francisco, Las Vegas, Seattle, followed by a short reminder of the ORCA fundraiser.\r\n
Cobra2 Recipe: Fowl (chicker, turkey, etc) covered with real mayo, salt & pepper, sear, cook normally.\r\n
\r\n
\r\n
2014-01-01T09:30:00Z
\r\n
\r\n
Greetings to Marquesas Islands/France Taiohae, followed by a short reminder of the ORCA fundraiser.\r\n
\r\n
BitCoin and transaction validation\r\n
\r\n
TorNetwork\r\n
\r\n
HPR & BitTorrent / Magnet Links / Archive.org - Contributor RSS feeds to allow grabbing all episodes from specific contributors\r\n
\r\n
\r\n
\r\n
\r\n',159,121,1,'CC-BY-SA','New Year,2014',0,1377,1),
(1420,'2014-01-10','2013-2014 HPR New Year Show Part 5 2014-01-01T10:00:00Z to 2014-01-01T12:00:00Z',6699,'New Year Show 2014, part 5','
2014-01-01T10:00:00Z
\r\n
\r\n
Greetings to small region of U.S.A. and 2 more Honolulu, Rarotonga, Adak, Papeete, followed by a short reminder of the ORCA fundraiser.\r\n
I maintain that in it\'s current likely implementations that it is not. Especially since it is likely that the storage uses a 1 original URL to many shortened URLs. However, I would think it would be possible to implement as a hashed function given the rights seeds.\r\n
\r\n
\r\n
\r\n
KuraKura: questions about using mumble.\r\n
\r\n
General conversation\r\n
\r\n
Discussion about Orca and handling integration with various software packages. Ken wants to motivate the HPR community to explore the issues that exist, and talk with developers from application projects about improving their orca integration.\r\n
\r\n
JonDoe mentions that there might be dependencies and / or regressions that occur as changes are made due to hacks / workarounds that currently exist (both in orca and applications)\r\n
Would someone do an HPR show on conversion / relationship between celsiu and farhenheit? Ken really wants to understand the conversion and why the difference. kaithx\r\n
\r\n
Pokey doesn\'t like single port audio jack for headset and microphon\r\n
\r\n
Jonathan Nadeau talks about the frustration blind users can have typing on a touch phone/tablet. \r\n
Popey discusses the Mint / Canonical repsoitory / binary package issue. Popey expresses his own opinion, and not in any way an official statement from Canonical.\r\n
\r\n
\r\n
2014-01-01T12:00:00Z
\r\n
\r\n
Greetings to small region of U.S.A. Baker Island, Howland Island, followed by a short reminder of the ORCA fundraiser.\r\n
We talk to Intel employee Paul Eggleton, who talked to us about OpenEmbedded and the yocto project.
\n
Paul Eggleton and Apelete Seketeli at the OpenEmbedded booth
\n
The Yocto Project is an open source collaboration project that provides templates, tools and methods to help you create custom Linux-based systems for embedded products regardless of the hardware architecture. OpenEmbedded offers a best-in-class cross-compile environment. It allows developers to create a complete Linux Distribution for embedded systems
\n
00:02:48 ODROID with external display showing a waterfall display as described in the interview.
\n
00:03:25 The Galileo board as described in the interview.
\n
00:05:16 The Intel MinnowBoard as described in the interview.
\n
00:06:57 Industrial controller from a cable layer as described in the interview.
\n
00:06:57 Industrial controller buttons
\n
00:07:40 Toshiba arm development board with a smaller lcd screen
We chat to Daniel Seuffert about the various BSD\'s.
\n
About FreeBSD:
\n
FreeBSD is an advanced computer operating system used to power modern servers, desktops and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.
\n
About OpenBSD:
\n
The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. As an example of the effect OpenBSD has, the popular OpenSSH software comes from OpenBSD.
\n
About NetBSD:
\n
NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices. Its clean design and advanced features make it excellent for use in both production and research environments, and the source code is freely available under a business-friendly license. NetBSD is developed and supported by a large and vivid international community. Many applications are readily available through pkgsrc, the NetBSD Packages Collection.
\n
About PC-BSD®:
\n
PC-BSD® is a user friendly desktop Operating System based on FreeBSD. Known widely for its stability and security in server environments, FreeBSD provides an excellent base on which to build a desktop operating system. PC-BSD uses a host of popular open source window managers and uses a custom-tailored application installer that puts popular applications in easy reach of users.
Tsvetan Usunov was giving away small penguin shaped arduino computers for free. The snag, you had to solder them yourselves. On day 1 over a hundred boards were soldered by programmers and all worked.
\n
Olimex Ltd is a leading provider for development tools and programmers for embedded market. The company has over 20 years’ experience in designing, prototyping and manufacturing printed circuit boards, sub-assemblies, and complete electronic products. We are established in 1991 in Plovdiv - the second largest city in Bulgaria.
\n
Tux powered led strips
\n
Tux measuring the temprature
\n
Tux led strips overview
\n
A10-OLinuXino, the small pc refered to in the openstreetmap interview
Next a chat with an Evildragon aka Michael Mrozek who talks to us about the OpenPandora device, and what\'s coming next.
\n
The Pandora is a handheld game console designed to take advantage of existing open source software and to be a target for homebrew development. The first copy was released in May 2008 and others in May 2010, and is developed by OpenPandora, which is made up of former distributors and community members of the GP32 and GP2X handhelds. When announcing the system, the designers of Pandora stated that it would be more powerful than any handheld video game console that had yet existed. It includes several features that no handheld game consoles have previously had, making it a cross between a handheld game console and a subnotebook.
We stop by the Python booth and find out how to tame the beast.
\n
Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs.
We talk to Kohsuke Kawaguchi the lead developer of Jenkins.
\n
KK and the Jenkins mascot
\n
The Jenkins mascot
\n
From Wikipedia:
\n
Jenkins is an open source continuous integration tool written in Java. The project was forked from Hudson after a dispute with Oracle. Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet container such as Apache Tomcat. It supports SCM tools including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase and RTC, and can execute Apache Ant and Apache Maven based projects as well as arbitrary shell scripts and Windows batch commands. The primary developer of Jenkins is Kohsuke Kawaguchi. Released under the MIT License, Jenkins is free software.
Over at the Puppet booth we talk to Eric Sorenson from PuppetLabs and Bert Van Vreckem from the Belgium Puppet user group.
\n
Puppet Open Source is a flexible, customizable framework available under the Apache 2.0 license designed to help system administrators automate the many repetitive tasks they regularly perform. As a declarative, model-based approach to IT automation, it lets you define the desired state - or the “what” - of your infrastructure using the Puppet configuration language. Once these configurations are deployed, Puppet automatically installs the necessary packages and starts the related services, and then regularly enforces the desired state. In automating the mundane, Puppet frees you to work on more challenging projects with higher business impact. Puppet Open Source is the underlying technology for Puppet Enterprise and runs on all major Linux distributions, major Unix platforms like Solaris, HP-UX, and AIX, and Microsoft Windows.
\nTrack name : Free Software Song\nPerformer : Fenster\nRecorded date : 2002\nCopyright : Copyright (C) 2002, \nFenster LLC. Verbatim copying of this entire recording is permitted in any medium, \nprovided this notice is preserved. \nPerformers: \nPaul Robinson (vocals), \nRoman Kravec (guitar), \nEd D\'Angelo (bass), \nDave Newman (drums), \nBrian Yarbrough (trumpet), \nTony Moore (trumpet). \nFree software info at www.gnu.org speeches at audio-video.gnu.org/audio\n
\n',30,78,1,'CC-BY-SA','FOSDEM,2014,interviews',0,1362,1),
(1454,'2014-02-27','HPR Coverage at FOSDEM 2014 Part 5',6030,'FOSDEM 2014 Report, part 5','
HPR Coverage at FOSDEM 2014
\r\n
\r\nThe following are a series of interviews recorded at FOSDEM 2014.\r\n
\r\n
\r\nFOSDEM is a free event that offers open source communities a place to meet, share ideas and collaborate.\r\n
\r\nI chat with Wendy G.A. van Dijk who, while not selling cute camels, is promoting the Perl Community.\r\n
\r\n
perl nlpw::2014 Dutch Perl Workshop 25 April Utrecht
\r\n
\r\nPowerful, stable, mature, portable. Perl 5 is a highly capable, feature-rich programming language with over 26 years of development. Perl 5 runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large scale development projects.\r\n
\r\nOliver-Rainer Wittmann from IBM takes some time to chat with us about OpenOffice.\r\n
\r\n
Swag at the OpenOffice booth
\r\n
\r\nApache OpenOffice is the leading open-source office software suite for word processing, spreadsheets, presentations, graphics, databases and more. It is available in many languages and works on all common computers. It stores all your data in an international open standard format and can also read and write files from other common office software packages. It can be downloaded and used completely free of charge for any purpose.\r\n
\r\nHonza Kral takes some time out to chat with us about the Elasticsearch ELK Stack. \r\n
\r\n
Honza Kral from Elasticsearch
\r\n
\r\nBy combining the massively popular Elasticsearch, Logstash and Kibana we have created an end-to-end stack that delivers actionable insights in real-time from almost any type of structured and unstructured data source. Built and supported by the engineers behind each of these open source products, the Elasticsearch ELK stack makes searching and analyzing data easier than ever before.\r\n
\r\nWe have a great conversation with Cor Nouws, who proves that you can earn a living supporting Free Software.\r\n
\r\n
The hard working Libreoffice booth team
\r\n
\r\nLibreOffice is the most widely used free open source office software. It is a community-driven project of The Document Foundation. LibreOffice is developed by professionals and by users, just like you, who believe in the principles of free software and in sharing their work with the world in a non-restrictive way. At the core of these principles is the promise of better-quality, highly-reliable and secure software that gives you greater flexibility at zero cost and no end-user lock-in. LibreOffice works natively with the Open Document Format, but also brings you support for by far the most file types for office-documents. It comes with support for over 80 languages and with a whole amount of other unique features to work with your texts, spreadsheets, presentations, drawings and data.\r\n
\r\nRogier Baig talks to us about the roll out of peer to peer networks.\r\n
\r\n
\r\nguifi.net is a telecommunications network, is open, free and neutral because is built through a peer to peer agreement where everyone can join the network by providing his connection, and therefore, extending the network and gaining connectivity to all. guifi.net is owned by all who join. Is a collaborative project horizontally managed composed by individuals, organizations, enterprises, education institutions and universities and government offices. Is open so everyone can participate in same terms and conditions within the scope of the Wireless Commons.\r\n
\r\nJörg Steffens explains that bareos is not \"bare os\" but rather Bareos - Backup Archiving REcovery Open Sourced. \r\n
\r\n
\r\nBareos is a 100% open source fork of the backup project from bacula.org. The fork is in development since late 2010, it has a lot of new features. The source has been published on github, licensed AGPLv3.\r\n
\r\nLights, Sensors, Switches, Dimmers and of course the obligatory RaspberryPi and a bread board. So what is this you ask ? Well Ralph Meijer, Edwin Mons and Joachim Lindborg explain the \"Internet of things\" and how they want to use the XMPP protocol to \"chat\" with your devices. The plan is simple: set-up each device so it can talk to XMPP, then you can use Jabber or any other XMPP client to talk to them.\r\n
\r\n
The lads from the XMPP realtime lounge
\r\n
\r\nThe Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The technology pages provide more information about the various XMPP “building blocks”. Several books about Jabber/XMPP technologies are available, as well.\r\n
\r\nWe have a chat with Emil Ivov, the project lead of Jitsi.\r\n
\r\n
\r\nJitsi (formerly SIP Communicator) is an audio/video and chat communicator that supports protocols such as SIP, XMPP/Jabber, AIM/ICQ, Windows Live, Yahoo! and many other useful features. Jitsi is Open Source / Free Software, and is available under the terms of the LGPL.\r\n
\r\nTrack name : Free Software Song\r\nPerformer : Fenster\r\nRecorded date : 2002\r\nCopyright : Copyright (C) 2002, \r\nFenster LLC. Verbatim copying of this entire recording is permitted in any medium, \r\nprovided this notice is preserved. \r\nPerformers: \r\nPaul Robinson (vocals), \r\nRoman Kravec (guitar), \r\nEd D\'Angelo (bass), \r\nDave Newman (drums), \r\nBrian Yarbrough (trumpet), \r\nTony Moore (trumpet). \r\nFree software info at www.gnu.org speeches at audio-video.gnu.org/audio\r\n
\r\n',30,78,1,'CC-BY-SA','FOSDEM,2014,interviews',0,1364,1),
(1458,'2014-03-05','Free Culture and Open Animation',2550,'fscons, interview, anime, creative commons, free culture, animation','
This interview with Julia Velkova and Konstantin Dimitriev will shed some light on free culture, open animation, Synfig Studio and the Russian animé being developed by the Morevna Project. Today, on Hacker Public Radio.
\n
\"Support Open Animation projects! Because they cary a lot of potential for inovation.\" -- Julia
\n
FSCONS 2012: \"Open animation projects: state of the art, problems and perspectives\"
\n
We all know of the Blender Projects, like Elephants Dream, Big Buck Bunny and Sintel, but do you know of any more? Creating an animated movie is hard. Many enthusiasts start projects up that soon thereafter unfortunately die off.
\n
The state of this area of interest is what Julia Velkova has concentrated her research on. At FSCONS 2012 she gave the first part of a presentation, painting a picture of the state of matters, then followed by open animator Konstantin Dimitriev who introduced both the Morevna Project and the free and open source tool Synfig Studio.
\n
At this presentation Konstantin showed the premiere trailer for his animé movie \"The Beautiful Queen Marya Morevna\", a modernized version of a traditional Russian tale. Both the trailer and Julia and Konstantins presentations are available on YouTube.
\n
Konstantin has used indiegogo to crowdfund a full time developer for Synfig Studio. He wrote: \"I am mentoring a full-time developer Ivan Mahonin, who is working on Synfig code. We have funded his work in previous months by running similar fundraising campaigns for October, November, December, January and February.\" So go help them with the rest of 2014 as well!
\n
Go help the Morevna Project and Synfig Studio, follow both Julia and Konstantin on Twitter to get updates on this very interesting part of the free and open community that I suspect we sometimes might forget.
\n',192,78,1,'CC-BY-SA','FSCONS',0,1440,1),
-(1456,'2014-03-03','HPR Community News for January 2014',3190,'HPR Community News for January 2014','A monthly look at what has been going on in the HPR community. This is on the Saturday before the first Monday of the month.\n
\n',159,47,1,'CC-BY-SA','Community News',0,1360,1),
-(1611,'2014-10-06','HPR Community News for September 2014',3506,'Dave is at OggCamp, Ahuka and Ken struggle through the news.','
\r\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1456,'2014-03-03','HPR Community News for January 2014',3190,'HPR Community News for January 2014','A monthly look at what has been going on in the HPR community. This is on the Saturday before the first Monday of the month.\n
\n',159,47,1,'CC-BY-SA','Community News',0,1360,1),
+(1611,'2014-10-06','HPR Community News for September 2014',3506,'Dave is at OggCamp, Ahuka and Ken struggle through the news.','
\r\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1461,'2014-03-10','FOSDEM Keysigning Event',1457,'I wanted to get my GPG key signed so I joined the FOSDEM 2014 keysigning event','
\r\nI attended FOSDEM 2014 in Brussels, Belgium. During the conference there was a key signing event which I attended. These are my impressions of the process and the follow-up.\r\n
My script for collecting keys from the participant list\r\n collect_keys\r\n
\r\n\r\n',225,74,1,'CC-BY-SA','Security,Privacy,PGP,key,key signing',0,1314,1),
(1457,'2014-03-04','Xubuntu, Kali on EeePc, Markdown Stuff, Pogoplug 4, and more.',3103,'A review of several topics including Linux bug community participation and Markdown','
\r\nThis episode is a review of several topics ranging from linux bug community participation, linux installation experiences, hosting services, and blogging using Markdown.\r\n
\r\n
\r\nHere is a brief list of the topics covered in this episode:\r\n
\r\n\r\n
\r\n
Xubuntu: UEFI support, easy to use, and community driven. \r\n
\r\n
Kali Linux on EeePc 1000H, old hardware revived. \r\n
\r\n
Blogging in Markdown: Scriptogr.am, ghost.org, Mou App, Redmine, Tumblr. \r\n
\r\n
Hosting Services and low end VPSs: Arvixe and Prometeus. \r\n
\r\n
PogoPlug v4 with Arch linux: simple, cheap and extensible. \r\n
',231,0,1,'CC-BY-SA','Xubuntu,Kali Linux,Markdown,PogoPlug,Hosting Services',0,1499,1),
(1459,'2014-03-06','Locational Privacy with retrotech-the lowly pager',1138,'deepgeek advocates the use of a pager for privacy reasons','
\r\nIn this episode, deepgeek suggests that adding and old, and perhaps laughable\r\nby modern standards, device to your mobile lifestyle. Deepgeek reveals that\r\nsaid device is the pager, but he eventually gives good reasons for doing so.\r\n
\r\n
\r\nThe primary reason is that the paging company does not know where you are, \r\nso they can\'t tell \"the man\" where you are. Other reasons are redundancy \r\nand trouble interpreting audio. But in the end, you find out why first \r\nresponders and medical and fire personal still use these devices, and how you, \r\nas a privacy lover, may reap benefits from using this technology also.\r\n
\r\n
\r\nSome links mentioned in case you want to follow them...\r\n
\r\nPowerbase battery electric drill, had difficult finding a good link to an example of the drill. \r\nIt came with a selection of drill bits, sockets and two double ended screwdriver bits.\r\n
\r\n',201,0,0,'CC-BY-SA','battery,charger,trickle charger',0,1396,1),
(1548,'2014-07-09','Heyu and X10',1780,'Peter64 and Jonathan Nadeau talk about Heyu and X10','
\r\nIn today\'s backup show, Peter64 submits a devrandom segment about Heyu and X10 he did with Jonathan Nadeau. \r\n
',232,0,1,'CC-BY-SA','Heyu,X10',0,1330,1),
(1568,'2014-08-06','Blather Speech Recognition for Linux',399,'Jon has a conversation with his computer','
Blather Speech Recognition for Linux: Jon has a conversation with his computer
\r\n
In this episode I have a blather conversation with my computer. This is a sort of appendix to an episode I released earlier (hpr 1284 https://hackerpublicradio.org/eps.php?id=1284) which was a conversation with Jezra, the lead developer of the blather speech recognition program for Linux. The current episode will make much more sense if you listen to the previous one first.
\r\n
For the most part I use blather as an accessibility tool, to manipulate my desktop and generally to save myself hundreds of keystrokes a day. This is important because of my repetitive strain injuries. Blather allows me to do many “productivity” tasks using only my voice. I also like to have fun with it, though, and this “conversation” is an example of the sort of goofy stuff I like to do. When the computer hears me say certain predefined phrases, it runs commands. For example when I say “what’s for dinner,” it shuffles the contents of a plaintext file that has about 20 options for dinner, chooses the top option and pipes it through my default text-to-speech program, which is either espeak or festival, depending on what I set as the environment variable in my blather startup script. When it hears me ask for certain other information, such as “what day is it?” and “what’s today’s date?”, it runs the appropriate system command and pipes the output through the text-to-speech program. For information about blather, the various back-end things that make it work, examples of my blather scripts and configuration files, visit the links below.
',238,0,0,'CC-BY-SA','Speech Recognition, Speech Recognition In Linux, bash scripting, GNU/Linux (Operating System), sphinx, pocketsphinx, automation',0,0,1),
-(1651,'2014-12-01','HPR Community News for November 2014',3800,'HPR Community News for November 2014','
Dave Morriss on 2014-11-12:\"Thanks for the feedback\"
\n \n \n
\n
hpr1630 (2014-10-31) \"Bare Metal Programming on the Raspberry Pi (Part 2)\" by Gabriel Evenfire. \n
Mike Ray on 2014-11-01:\"Another excellent episode\"
\n
Gabriel Evenfire on 2014-11-01:\"Password protected PDF...\"
\n \n \n
\n
hpr1619 (2014-10-16) \"Bare Metal Programming on the Raspberry Pi (Part 1)\" by Gabriel Evenfire. \n
Alison Chaiken on 2014-11-09:\"Very valuable content\"
\n \n \n
\n
hpr1612 (2014-10-07) \"Don\'t Forget the Referbs\" by NYbill. \n
Charles in NJ on 2014-11-03:\"Returns are fun\"
\n \n \n
\n
hpr1599 (2014-09-18) \"Interview with Ingmar Steiner from the MaryTTS project\" by Ken Fallon. \n
Steve Bickle on 2014-11-09:\"How to for Debian\"
\n
Mike Ray on 2014-11-13:\"MaryTTS howto etc\"
\n
Steve Bickle on 2014-11-26:\"Horses for courses\"
\n
Steve Bickle on 2014-11-26:\"Maryspeak project now on github\"
\n
Mike Ray on 2014-11-28:\"maryspeak, great stuff\"
\n \n
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1676,'2015-01-05','HPR Community News for December 2014',12060,'HPR Community News for December 2014 and part 3 of the New Year Show 18 to 20 Hundred.','
Rich\'s Pool has too much Muriatic Acid (First World Problem) \n \n
\n
2014-12-31T20:00:00Z \n \n
\n
Greetings to much of Russia and 8 more: Moscow, Dubai, Abu Dhabi, and Muscat. \n \n
\n
2014-12-31T20:30:00Z \n \n
\n
Greetings to Iran: Tehran, Rasht, Esfahn, and Bandar-Abbas. \n \n
\n
Two rednecks digress on matters of the heart. \n \n
\n
2014-12-31T21:00:00Z \n \n
\n
Greetings to Iraq and 20 more: Baghdad, Khartoum, Nairobi, and Addis Ababa.
\n
Call for shows by Ken, also correct his pronounciation =D
\n
Right to be forgotten. A small discussion and explination about the idea.
\n
Processes of hiring folks.
\n
issues related to privacy.
\n
Ken Falls for a guy.
\n
Heated debate!!
\n
Ken Fallon and SndChaser start the annual rant-off, Fab is nowhere to be seen.
\n
Mumble-2014-12-31-10-03-18-ch1.teamspeak.cc-Mixdown.ogg ',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1651,'2014-12-01','HPR Community News for November 2014',3800,'HPR Community News for November 2014','
Dave Morriss on 2014-11-12:\"Thanks for the feedback\"
\n \n \n
\n
hpr1630 (2014-10-31) \"Bare Metal Programming on the Raspberry Pi (Part 2)\" by Gabriel Evenfire. \n
Mike Ray on 2014-11-01:\"Another excellent episode\"
\n
Gabriel Evenfire on 2014-11-01:\"Password protected PDF...\"
\n \n \n
\n
hpr1619 (2014-10-16) \"Bare Metal Programming on the Raspberry Pi (Part 1)\" by Gabriel Evenfire. \n
Alison Chaiken on 2014-11-09:\"Very valuable content\"
\n \n \n
\n
hpr1612 (2014-10-07) \"Don\'t Forget the Referbs\" by NYbill. \n
Charles in NJ on 2014-11-03:\"Returns are fun\"
\n \n \n
\n
hpr1599 (2014-09-18) \"Interview with Ingmar Steiner from the MaryTTS project\" by Ken Fallon. \n
Steve Bickle on 2014-11-09:\"How to for Debian\"
\n
Mike Ray on 2014-11-13:\"MaryTTS howto etc\"
\n
Steve Bickle on 2014-11-26:\"Horses for courses\"
\n
Steve Bickle on 2014-11-26:\"Maryspeak project now on github\"
\n
Mike Ray on 2014-11-28:\"maryspeak, great stuff\"
\n \n
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1676,'2015-01-05','HPR Community News for December 2014',12060,'HPR Community News for December 2014 and part 3 of the New Year Show 18 to 20 Hundred.','
Rich\'s Pool has too much Muriatic Acid (First World Problem) \n \n
\n
2014-12-31T20:00:00Z \n \n
\n
Greetings to much of Russia and 8 more: Moscow, Dubai, Abu Dhabi, and Muscat. \n \n
\n
2014-12-31T20:30:00Z \n \n
\n
Greetings to Iran: Tehran, Rasht, Esfahn, and Bandar-Abbas. \n \n
\n
Two rednecks digress on matters of the heart. \n \n
\n
2014-12-31T21:00:00Z \n \n
\n
Greetings to Iraq and 20 more: Baghdad, Khartoum, Nairobi, and Addis Ababa.
\n
Call for shows by Ken, also correct his pronounciation =D
\n
Right to be forgotten. A small discussion and explination about the idea.
\n
Processes of hiring folks.
\n
issues related to privacy.
\n
Ken Falls for a guy.
\n
Heated debate!!
\n
Ken Fallon and SndChaser start the annual rant-off, Fab is nowhere to be seen.
\n
Mumble-2014-12-31-10-03-18-ch1.teamspeak.cc-Mixdown.ogg ',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1593,'2014-09-10','Why C++?',745,'Introduction to the C++ programming language main features','
\r\nIn this episode, Garjola presents the C++ programming language by\r\nintroducing its main features for object orientation, generic\r\nprogramming and functional style.\r\n
',197,25,0,'CC-BY-SA','programming languages, c++',0,0,1),
(1479,'2014-04-03','01 What is on my podcast player',974,'Ahuka begins to tell us about the podcasts he listens to','
\r\n',198,75,0,'CC-BY-SA','podcasts,recommendations ',0,1420,1),
(1482,'2014-04-08','02 What is on my podcast player',938,'Ahuka continues with the list of podcasts he listens to','
\r\n',198,75,0,'CC-BY-SA','podcasts,recommendations',0,1398,1),
@@ -17840,7 +17955,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1545,'2014-07-04','32 - LibreOffice Calc - Introduction to Charts and Graphs',1184,'LibreOffice, Calc, Spreadsheet, chart, graph','
There are many Charts and Graphs available in LibreOffice Calc, but choosing the right one makes a difference. In this episode we review your options and help you to make the right choice.
\r\nIn creating a chart or graph you have a number of options that can make your chart easier to read and understand. In this episode we look at these options and explain what each of them does.\r\n
',198,70,0,'CC-BY-SA','LibreOffice, Calc, Spreadsheet, chart, graph',0,1242,1),
(1506,'2014-05-12','HPR AudioBookClub 6 Shaman Tales Book 1 South Coast',3595,'In this episode, the hackerpublicradio.org Audiobook Club reviews Shaman Tales Book1: South Coast.','
\r\nDuring this show the hosts also discuss beverages.\r\nColin was drinking a Badger Brewery Golden Glory, and quite enyoyed it. https://www.hall-woodhouse.co.uk/beer/golden-glory \r\npokey drank a Fosters Lager, and he didn\'t like it very much. Thankfully he only wanted it for the can. Sadly, it really seemed to go straight to his head. https://www.fostersbeer.com/ \r\nAccording to Fosters\' website, \"You need to upgrade your Flash Player.\" Good luck with that.\r\n
\r\n
\r\nOur next audiobook will be The Crown Conspiracy by Michael J. Sullivan\r\nhttps://podiobooks.com/title/the-crown-conspiracy/\r\nThis book was suggested by pokey. pokey likes The Crown Conspiracy very much and has found it appropriate to suggest to both his mother and his daughter.\r\n
\r\n
\r\nYou can find more content (including podcasts) from Nathan Lowell https://nathanlowell.com/\r\nWe discussed looking up interviews with Nathan Lowell, and as it turns out he has links to lots of them on his website https://nathanlowell.com/multimedia/interviews-articles/ If you\'re a Nathan Lowell fan, you\'ve got many hours of enjoyment ahead of you. \r\n
\r\n
\r\nColin welcomes your feedback via email to gigasphere\"nineteeneighty\" at gee mail dot com\r\npokey prefers his feedback to come via the hacker public radio comment system.\r\n
\r\nWe both had a great time recording this show, and we hope you enjoyed it as well. We hope you\'ll consider joining us next time. Thank you very much for listening.\r\n
\r\n
\r\nSincerely,\r\nThe HPR_AudioBookClub\r\n
\r\n
\r\nP.S. Some people enjoy finding mistakes. For their enjoyment, we have included a few.\r\n
',157,53,1,'CC-BY-SA','HPR AudioBookClub',0,1339,1),
-(1507,'2014-05-13','HPR Community News for April 2014',4059,'Website changes, comment systems, Series help, Ham Radio, Show tagging','
Linux Luddites Episode 11 - Interview with Rob Landley
\r\n
Ken Fallon
\r\n
\r\n
\r\n
1487
\r\n
How I Found Linux
\r\n
x1101
\r\n
\r\n
\r\n
1488
\r\n
What's on My Podcatcher
\r\n
Keith Murray
\r\n
\r\n
\r\n
1489
\r\n
Setting up a Raspberry Pi and RaspBMC
\r\n
Curtis Adkins (CPrompt^)
\r\n
\r\n
\r\n
1490
\r\n
HPR at NELF 2014 Part1
\r\n
pokey
\r\n
\r\n
\r\n
1491
\r\n
Heartbleed
\r\n
laindir
\r\n
\r\n
\r\n
1492
\r\n
HPR at NELF 2014 Part2
\r\n
NYbill
\r\n
\r\n
\r\n
1493
\r\n
The Next Gen is You (1/2)
\r\n
klaatu
\r\n
\r\n
\r\n
1494
\r\n
The Next Gen is You (2/2)
\r\n
klaatu
\r\n
\r\n
\r\n
1495
\r\n
27 - LibreOffice Calc - Calculations and the Formula Bar
\r\n
Ahuka
\r\n
\r\n
\r\n
1496
\r\n
wiki on the raspberry pi
\r\n
MrX
\r\n
\r\n
\r\n
1497
\r\n
Practical Math - Units - Distances and Area, Part 1
\r\n
Charles in NJ
\r\n
\r\n
\r\n
1498
\r\n
Personal OpenVPN
\r\n
John Duarte
\r\n
\r\n \r\n
\r\n\r\n
Mailing List discussions
\r\n
\r\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes \r\nplace on the Mail List which is open to all\r\nHPR listeners and contributors. The discussions are open and available on the\r\nGmane\r\narchive.\r\n
\r\n
\r\nDiscussed this month was:\r\n
\r\n
\r\n
Something went wrong with episode 1477 :)
\r\n
Community News shows should have a reserved slot.
\r\n
Comment system, versus Forums versus disqus versus ...
\r\n
Help with the Series
\r\n
Help tagging shows
\r\n
Call for Shows
\r\n
Ken is looking for Ham Radio content
\r\n
Seetee, is our man in Sweden
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,1384,1),
+(1507,'2014-05-13','HPR Community News for April 2014',4059,'Website changes, comment systems, Series help, Ham Radio, Show tagging','
Linux Luddites Episode 11 - Interview with Rob Landley
\r\n
Ken Fallon
\r\n
\r\n
\r\n
1487
\r\n
How I Found Linux
\r\n
x1101
\r\n
\r\n
\r\n
1488
\r\n
What's on My Podcatcher
\r\n
Keith Murray
\r\n
\r\n
\r\n
1489
\r\n
Setting up a Raspberry Pi and RaspBMC
\r\n
Curtis Adkins (CPrompt^)
\r\n
\r\n
\r\n
1490
\r\n
HPR at NELF 2014 Part1
\r\n
pokey
\r\n
\r\n
\r\n
1491
\r\n
Heartbleed
\r\n
laindir
\r\n
\r\n
\r\n
1492
\r\n
HPR at NELF 2014 Part2
\r\n
NYbill
\r\n
\r\n
\r\n
1493
\r\n
The Next Gen is You (1/2)
\r\n
klaatu
\r\n
\r\n
\r\n
1494
\r\n
The Next Gen is You (2/2)
\r\n
klaatu
\r\n
\r\n
\r\n
1495
\r\n
27 - LibreOffice Calc - Calculations and the Formula Bar
\r\n
Ahuka
\r\n
\r\n
\r\n
1496
\r\n
wiki on the raspberry pi
\r\n
MrX
\r\n
\r\n
\r\n
1497
\r\n
Practical Math - Units - Distances and Area, Part 1
\r\n
Charles in NJ
\r\n
\r\n
\r\n
1498
\r\n
Personal OpenVPN
\r\n
John Duarte
\r\n
\r\n \r\n
\r\n\r\n
Mailing List discussions
\r\n
\r\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes \r\nplace on the Mail List which is open to all\r\nHPR listeners and contributors. The discussions are open and available on the\r\nGmane\r\narchive.\r\n
\r\n
\r\nDiscussed this month was:\r\n
\r\n
\r\n
Something went wrong with episode 1477 :)
\r\n
Community News shows should have a reserved slot.
\r\n
Comment system, versus Forums versus disqus versus ...
\r\n
Help with the Series
\r\n
Help tagging shows
\r\n
Call for Shows
\r\n
Ken is looking for Ham Radio content
\r\n
Seetee, is our man in Sweden
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,1384,1),
(1508,'2014-05-14','In Defense of Play',1593,'Just a few words in defense of play. It is the best way to learn new things.','
\r\nThis episode is a just-for-fun show in which I make a few observations in defense of just playing around. We need to \r\nstop worrying about work and to-do lists every once in a while in order to just get up off our chairs and do something\r\nthat is fun. It doesn\'t have to have a structure at first, but it should involve a challenge or exposure to at least\r\none new thing, or place, or person, or idea.\r\n\r\nI think it is the best way to learn, because the knowledge and acquisition of skills sneak up on you while you are\r\nhaving fun. It may be the only way to make learning really stick, and to stick with the learning process.\r\n
',229,0,0,'CC-BY-SA','play, learning, fun',0,1431,1),
(1509,'2014-05-15','HPR Needs Shows',181,'HPR is short of shows and we need you to send in some today','
\r\nHPR is short of shows and we need you to send in some today\r\n
',159,0,0,'CC-BY-SA','HPR, shows, request, call to action, community, contribute',0,1366,1),
(1510,'2014-05-16','What\'s in My Bag?',1858,'Just a few words about what\'s in my bag(s).','
\r\nThis episode is a just-for-fun show in which I walk systematically through\r\nthe bags I was carrying to work on a particular day, and describe what I\r\nhave found inside.\r\n
\r\n',252,0,0,'CC-BY-SA','Science Fair,Radio Shack,electronic project kit,150-in-1,DuinoKit',0,1347,1),
(1558,'2014-07-23','Lunch Breaks',1505,'Break out of your brown bag or greasy box and explore the world around your workplace!','
Back after a year of HPR silence, I\'ll talk a little about how I like to spend my lunch breaks and how you can explore your workplace. Put down those tater tots, we\'re going on an adventure!
\n
In this episode I\'ll give some information about my lunch history, ways you can maximise your time, gear you\'ll need to start short stealth/urban exploration, techniques for finding places to explore, and ways to handle being spotted.
\n
If this goes well enough and the audio isn\'t too garbled, I\'ll record episodes for the \"How I Got Into (GNU) Linux\" series.
\n
Here are a few links related to the episode. Note that I link to Amazon and Google. I don\'t necessarily condone or endorse either service, I just didn\'t know of any better sources for product information.
',241,0,1,'CC-BY-SA','urban exploration, lunch, leisure, stealth',0,1206,1),
(1537,'2014-06-24','How I make Coffee',411,'x1101 explains how he makes coffee','
\r\n',276,88,0,'CC-BY-SA','coffee,coffee grinder,coffee beans,percolator',0,1322,1),
-(1546,'2014-07-07','HPR Community News for June 2014',5739,'Ahuka, Dave and Ken, review the happenings for the month.','
31 - LibreOffice Calc - Sheet Editing and Navigation
\n
Ahuka
\n
\n
\n
1536
\n
The 150-in-1 Electronic Project Kit
\n
Curtis Adkins (CPrompt^)
\n
\n
\n
1537
\n
How I make Coffee
\n
x1101
\n
\n
\n
1538
\n
Overhauling the School of Music website
\n
Jon Kulp
\n
\n
\n
1539
\n
An Open Source News Break from Opensource.com
\n
semioticrobotic
\n
\n
\n
1540
\n
The journeling File System
\n
JWP
\n
\n
\n
1541
\n
How I Came To Linux
\n
Claudio Miranda
\n
\n \n
\n
Mailing List discussions
\n
Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the Gmane archive.
',159,47,1,'CC-BY-SA','Community News',0,1324,1),
-(1566,'2014-08-04','HPR Community News for July 2014',2350,'Dave reviews the happenings for the month, with a brief visit from pegwole.','
Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the Gmane archive.
\n
Discussed this month were:
\n
\n
Ahuka\'s interview by semioticrobotic for opensource.com
\n
Discussion of who is going to OggCamp 14, reserving a table and who has the table kit
\n
Montana Ethical Hackers want to broadcast HPR content on 107.9FM End Of the Dial--Hacker Radio
\n
The Mumble server has moved
\n
Some Community News banter about many-to-many database relationships initiated a show!
\n
Audio Book Club - planning the next recordings, the Mumble change and the location of the feeds
\n
A slight misunderstanding about Orca arising from the Community News
\n
Some discussion about the generation of audio and HTML show notes
\n
Should we publish the HPR downloads stats ? - continuation of last month\'s discussion with the conclusion that yes, we should publish these stats
\n
5150\'s devastating news - he lost his house in a fire. He and his father are OK, but 5150 got some first-degree and second-degree burns. A funding site has been set up by Dan Frey at https://fundanything.com/en/campaigns/help-5150
hpr1563 etalas: \"[no title]\", relating to the show hpr1563 (2014-07-30) \"Starting Programs at boot on the Raspberry Pi\" by MrX.
\n
hpr1558 Mark Waters: \"Thanks\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1558 Ken Fallon: \"You *must* get a recording device for mobile interviews\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1558 pokey: \"Cool topic\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1558 Beeza: \"Lunchbreak Exploration\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1554 Colin : \"Journey comments\", relating to the show hpr1554 (2014-07-17) \"07 - The Crown Conspiracy\" by HPR_AudioBookClub.
\n
hpr1553 pokey: \"Fun ep\", relating to the show hpr1553 (2014-07-16) \"TuxJam 33.333 - How we got into Linux \" by Andrew Conway.
\n
hpr1551 pokey: \"Very interesting\", relating to the show hpr1551 (2014-07-14) \"Bitcoin Mining\" by Scyner.
hpr1538 Jon Kulp : \"Thanks Dave! \", relating to the show hpr1538 (2014-06-25) \"Overhauling the School of Music website\" by Jon Kulp.
\n
hpr1284 Jon Kulp : \"Help for Ash\", relating to the show hpr1284 (2013-07-04) \"Blather Speech Recognition for Linux: Interview with Jezra\" by Jon Kulp.
\n
hpr1199 Don Frey: \"[no title]\", relating to the show hpr1199 (2013-03-07) \"Old Time Radio on the web\" by Frank Bell.
\n
hpr0367 Georgi : \"[no title]\", relating to the show hpr0367 (2009-05-28) \"Screw you Hacker\" by Chad.
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1546,'2014-07-07','HPR Community News for June 2014',5739,'Ahuka, Dave and Ken, review the happenings for the month.','
31 - LibreOffice Calc - Sheet Editing and Navigation
\n
Ahuka
\n
\n
\n
1536
\n
The 150-in-1 Electronic Project Kit
\n
Curtis Adkins (CPrompt^)
\n
\n
\n
1537
\n
How I make Coffee
\n
x1101
\n
\n
\n
1538
\n
Overhauling the School of Music website
\n
Jon Kulp
\n
\n
\n
1539
\n
An Open Source News Break from Opensource.com
\n
semioticrobotic
\n
\n
\n
1540
\n
The journeling File System
\n
JWP
\n
\n
\n
1541
\n
How I Came To Linux
\n
Claudio Miranda
\n
\n \n
\n
Mailing List discussions
\n
Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the Gmane archive.
',159,47,1,'CC-BY-SA','Community News',0,1324,1),
+(1566,'2014-08-04','HPR Community News for July 2014',2350,'Dave reviews the happenings for the month, with a brief visit from pegwole.','
Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the Gmane archive.
\n
Discussed this month were:
\n
\n
Ahuka\'s interview by semioticrobotic for opensource.com
\n
Discussion of who is going to OggCamp 14, reserving a table and who has the table kit
\n
Montana Ethical Hackers want to broadcast HPR content on 107.9FM End Of the Dial--Hacker Radio
\n
The Mumble server has moved
\n
Some Community News banter about many-to-many database relationships initiated a show!
\n
Audio Book Club - planning the next recordings, the Mumble change and the location of the feeds
\n
A slight misunderstanding about Orca arising from the Community News
\n
Some discussion about the generation of audio and HTML show notes
\n
Should we publish the HPR downloads stats ? - continuation of last month\'s discussion with the conclusion that yes, we should publish these stats
\n
5150\'s devastating news - he lost his house in a fire. He and his father are OK, but 5150 got some first-degree and second-degree burns. A funding site has been set up by Dan Frey at https://fundanything.com/en/campaigns/help-5150
hpr1563 etalas: \"[no title]\", relating to the show hpr1563 (2014-07-30) \"Starting Programs at boot on the Raspberry Pi\" by MrX.
\n
hpr1558 Mark Waters: \"Thanks\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1558 Ken Fallon: \"You *must* get a recording device for mobile interviews\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1558 pokey: \"Cool topic\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1558 Beeza: \"Lunchbreak Exploration\", relating to the show hpr1558 (2014-07-23) \"Lunch Breaks\" by Christopher M. Hobbs.
\n
hpr1554 Colin : \"Journey comments\", relating to the show hpr1554 (2014-07-17) \"07 - The Crown Conspiracy\" by HPR_AudioBookClub.
\n
hpr1553 pokey: \"Fun ep\", relating to the show hpr1553 (2014-07-16) \"TuxJam 33.333 - How we got into Linux \" by Andrew Conway.
\n
hpr1551 pokey: \"Very interesting\", relating to the show hpr1551 (2014-07-14) \"Bitcoin Mining\" by Scyner.
hpr1538 Jon Kulp : \"Thanks Dave! \", relating to the show hpr1538 (2014-06-25) \"Overhauling the School of Music website\" by Jon Kulp.
\n
hpr1284 Jon Kulp : \"Help for Ash\", relating to the show hpr1284 (2013-07-04) \"Blather Speech Recognition for Linux: Interview with Jezra\" by Jon Kulp.
\n
hpr1199 Don Frey: \"[no title]\", relating to the show hpr1199 (2013-03-07) \"Old Time Radio on the web\" by Frank Bell.
\n
hpr0367 Georgi : \"[no title]\", relating to the show hpr0367 (2009-05-28) \"Screw you Hacker\" by Chad.
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1538,'2014-06-25','Overhauling the School of Music website',1740,'I discuss how I overhauled an outdated website for my employer.','
\r\nI discuss the process of overhauling a badly out-of-date website to make it conform to accessibility standards and give it a responsive design. I also discuss how I came up with my own content management system by Bash scripting.\r\n
\r\n',238,0,0,'CC-BY-SA','CSS, html, scripting, accessibility',0,1257,1),
(1541,'2014-06-30','How I Came To Linux',2179,'ClaudioM talks about how he came to computers and to Linux','
\r\nClaudioM talks about how he came to Linux beginning with an introduction on how he came to computers and how a simple advertisement for an UNIX book would eventually lead to his love for Linux.\r\n
',152,29,0,'CC-BY-SA','BASIC,Mattel Aquarius,Apple IIe,Macintosh,RedHat,SUSE,Mandrake,Slackware',0,1453,1),
(1542,'2014-07-01','Agnes is an IT Lawyer',748,'Today on #HPR; listen to @IT_Advokaten talk about the change in EU law regarding personal data!','
Today on Hacker Public Radio, we will talk to an IT lawyer about the new EU regulations regarding personal data.
\n
\"One thing I think you should be aware of is a principle called \'Privacy by Design and Privacy by Default\'!\" -- Agnes
\n
IT Solutions Expo 2014
\n
In April 2014 I visited the \"IT Solutions Expo\" at the conference centre known as \"The Swedish Fair\" in Gothenburg. The tagline of the IT Solutions Expo was \"The fair that shows you how to make money on tomorrow\'s IT solutions\".
\n
So a lot of corporate propaganda and sales people. To be totally honest, I hesitated going there. But I am glad I did. There where some really interesting talks concerning privacy and technology that I would not have liked to miss.
\n
Agnes Andersson Hammarstrand, IT Lawyer
\n
The real highlight of the fair was the talk by Agnes Andersson Hammarstrand, a lawyer specialised in information technology. She covered the new laws that will come to pass in the European Union regarding how we are allowed to handle personal data.
\n
I was very happy that she was willing to give a short interview for Hacker Public Radio.
\n
It is interesting to see that it is not only consumers who are starting to think that information about us should be kept safe, it is also slowly becoming the law. If your work in or with companies in the European Union, this is definitely a heads-up, something to take notice of. In a couple of years time you must be ready to follow the new legislation.
\n
In her talk Agnes also mentioned that companies should have someone who is responsible for privacy issues. Perhaps this is an opportunity for the HPR listeners? Most of you probably feel that this is an important topic already, so why not make it a part of your job description?
\n
You find all the relevant links down below. If you want to send feedback or get in touch with either Agnes or me, please do not hesitate to do so. If you have any thoughts on the subject at hand or regarding the show, use any of the means below and speak your mind.
',192,0,0,'CC-BY-SA','it solutions expo 2014, interview, personal data, eu, law',0,1283,1),
(1544,'2014-07-03','An Open Source News Break from Opensource.com',264,'An overview of open source news stories recently published on Opensource.com','
In this episode: The true value of open source, an introduction to the new Authors Alliance, and an OpenStack challenge.
',280,28,0,'CC-BY-SA','Authors Alliance, OpenStack',0,1294,1),
(1549,'2014-07-10','Cool Stuff Pt.1',1507,'In this episode CPrompt covers some pretty cool stuff that he has found over the last few days.','
In this episode CPrompt covers some pretty cool stuff that he has found over the last few days.
',252,0,0,'CC-BY-SA','beyondpod,youarelistening.to,Wallet Ninja,Dream The Electric Sleep',0,1477,1),
-(1631,'2014-11-03','HPR Community News for October 2014',3124,'Discussions on the New Year show and more','
New hosts
\r\n
\r\nWelcome to our new hosts: \r\n corenominal, \r\n beni.\r\n
hpr1434\r\n(2014-01-30) \"Why I made an account free android \"\r\nby ToeJet.\r\n\r\n
ToeJet on 2014-10-17:\"Couldn\'t root.\"
\r\n
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1631,'2014-11-03','HPR Community News for October 2014',3124,'Discussions on the New Year show and more','
New hosts
\r\n
\r\nWelcome to our new hosts: \r\n corenominal, \r\n beni.\r\n
hpr1434\r\n(2014-01-30) \"Why I made an account free android \"\r\nby ToeJet.\r\n\r\n
ToeJet on 2014-10-17:\"Couldn\'t root.\"
\r\n
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1551,'2014-07-14','Bitcoin Mining',510,'This is a short summary of what steps I took to get a set and forget bitcoin mining station going','
\r\nThis is a short summary of what steps I took to get a set and forget bitcoin mining station going. Using a asicminer cube eruptor and an odroid u2.\r\n
\r\n',281,0,0,'CC-BY-SA','bitcoin,bitcoin mining,ASICMiner Block Erupter Cube,odroid u2',0,1383,1),
-(1586,'2014-09-01','HPR Community News for August 2014',4346,'Dave and Ken review the happenings for the month.','
brijwhiz on 2014-08-03: \"Journey comments and next book podcast\"
\n \n \n
\n
hpr1199 (2013-03-07) \"Old Time Radio on the web\" by Frank Bell. \n
Mike Ray on 2014-08-08: \"OTR\"
\n \n
\n
\n
Apologies
\n
\n
guitarman for messing up attribution, and the shownotes
\n
semioticrobotic for mixing up his shows
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1586,'2014-09-01','HPR Community News for August 2014',4346,'Dave and Ken review the happenings for the month.','
brijwhiz on 2014-08-03: \"Journey comments and next book podcast\"
\n \n \n
\n
hpr1199 (2013-03-07) \"Old Time Radio on the web\" by Frank Bell. \n
Mike Ray on 2014-08-08: \"OTR\"
\n \n
\n
\n
Apologies
\n
\n
guitarman for messing up attribution, and the shownotes
\n
semioticrobotic for mixing up his shows
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1552,'2014-07-15','An Open Source News Break from Opensource.com',267,'An interview with Mark Johnson of OSS Watch, Open Source Seed Initiative, and more','
In this episode: An interview with Mark Johnson of OSS Watch, the Open Source Seed Initiative, and a video game that asks to be hacked.
',280,28,0,'CC-BY-SA','newscast,Opensource.com',0,1305,1),
(1553,'2014-07-16','TuxJam 33.333 - How we got into Linux ',4077,'Kevie and Andrew release TuxJam episode 33 1/3 as an exclusive to HPR on how they got into Linux','
Kevie and Andrew release TuxJam episode thirty three and a third as an exclusive to HPR on how they got into Linux, interspersed with a few Creative Commons licensed tunes. The story begins in the mid-1990s and some credit is given to a Microsoft product. At no point do they put on terrible Irish accents and discuss the spelling of whisk(e)y*. If you like what you hear then you might like to listen to other TuxJam episodes here: https://unseenstudio.co.uk/category/tuxjam-ogg/ * This may not be entirely true.
',268,29,0,'CC-BY-SA','FOSS,software,creative commons,music',0,1362,1),
(1554,'2014-07-17','07 - The Crown Conspiracy',4548,'The Crown Conspiracy gets thumbs up from the HPR Audiobook Club ','
\r\nSPECIAL ANNOUNCEMENT HPR_AudioBookClub SNEAK PREVIEW!!! \r\nSometime in the not-too-distant future we\'ll be reviewing Street Candles by HPR\'s very own David Collins Rivera (aka Lostinbronx). Street Candles is not finished yet, but is available via RSS and Lostinbronx publishes a new episode each week. This book is excellent, and you\'ll want to say you were there to see it happen. Head over to LNB\'s site for all the details https://www.cavalcadeaudio.com/ and remember to subscribe to his RSS feed:\r\n
\r\nAs usual, during this episode of the AudioBookClub the hosts have each reviewed a beverage of their choice.\r\nMorgellon drank a Bourbon and soda, but not during the show because he was driving. He recommends both Woodford Reserve https://www.woodfordreserve.com/ and Evan Williams Bourbons https://www.evanwilliams.com/\r\nx1101 drank Wild Turkey 101 proof Bourbon https://wildturkeybourbon.com/\r\npokey drank a cup of Oolong tea. It was probably a little stale, but pokey is a knuckle dragger, so he didn\'t notice at all. https://www.foojoyteas.com/teabag.php . This was the first time that pokey has reviewed an NA beverage for the AudioBookClub, so we apologize if the show has suffered because of it.\r\nThaj won the Non-Alcoholic division hands down with a glass of fresh squeezed lemonade.\r\nColin couldn\'t make it to this recording because of time zone differences, but he did write in. I\'ll add his note to the episode comments. Please add your own comment as well. His beverage however was an Innis and Gunn Original https://www.innisandgunn.com/the-range/core-range/original/ to which he gives his thumb up.\r\n
\r\nThere are several ways to submit feedback for this episode including the HPR mail list hpr@hackerpublicradio.org, and the episode\'s comment section\r\nMorgellon is reachable via twitter @lowtekmorgellon or email morgellon@gmail.com\r\nx1101 can be reached via twitter @x1101, StatusNet @x1101/micro.fragdev.com and email x1101@gmx.com\r\nThaj can be reached by email thajasara@gmail.com\r\npokey prefers his feedback to come via the HackerPublicRadio comment system, but is also usually available on StatusNet @pokey/micro.fragdev.com\r\n
\r\nWe had a great time recording this show, and we hope you enjoyed it as well. We hope you\'ll consider joining us next time. Thank you very much for listening.\r\n
\r\n
\r\nSincerely,\r\nThe HPR_AudioBookClub\r\n
\r\n
\r\nP.S. Some people enjoy finding mistakes. For their enjoyment, we have included a few.\r\n
',157,53,1,'CC-BY-SA','HPR AudioBookClub,The Crown Conspiracy',0,1305,1),
@@ -17912,9 +18027,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1604,'2014-09-25','How I Got Into Linux',1096,'I sum up my experience with linux from 0 to 1!','I sum up my experience with linux from 0 to 1!',286,29,1,'CC-BY-SA','windows,Ubuntu,Puppy,Crunchbang,Arch',0,0,1),
(1578,'2014-08-20','AudioBookClub-08-How to Succeed in Evil:The Novel',7213,'The HPR_AudioBookClub reviews How to Succeed in Evil: The Novel by @PatrickEMcLean. ','
\r\nIn this episode, the hackerpublicradio.org Audiobook Club reviews How to Succeed in Evil: The Novel by Patrick E. McLean. \r\n
\r\nThree out of four of us liked this book, and we all had some good things to say about it. While it\'s true that this is an entertaining story set in a super hero world, we found it it more amusing and more thought provoking than your average super hero story.\r\n
\r\n
\r\nAs usual, during this episode of the AudioBookClub the hosts have each reviewed a beverage of their choice.\r\n
\r\nOur next audiobook will be Down and Out in the Magic Kingdom by Corey Doctorow https://podiobooks.com/title/down-and-out-in-the-magic-kingdom/ \r\nOur next book club recording will be 2014/07/15T23:00:00+00:00 (https://en.wikipedia.org/wiki/ISO_8601#Times)\r\nIf you\'d like a Google calendar invite, or if you\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hpr at hackerpublicradio dot org\'\r\n
\r\n
\r\nThere are several ways to submit feedback for this episode including the HPR mail list hpr@hackerpublicradio.org, and the episode\'s comment section\r\n
\r\n
\r\npokey prefers his feedback to come via the HackerPublicRadio comment system, but is also usually available on StatusNet @pokey/micro.fragdev.com\r\n
\r\nWe had a great time recording this show, and we hope you enjoyed it as well. We hope you\'ll consider joining us next time. Thank you very much for listening.\r\n
\r\n
\r\nSincerely,\r\nThe HPR_AudioBookClub\r\n
\r\n
\r\nP.S. Some people enjoy finding mistakes. For their enjoyment, we have included a few.\r\n
',157,53,1,'CC-BY-SA','HPR AudioBookClub',0,0,1),
(1583,'2014-08-27','Podcast Generator',223,'Easy software to host a podcast.','
\r\nBlue Drava Podcast - a little show I\'m working on, hosted using the software.\r\nhttps://podcast.bluedrava.com\r\n
',191,0,1,'CC-BY-SA','Podcast, Webapp, PHP',0,0,1),
-(1584,'2014-08-28','An interview with Josh Knapp from AnHonestHost.com',3165,'We talk to Josh Knapp about his new business AnHonestHost.com','
\r\nFor years our own Josh Knapp has been the real Server Administrator behind Hacker Public Radio, and has been subsidising it out of his own pocket for some time.\r\n
\r\n
\r\nHe and a few of his colleagues have decided to branch off and set up their own company. AnHonestHost.com is based on a simple idea; Better web hosting that\'s honest and fair.\r\n
\r\n
\r\nWe discuss the past, the future and how it affects HPR.\r\n
',30,78,1,'CC-BY-SA','AnHonestHost.com,shared hosting',0,0,1),
+(1584,'2014-08-28','An interview with Josh Knapp from AnHonestHost.com',3165,'We talk to Josh Knapp about his new business AnHonestHost.com','
\r\nFor years our own Josh Knapp has been the real Server Administrator behind Hacker Public Radio, and has been subsidising it out of his own pocket for some time.\r\n
\r\n
\r\nHe and a few of his colleagues have decided to branch off and set up their own company. AnHonestHost.com is based on a simple idea; Better web hosting that\'s honest and fair.\r\n
\r\n
\r\nWe discuss the past, the future and how it affects HPR.\r\n
',30,78,1,'CC-BY-SA','AnHonestHost.com,shared hosting',0,0,1),
(1587,'2014-09-02','Beginner\'s guide to the night sky 3 - A wee dot on a dark sky',1809,'A ramble about stars, by a geeky chap who resides on planet Earth.','
\r\nA ramble about stars, by a geeky chap who resides on planet Earth. This episode\r\nis entitled a wee dot on a dark sky.\r\n
\r\n
\r\nI comment briefly on why it\'s remarkable\r\nthat the night sky is dark. I then go on to talk about the colour of stars,\r\nwhich we can just perceive with the naked eye. To learn more you need to use\r\na prism, or, as professional astronomers prefer, a diffraction grating to\r\nobtain a spectrum of a star. I talk a little too much about the mathematics\r\nof diffraction gratings but eventually get back to talking about\r\nspectrum of the Sun which in overall shape is very close to what physicists\r\ncall a black body spectrum (https://en.wikipedia.org/wiki/Black_body)- the spectrum any object will have at a given\r\ntemperature. Astronomers and physicists prefer to measure temperature\r\nin units of kelvin (https://en.wikipedia.org/wiki/Kelvin),\r\nand to convert to it you only need to add 273 to the\r\ncelsius temperature. Conversion from Fahrenheit is left as an exercise\r\nto the listener.\r\n
\r\n
\r\nThe Sun shows spectral lines, specifically dark lines on the broad spectrum\r\ncalled absorptions lines. This is caused by atoms in a cooler layer of gas\r\n(called the chromosphere) that\'s just above the bright surface of the Sun\r\n(called the photosphere). In fact, Helium is named as such because it was\r\nfirst discovered by its absorption lines in the solar spectrum (Helios\r\nis Greek for Sun). Many other elements can be found in the spectrum of\r\nthe Sun and other stars, but most of the mass of all stars is made up\r\nof hydrogen and helium.\r\n
\r\n
\r\nThe temperature of a star is correlated with colour, with blue stars being\r\nhotter than red stars. This was originally measured by astronomers by\r\nsomething called colour or B-V (B minus V) index.\r\n
\r\n
\r\nThe luminosity of a star is the rate\r\nat which it emits energy as light, and can be measured in the same units\r\nas light bulbs, i.e. watts (W). But to estimate the luminosity we need\r\nto know the distance to a star which, for nearby stars, can be \r\nfound by the parallax method. By plotting colour index (a proxy\r\nfor temperature) against luminosity we can form a key piece of empirical\r\nevidence - the Hertzsprung Russell diagram: https://en.wikipedia.org/wiki/Hertzsprung%E2%80%93Russell_diagram \r\n
\r\n
\r\nIt turns out that our nearest star - the Sun - is quite unremarkable. It is neither very hot or cool, nor\r\nvery bright or dim - it\'s a fairly typical star.\r\n
',268,0,0,'CC-BY-SA','astronomy,star,hydrogen,helium',0,0,1),
-(1588,'2014-09-03','HPR AudioBookClub-09-Down And Out In The Magic Kingdom',8952,'In this episode, the HPR_AudioBookClub reviews Down And Out In The Magic Kingdom by Cory Doctorow.','
SUMMARY
\r\n
In this episode, the HPR_AudioBookClub reviews Down And Out In The Magic Kingdom by Cory Doctorow. You can download this AudioBook for free (or voluntary donation) from podiobooks.com. https://podiobooks.com/title/down-and-out-in-the-magic-kingdom/ and it\'s also available in just about every ebook format you can imagine on Cory\'s website craphound.com. https://craphound.com/down/?page_id=1625 and as a paperback through various booksellers. We found this AudioBook enjoyable and thought provoking. The general consensus that we seem to have reached is that while the book left the reader with many unanswered questions about the world in which the book was set, they are welcome questions. It\'s brain bending fun.
\r\n
FiftyOneFifty (the link-king) found some cool links relating to the Haunted House and how it works. Check these out!
I listened to this book in the space of a couple of days mostly. At first it took some time to get into but then was quite enjoyable, however in the second half I started to find it a bit hard going. The story is told exclusively in the first person (I think that\'s right) and as the story went on I found it quite difficult not having external points of view or reference. This is probably also due to good story telling as the main Character Jules is also getting frustrated and is increasingly isolated. The book was interesting and unique even before you got to the plot line and aspects of the world the characters were living in. I would recommend the book as an example of an interesting method of story telling and I\'m keen to pick up the other big Cory Doctorow book, \"Little Brother\".
\r\n
gigasphere\'s spoilers (Highlight to read)
\r\n
\r\n
From having read the wikipedia page on Cory I can see that Down and Out in the Magic Kingdom, which is Cory\'s first novel, seems to have a trademark extrapolation with our own reality. The concept of backing up you mind and being brought back from the dead in a clone seems an excellent example of hyper-our-reality at the moment, but to then have everyone capable of being online using implants is also amazingly realistic when you consider the almost boom in wearables going on and the ubiquity of smartphones. I am reminded of the xkcd comic where the guy was having a USB port implanted. https://xkcd.com/644/ The whuffie aspect of the book which replaces money, reminds me a lot of the social media thing of being rated by how many \'followers\' or \'likes\' or may be even \'hits\' you get. This also oddly reminds me of the download stats discussion on the mailing list at the moment. I\'m not sure I\'ll add much to the overall discussion of the book from here as my no spoiler summary really rounds up the book for me. I would have liked to have a broader telling of the story, particularly from Lil\'s perspective, but the restrictions placed on the story also work to make it great, in that you are forced, as in real life, to view the world through only one person\'s eyes.
\r\n
\r\n
BEVERAGE REVIEWS
\r\n
We think you\'ll agree that the HPR_AudioBookClub really showed up for this one and they brought some all-star beverages. Please enjoy this episode responsibly.
\r\n
\r\n
x1101 just wanted to make us all jealous. He brought a Lagunitas Imperial Stout to our little party and enjoyed it as much as any of us would have. https://lagunitas.com/beers/imperial-stout/
\r\n
FiftyOneFifty was slightly disappointed by his German style Doublebock, FIREMAN\'S BREW: Brunette. He says it\'s an unprepossessing brew, but perhaps worth it for fans of beer made with chocolate malts. Not very sweet for a dopplebock, and without much hops note except for a slight spicy kick, despite a general thinness in the flavor, it has enough cocoa flavor to satisfy fans of beers made with chocolate malt, at least until they find a better one. https://www.firemansbrew.com/offdutydrinks-brunette
\r\n
The planets aligned and dictated that Semioticrobotic bring his favorite tea, Ginger Twist by Mighty Leaf, to our little show. It\'s a zippy but soothing herbal tea (technically, then, a tisane) that combines strong ginger flavors with lemon-grass and mint. https://www.mightyleaf.com/product/ginger-twist-herbal-tea-pouches/
pegwole was worshiping at the porcelain vessel. No, not THAT porcelain vessel... The good one. The one that\'s used to serve Coffee! https://en.wikipedia.org/wiki/Coffee
\r\n
This month gigasphere wrote in to say, \"It\'s hot over here in the UK South East at the moment (25-30 degrees Celsius, yes that\'s hot for here!) and I\'m swamped with work so I have a really boring Apple and Elderflower Juice for my drink this month. I have an Ale on the shelf that I haven\'t tried before but will save that for next time round when I should have a more manageable workload. On the plus side my juice is really cold and refreshing with a really strong and pleasant flavour (sic)2. It\'s a fresh juice and so has been kept refrigerated. Now everyone can stop laughing1 at me and get back to their proper drinks!\" https://www.copellafruitjuices.co.uk/juices
\r\n
Rather than simply reviewing a beverage like the rest of us, Thaj (attention seeker that he is) risked his life on the show by ingesting a potentially lethal amount of Dihydrogen Monoxide! The HPR_AudioBookClub does not condone this type of risky behavior, and if you are entertained by it, then you\'re probably a bad person. https://www.dhmo.org/facts.html
We\'re really excited about these two AudioBooks because both of these authors are HPR community members! We\'re assigning both at once because one is pretty short, and one is pretty long. We were a little worried that people might not finish Street Candles in time to participate, and we think this scheme may buy participants the time they they/we need.
Our next book club recording will be 2014/08/12T23:00:00+00:00. https://en.wikipedia.org/wiki/ISO_8601#Times If you\'d like a Google calendar invite, or if you\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hpr at hackerpublicradio dot org\'
\r\n
FEEDBACK
\r\n
Thank you very much for listening to this episode of the HPR_AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time. Please leave a few words in the episode\'s comment section. As always; remember to visit the HPR contribution page HPR could really use your help right now.
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
1: The HPR_AudioBookClub doesn\'t laugh at anyone for reviewing tea, nor any other drink. We intentionally call the segment a \"beverage review,\" not a \"beer review\" so that no one should feel alienated. Also because some of us drink wine.
\r\n
2: The HPR_AudioBookClub does laugh when people try to spell flavor with a \"u\"
',157,53,1,'CC-BY-SA','HPR AudioBookClub',0,0,1),
+(1588,'2014-09-03','HPR AudioBookClub-09-Down And Out In The Magic Kingdom',8952,'In this episode, the HPR_AudioBookClub reviews Down And Out In The Magic Kingdom by Cory Doctorow.','
SUMMARY
\r\n
In this episode, the HPR_AudioBookClub reviews Down And Out In The Magic Kingdom by Cory Doctorow. You can download this AudioBook for free (or voluntary donation) from podiobooks.com. https://podiobooks.com/title/down-and-out-in-the-magic-kingdom/ and it\'s also available in just about every ebook format you can imagine on Cory\'s website craphound.com. https://craphound.com/down/?page_id=1625 and as a paperback through various booksellers. We found this AudioBook enjoyable and thought provoking. The general consensus that we seem to have reached is that while the book left the reader with many unanswered questions about the world in which the book was set, they are welcome questions. It\'s brain bending fun.
\r\n
FiftyOneFifty (the link-king) found some cool links relating to the Haunted House and how it works. Check these out!
I listened to this book in the space of a couple of days mostly. At first it took some time to get into but then was quite enjoyable, however in the second half I started to find it a bit hard going. The story is told exclusively in the first person (I think that\'s right) and as the story went on I found it quite difficult not having external points of view or reference. This is probably also due to good story telling as the main Character Jules is also getting frustrated and is increasingly isolated. The book was interesting and unique even before you got to the plot line and aspects of the world the characters were living in. I would recommend the book as an example of an interesting method of story telling and I\'m keen to pick up the other big Cory Doctorow book, \"Little Brother\".
\r\n
gigasphere\'s spoilers (Highlight to read)
\r\n
\r\n
From having read the wikipedia page on Cory I can see that Down and Out in the Magic Kingdom, which is Cory\'s first novel, seems to have a trademark extrapolation with our own reality. The concept of backing up you mind and being brought back from the dead in a clone seems an excellent example of hyper-our-reality at the moment, but to then have everyone capable of being online using implants is also amazingly realistic when you consider the almost boom in wearables going on and the ubiquity of smartphones. I am reminded of the xkcd comic where the guy was having a USB port implanted. https://xkcd.com/644/ The whuffie aspect of the book which replaces money, reminds me a lot of the social media thing of being rated by how many \'followers\' or \'likes\' or may be even \'hits\' you get. This also oddly reminds me of the download stats discussion on the mailing list at the moment. I\'m not sure I\'ll add much to the overall discussion of the book from here as my no spoiler summary really rounds up the book for me. I would have liked to have a broader telling of the story, particularly from Lil\'s perspective, but the restrictions placed on the story also work to make it great, in that you are forced, as in real life, to view the world through only one person\'s eyes.
\r\n
\r\n
BEVERAGE REVIEWS
\r\n
We think you\'ll agree that the HPR_AudioBookClub really showed up for this one and they brought some all-star beverages. Please enjoy this episode responsibly.
\r\n
\r\n
x1101 just wanted to make us all jealous. He brought a Lagunitas Imperial Stout to our little party and enjoyed it as much as any of us would have. https://lagunitas.com/beers/imperial-stout/
\r\n
FiftyOneFifty was slightly disappointed by his German style Doublebock, FIREMAN\'S BREW: Brunette. He says it\'s an unprepossessing brew, but perhaps worth it for fans of beer made with chocolate malts. Not very sweet for a dopplebock, and without much hops note except for a slight spicy kick, despite a general thinness in the flavor, it has enough cocoa flavor to satisfy fans of beers made with chocolate malt, at least until they find a better one. https://www.firemansbrew.com/offdutydrinks-brunette
\r\n
The planets aligned and dictated that Semioticrobotic bring his favorite tea, Ginger Twist by Mighty Leaf, to our little show. It\'s a zippy but soothing herbal tea (technically, then, a tisane) that combines strong ginger flavors with lemon-grass and mint. https://www.mightyleaf.com/product/ginger-twist-herbal-tea-pouches/
pegwole was worshiping at the porcelain vessel. No, not THAT porcelain vessel... The good one. The one that\'s used to serve Coffee! https://en.wikipedia.org/wiki/Coffee
\r\n
This month gigasphere wrote in to say, \"It\'s hot over here in the UK South East at the moment (25-30 degrees Celsius, yes that\'s hot for here!) and I\'m swamped with work so I have a really boring Apple and Elderflower Juice for my drink this month. I have an Ale on the shelf that I haven\'t tried before but will save that for next time round when I should have a more manageable workload. On the plus side my juice is really cold and refreshing with a really strong and pleasant flavour (sic)2. It\'s a fresh juice and so has been kept refrigerated. Now everyone can stop laughing1 at me and get back to their proper drinks!\" https://www.copellafruitjuices.co.uk/juices
\r\n
Rather than simply reviewing a beverage like the rest of us, Thaj (attention seeker that he is) risked his life on the show by ingesting a potentially lethal amount of Dihydrogen Monoxide! The HPR_AudioBookClub does not condone this type of risky behavior, and if you are entertained by it, then you\'re probably a bad person. https://www.dhmo.org/facts.html
We\'re really excited about these two AudioBooks because both of these authors are HPR community members! We\'re assigning both at once because one is pretty short, and one is pretty long. We were a little worried that people might not finish Street Candles in time to participate, and we think this scheme may buy participants the time they they/we need.
Our next book club recording will be 2014/08/12T23:00:00+00:00. https://en.wikipedia.org/wiki/ISO_8601#Times If you\'d like a Google calendar invite, or if you\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hpr at hackerpublicradio dot org\'
\r\n
FEEDBACK
\r\n
Thank you very much for listening to this episode of the HPR_AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time. Please leave a few words in the episode\'s comment section. As always; remember to visit the HPR contribution page HPR could really use your help right now.
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
1: The HPR_AudioBookClub doesn\'t laugh at anyone for reviewing tea, nor any other drink. We intentionally call the segment a \"beverage review,\" not a \"beer review\" so that no one should feel alienated. Also because some of us drink wine.
\r\n
2: The HPR_AudioBookClub does laugh when people try to spell flavor with a \"u\"
',157,53,1,'CC-BY-SA','HPR AudioBookClub',0,0,1),
(1644,'2014-11-20','Opensource.com: Benetech, OpenStack and Kumusha',954,'Benetech CEO opens up, the challenge of OpenStack product management, and Kumusha Takes Wiki.','
In this episode
\r\n\r\n
Open source product development most effective when social
\r\n
Benetech started out in the 90s without even understanding the meaning of the term open source. They just \"needed an easy way to interface with different voice synthesizers\" to develop readers for people who are blind and \"shared the code to be helpful.\"
\r\n\r\n
Sound familiar? Opensource.com started covering stories like in 2010 and they recur more often than you might think. Stories of people sharing the code to help others—but sharing code to get help developing better code. When code is open, a community has the opportunity to form around it.
Two recent, excellent, blog posts have touched on a topic I\'ve been wrestling with since May\'s OpenStack Summit: What is the role of the Product Management function, if any, in the OpenStack development process?
Giving Sub-Saharan African communities an online presence
\r\n
People in Sub-Saharan Africa face hurdles to get online. Despite some progress, the region lags behind in Internet connectivity due to the high costs of service and poor infrastructure, according to a recent World Economic Forum report.
',280,28,0,'CC-BY-SA','Benetech,OpenStack',0,0,1),
(1591,'2014-09-08','The Ultimate Cooking Device',1539,'Using a Weber grill to cook all your food.','
\r\nUsing a Weber grill to cook all your food.\r\n
',134,93,1,'CC-BY-SA','cooking,grill',0,0,1),
(1589,'2014-09-04','KC MakerFair 2014',2749,'A rundown on all the cool things to see at the KC MakerFair 2014','
Mr. Gadgets calls in another show and this time he has been to Kansas City Maker Faire.
\n
Maker Faire: Kansas City celebrates things people create themselves — from new technology and electronic gizmos to urban farming and “slow-made” foods to homemade clothes, quilts and sculptures. This family-friendly event demonstrates what and how people are inventing, making and creating. It brings together Makers, Crafters, Inventors, Hackers, Scientists and Artists for a faire full of fun and inspiration.
',155,0,1,'CC-BY-SA','maker faire,Kansas City',0,0,1),
@@ -17960,8 +18075,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1705,'2015-02-13','47 - LibreOffice Calc - Page Styles and Page Settings',1234,'How to control the overall appearance of a worksheet using Page Styles and Page Settings.','
\r\nPage Styles in LibreOffice Calc set the properties for entire sheets of your workbook file. In any given Template you can have different sheets with different Page Styles if you wish, but for any given sheet you can only have one Page Style. And dont be confused by the difference between a sheet in the file and a page when printed. One single sheet may take many physical pages to print, but it is all one sheet and it is all governed by a single Page Style.\r\n
',198,70,0,'CC-BY-SA','LibreOffice, Calc, Spreadsheet, Sheets, Styles',0,0,1),
(1725,'2015-03-13','49 - LibreOffice Calc - Creating a Template with Styles',838,'We create Template (recording Billable Time) using Styles to illustrate the usage.','
\r\nThe last few tutorials have looked at the techniques you need to master to use Styles and Templates effectively, but putting these into practice is essential to understanding them, I believe. So it is time for us to actually built a Template that incorporates a few styles and put the whole package together. For my example, I am going to create something useful for a consultant who needs to keep track of time for billing customers.\r\n
\r\n',198,70,0,'CC-BY-SA','LibreOffice, Calc, Spreadsheet, Styles, Templates',0,0,1),
(1637,'2014-11-11','Communities Are Made of People',2804,'Zuckerberg, Facebook, friends having you back','
',131,0,0,'CC-BY-SA','Zuckerberg, Facebook, friends having you back',0,0,1),
-(1696,'2015-02-02','HPR Community News for January 2015',3651,'Live community recording from FOSDEM 2015.','
Ken Fallon on 2015-01-06:\"Workaround to my unison issues\"
\r\n
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1716,'2015-03-02','HPR Community News for February 2015',5292,'Dave and Ken host the Community News','
Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the Gmane archive.
hpr1703 (2015-02-11) \"Open Source CD Rippers\" by Kevie. \n
Ken Fallon on 2015-02-13:\"K3b\"
\n
Charles on 2015-02-25:\"[no title]\"
\n \n \n
\n
hpr1707 (2015-02-17) \"A tour round my desktop\" by Beeza. \n
Marshal Mellow on 2015-02-22:\"Good job\"
\n \n \n
\n
hpr1710 (2015-02-20) \"Windows Remote Desktop on GNU/Linux\" by Ken Fallon. \n
johanv on 2015-02-26:\"Nice!\"
\n \n
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1696,'2015-02-02','HPR Community News for January 2015',3651,'Live community recording from FOSDEM 2015.','
Ken Fallon on 2015-01-06:\"Workaround to my unison issues\"
\r\n
\r\n
\r\n\r\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1716,'2015-03-02','HPR Community News for February 2015',5292,'Dave and Ken host the Community News','
Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the Gmane archive.
hpr1703 (2015-02-11) \"Open Source CD Rippers\" by Kevie. \n
Ken Fallon on 2015-02-13:\"K3b\"
\n
Charles on 2015-02-25:\"[no title]\"
\n \n \n
\n
hpr1707 (2015-02-17) \"A tour round my desktop\" by Beeza. \n
Marshal Mellow on 2015-02-22:\"Good job\"
\n \n \n
\n
hpr1710 (2015-02-20) \"Windows Remote Desktop on GNU/Linux\" by Ken Fallon. \n
johanv on 2015-02-26:\"Nice!\"
\n \n
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1628,'2014-10-29','OggCamp Interview with Peppertop Comics',793,'A short interview with Mark of Peppertop Comics.','
The interview was conducted at OggCamp 14, a free culture unconference, held in Oxford UK on the weekend of October 4th-5th 2014.
\n',287,78,0,'CC-BY-SA','interviews,comics,oggcamp',0,0,1),
(1634,'2014-11-06','How I got into Linux',1053,'How I discovered Linux ','
I have been an HPR listener for many years, and I really like the episodes on how people discovered and learn to use Linux. So this is my first HPR contribution. I recorded this on a Sansa Clip on a saturday afternoon. It\'s not heavily edited, but i did use audacity to remove a few errors I had made. Please excuse the uhhs and umms.
\r\n',289,29,1,'CC-BY-SA','Sansa Clip,Audacity',0,0,1),
(1629,'2014-10-30','Banana Pi - First Impressions',1012,'Banana Pi first impressions','
The Banana Pi - First Impressions
\r\n
They say duplication is the sincerest form of flattery, substitute the word of your choice for \'duplication\'.
\r\n
The Banana Pi is made in China and bears an uncanny resemblance to the Raspberry Pi.
\r\n
Not just the name, the board is fractionally larger, some of the features on the board are similarly placed:
\r\n
\r\n
26-pin GPIO
\r\n
3.5mm analogue audio jack
\r\n
RCA composite video jack
\r\n
SD card slot
\r\n
\r\n
There are things the RPI does not have:
\r\n
\r\n
Power button
\r\n
uBoot button
\r\n
Microphone
\r\n
USB-otg port (otg = on-the-go, a bi-directional USB port)
\r\n
SATA connector
\r\n
\r\n
The processor is a dual-core running slightly faster than the Raspberry Pi, although to be fair, of course, the RPI can be over-clocked.
\r\n
The Banana Pi has twice the RAM and a dual-core processor.
\r\n
The SoC is the ARM Allwinner A20.
\r\n
Getting my Hands on a Banana Pi
\r\n
My first Banana dropped through the letterbox a couple of days ago.
\r\n
Thanks to some kind soul on the Raspberry Pi Facebook group who described the connectors on the edges of the board I narrowly avoided plugging the power supply into the USB-otg port. The power micro-USB is on the underside of the board between the SATA power and data connectors which are on the upper side of the board.
\r\n
Can\'t really say much about it because I can\'t actually see the build quality, but it feels nice. The PCB is fractionally thinner than the RPI.
\r\n
Problems
\r\n
I had an initial struggle to find a download link for any images.
\r\n
The downloads page of lemaker.org has a two row table on it which appears to be upside-down and it has links to Google-drive, two different public DropBox links, a MS One-Drive link, and something I didn\'t initially find, an FTP link.
\r\n
Both of the DB links are duff because they have suspended the account because of excessive traffic.
I downloaded and extracted all of these images to my Debian desktop machine and tried to write and boot them in succession.
\r\n
The first I tried was Arch, on the assumption that would not have a desktop installed.
\r\n
After writing the card I looked at it on my Debian machine with parted and it appeared to have two partitions. As with the Raspberry Pi there is a small FAT16 partition and a bigger ext4 partition.
\r\n
The FAT partition contained the same files as the Raspberry Pi:
\r\n
\r\n
config.txt
\r\n
cmdline.txt
\r\n
kernel.img
\r\n
\r\n
And some others I can\'t remember.
\r\n
In addition it contained:
\r\n
\r\n
uEnv.txt
\r\n
uImage
\r\n
\r\n
It appears uEnv.txt is equivalent to the Raspberry Pi cmdline.txt file, and uImage is, of course, the kernel.
\r\n
So oddly it has the files for the RPI and it\'s own in the FAT partition.
\r\n
Then I tried Bananian, and this appears to be Debian Wheazy for ARM.
\r\n
Similar story with the FAT partition.
\r\n
It is a very minimal installation which has little more than the Linux Standard Base (LSB) packages. I like this because I like to have control.
\r\n
Sound and Stuff
\r\n
I found a review from April this year that said the sound driver snd-bcm2835 was not available. At the name snd-bcm2835 my heart sank because I expected the BPI to have the same stuttering text-to-speech problems as the RPI.
\r\n
Not expecting much I did, as root:
\r\n
apt-get install alsa-base alsa-utils
\r\n
Looking through /lib/modules/... blah blah I found a driver called:
The online community and code-base for the Banana Pi is not yet very mature, and because the origin of the beast is China, a lot of what\'s out there is in Chinese.
\r\n
But it is growing. And after all, it took the RPI a while to take off and go ballistic.
\r\n
At the moment I would say the Banana Pi is not for the faint-hearted or the total newbie, although, a lot of newbie questions are generic and don\'t have machine-specific answers.
I\'m a great fan of using the Linux command line and enjoy writing shell scripts using the Bash shell.
\r\n
\r\n
BASH (or more usually Bash or bash) is the name of a Unix shell. The name stands for Bourne Again SHell, which is a play on words. Bash is an extension of the shell originally written by Stephen Bourne in 1978, usually known as SH.
\r\n
Bash was written as part of the GNU Project which forms part of the Linux Operating System.
\r\n
A shell is the part of the operating system that interprets commands, more commonly known as the command line.
\r\n
A knowledge of Bash is very helpful if you would like to be able to use the power of the command line. It is also the way to learn how to build Bash scripts for automating the tasks you need to perform.
\r\n
\r\n
In this episode we look at what parameters are in Bash, and how they can be created and manipulated. There are many features in Bash that you can use to do this, but they are not easy to find.
\r\n
As I was learning my way around Bash it took me a while to find these. Once I had found them I wanted to make a "cheat sheet" I could stick on the wall to remind me how to do things. I am sharing the result of this process with you.
\r\n
The version of Bash which I used for this episode is 4.3.30(1)-release
\r\n',225,42,1,'CC-BY-SA','Bash,script,parameter,variable',0,0,1),
(1650,'2014-11-28','OCPLive2014 Night Life In Elysburg PA',10935,'The real Elysburg experience','
A running commentary by FiftyOneFifty and Tankenator on the nightlife in Elysburg PA
\r\n',131,0,0,'CC-BY-SA','OCP Live, oggcastplanet, 2014, nightlife',0,0,1),
(1652,'2014-12-02','GeekSpeak 2013-06-01',3843,'Showcasing the Central Coast Public Broadcasting radio show slash podcast, Geek Speak','
As part of Hacker Public Radio\'s continuing effort to showcase Creative Commons Works, we are proud to present GeekSpeak. GeekSpeak is produced as a radio show for community based station KUSP in Monterey CA, and rebroadcast as podcast, available from GeekSpeak.org. It is a generally a lighthearted and humorous general technology news show, with topics including electronics, computing, robotics, and green tech. Often guest speakers and authors from the technology world will come on for interviews. The shows are just about an hour long.
\n
The regular hosts are Bonnie Jean Primbsch, Lyle Troxell, Miles Elam, and Ben Jaffe (see GeekSpeak.org/geeks/for the full roster). You can often hear them thanking the \"Puppetmaster\" for letting them continue to use the name GeekSpeak. After broadcasting for several years, it was discovered the term \"GeekSpeak\" had been registered as a service mark by David Lawrence for a podcast of his own. You might remember Lawrence as the actor who played the character on \"Heroes\" with the telekinetic ability to physically manipulate other characters against their will.
\n
GeekSpeak has a long standing tradition of using Devo\'s \"Through Bein\' Cool\" as intro music, so only those episodes that employ user contributed music instead are actually released Creative Commons. What you are about to hear, from the 1st of June of 2013, is just such an episode.
https://7thavenueproject.com/ - This is another KUSP show, often dealing with sciencetific topics. I mention it here, because I originally wanted feature a GeekSpeak that I had found fascinating, even though it featured none of the regular hosts : https://geekspeak.org/shows/audio/GeekSpeak_2012-11-24.mp3?1354389765 \"Hany Farid, Digital Image Detective with Robert Pollie of The 7th Avenue Project\" Basically, Farid talked about the methods he uses to determine whether a digital image has been altered. Ultimately, since it was a re-broadcast of an earlier \"7th Avenue Project\", and not knowing the original licensing, I decided to bring you a more traditional and recent sample of GeekSpeak.
\n
',158,0,0,'CC-BY-NC-ND','Geek Speak, KUSP, Creative Commons, community radio, GeekSpeak.org',0,0,1);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1741,'2015-04-06','HPR Community News for March 2015',4618,'HPR Community News for March 2015','\n
New hosts
\n
\nWelcome to our new hosts: \n tcuc, \n Fin, \n b-yeezi.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 1:\nzloster on 2015-03-31:\n\"Small problem\"
Comment 2:\nDave Morriss on 2015-03-31:\n\"Re: Small problem\"
Comment 3:\nDave Morriss on 2015-03-31:\n\"Great show!\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1761,'2015-05-04','HPR Community News for April 2015',4000,'HPR Community News for April 2015','\n
New hosts
\n
\nWelcome to our new hosts: \n amp, \n Stilvoid.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
hpr1759\n(2015-04-30) \"A brief review of Firefox OS\"\nby Stilvoid.\n
Comment 1:\nJon Kulp on 2015-04-30:\n\"Welcome Aboard \"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1741,'2015-04-06','HPR Community News for March 2015',4618,'HPR Community News for March 2015','\n
New hosts
\n
\nWelcome to our new hosts: \n tcuc, \n Fin, \n b-yeezi.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 1:\nzloster on 2015-03-31:\n\"Small problem\"
Comment 2:\nDave Morriss on 2015-03-31:\n\"Re: Small problem\"
Comment 3:\nDave Morriss on 2015-03-31:\n\"Great show!\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1761,'2015-05-04','HPR Community News for April 2015',4000,'HPR Community News for April 2015','\n
New hosts
\n
\nWelcome to our new hosts: \n amp, \n Stilvoid.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
hpr1759\n(2015-04-30) \"A brief review of Firefox OS\"\nby Stilvoid.\n
Comment 1:\nJon Kulp on 2015-04-30:\n\"Welcome Aboard \"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1653,'2014-12-03','Ruth Suehle at Ohio Linux Fest 2014',2779,'Ruth Suehle reminds us all that hardware needs to be open too.','
\r\nRuth Suehle gave the next-to-last keynote at Ohio LinuxFest 2014 on 2014-10-25. In this talk she discusses the significance of open hardware and maker culture, and how this is something we all should participate in. Maker culture is an essential part of the free and open culture we belive in when we talk about open source. And we need to be vigilant to protect our values in the hardware space. As an example she tells us about Bre Pettis and Makerbot, which at one time were very open, but have turned aginst this value as they became more successful. In the final analysis, it is up to us to protect open hardware by voting with our dollars/euros/whatever.\r\n
',198,0,0,'CC-BY-SA','Open Hardware, Open Source, Open Specifications',0,0,1),
(1735,'2015-03-27','Free tutorials for teachers',897,'Professor Bernard Poole makes free tutorials available aimed at teachers','
\r\nI have received a very generous offer from Bernard J. Poole, a professor at the University of Pittsburgh. He has a series of LibreOffice Tutorials and has asked me to publicize that they are available free of charge to all of our LibreOffice fans on Hacker Public Radio. You can find his tutorials on his web site at https://www.pitt.edu/~poole/. He is particularly aiming his tutorials at educators who might use LibreOffice in the classroom\r\n
',198,70,1,'CC-BY-SA','Teachers, tutorials',0,0,1),
(1649,'2014-11-27','Raspberry Pi Accessibility Breakthrough',1036,'How I fixed the stuttering text-to-speech on a Raspberry Pi','
\r\nSince April last year the text-to-speech using eSpeak in the Raspberry Pi\r\nconsole has stuttered very badly and regularly crashes the kernel.\r\n
',282,0,1,'CC-BY-SA','Raspberry Pi, Accessibility, console, speakup, kernel oops, fixed',0,0,1),
@@ -18008,9 +18123,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1688,'2015-01-21','Some useful tools when compiling software',766,'Useful tools I found when compiling software, and creating a debian package.','
introduction
\r\n\r\n
\r\nHi this is Rho`n and welcome to my first submission to Hacker Public Radio. I have been working on an application using the Python programming language with the Enlightenment Foundation Libraries (EFL) libraries for the GUI interface. After acquiring a new laptop and installing a fresh copy of Ubuntu on it, I decided to set up the build environment I needed to be able to work on my project. I have been building from source the EFL libraries along with the Python-EFL wrapper libraries. For the last couple machines on which I have built the software, I would use the standard configure, make, and make install procedure. This time around I decided to create a debian package to use for installing the libraries. It had been a few years since I had created a .deb, so I googled for some tutorials, and found mention of the checkinstall program. After reading a couple blog posts about it I decided to try it out. checkinstall is run instead of \"make install\" , and will create a .deb file, and then install the newly created package.\r\n
\r\n\r\n
cut and tr commands
\r\n\r\n
\r\nTo help speed up the configure process, I had previously created a file from my other builds that is a grep of my history for all the various \"apt get install\" commands of the libraries the EFL software needs to compile. Since my current operating system was a freshly installed distribution of Ubuntu, I needed to install the build-essential package first. After looking through my install file, and I decided to create a single apt-get install line with all the packages listed, instead of running each of the installs seperately. I knew I could grep the file, and then pass that to awk or sed, but my skill with either isn\'t that great. I did a little searching to see what other tools were out there and found the cut command and the tr command. Cut lets you print part of a line. You can extract set a field delimeter with the -d option and then list a range of fields to be printed with the -f option. The tr command can replace a character. I used this to replace the new line character that was printed by the cut command to generate a single line of packages which I piped to a file. A quick edit of the file to add \"sudo apt-get install\" at the beginning, add execute permissions to the file, and now I have a nice, easy way to install all the needed libraries.\r\n
\r\nAt least that was the idea. After installing the libraries, and running configure, I still received errors that libraries were missing. The machines from which my list of libraries was generated, had all been used for various development purposes, so some needed libraries were already installed on them, and so their installation had passed out of my history. Besides echoing to standard out the file configure can\'t find, it also creates a log file: config.log. Between the two it is relatively easy to figure out what library is needed. Often the libraries needed included their name in the .deb which has to be installed, and finding them is easy with an apt-cache search and grep of the library name. The hardest ones to find were often the X11 based references. In this case, I needed the scrnsaver.h header file. After googling, I found a reference to the needed package (libxss-dev) on Stack Exchange. The answer also showed how to use the apt-file command to determine in which package a file is included. I wish I had run into this before, there a few times where it took a number of searches on the internet to figure out which package I needed to install, and \"apt-file find\" would have saved time and frustration. A very handy tool for anyone developing on a debian based distribution. As it turns out, that was the last dependency that needed resolved. After a successful configure, and successful compile using the make command, I was ready to try out checkinstall. Running sudo checkinstall, brings up a series of questions about your package, helping you fill out the needed .deb meta-data. I filled out my name and email, name for the package, short description of the package, and let everything else go to the suggested defaults. After, that hit enter and checkinstall will create a debian package and install it for you. If you run \"apt-cache search <name of package>\" you will see it listed, and \"apt-cache show <name of package>\" will give you the details you created for the package. There are warnings on the Ubuntu wiki not to use this method for packages to be included in an archive or in a ppa. It does work great for a local install, and would use it to install on machines on my local network.\r\n
\r\nAfter a short side trip into development setup, I\'m back writing my application on my new laptop. While I am a big fan of binary packages, Debian being the first GNU/Linux distribution I ever used, sometimes you need to dive in and compile software from source. For me running configure, make, make install has been the easiest way to do this, and these days it usually isn\'t too difficult to get even moderately complex applications and libraries to build. The most tedious part can be resolving all the dependencies. Now, with apt-file in my tool belt, it will be even faster and easier. I will also be using checkinstall for future compiles. I do like being able to use package management tools to install, and un-install software.\r\n
\r\n
\r\nI hope others find these tools useful. I have posted links in the show notes to the pages about cut, tr, apt-file and checkinstall that led me to these tools. If you\'ve made it this far, thanks for listening to my first post to HPR. As Ken Fallon points out, it\'s not an HPR episode until you have uploaded it to the server. So let those episode ideas flow from your brain, into your favorite recording device, and up to the HPR server. Let\'s keep HPR active, vibrant, and a part of our lives for years to come. \r\n
',293,0,0,'CC-BY-SA','cli, deb, compile',0,0,1),
(1689,'2015-01-22','Linux Voice magazine at OggCamp',676,'Another interview from OggCamp with the guys from Linux Voice ','
\r\nCorenominal and Beni talking to the guys of the newly founded Linux Voice magazine. It\'s a British Linux publication that\'s less than a year old. \r\n
\r\n
\r\nWe talked to them about why you would found a magazine these days, why their magazine is still relevant in the digital age and why kinds won\'t beat them at mario cart.\r\n
\r\n',288,62,1,'CC-BY-SA','Linux Voice, oggcamp, interview',0,0,1),
(1684,'2015-01-15','5150 Shades of Beer Jacob Leinenkugels Winter Explorer Pack',814,'fifty tries the Leinenkugels Explore pack','
\r\nJacob Lienenkugels Winter Explorer Pack \"Chippewa Falls, WI since 1867\"\r\n
\r\n
\r\nWinters Bite - Do you know what it smells like when you open a tin of cocoa (the semi-sweet kind, not the unsweetend) and no matter how you do it, a litle of the powder puffs out? The best descrition I can give this beer is it tastes just like that smell, even down to the dryness. Neither cloyingly sweet or leaving you wondering who mixed the chocolate syrup into you beer, just a sublte taste of dry cocoa. This lager pours dark with very little head. This beer (my favorite it this group) is only available in the Explorer pack, and it\'s ABV and ingredients are not featured on leinie.com.\r\n
\r\n
\r\nHelles Yeah - (German blonde lager, Helles means \"light\" in German, but unlike American beers, it refers only to color). Straw color, very clear, moderate head that disapears w/o lacing. Sublte flavor, a hit of hops and just slightly more than a pinch of pepper. 5.5 ABV Malts: Pale malts Hops: Five All-American hops including Simcoe and Citra \r\n
\r\n
\r\nCranberry Ginger Shandy - [From Wikipedia, Shandy is beer mixed with a soft drink, carbonated lemonade, ginger beer, ginger ale, or apple juice or orange juice.] Pours cloudy yellow amber, moderate head that disapears w/o lacing. Leinenkugel managed to resist the urge to color it red. Not as syrupy as Shock Top\\\'s Cranberry Belgian Ale, but unlike many fruit adjunct brews, neither is the flavor so subtle you have to go searching for it. I like to use ginger in cooking, and I can also detect the taste of that sweet spice in this weiss beer as well. 4.2% ABV \r\nMalts: Pale and Wheat Hops: Cluster Other: Natural cranberry and ginger flavors\r\n
\r\n
\r\nSnowdrift Vanilla Porter - Pours dark brown with just a litle carmel color head that disipates imediately. Vanilla bean aroma. Vanilla flavor is perhaps more subtle than Breckenridge\'s Vanilla Porter, but there will be know doubt you are enjoying a beer flavored by vanilla and roasted malts, with a hint of chocolate to keep it from being too sweet. 6.0 ABV \r\nMalts: Two- and six- row Pale Malt, Caramel 60, Carapils, Special B, Dark Chocolate and Roasted Barley Hops: Cluster & Willamette Other: Real vanilla\r\n
\r\n
\r\nBONUS ROUND -Leinenkugels Orange Shandy - Wheat beer, likely exactly the same one that\'s in the Cranberry Ginger Shandy, but in this case the tart/sweet orange juice taste dosn\'t completely obscure the flavor of the beer. I like them both, but I think I would grab the orange shandy on a hot day. 4.2% ABV \r\nMalts: Pale and Wheat Hops: Cluster Other: Natural orange flavor\r\n
\r\n',131,14,1,'CC-BY-SA','5150 Shades of Beer,beer,drinking beer',0,0,1),
-(1781,'2015-06-01','HPR Community News for May 2015',4021,'Dave and Ken waffle on and on','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1682,'2015-01-13','Introduction to the Netizen Empowerment Federation',620,'Introduction to Netizen Empowerment Federation. It is short, so let me know if you\'d like detail.','
\r\nThis is my first HPR release and I\'m going to keep it short. If anyone is intertested in hearing more about any of the projects I mention here, I\'m happy to do another show.\r\n
\r\n
\r\nFirst, I just want to say that everything on Netizen Empowerment Federation (NEF) is released under a free culture license, though not all of the music selected by our presenters is free culture. Right now we are blog and podcast focused, but we would like to add digital creators of all types.\r\n
\r\n\r\n
\r\n
https://opensourceplayground.org/\r\nI\'m doing these sites in the order they were created, though I\'m not sure if OSP or Sportazine was created first. Since OSP is the most closely related to HPR, I\'m going to start with that. OSP started as a shared hosting gift for new developers. The idea was I could make people accounts on Dreamhost and they could test the latest free software. Since it wasn\'t a business, I didn\'t really promote it. It never took off. I had a few people in Wisconsin make accounts, but they barely used them. It\'s not really important why that idea failed, but eventually it just became a place for me to talk tech. lnxw48 aka lnxwalt is our current systems administrator and occasionally writes pieces for the site. Like all of our sites, we are always looking for contributors! \r\n
\r\n
\r\n\r\n
\r\n
https://sportazine.com/\r\nAs far as I\'m aware, Sportazine is the only site dedicated to sports and free culture. This means a lot of things. First it means, making sure online sports viewing works in free formats. It also means that there are free software fantasy sports implementations and that sports journalism happens under free culture licenses. Sportazine is a weird beast because we partnered with JMP Enterprise. \r\n
\r\n
\r\n\r\n
\r\n
https://www.musicmanumit.com/\r\nThis is a collection of shows about remixable music. The main show features me and Tom of the band Lorenzo\'s Music. You can find his band on Jamendo, Spotify, Free Music Archive, and I\'m sure plenty of other places.\r\n
\r\n
\r\n\r\n
\r\n
https://law.musicmanumit.com/\r\nThe Lawcast is on hiatus and when it comes back will likely be less law focused and more just a catchall for more academic and policy-related stuff than we do on the main show. I\'ll probably talk a lot more about free software on the reboot, because it\'s not a topic Tom really cares much about. Tom is a GNU/Linux user, but he refuses to use anything but Skype or Hangout for recording the shows. I\'ll probably have on musicians that we wouldn\'t otherwise have on and thus a topic of conversation on those shows will be \"Why won\'t you use Skype or Hangout?\" I suspect most of the reasons will be free software focused, but they may also be privacy focused (not that they are unrelated).\r\n\r\n
\r\n
https://punk.musicmanumit.com\r\nThe punkcast is pretty much what it sounds like it is. Eventually I want to bring it back. Right now though, I need to focus on finding funding, because if I don\'t, my wife is going to kick me out. I hope this is resolved by the time you hear this. I\'m recording on December 19.\r\n
\r\n
\r\n\r\n
\r\n
https://cyberunions.org/\r\nI think Cyberunions.org may have started before any of these, but I put it here due to the start of the Cyberunions podcast, which is currently on hiatus. Stephen now works for the FSF, so you know free software is important to him. I\'m not going to say much about the show, because aside from being a one-time guest, I\'m not involved in the project. If people want to know more about Cyberunions, I suggest you pester Stephen (aka mv) about doing a show.\r\n
\r\n
\r\n\r\n
\r\n
https://rynothebearded.com/\r\nRTB really refers to two music shows, one called OO (pronounced \"oh-oh\") and one called Unformatted. The site also has a stream that carriers a variety of shows, including Cerebral Mix, Rage and Frustration, and the last NEF show I am going to discuss.\r\n
\r\n',294,0,0,'CC-BY-SA','music, free software, open source, sports, law, copyright, patents, punk, unions, workers, nef',0,0,1),
(1683,'2015-01-14','Theater of the Imagination: Part 06',2757,'lostnbronx interviews Julie Hoverson, a modern audio drama enthusiast','
\r\nIn this installment, lostnbronx interviews Julie Hoverson, a modern audio drama enthusiast of great experience and insight.\r\n
\r\n
\r\nCheck out Julie\'s wonderful audio content at:\r\n
',107,52,1,'CC-BY-SA','audio,drama,audio drama',0,0,1),
(1691,'2015-01-26','Arduino 101 Arduino IO',2583,'In this episode, learn how to read and write input and output from the Arduino.','
In this two-part series, Klaatu introduces you to the Arduino. First, learn about the breadboard and how to make electricity course through it in order to power your very own simple circuit.
\n
To follow along with what Klaatu is talking about, refer to these two graphics:
\r\nnano is a text editor for Unix-like computing systems or operating environments using a command line interface. It emulates the Pico text editor, part of the Pine email client, and also provides additional functionality. In contrast to Pico, nano is licensed under the GNU General Public License (GPL). Released as free software by Chris Allegretta in 1999, today nano is part of the GNU Project.\r\n
',129,0,1,'CC-BY-SA','editors,nano,gnu/nano,pico,GPL',0,0,1),
(1709,'2015-02-19','Hacking Your Teeth',1250,'Advice on hacking your teeth','
\r\nThis podcast details my experiences with dentists along with a smattering of free advice.\r\n
',201,0,1,'CC-BY-SA','gum disease,Periodontitis,Interdental tooth brush',0,0,1),
(1711,'2015-02-23','Problems with video software in Linux',827,'A person new to Linux is introduced to video software that was unimpressive','
\r\nCheese: \r\nGuvcviewer:\r\n
',297,0,0,'CC-BY-SA','linux, video software, ubuntu',0,0,1),
-(1706,'2015-02-16','Cross-compilers part 1',1609,'What is cross-compiling, and why I might want/need to do it','
\r\nCross-compilers, Part 1\r\n
\r\n
\r\nIn this show I\'ll introduce the concept of cross-compiling software, explain what it\r\nis and why you might want/need to do it.\r\n
\r\n
\r\nI\'ll also talk about a great piece of kit for creating cross-compiler tool-chains\r\non Linux; crosstool-ng.\r\n
\r\n
\r\nAs with most of my shows, the show notes are far too long to fit into the restricted size, so there\'s an HTML version as well, at:\r\n
',282,0,1,'CC-BY-SA','cross-compile, crosstool-ng, Raspberry Pi',0,0,1),
+(1706,'2015-02-16','Cross-compilers part 1',1609,'What is cross-compiling, and why I might want/need to do it','
\r\nCross-compilers, Part 1\r\n
\r\n
\r\nIn this show I\'ll introduce the concept of cross-compiling software, explain what it\r\nis and why you might want/need to do it.\r\n
\r\n
\r\nI\'ll also talk about a great piece of kit for creating cross-compiler tool-chains\r\non Linux; crosstool-ng.\r\n
\r\n
\r\nAs with most of my shows, the show notes are far too long to fit into the restricted size, so there\'s an HTML version as well, at:\r\n
',282,0,1,'CC-BY-SA','cross-compile, crosstool-ng, Raspberry Pi',0,0,1),
(1712,'2015-02-24','What\'s in my Crate',1228,'What was in my crate when I went to a LUG to give a a11y presentation','
\r\nBack in the summer of 2014 I started going to the Surrey Linux User Group.\r\n
\r\n
\r\nI was asked to give a short presentation about Linux accessibility and how,\r\nalthough I am totally blind, I still write code and muck about with Linux.\r\n
\r\n
\r\nI was then asked to give the same presentation at the Portsmouth LUG.\r\n
\r\n
\r\nThis time I made it more comprehensive and took more kit.\r\n
\r\n
\r\nSo I take this opportunity to give my version of the \"What\'s in my bag\"\r\nshows that some folks have been doing. As I am unemployed, like a lot of blind\r\nfolks, I have been unable to justify this before now because I don\'t lug\r\nan interesting collection of stuff to and from work.\r\n
\r\n
\r\nHere\'s a simple bullet list about the crate and it\'s contents:\r\n
\r\n\r\n
\r\n
The crate is a 35 litre capacity \'Really Useful Box\'\r\n
\r\n
First in were 2 Dell Latitude D630 (64-bit) laptops\r\n
\r\n
Next in was a Dell Inspiron (32-bit) laptop, clunky and slow\r\n
\r\n
The three laptops were sandwhiched between 3-ply layers of bubble-wrap\r\n
\r\n
Next in was a Seika 40-cell refreshable Braille display\r\n
\r\n
Next was a clear polycarbonate, zip-up pencil case stuffed with audio leads\r\n
\r\n
Then a \'Mesh\' Bluetooth and line-in external speaker\r\n
\r\n
And a Braun external speaker/FM radio/micro-SD boom-box\r\n
\r\n
A four-way mains power splitter\r\n
\r\n
The three AC adaptors for the laptops\r\n
\r\n
On the top of the box, because it was too wide to go in, was a USB keyboard\r\n
\r\n
Mobile phone charging battery \'brick\', for the Raspberry Pi\r\n
\r\n
A Raspberry Pi, a Banana Pi and some Arduino bits and pieces\r\n
\r\n
\r\n\r\n
\r\nHere\'s what I demonstrated with two of the laptops:\r\n
\r\n\r\n
\r\n
Trisquel Linux and accessibility in the Gnome desktop with Orca\r\n
\r\n
Accessibility in the console with Debian and the Braille display on the Inspiron\r\n
\r\n
\r\n\r\n
\r\nThe second Latitude was with me so I could get some sighted help with\r\nBIOS settings.\r\n
\r\n
\r\nMy thanks have to go to Tony Wood for the lift to and from both of these\r\naccessibility presentations. I could not have done either, especially the Portsmouth one without his help.\r\n
\r\n
\r\nThanks also to Lisi, the coordinator of the Portsmouth LUG and to the folks of that LUG for their enthusiasm.\r\n
\r\n
\r\nHere\'s the link to the HPR show about my Raspberry Pi tts code fix:\r\n
',282,23,1,'CC-BY-SA','Accessibility, Linux, LUG',0,0,1),
(1713,'2015-02-25','Fosdem 2015: Surveillance vs. Free Software',1246,'Interviews at the Free and Open Source devleopers meeting FOSDEM in Brussels.','
Aaron Williamson
\r\n\r\n
\r\nFree Software Law Expert Aaron Williamson held a brilliant talk on the history of internet surveillance in the USA at FOSDEM 2015. \r\nAfter the Paris terror attacks, many politicians want to increase surveillance. British Prime Minister David Cameron wants to read all our emails - even the encrypted ones. Is this the only answer to terror attacks? Aaron has a very strong opinion on this. \r\n
Mathias Kirschner, Free Software Foundation Europe
\r\n\r\n
\r\nMatthias is the Vicepresident of the Free Software Foundation Europe. In our interview at Fosdem 2015, he explains the work and the goal of the foundation and how they do lobbying for Free Software in parliaments and government bodies.\r\n
',285,78,0,'CC-BY-SA','Fosdem, Surveillance, Free Software',0,0,1),
(1714,'2015-02-26','Vim Hints 001',1070,'Hints and Tips for Vim users - part 1','
Introduction to Vim
\r\n
This is the start of the Vim Hints series.
\r\n
As a Linux user there are many editors available to you. Which one you want to use depends on your needs and the amount of time you want to dedicate to learning how to use it.
\r\n
One of the editors from the early days of Unix is vi, written in 1976. Contemporary with it is Emacs, also originating in 1976. However, it seemed to become the norm (in my experience anyway) that vi rather than Emacs was provided as standard with versions of Unix, and this has often continued into Linux.
\r\n
I originally started using Unix around 1988 and found vi available to me. I learnt how to use it in a rudimentary way since I knew I\'d find it on any Unix systems I came across.
\r\n
Many derivatives and clones of vi have been created. The one which has become the most popular and available is Vim, the name of which is an acronym for Vi IMproved, created in 1991 by Bram Moolenaar. This is what I use, and I have not wanted to learn another editor since adopting it, even though I have experimented with several. This is the editor we will be looking at in this series.
\r\n
What\'s the series about?
\r\n
The thinking behind this series is:
\r\n
\r\n
You may already be using Vim; there are features you may not be aware of that can be revealed here
\r\n
You may be using a different, simpler editor; you might want to use Vim and gain from its advanced features
\r\n
\r\n
Of course, you may prefer to learn Emacs instead. That\'s fine; you should choose the tool that best suits your needs. Both Emacs and Vim have quite steep learning curves, but the broad range of capabilities you gain from knowing either is considerable.
\r\n
I am not an expert in Vim. In fact I am continuing to learn new Vim features on a regular basis. However, I have been using it for many years and would like to share some of what I have learnt.
\r\n
Why use Vim?
\r\n
With simpler editors you can move about a file, add, remove and change text and save the results. The editor might have syntax highlighting and some degree of knowledge of the programming language you are typing. You might have spell checking as well.
\r\n
With Vim and other more advanced editors you have all of this and a lot more. You can perform global changes throughout a file, process many files at once, add plugins to the editor to change its behaviour, and so on. Also, there is a language behind the scenes which can be used to build extensions.
\r\n
Using Vim
\r\n
Usually, typing the command vi at the command line actually invokes vim. Vim runs in vi-compatible mode by default, which results in Vim enhancements being unavailable.
\r\n
Vim uses a configuration file, which is called .vimrc on Linux. (Vim will also run on Windows, OSX and other operating systems but we will not be covering these implementations in this series.) Vim also has a GUI interface invoked by the command gvim, and it has its own configuration file .gvimrc.
\r\n
I you don\'t have a .vimrc create one with touch ~/.vimrc before you start. This will stop Vim running in vi-compatible mode. We will look at what the .vimrc can be used to do later.
\r\n
You can start Vim on its own without pointing at a file, but normally you use it to edit a file, which need not already exist. So, to create a new file called testfile invoke Vim with the command: vim testfile
\r\n
Once running, Vim shows the contents of the file. All the lines on the screen where there is no content are marked with a tilde "~" character. If you are creating a file the first line on the screen will be blank, and last line will contain the name of the file followed by "[New File]" and some other details which we will examine later:
\r\n
"testfile" [New File] 0,0-1 All
\r\n
All the rest of the lines will contain a tilde.
\r\n
Vim is a modal editor. The mode you usually start in is normal mode where you can move around the lines of the file and perform actions, but nothing you type is actually written to the file. In fact, the keys you type are actually editing commands. This is one of the features of Vim that causes problems for new users.
\r\n
Since this is a new file there is not much you can do other than enter text, and to do this you need to switch to insert mode. Do this by pressing the i key. The message -- INSERT -- will appear on the bottom line of the screen. Now type some text, pressing the Enter key at the end of each line.
\r\n
You might notice that in insert mode you can press the arrow keys and move back to text you have already typed. This is a Vim feature and was not available in the original vi editor.
\r\n
When you have finished entering text, press the Esc key to exit from insert mode. Now you can move around in normal mode, but remember that the keys you press are now commands not data to be entered into the file.
\r\n
To move around in normal mode use the arrow keys or the home row keyboard keys: k to move up, j to move down, h to move left and l to move right.
\r\n
This brings us to the last mode we\'ll look at: command mode. To enter this mode press the : (colon) key in normal mode. This moves the cursor to the last line of the screen, which starts with the colon you just typed. Here you can enter another class of commands. This time, we\'ll just look at how you can save the file and exit Vim.
\r\n
Saving the file is achieved with the w command, and to exit from Vim the q command is used. These can be typed together, so :wq writes the file and exits.
\r\n
If you were to use :q on its own, having entered data into Vim, this would not work. Vim prevents you from throwing away your work this way. If you really meant to quit without saving then the q must be followed by an exclamation mark ("!"). So :q! lets you exit Vim without saving.
\r\n
Summary so far
\r\n
\r\n
Vim usually starts in normal mode
\r\n
Arrow keys or h, j, k and l for left, down, up and right for navigation in normal mode
\r\n
i enters insert mode
\r\n
Esc exits from insert mode and reverts to normal mode
\r\n
: in normal mode enters command mode
\r\n
:w in normal mode writes the file
\r\n
:wq in normal mode writes and exits
\r\n
:q in normal mode exits but only if nothing was changed or added
\r\n
:q! in normal mode exits regardless of any changes
\r\n
\r\n
Errata
\r\n
\r\n
I was wrong about the contents of the last line of the Vim screen in the audio. The notes have been corrected.
\r\n',225,82,1,'CC-BY-SA','vim,gvim,editor',0,0,1),
(1717,'2015-03-03','Visualizing electricity',687,'Trying to understand electricity.','
Current
\r\n\r\n
\r\n
Amps (what it\'s measured in)\r\n
\r\n
amount of water. (what i compare it to)\r\n
\r\n
\r\n\r\n
Volts
\r\n\r\n
\r\n
voltage (what its measured in)\r\n
\r\n
pressure (what i compare it to)\r\n
\r\n
\r\n\r\n
Resistor
\r\n\r\n
\r\n
Ohms (what it\'s measured in)\r\n
\r\n
valve (what i compare it to)\r\n
\r\n
',298,0,0,'CC-BY-SA','amps,voltage,ohms',0,0,1),
(1724,'2015-03-12','Vim Hints 002',1540,'Hints and Tips for Vim users - part 2','
Vim Ate my Homework
\r\n
In this episode I want to look at how to keep your work secure with Vim. Next episode we will look at how to create and edit files.
\r\n
Avoiding data loss with a backup
\r\n
The best place to start is with the configuration file which we met last episode. As we saw, this is usually $HOME/.vimrc. However, it can also be $HOME/.vim/vimrc, which is actually recommended since it keeps all Vim files in the same place. I use the former, since that\'s the way I have always done it.
\r\n
Let\'s add some options to this file. Configuration options consist of command mode commands. Actually, to be precise about it, any Vim Script expression may be written there.
\r\n
First it\'s a good idea to ensure that Vim runs with all of its standard features enabled. The option for this is called compatible (meaning compatible with Vi), which we need to turn off. This is done with the option:
\r\n
set nocompatible
\r\n
Next, it\'s highly advisable to make Vim generate a backup file whenever it opens a file for editing. The backup file has the same name as the original file with a tilde appended. The configuration command is:
\r\n
set backup
\r\n
The backup file is a copy of the file which existed before editing started.
\r\n
By default the backup file is saved in the same directory as the file being edited. If this is a problem (and to me this is not), then it is possible to tell Vim to save backups in a fixed place. This is done with the command set backupdir= followed by a list of directories. For example:
\r\n
set backupdir=~/.backup,.,/tmp
\r\n
If you were to add this to your configuration file, Vim would save backups in a top-level directory ~/.backup (which must already exist), then if this fails it will save in the current directory, falling back to /tmp if all else fails. Whether you do this is up to you. I would suggest you do not, at least not until you are more experienced with Vim.
\r\n
Undoing and redoing changes
\r\n
Vim can undo changes you make to a file. This is useful if a change was the wrong change or in the wrong place. It can also redo the undone change.
\r\n
The u command in normal mode undoes the last change. The redo function is invoked by pressing the Ctrl key while pressing r. This key sequence is normally represented as CTRL-R.
\r\n
Vim keeps a record of the changes, so successive u commands undo successive changes back in time. Conversely, CTRL-R redoes the undone changes forward in time.
\r\n
Normally the change history is lost when Vim exits, but two configuration options can be used to save it. The undofile option ensures change history is written to a file and undodir shows the (pre-existing) directory which is to hold these files.
\r\n
set undodir=~/.vim/undodir\r\nset undofile
\r\n
It can be a little surprising if you press u in a file you have just opened in Vim to find that it undoes something you changed last time you edited it! However, on the whole I think this is a great feature.
\r\n
File recovery
\r\n
The Swap File
\r\n
By default Vim uses a recovery mechanism where it generates a swap file. Under Unix and Linux this file has a name built from the name of the file being edited with a dot prepended (making it a hidden file) and with the extension ".swp". So, if you were editing the file testfile the swap file would be a file called .testfile.swp in the same directory.
\r\n
It is possible to make Vim write the swap file elsewhere, such as on another partition. You can also turn this recovery capability off. It is probably advisable to use the default settings while you are learning Vim.
\r\n
The swap file is updated after typing 200 characters or when you have not typed anything for four seconds. The swap file is deleted as soon as Vim stops editing the file.
\r\n
Recovery
\r\n
Case 1: there are changes in the swap file
\r\n
If something bad happens during an editing session, such as the loss of power, the swap file will remain after the event. If you know that you need to recover your edit session then you can simply type the following in the directory where the file you were editing exists:
\r\n
vim -r filename
\r\n
You will see a message such as the following:
\r\n\r\n
Using swap file ".testfile3.swp"\r\nOriginal file "~/testfile3"\r\nRecovery completed. You should check if everything is OK.\r\n(You might want to write out this file under another name\r\nand run diff with the original file to check for changes)\r\nYou may want to delete the .swp file now.\r\n\r\nPress ENTER or type command to continue
Alternatively, when you try to edit a file you were editing at the time of the failure Vim will detect the presence of a swap file and alert you with a message such as:
\r\n\r\n
E325: ATTENTION\r\nFound a swap file by the name ".testfile2.swp"\r\n owned by: hprdemo dated: Fri Feb 13 15:33:41 2015\r\n file name: ~hprdemo/testfile2\r\n modified: YES\r\n user name: hprdemo host name: i7-desktop\r\n process ID: 16181\r\nWhile opening file "testfile2"\r\n dated: Sat Dec 6 18:34:32 2014\r\n\r\n(1) Another program may be editing the same file. If this is the case,\r\n be careful not to end up with two different instances of the same\r\n file when making changes. Quit, or continue with caution.\r\n(2) An edit session for this file crashed.\r\n If this is the case, use ":recover" or "vim -r testfile2"\r\n to recover the changes (see ":help recovery").\r\n If you did this already, delete the swap file ".testfile2.swp"\r\n to avoid this message.\r\n\r\nSwap file ".testfile2.swp" already exists!\r\n[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
\r\n\r\n
Vim here is indicating that there are unsaved changes that can be recovered. It is also warning that if someone is editing the same file (such as you in another window) this might account for the presence of the swap file.
\r\n
Assuming it\'s appropriate, you can recover the changes and continue editing by pressing r at the above prompt. You will see messages such as the ones above relating to the vim -r filename example.
\r\n
Be aware that if you continue editing the original swap file will continue to exist and you will get the same message again next time you edit the file. Vim will create a new swap file (called /home/hprdemo/.testfile2.swo in this case) to protect the new editing session.
\r\n
This situation can be a little confusing if you have not encountered it before. There are a number of ways you can resolve this:
\r\n\r\n
You can save the recovered file and exit Vim (type :wq). You can then edit the same file all over again. You will see almost the same message as before, but you can now delete the swap file by pressing d. The message you see the second time round will contain the additional warning that the file you are editing is newer than the swap file - that is because you just saved a new copy of it!
\r\n
You can save the file and exit Vim as above, but then explicitly delete the swap file. In the example you would do this by typing: rm .testfile2.swp
\r\n
As before you can save the file but this time without exiting Vim (type :w). Then tell Vim to re-edit the current file with the command :e. You will then see the warning about there being a swap file, and you can type d to delete it.
\r\n\r\n
Case 2: there are no changes in the swap file
\r\n
If, when you see the message about finding a swap file you see that there are no changes to recover you can just delete the swap file by pressing d. You can then continue with editing the file as normal.
\r\n
Don\'t Panic!
\r\n
This recovery process is complex because Vim is trying to ensure that you are protected against losing your changes.
\r\n',225,82,1,'CC-BY-SA','vim,gvim,editor,backup,undo,redo,crash recovery',0,0,1),
(1721,'2015-03-09','Cross-compilers Part 2',2832,'Using one of our cross-compilers to compile a Raspberry Pi kernel','
\r\nIn part 1 I described cross-compiling, what it means and why you might\r\nwant to, or even need to use it.\r\n
\r\n
\r\nI also described how to create a cross-compiler tool-chain using crosstool-ng.\r\n
\r\n
\r\nIn this show I will demonstrate using one of the cross-compilers which\r\nI created as described in the last show to compile a Raspberry Pi Linux kernel.\r\n
\r\n
\r\nAs usual with my shows the show-notes can\'t be squashed into 4k, so there is an HTML version at:\r\n
\r\n',282,0,1,'CC-BY-SA','raspberry pi,kernel,cross-compilation,make',0,0,1),
-(1851,'2015-09-07','HPR Community News for August 2015',6867,'HPR Community News for August 2015','
\nIn today\'s show Jon, Dave and Ken discuss some topics such as, \n
\n\nHi All,\n\nI am concerned as to the health of HPR, and I touched (went on a rant to\nbe honest) on this in the Community News show that will be released\ntomorrow.\n\nWe have 16,495 subscribers and 260 slots per year, so we need to have\nonly 2.5% subscribers contributing to have a different host for every\nday. Unfortunately only 62 managed to contribute a show in the last 365\ndays. I don\'t need Charles in NJ to tell me that that\'s only 0.38% of\nour subscriber base.\n\nAs a project that is supposed to be a \"Community Podcast\", but we\'re\nlooking less like a bar camp and more like a TED talk.\n\nIt gets worse. Dave ran the query of how many shows were contributed by\neach host over the last 365 days. It shows that 50% of the shows have\nbeen contributed by just 5 hosts. This is not to say that submitting\nmultiple shows is bad, far from it. But it\'s the difference between\nwanting to submit multiple shows and *needing* to submit multiple shows,\nthat I\'m concerned about.\n\nSo a few questions for the list:\n\n- Is this a problem ?\n- If so, how do we fix it ?\n\n*Please* do not derail this discussion about your intentions to record a\nshow. I have a in box full of \"I plan to do a show about this\" or \"I\'m\ndefinitely doing a series on that\". More than one are from myself.\nBasically if it\'s not on the server, it\'s not a show.\n\nYou can always add a topic to the requested topic page.\nhttps://gitlab.anhonesthost.com/HPR/HPR_Public_Code/blob/master/www/reque\nsted_topics.html\n\n\n\nMore Info: https://hackerpublicradio.org/eps/hpr1851_HPR_Health_2015-09-06.ods\n\nRaw SQL Dump here: \n\n+--------+--------------------------------+-------+\n| hostid | host | shows |\n+--------+--------------------------------+-------+\n| 198 | Ahuka | 38 |\n| 238 | Jon Kulp | 24 |\n| 159 | HPR Volunteers | 18 |\n| 225 | Dave Morriss | 17 |\n| 131 | FiftyOneFifty | 17 |\n| 30 | Ken Fallon | 14 |\n| 78 | klaatu | 7 |\n| 209 | David Whitman | 7 |\n| 280 | semioticrobotic | 6 |\n| 235 | NYbill | 6 |\n| 288 | beni | 6 |\n| 195 | Frank Bell | 6 |\n| 24 | Lord Drachenblut | 6 |\n| 287 | corenominal | 5 |\n| 282 | Mike Ray | 5 |\n| 129 | JWP | 4 |\n| 265 | Kevin Wisher | 4 |\n| 240 | Steve Bickle | 4 |\n| 297 | swift110 | 4 |\n| 286 | cjm | 3 |\n| 285 | 2BFrank | 3 |\n| 107 | lostnbronx | 3 |\n| 259 | Gabriel Evenfire | 3 |\n| 215 | Windigo | 3 |\n| 296 | Kevie | 3 |\n| 300 | b-yeezi | 3 |\n| 284 | Steve Smethurst | 2 |\n| 233 | johanv | 2 |\n| 252 | Curtis Adkins (CPrompt^) | 2 |\n| 294 | daw | 2 |\n| 302 | Stilvoid | 2 |\n| 197 | garjola | 1 |\n| 134 | PipeManMusic | 1 |\n| 268 | Andrew Conway | 1 |\n| 283 | Inscius | 1 |\n| 289 | pyrrhic | 1 |\n| 290 | Al | 1 |\n| 158 | Various Creative Commons Works | 1 |\n| 109 | Various Hosts | 1 |\n| 291 | Rill | 1 |\n| 292 | Michal Cieraszynski | 1 |\n| 270 | Thaj Sara | 1 |\n| 293 | Rho`n | 1 |\n| 295 | Cibola Jerry | 1 |\n| 246 | Beeza | 1 |\n| 201 | MrX | 1 |\n| 298 | tcuc | 1 |\n| 111 | Knightwise | 1 |\n| 299 | Fin | 1 |\n| 301 | amp | 1 |\n| 157 | HPR_AudioBookClub | 1 |\n| 303 | Alpha32 | 1 |\n| 306 | GNULinuxRTM | 1 |\n| 305 | kurakura | 1 |\n| 229 | Charles in NJ | 1 |\n| 263 | Tony Pelaez | 1 |\n| 307 | cheeto4493 | 1 |\n| 271 | mirwi | 1 |\n| 255 | Matt McGraw (g33kdad) | 1 |\n| 308 | A Shadowy Figure | 1 |\n| 309 | folky | 1 |\n| 115 | sigflup | 1 |\n+--------+--------------------------------+-------+\n\nRegards,\n\nKen Fallon\nhttps://kenfallon.com\nhttps://hackerpublicradio.org/correspondents.php?hostid=30\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n\nHi All,\n\nI am concerned as to the health of HPR, and I touched (went on a rant to\nbe honest) on this in the Community News show that will be released\ntomorrow.\n\nWe have 16,495 subscribers and 260 slots per year, so we need to have\nonly 2.5% subscribers contributing to have a different host for every\nday. Unfortunately only 62 managed to contribute a show in the last 365\ndays. I don\'t need Charles in NJ to tell me that that\'s only 0.38% of\nour subscriber base.\n\nAs a project that is supposed to be a \"Community Podcast\", but we\'re\nlooking less like a bar camp and more like a TED talk.\n\nIt gets worse. Dave ran the query of how many shows were contributed by\neach host over the last 365 days. It shows that 50% of the shows have\nbeen contributed by just 5 hosts. This is not to say that submitting\nmultiple shows is bad, far from it. But it\'s the difference between\nwanting to submit multiple shows and *needing* to submit multiple shows,\nthat I\'m concerned about.\n\nSo a few questions for the list:\n\n- Is this a problem ?\n- If so, how do we fix it ?\n\n*Please* do not derail this discussion about your intentions to record a\nshow. I have a in box full of \"I plan to do a show about this\" or \"I\'m\ndefinitely doing a series on that\". More than one are from myself.\nBasically if it\'s not on the server, it\'s not a show.\n\nYou can always add a topic to the requested topic page.\nhttps://gitlab.anhonesthost.com/HPR/HPR_Public_Code/blob/master/www/reque\nsted_topics.html\n\n\n\nMore Info: https://hackerpublicradio.org/eps/hpr1851_HPR_Health_2015-09-06.ods\n\nRaw SQL Dump here: \n\n+--------+--------------------------------+-------+\n| hostid | host | shows |\n+--------+--------------------------------+-------+\n| 198 | Ahuka | 38 |\n| 238 | Jon Kulp | 24 |\n| 159 | HPR Volunteers | 18 |\n| 225 | Dave Morriss | 17 |\n| 131 | FiftyOneFifty | 17 |\n| 30 | Ken Fallon | 14 |\n| 78 | klaatu | 7 |\n| 209 | David Whitman | 7 |\n| 280 | semioticrobotic | 6 |\n| 235 | NYbill | 6 |\n| 288 | beni | 6 |\n| 195 | Frank Bell | 6 |\n| 24 | Lord Drachenblut | 6 |\n| 287 | corenominal | 5 |\n| 282 | Mike Ray | 5 |\n| 129 | JWP | 4 |\n| 265 | Kevin Wisher | 4 |\n| 240 | Steve Bickle | 4 |\n| 297 | swift110 | 4 |\n| 286 | cjm | 3 |\n| 285 | 2BFrank | 3 |\n| 107 | lostnbronx | 3 |\n| 259 | Gabriel Evenfire | 3 |\n| 215 | Windigo | 3 |\n| 296 | Kevie | 3 |\n| 300 | b-yeezi | 3 |\n| 284 | Steve Smethurst | 2 |\n| 233 | johanv | 2 |\n| 252 | Curtis Adkins (CPrompt^) | 2 |\n| 294 | daw | 2 |\n| 302 | Stilvoid | 2 |\n| 197 | garjola | 1 |\n| 134 | PipeManMusic | 1 |\n| 268 | Andrew Conway | 1 |\n| 283 | Inscius | 1 |\n| 289 | pyrrhic | 1 |\n| 290 | Al | 1 |\n| 158 | Various Creative Commons Works | 1 |\n| 109 | Various Hosts | 1 |\n| 291 | Rill | 1 |\n| 292 | Michal Cieraszynski | 1 |\n| 270 | Thaj Sara | 1 |\n| 293 | Rho`n | 1 |\n| 295 | Cibola Jerry | 1 |\n| 246 | Beeza | 1 |\n| 201 | MrX | 1 |\n| 298 | tcuc | 1 |\n| 111 | Knightwise | 1 |\n| 299 | Fin | 1 |\n| 301 | amp | 1 |\n| 157 | HPR_AudioBookClub | 1 |\n| 303 | Alpha32 | 1 |\n| 306 | GNULinuxRTM | 1 |\n| 305 | kurakura | 1 |\n| 229 | Charles in NJ | 1 |\n| 263 | Tony Pelaez | 1 |\n| 307 | cheeto4493 | 1 |\n| 271 | mirwi | 1 |\n| 255 | Matt McGraw (g33kdad) | 1 |\n| 308 | A Shadowy Figure | 1 |\n| 309 | folky | 1 |\n| 115 | sigflup | 1 |\n+--------+--------------------------------+-------+\n\nRegards,\n\nKen Fallon\nhttps://kenfallon.com\nhttps://hackerpublicradio.org/correspondents/0030.html\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 2:\nJon Kulp on 2015-08-30:\n\"Open Goldberg!\"
Comment 3:\nKevin O'Brien on 2015-08-31:\n\"Agree with Mike\"
\n
\n
',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3973,'2023-10-25','Creating an equalizer preset for your episodes of HPR',938,'A method of creating repeatable processing for your podcasts','
Here I describe my method for creating a macro using equalizer,\ncompressor and normalize presets in Audacity, which can be used\nrepeatedly to get consistent results, as long as you use the same voice,\nmicrophone and recording location.
\n
This is the sample of the equalizer setting I use with a Sennheiser\nMB2 Pro headset:
\n
\n
This is the waveform for this episode before applying the\nCompressor.
\n
\n
This is the waveform for this episode after applying the\nequalizer discussed earlier, the Compressor at threshold -31dB, noise\nfloor -40dB and ratio 2:1. No make-up gain at the Compressor. Finally,\nNormalize to peak amplitude of -12dB. I was wrong in the show to say\nthat I had been using \"Amplify,\" in fact I have been using\n\"Normalize.\"
\n
\n',399,45,0,'CC-BY-SA','audacity,equalizer,compressor',0,0,1),
(1722,'2015-03-10','Kansas Linux Fest 2015, March 21-22, Lawrence KS',367,'We wish to announce a new Linux Fest to serve the Midwest','
\r\nWe are pleased to announce the first annual Kansas Linux Fest (https://KansasLinuxFest.us), hashtag #KLF15. It will be hosted by the Lawrence Public Library, Lawrence Kansas, March 21-22, 2015. The Kansas Linux Fest is a project of the Free/Libre Open Source and Open Knowledge Association of Kansas (https://www.openkansas.us) and other organizations. \r\n
\r\n
\r\nSpecial recognition needs to be paid to Hacker Public Radio contributor James Michael DuPont for taking point in making a community event in the central United States a reality. Speakers (https://www.kansaslinuxfest.us/pages/schedule.html ) include Open Source Advocate Dave Lester, Hal Gottfried, cofounder of the Open Hardware Evangelist Kansas City Open Hardware Group, David Stokes, MySQL Community Manager at Oracle, Ben C. Roose, Technology Consultant for Live Performance, Kevin Lane, Technical Consultant IV at HP Enterprise Services, Jonathan George, CEO @boxcar, and podcaster and open source evangelist, FiftyOneFifty.\r\n
\r\n
\r\nRegistration for conference tickets can be found on the KLF website. Fan tickets are free, but supporter level tickets may be purchased with a free will donation which will go towards marketing and food.\r\n
\r\n
\r\nYou will find links on the https://KansasLinuxFest.us homepage that will allow you to follow the conference on social and other media, as well as an RSS feed. There is also information on how to become involved with Free/Libre Open Source and Open Knowledge Association of Kansas.\r\n
',131,0,0,'CC-BY-SA','#KLF15, Kansas Linux Fest, KLF',0,0,1),
(1723,'2015-03-11','Success With Students',1648,'From taking a podcasting course, students learn the benefit of Creative Commons and open source','
\r\nFor his second attempt at a solo episode of HPR, Kevie talks about a very positive experience he had introducing school pupils to podcasting. From this he was able to discuss the benefits of Creative Commons music and using open source, cross platform software. The ultimate success came when three students took the plunge and installed Linux on their own computers.\r\n
\r\n',296,0,0,'CC-BY-SA','open source, ccmusic, audacity, school, education',0,0,1),
(1726,'2015-03-16','15 Excuses not to Record a show for HPR',1137,'Inspired by a recent meeting with Ken Fallon, Knightwise presents 15 excuses not to record a show.','
\r\nInspired by a recent meeting with Ken Fallon at Fossdem, Knightwise presents 15 excuses not to record for Hacker Public Radio.\r\n
\r\n\r\n
I don\'t have the right Gear
\r\n
It doesn\'t sound so polished
\r\n
I don\'t know how to upload
\r\n
I don\'t have a radio voice
\r\n
I don\'t have the time
\r\n
I\'m shy
\r\n
I don\'t have anything to say
\r\n
The stuff I know about is realy niche and noone will be interested
\r\n
What if I get negative comments
\r\n
Who would listen to my show anyway
\r\n
I\'ve never done this before
\r\n
I\'ll get around to it someday
\r\n
I recorded a show but I\'m too afraid to submit it
\r\n
It takes me a long time to edit out the \"um\" and \"er\"
\r\n
I don\'t know enough about audio editing yet
\r\n',111,0,0,'CC-BY-SA','hpr,podcasting,tips,techniques,kw,knightwise,excuses',0,0,1),
@@ -18064,13 +18180,14 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1747,'2015-04-14','Scale 13x Part 4 of 6',3150,'Five interviews from Scale x13','
',24,0,1,'CC-BY-SA','scale 13x,perl,Open stack,Girls in tech LA,snowdrift.coop,SaltStack',0,0,1),
(1748,'2015-04-15','Scale 13x Part 5 of 6',4106,'Four interviews from Scalex13','
',24,0,1,'CC-BY-SA','scale 13x,LinHES,robots,Michael Hall,Ubuntu,ovirt project',0,0,1),
(1749,'2015-04-16','Scale 13x Part 6 of 6',1425,'Justin King browser based emulated computer','
\r\nI am 13 years old and live in Santa Barbara. I have participated in the Open Source community for several years. My dad has been on the SCALE leadership team for a long time, and he introduced me to programming. My favorite programming languages are HTML and Javascript with Enyo because I like creating websites and webOS apps. I also program in Shell and some Python, and like making short animations using Blender. I have recently made the world\'s first emulator for the WITCH, the first currently working fixed-point decimal computer. I recently earned my Technician Amateur Radio license and enjoy attending radio club meetings. Besides geeking, I like to swim, act, and do fun events with the Boy Scouts.\r\n
',24,0,1,'CC-BY-SA','scale 13x,young geeks,programming,amateur radio',0,0,1),
-(1737,'2015-03-31','Five Steps to Vim',1339,'Frank Bell discusses how he learned to stop worrying and love the vim','
\r\nThe vim editor is based on the venerable vi editor, which dates from the very\r\nearly days of Unix. Many persons find it intimidating for the absence of a\r\nmenu bar, a terse command set that is very much its own, and its \"modal\"\r\ndesign.\r\n
\r\n
\r\nNevertheless, under its plain surface is a powerful and versatile tool. Frank\r\nBell describes his five steps to learning to use and love vim.\r\n
\r\n\r\n
Use a .vimrc file.
\r\n
Train yourself to change modes.
\r\n
Learn and use a few basic commands. These should be enough to get you\r\ngoing: x, dd, dw (to delete text); cw (change a work); yy (\"yank\" or copy a\r\nline); p and P (to paste text); u (undo); w (\"write\") or save text; q (quit vim).
\r\n
Don\'t force yourself to move the cursor with the h-j-k-l keys if that doesn\'t feel natural.\r\nUse the arrow keys.
\r\n',195,82,0,'CC-BY-SA','vim,text editor',0,0,1),
+(1737,'2015-03-31','Five Steps to Vim',1339,'Frank Bell discusses how he learned to stop worrying and love the vim','
\r\nThe vim editor is based on the venerable vi editor, which dates from the very\r\nearly days of Unix. Many persons find it intimidating for the absence of a\r\nmenu bar, a terse command set that is very much its own, and its \"modal\"\r\ndesign.\r\n
\r\n
\r\nNevertheless, under its plain surface is a powerful and versatile tool. Frank\r\nBell describes his five steps to learning to use and love vim.\r\n
\r\n\r\n
Use a .vimrc file.
\r\n
Train yourself to change modes.
\r\n
Learn and use a few basic commands. These should be enough to get you\r\ngoing: x, dd, dw (to delete text); cw (change a work); yy (\"yank\" or copy a\r\nline); p and P (to paste text); u (undo); w (\"write\") or save text; q (quit vim).
\r\n
Don\'t force yourself to move the cursor with the h-j-k-l keys if that doesn\'t feel natural.\r\nUse the arrow keys.
\r\n',195,82,0,'CC-BY-SA','vim,text editor',0,0,1),
(1742,'2015-04-07','How to Get Yourself On an Open Source Podcast - Presentation for Kansas Linux Fest, 22 March 2015',1786,'Re-recording of a presentation for KLF that went unrecorded','
\r\nHowdy folks, this is 5150 for Hacker Public Radio. What you are about to hear is a presentation titled \"How to Get Yourself on an Open Source Podcast\" that I delivered at Kansas Linux Fest on 22 March 2015. Since it was not recorded (I was told the SD card was full), and there has been interest expressed by my fellow podcasters, I thought it might be worth re-recording. I am afraid Mike Dupont is not satisfied with any of the video from KLF 2015, this may be the only talk from that event you get to hear. However, show notes are extensive, https://lanyrd.com/2015/klf15/schedule/ All I can tell you is, three out of the four audience members seemed to enjoy my presentation. I shall deliver the rest of this podcast as if you gentile listeners were my live audience.\r\n
\r\n
\r\nA. Howdy folks, my name is Don Grier. I\'m an IT consultant and farmer from South Central Kansas. I am also a podcaster. You might recognize my voice from such podcasts as Hacker Public Radio, the Kernel Panic Oggcast, or Linux LUG Cast, where I use the handle, FiftyOneFifty.\r\n
\r\n
\r\nI. When fellow Hacker Public Radio host Mike Dupont told me KLF would be a reality, I struggled to find a topic that I knew well enough to give a talk about. It was almost in jest that I said I could talk about \"How to Get Yourself on an Open Source Podcast\". Actually, since that was as far as my proposal went, I was shocked and honored to find myself on the same roster with so many other speakers with impressive credentials and technical topics.\r\n
\r\n
\r\nII. This afternoon, I hope not only to chronicle my personal history with Linux and open source related podcasts, but to show you why I believe podcasting can be as an important part of giving back to the community as contributing code, or documentation, or cash. Linux podcasts bind the community by providing education, both as basic as Linux Reality or as specific as GNU World Order. Podcasts announce new innovations, and tell us of Free and Open Source software adoption and opposition in corporations and governments. Podcasts herald community events like this one, and provide a little humor at the end of a long day.\r\n
\r\n
\r\nB. Some of you may wonder why I\'m using old school technology to organize my notes at a high tech conference. At this point, 5150 holds up several stapled sheets of paper in large print. The plain and simple truth is that I can\'t read my phone or tablet with my glasses on; and I\'m already using bifocals. It just seems every time I get new glasses, the lower lenses work for about two weeks, then I have to take then off to see the phone. But this last time I figured I\'d outsmart my the system and just order a single focus lenses. I was still congratulating myself on my thriftiness when I put my new glasses on, sat down at the computer, and realized I couldn\'t read the keyboard.\r\n
\r\n
\r\nC. Before I talk about my history as a podcaster, I think I should tell you my history with Linux.\r\n
\r\n
\r\nI. My first experience with Linux was with a boxed set of Mandrake 7.2 around 2002. I always maintain at least a second running system in the house, in case the primary machine coughs up a hairball. I\'d always been a geek alternative OS\'s, and I wanted a tertiary machine on my network that wouldn\'t be affected by the propagation of Windows viruses. \r\n
\r\n
\r\na. There wasn\'t much flash to Linux apps in those days, I recall I was not impressed by whichever browser shipped with Mandrake. I don\'t recall what I knew about installing additional applications from repositories, but in any case I was still on dialup. \r\n
\r\n
\r\nb. The Pentium I that I installed Mandrake on had both a modem and an Ethernet card. The installer asked which one I used to reach the Internet, and only set up one of the two devices. This annoyed me as I\'d planned to use the Linux box as a gateway to see if it would save a few CPU cycles on the P4 I used as a gaming machine back then. I really wouldn\'t have know where to go on the Internet for help, and I expect help would not be as forth coming 13 years ago.\r\n
\r\n
\r\nII. My next experience with Linux came around 2007. The school I consulted for had several Windows 98 machines not compatible with the software they wanted to run. Even though the machines were P4\'s, we determined the cost of XP plus memory upgrades could better be applied to new machines. As a result, I was able to bring several of the machines home. Over time, I boosted their memory with used sticks from eBay, and even the odd faster processor. As a noob, I installed Feisty Fawn on a system out in the machine shed, and spent a lot of that winter hacking on that box when I should have been overhauling tractors. Just as I was delving into NDIS wrappers, Gusty brought support for my Gigabyte wireless card, which combined with a double fork isolating power box, gave me reasonable certainty that the box out in the shed was safe from lightning storms. About six months later, I rescued up a refugee from a major meteorological event and set it up in my house running Mint. For the first time I didn\'t have to leave the house to get my Linux on.\r\n
\r\n
\r\nD. Just before I set up that first Linux box, we finally got broadband out to the farm, and I\'d discovered podcasts. I figured there must be Linux podcasts to go along the general tech and computing podcasts I followed, as well as a fondly remembered weekly SciFi revue show that started out as a Sunday afternoon show on a Wichita radio station, was canceled twice, and re-emerged as a semi weekly podcast, only to disappear forever a couple months after I started listening again, but not before I download all the episodes I missed.\r\n
\r\n
\r\nI. In my initial search for Linux related content, all I came up with were four drunk off their ass Scots discussing the minutia of Ruby on Rails. While I liked the format, I lacked the commitment to become a Ruby programmer so I could understand the show.\r\n
\r\n
\r\nII. A few days later I came across \"The Techie Geek\". Russ Wenner mixed tutorials with reviews of new applications and upcoming events. Better yet, he introduced me to a world of other Linux podcasts. Through \"The Techie Geek\", I learned of the irreverent banter of the \"Linux Outlaws\", the subdued studiousness of what was then called \"The Bad Apples\", the contained chaos of the \"Linux Cranks\", the classroom like atmosphere of the \"Linux Basement\" during Chad\'s Drupal tutorial period, tech hints and movie reviews delivered at the speed of 75 miles per hour by Dave Yates of \"Lotta Linux Links\", the auditory dissonance of \"The Linux Link Tech Show\", and the constant daily variety of \"Hacker Public Radio\".\r\n
\r\n
\r\nE. In 2010, I made my first contribution to Hacker Public Radio. The great thing about HPR is that there is no vetting process, we only ask your audio be intelligible (not polished, not even good, we just have to be able to understand you) and that the topic be of interest to geeks. If you consider yourself a geek, any topic that interests you is welcome. There is no maximum or minimum runtime, just get the show uploaded on-time. While topics tend concern open source, this is not a requirement. I believe my second HPR concerned how to migrate Windows wireless connection profiles between systems. I\'d spent a few hours figuring it out one day for a customer and I thought I should consolidate what I learned in one place. HPR provides a podcasting platform at no cost to the podcaster. It serves as both a venue for broadcasters without the resources to host their own site or without the time to commit to a regular schedule. It can also serve as an incubator for hosts trying to find their own audience. It\'s never been easier to become a podcaster with HPR. I would start with an e-mail introduction (as a courtesy) to admin@HackerPublicRadio.org. Next, record you audio. When you have a file ready to upload, select an open slot in the calendar page and follow the instructions, be prepared to paste in your shownotes. \r\n
\r\n
\r\nF. I also credit HPR for getting me my first invite to participate in my first podcast with multiple hosts. Once a month, Hacker Public Radio records a Community News podcast, recorded on the first Saturday afternoon after the end of the previous month (exact times and server details are published in the newsletter). All HPR hosts, and indeed listeners are invited to participate, it is just asked that you have listened to most the the past month\'s shows so you can participate in the discussion. \r\n
\r\n
\r\nI. Like most multi-host audio podcast\'s, HPR uses Mumble to record shows, including the annual New Year\'s Eve show, which has dozens of participants. There is a Mumble tutorial on LinuxLUGCast.com to help you get started.\r\n
\r\n
\r\nII. I started to take part in Hacker Public Radio\'s Community News a few months after recording my first podcast. I did it because I wanted to take a greater part in HPR, not because I considered it an audition, but it is a good way to show other people that you can politely and intelligently participate in a group discussion. (Actually, I have a tendency to wander off into tangents and unintentionally dominate the topic, something I struggle with to this day).\r\n
\r\n
\r\nIII. Another way to join in a round table discussion on HPR is to participate in the HPR Book Club. Once a month, we take an audio book that is freely available on the Internet and share our opinions. Recording schedules and the next book to be reviewed are available in the HPR newsletter.\r\n
\r\n
\r\nG. I believe sharing one or more Community News with Patrick Dailey (aka pokey) influenced him to invite me into the cast of Dev Random. The semi weekly Dev Random recorded of the Saturdays Kernel Panic didn\'t. While we sometimes accidentally talked about tech and open source, we always saved the most disturbing things we\'d seen on the Internet in the previous two weeks for discussion on the show, things that could not be discussed on other podcasts. Despite rumors to the contrary, dev random is not dead, only resting, and shall one day rise again to shock and disgust new generations of listeners.\r\n
\r\n
\r\nH. Sometimes you just have to be in the right place at the right time. I won\'t insult the Kernel Panic Oggcast by calling it a sister show to Dev Random, it just recorded on opposite Saturdays and had some of the same cast members in common. Anyway, I\'d been participating in the forum for a while, suggesting topics from FOSS stories I\'d come across in social media during the week. I was idling in #oggcastplanet on Freenode when Peter Cross asked for people from the channel to participate in the show on a day only a couple of the regular cast showed up. Dev Random used the same Mumble server, so I used my existing credentials to take Peter up on his offer, and for better or worse I\'ve been a KPO cast member ever since. \r\n
\r\n
\r\nI. While we are on the topic, having a presence on Freenode IRC chat is a great way to get your name or handle known in the podcasting world. Many podcasts have their own channel set up that listeners participate in during live streaming podcasts. Saying something helpful, (or more likely smart alecky) might get you mentioned on the show and make you familiar to the shows audience. I\'ve seen several individuals move from regular forum or chat participants to the hosts of their own show or contributors to HPR. From my own experience, after spending several weeks as silent participants in Podbrewers, listening to the stream and commenting in the chat, RedDwarf and myself were invited to bring our own beers and join the cast. \r\n
\r\n
\r\nI. While many podcasts still have their own IRC channels, other than providing a conduit between the hosts, they are most active during live broadcasts. Between shows, many of the podcasters I listen to gravitate to hanging around in Freenode\'s #oggcastplanet , since podcasters typically have a chat client open during work and leisure hours. In fact, at KPO we use #oggcastplanet as our primary communications channel during live streaming. \r\n
\r\n
\r\nII. I still recall the day monsterb and Peter64 asked me about the origin of my handle, given it\'s similarity to their colleague, threethirty. I\'d heard both on podcasts I followed, and I felt like I was talking to rock stars.\r\n
\r\n
\r\nIII. Now that I am a podcaster in my own right, with a presence in #oggcastplanet, I try to make a point to say hello when I see an unfamiliar handle in the channel. I expect the spambots consider me the nicest guy in IRC. \r\n
\r\n
\r\nIV. As it happens, IRC was also responsible for my involvement in the Linux LUG Cast. LLC was conceived after the re-imaginging and final demise of Steve McLaughlin\'s project, \"Linux Basix\". Kevin Wisher, chattr, and honkeymaggo wanted to do a show along the same lines while incorporating the spirit of the unrecorded online LUG that always preceded it on the mumble server. I was brought along by the simple expediency of never having closed the #LinuxBasix channel in my chat client. We have been going for a little more than a year and have attracted a following, but frankly we have not found the listener participation we were looking for. This was meant to be a true online Linux Users Group for people couldn\'t travel to a LUG. So far, it\'s usually been the same four of five guys talking about what Linux projects succeed, what failed, and what we we\'re going to try next. I\'ve learned a lot in the past year, and I expect the listeners have as well, but we are always hoping to get more live participation. Rural areas like the midwest are our target audience. The details of the Mumble connection are posted at LinuxLUGCast.com, we always monitor the Freenode.org IRC channel #linuxlugcast while recording, and the Feedback link is posted on the website.\r\n
\r\n
\r\nThank you for your time and attention this afternoon, especially considering the caliber of talks running in the other two channels. I can be contacted at FiftyOneFifty@LinuxBasement.com . Are there any questions?\r\n
',131,0,0,'CC-BY-SA','#KLF15,KLF,Kansas Linux Fest',0,0,1),
(1750,'2015-04-17','xclip, xdotool, xvkbd: 3 CLI Linux tools for RSI sufferers',1258,'3 command-line tools that save me hundreds of keystrokes a day.','
With virtual keystrokes and CLI access to the clipboard, you\'re limited only by your imagination and scripting ability. Here are some examples of how I use them, both for the manipulation of text and for navigation. The words in bold-face are the voice commands I use to launch the written commands.
\r\n\r\n
Capitalize this. Copies selected text to the clipboard, pipes it through sed and back into the clipboard, then types fixed text back into my document:
Go to grades. This example takes advantage of Firefox \"quick search.\" I start with a single quote to match the linked text \"grades\" and press the Return key (\\r) to follow the link:
\r\n\r\n
\r\n
$KEYPRESS "\'grades\\r"
\r\n
\r\n\r\n
First Inbox. From any location within Thunderbird I can run this command and it executes the keystrokes to take me to the first inbox and put focus on the first message:
I normally use blather voice commands to launch the scripts and keystroke commands, but I have a handful of frequently-used commands that I launch using keystroke combos configured in the Openbox config file (~/.config/openbox/rc.xml on my system). This block configures the super+n key combo to launch my examplelink.sh script.
\r\n',238,79,0,'CC-BY-SA','Accessibility, Linux, scripting, command line',0,0,1),
-(1871,'2015-10-05','HPR Community News for September 2015',5519,'HPR Community News for September 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1891,'2015-11-02','HPR Community News for October 2015',2667,'HPR Community News for October 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 4:\nA Shadowy Figure on 2015-10-31:\n\"Like your work as well GNULinuxRTM\"
\n
\n
hpr1890\n(2015-10-30) \"A short walk with my son\"\nby thelovebug.\n
Comment 1:\nJon Kulp on 2015-10-30:\n\"Up with the $2 lapel mic! \"
Comment 2:\nMike Ray on 2015-10-31:\n\"Audio Quality\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1916,'2015-12-07','HPR Community News for November 2015',6854,'HPR Community News for November 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 3:\nAudiobooks lover on 2015-11-29:\"[no title]\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1936,'2016-01-04','HPR Community News for December 2015',5334,'HPR Community News for December 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 1:\nA Shadowy Figure on 2015-12-15:\n\"Updated Show Notes\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1871,'2015-10-05','HPR Community News for September 2015',5519,'HPR Community News for September 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1891,'2015-11-02','HPR Community News for October 2015',2667,'HPR Community News for October 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 4:\nA Shadowy Figure on 2015-10-31:\n\"Like your work as well GNULinuxRTM\"
\n
\n
hpr1890\n(2015-10-30) \"A short walk with my son\"\nby thelovebug.\n
Comment 1:\nJon Kulp on 2015-10-30:\n\"Up with the $2 lapel mic! \"
Comment 2:\nMike Ray on 2015-10-31:\n\"Audio Quality\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1916,'2015-12-07','HPR Community News for November 2015',6854,'HPR Community News for November 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 3:\nAudiobooks lover on 2015-11-29:\"[no title]\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1936,'2016-01-04','HPR Community News for December 2015',5334,'HPR Community News for December 2015','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 1:\nA Shadowy Figure on 2015-12-15:\n\"Updated Show Notes\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3963,'2023-10-11','Storytelling Games',1158,'Three storytelling-based games, and some thoughts on role-playing games','
\n',399,95,0,'CC-BY-SA','storytelling',0,0,1),
(1751,'2015-04-20','How I got into Linux',1114,'How I got into linux, LFS and where I use Linux now.','
\r\nMy third show, its my How I got into Linux show, Crunchbang for the win, thank you Corenominal. \r\n
\r\n
\r\nI actually wrote some of this up before I recorded my first show. I wasn\'t happy that I did a good enough job originally. However I decided to make use of a rainy day and get it updated and recorded. I cut out a chunk of rambling about floppy drive cleaners, and stuck some more up to date info on the end.\r\n
',240,29,0,'CC-BY-SA','Crunchbang',0,0,1),
(1752,'2015-04-21','Penguicon 2015 Promo',1838,'Penguicon 2015 happens on April 24-26, 2015 in Southfield, Michigan','
\r\nPenguicon 2015 is a combined technology and sicence fiction convention in Southfield, Michigan, a suburb of Detroit, and will present over 350 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I try to cover the coming attractions of the weekend and maybe entice some people to come join us. It will be a great weekend.\r\n
',198,96,0,'CC-BY-SA','Penguicon,Open Source,Science Fiction,Convention',0,0,1),
(1753,'2015-04-22','Introducing a 5 year old to Sugar on Toast',901,'This is a podcast in Spanglish (some spanish, some english) with a 5 year old and a 1 year old.','
\r\nThis was me introducing my 5 year old to her new laptop with Sugar on Toast. \r\n
\r\n
\r\nA family member had no use for an old 7 year old netbook so I installed the trisquel version of Sugar, the one laptop per child operating system.\r\n
\r\nRecorded with a phone and spoken mainly in a different language. I did conversion to FLAC from a mono mp3 probably the same if I just uploaded the MP3 directly. No editing was done. \r\n
',301,0,0,'CC-BY-SA','5 year old',0,0,1),
@@ -18078,11 +18195,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1756,'2015-04-27','Ranger File Manager',1340,'Introduction to the ranger command line file manager','
From Man Page:
\n
\n
DESCRIPTION ranger is a console file manager with VI key bindings. It provides a minimalistic and nice curses interface with a view on the directory hierarchy. The secondary task of ranger is to figure out which program you want to use to open your files with.
\n
This manual mainly contains information on the usage of ranger. Refer to the README for install instructions and to doc/HACKING for development specific information. For configuration, see the files in ranger/config. They are usually installed to /etc/ranger/config and can be obtained with ranger\'s --copy-config option.
\n
Inside ranger, you can press 1? for a list of key bindings, 2? for a list of commands and 3? for a list of settings.
Reassemble a 50-page document with all of the pages in reverse order (I once actually did this for my wife and she was very grateful—she had scanned an article at the library and it ended up with all of the pages in the wrong order from last to first. This command solved her problem in about one second.):
Check the pdftk man page for all kinds of other manipulations you can do, including \"bursting\" a PDF into its component pages, rotating pages in any direction, applying password protection, etc.
\r\n\r\n
Embedding “Bookmarks” as a Table of Contents
\r\n\r\n
You can also use pdftk to embed a table of contents in a flat PDF file. This is incredibly useful, as it can make large, unwieldy files very easy to navigate. All you have to do is add some bookmark data in a fairly straightforward format as shown below. As a starting point you should that dump the current metadata content of the file with this command:
\r\n\r\n
\r\npdftk foobar.pdf dump_data_utf8\r\n
\r\n\r\n
Save the contents of this data dump in a text file and then add bookmark information just below the NumberOfPages value. Here is an excerpt from the huge anthology of public-domain scores I assembled for my music history class:
\r\n\r\n
\r\nInfoBegin\r\nInfoKey: ModDate\r\nInfoValue: D:20150106100000-06\'00\'\r\nInfoBegin\r\nInfoKey: CreationDate\r\nInfoValue: D:20150106100000-06\'00\'\r\nInfoBegin\r\nInfoKey: Creator\r\nInfoValue: pdftk 2.02 - www.pdftk.com\r\nInfoBegin\r\nInfoKey: Producer\r\nInfoValue: itext-paulo-155 (itextpdf.sf.net-lowagie.com)\r\nPdfID0: ece858bf9affbcad3b575cf3891a187f\r\nPdfID1: 23f89459e103dd43c6e7bc92028245c0\r\nNumberOfPages: 765\r\nBookmarkBegin\r\nBookmarkTitle: Beethoven: Symphony no. 5 in C minor Op. 67\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 205\r\nBookmarkBegin\r\nBookmarkTitle: Beethoven 5: I. Allegro con brio\r\nBookmarkLevel: 2\r\nBookmarkPageNumber: 205\r\nBookmarkBegin\r\nBookmarkTitle: Beethoven 5: II. Andante con moto\r\nBookmarkLevel: 2\r\nBookmarkPageNumber: 235\r\nBookmarkBegin\r\nBookmarkTitle: Beethoven 5: III. Allegro\r\nBookmarkLevel: 2\r\nBookmarkPageNumber: 256\r\nBookmarkBegin\r\nBookmarkTitle: Beethoven 5: IV. Allegro\r\nBookmarkLevel: 2\r\nBookmarkPageNumber: 275\r\n
\r\n\r\n
And here is the command to update the PDF with the table of contents embedded. This tells it to take the input file foobar.pdf and update its metadata using the file foobar.info (with utf8 encoding) and output the results as foobar_with_toc.pdf.
\r\n',238,0,0,'CC-BY-SA','pdftk,pdf',0,0,1),
(1770,'2015-05-15','The OpenDyslexic Font',1087,'Introduction to the OpenDyslexic font','
In this episode I talk about how you can take advantage of the OpenDyslexic font as a user, and also how as a content provider you can use it to help your readers. Incidentally, we also talked about this for a while during episode 1418, one of the 2013 New-Year shows.
',238,79,0,'CC-BY-SA','Accessibility, Fonts, Typesetting, Web design, Dyslexia',0,0,1),
-(1779,'2015-05-28','Cowsay and Figlet',944,'Cowsay and Figlet: Two fun ASCII text commands','
Basic commands
\r\n\r\n\r\n
Make default cow speak:
\r\n
\r\n cowsay "Hacker Public Radio" \r\n
\r\n\r\n
Result:
\r\n\r\n
\r\n _____________________\r\n< Hacker Public Radio >\r\n ---------------------\r\n \\ ^__^\r\n \\ (oo)\\_______\r\n (__)\\ )\\/\\\r\n ||----w |\r\n || ||\r\n
\r\n\r\n
Modes
\r\n\r\n
\r\n
-b Borg mode;
\r\n
-d dead;
\r\n
-g greedy mode;
\r\n
-p causes a state of paranoia to come over the cow;
\r\n
-s makes the cow appear thoroughly stoned;
\r\n
-t yields a tired cow;
\r\n
-w is somewhat the opposite of -t, and initiates wired mode;
\r\n
-y brings on the cow\'s youthful appearance.
\r\n
\r\n\r\n
Use \"tired\" cow mode:
\r\n\r\n
\r\ncowsay -t "Ken is tired of begging for shows"\r\n
\r\n\r\n
Result:
\r\n\r\n
\r\n ___________________________________\r\n< Ken is tired of begging for shows >\r\n -----------------------------------\r\n \\ ^__^\r\n \\ (--)\\_______\r\n (__)\\ )\\/\\\r\n ||----w |\r\n || ||\r\n
\r\n\r\n
Specify different images with -f
\r\n\r\n
Threaten someone with a dragon:
\r\n\r\n
\r\ncowsay -f dragon \'record and upload a show OR ELSE!\'\r\n
\r\n',238,0,1,'CC-BY-SA','Linux, scripting, command line, ASCII',0,0,1),
+(1779,'2015-05-28','Cowsay and Figlet',944,'Cowsay and Figlet: Two fun ASCII text commands','
Basic commands
\r\n\r\n\r\n
Make default cow speak:
\r\n
\r\n cowsay "Hacker Public Radio" \r\n
\r\n\r\n
Result:
\r\n\r\n
\r\n _____________________\r\n< Hacker Public Radio >\r\n ---------------------\r\n \\ ^__^\r\n \\ (oo)\\_______\r\n (__)\\ )\\/\\\r\n ||----w |\r\n || ||\r\n
\r\n\r\n
Modes
\r\n\r\n
\r\n
-b Borg mode;
\r\n
-d dead;
\r\n
-g greedy mode;
\r\n
-p causes a state of paranoia to come over the cow;
\r\n
-s makes the cow appear thoroughly stoned;
\r\n
-t yields a tired cow;
\r\n
-w is somewhat the opposite of -t, and initiates wired mode;
\r\n
-y brings on the cow\'s youthful appearance.
\r\n
\r\n\r\n
Use \"tired\" cow mode:
\r\n\r\n
\r\ncowsay -t "Ken is tired of begging for shows"\r\n
\r\n\r\n
Result:
\r\n\r\n
\r\n ___________________________________\r\n< Ken is tired of begging for shows >\r\n -----------------------------------\r\n \\ ^__^\r\n \\ (--)\\_______\r\n (__)\\ )\\/\\\r\n ||----w |\r\n || ||\r\n
\r\n\r\n
Specify different images with -f
\r\n\r\n
Threaten someone with a dragon:
\r\n\r\n
\r\ncowsay -f dragon \'record and upload a show OR ELSE!\'\r\n
\r\n',238,0,1,'CC-BY-SA','Linux, scripting, command line, ASCII',0,0,1),
(1757,'2015-04-28','Useful Bash functions',1662,'Some Bash functions that may be of use in your scripts','
Overview
\r\n
I enjoy writing Bash scripts to solve various problems. In particular I have a number of scripts I use to manage the process of preparing a show for HPR, which I am developing at the moment.
\r\n
My more complex Bash scripts use a lot of functions to perform the various tasks, and, in the nature of things, some of these functions can be of use in other scripts and are shared between them.
\r\n
I thought I would share some of these functions with HPR listeners in the hopes that they might be useful. It would also be interesting to receive feedback on these functions and would be great if other Bash users contributed ideas of their own.
\r\n',225,42,1,'CC-BY-SA','coding,Bash,script,function',0,0,1),
(1758,'2015-04-29','Cool Stuff part 3',1543,'CPrompt talks about some more cool stuff for you to check out!','
\r\nForked by Marc Lehmann and called rxvt-unicode or urxvt. \r\nGave features such as transparency, Perl extensions and better font support\r\nhttps://en.wikipedia.org/wiki/Rxvt-unicode\r\n
\r\n
\r\nUses the .xdefaults configuration file in your home directory for customizations.\r\n
',252,0,0,'CC-BY-SA','Radiotopia,urxvt256c,astronomy',0,0,1),
(1759,'2015-04-30','A brief review of Firefox OS',1007,'I recently bought a Geeksphone Revolution and this is my review of running Firefox OS on it.','
',302,0,0,'CC-BY-SA','mobile,firefox,operating system,review',0,0,1),
-(1762,'2015-05-05','HPR Audio Book Club 10',7043,'In this episode, the HPR_AudioBookClub reviews Revolution Radio by Seth Kenlon','
SUMMARY
\r\n
In this episode, the HPR_AudioBookClub reviews Revolution Radio by Seth Kenlon. You can download this AudioBook for free from https://aesdiopod.com/books/.
\r\n
Pre-Spoilers
\r\n
\r\n
Thaj: I really loved this book. It hits me in a lot of the right spots as a person. I thought it had a very cinematic feel about it. I enjoyed the story, but in many ways I enjoyed the world it was set in even more.
\r\n
x1101: Slow start, but finally builds to a very engaging story exploring many interesting social and political issues
\r\n
Pokey: Slow start, really liked the story right from the start, but found the setting a little far fetched.
\r\n
\r\n
We all liked the pace of the story, as well as the reading and the audio quality. Overall this is a very polished work, even though there is some noise intentionally added at times.
\r\n
BEVERAGE REVIEWS
\r\n
As usual, the HPR_AudioBookClub took some time to review the beverages that each of us were drinking during the episode
\r\n
\r\n
Thaj: I am a sad panda because they grocery store had no lemons to make my AWESOME homemade lemonade. Unfortunately, I had to resort to pre-made lemonade that tastes like sugar water. Check this nutritional information
\r\n
x1101 Dogfish head 120 minute IPAThis beer has a nice hoppy and citrus nose to it with a smooth, silky mouth feel. This beverage features subtle hoppy notes and a slightly smoky finish. Also, ~15% ABV, so I might have been a touch loopy the rest of the show
\r\n
Pokey had a Sam Adams Summer Ale. Nice flavor, but not a lot of it. Refreshing with a hint of citrus. Very drinkable, but not mind blowing. I suspect this beer appeals to a wide audience. I\'ve been on more of a \"specialty\" beer kick for a while, so this was almost disapointing.https://www.samueladams.com/craft-beers/summer-ale/
We\'re still really excited about this AudioBook not only because the author is an HPR community member (lostinbronx), but also because the book is really good!
Our next book club recording will be 2014/09/09T23:00:00+00:00. https://en.wikipedia.org/wiki/ISO_8601#Times If you\'d like a Google calendar invite, or if you\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hpr at hackerpublicradio dot org\'
\r\n
OUR AUDIO
\r\n
This episode was processed using Audacity https://audacity.sourceforge.net/. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. It\'s been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
Mumble uses a sample rate of 48kHz, but HPR requires a sample rate of 44.1kHz so the first step in our audio process is to resample the file at 44.1kHz. Resampling can take a long time if you don\'t have a powerful computer, and sometimes even if you do. If you record late at night, like we do, you may want to start the task before you go to bed, and save it first thing in the morning, so that the file is ready to go the next time you are.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\r\n
\r\n
Threshold: -30db
\r\n
Noise Floor: -50db
\r\n
Ratio: 3:1
\r\n
Attack Time: 0.2sec
\r\n
Decay Time: 1.0 sec
\r\n
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata. We use the \"Truncate Silence\" effect with its default settings to minimize the silence between people speaking. When used with its default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR FTP server.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember to save after every major transform, you will wonder how it ever got that reputation.
Thank you very much for listening to this episode of the HPR_AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time. Please leave a few words in the episode\'s comment section.\r\n As always; remember to visit the HPR contribution page HPR could really use your help right now.
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
1: The HPR_AudioBookClub doesn\'t laugh at anyone for reviewing tea, nor any other drink. We intentionally call the segment a \"beverage review,\" not a \"beer review\" so that no one should feel alienated. Also because some of us drink wine.
\r\n
2: The HPR_AudioBookClub does laugh when people try to spell flavor with a \"u\"
\r\n',157,53,1,'CC-BY-SA','HPR AudioBookClub',0,0,1),
+(1762,'2015-05-05','HPR Audio Book Club 10',7043,'In this episode, the HPR_AudioBookClub reviews Revolution Radio by Seth Kenlon','
SUMMARY
\r\n
In this episode, the HPR_AudioBookClub reviews Revolution Radio by Seth Kenlon. You can download this AudioBook for free from https://aesdiopod.com/books/.
\r\n
Pre-Spoilers
\r\n
\r\n
Thaj: I really loved this book. It hits me in a lot of the right spots as a person. I thought it had a very cinematic feel about it. I enjoyed the story, but in many ways I enjoyed the world it was set in even more.
\r\n
x1101: Slow start, but finally builds to a very engaging story exploring many interesting social and political issues
\r\n
Pokey: Slow start, really liked the story right from the start, but found the setting a little far fetched.
\r\n
\r\n
We all liked the pace of the story, as well as the reading and the audio quality. Overall this is a very polished work, even though there is some noise intentionally added at times.
\r\n
BEVERAGE REVIEWS
\r\n
As usual, the HPR_AudioBookClub took some time to review the beverages that each of us were drinking during the episode
\r\n
\r\n
Thaj: I am a sad panda because they grocery store had no lemons to make my AWESOME homemade lemonade. Unfortunately, I had to resort to pre-made lemonade that tastes like sugar water. Check this nutritional information
\r\n
x1101 Dogfish head 120 minute IPAThis beer has a nice hoppy and citrus nose to it with a smooth, silky mouth feel. This beverage features subtle hoppy notes and a slightly smoky finish. Also, ~15% ABV, so I might have been a touch loopy the rest of the show
\r\n
Pokey had a Sam Adams Summer Ale. Nice flavor, but not a lot of it. Refreshing with a hint of citrus. Very drinkable, but not mind blowing. I suspect this beer appeals to a wide audience. I\'ve been on more of a \"specialty\" beer kick for a while, so this was almost disapointing.https://www.samueladams.com/craft-beers/summer-ale/
We\'re still really excited about this AudioBook not only because the author is an HPR community member (lostinbronx), but also because the book is really good!
Our next book club recording will be 2014/09/09T23:00:00+00:00. https://en.wikipedia.org/wiki/ISO_8601#Times If you\'d like a Google calendar invite, or if you\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hpr at hackerpublicradio dot org\'
\r\n
OUR AUDIO
\r\n
This episode was processed using Audacity https://audacity.sourceforge.net/. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. It\'s been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
Mumble uses a sample rate of 48kHz, but HPR requires a sample rate of 44.1kHz so the first step in our audio process is to resample the file at 44.1kHz. Resampling can take a long time if you don\'t have a powerful computer, and sometimes even if you do. If you record late at night, like we do, you may want to start the task before you go to bed, and save it first thing in the morning, so that the file is ready to go the next time you are.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\r\n
\r\n
Threshold: -30db
\r\n
Noise Floor: -50db
\r\n
Ratio: 3:1
\r\n
Attack Time: 0.2sec
\r\n
Decay Time: 1.0 sec
\r\n
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata. We use the \"Truncate Silence\" effect with its default settings to minimize the silence between people speaking. When used with its default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR FTP server.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember to save after every major transform, you will wonder how it ever got that reputation.
Thank you very much for listening to this episode of the HPR_AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time. Please leave a few words in the episode\'s comment section.\r\n As always; remember to visit the HPR contribution page HPR could really use your help right now.
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
1: The HPR_AudioBookClub doesn\'t laugh at anyone for reviewing tea, nor any other drink. We intentionally call the segment a \"beverage review,\" not a \"beer review\" so that no one should feel alienated. Also because some of us drink wine.
\r\n
2: The HPR_AudioBookClub does laugh when people try to spell flavor with a \"u\"
\r\n',157,53,1,'CC-BY-SA','HPR AudioBookClub',0,0,1),
(1763,'2015-05-06','Intro to Homebrewing',1209,'Beer! and the joy of making it.','
\r\nI talk a bit about homebrewing, how to do it, what it is, and how to get started. \r\nIf there is interest, I will do more in-depth shows on the topic, otherwise I will let it stand alone. \r\n
\r\n\r\n
Links
\r\n\r\n
\r\nI ramble on about brewing your own beer. Here are a few internet resources to help you along:\r\n
\r\nThis is my first episode ever, so any advice is greatly appreciated. My email is amneher007@gmail.com\r\n
',303,0,1,'CC-BY-SA','brewing, beer, homebrewing',0,0,1),
(1764,'2015-05-07','Introduction to Rogue Class Linux',990,'Rogue Class Linux is a specialty distribution of Linux for playing the old games.','
\r\nRogue Class describes itself as \"a toy Linux distribution for playing games and reading books. RCL favors turn-based games, such as puzzles and rogue-like games. \"\r\n
\r\n
\r\nWhat are Rogue Class games? According to a link at the Rogue Class website, Rogue Class games are characterized by\r\n
\r\n
\r\n
\r\n
\"Tactical play. The unit of action is based on the individual adventurer. The game is not twitch oriented (like Quake, rewarding reflexes & well trained actions) nor is it strategy oriented (like Civilizations or Warcraft, requiring working on the large picture)
\r\n
\"Based in Hack and Slash. A roguelike isn\'t primarily about plot development or telling a story. It is about killing things and acquiring treasure.
\r\n
\"Random games. A roguelike is a dungeon crawler where no two games are the same. The maps are different, the items are different, there are no guaranteed win paths.
\r\n
\"Permadeath. You die, that is it. No restoring a savegame. Good roguelikes delete your save game after loading them. This is compensated by the replayability of the game.
\r\n
\"Complex interactions of properties. While the commands for a roguelike are simple, the potential interactions are not. My favourite example is equipping a silver ring as a weapon in order to damage a creature vulnerable to silver, but not one\'s other weapons. [Editor: This matches the Hack branch of the roguelike tree, not the Angband branch]
\r\n
\"Steam rolling monsters. If a critter is in your way, and weak, you shouldn\'t even notice it is there.\"
\r\nRogue Class contains four dozen or so games, two of which are actually categories which in turn contain additional games, as well as a number of utilities, including a network manager, an IRC client, and more. Some representative games include the following, picked quite at random: Angband, Fargoal, Magus, Moria, Nethack, and Tome. \r\n
\r\n
\r\n\r\nIf you liked the old games, give Rogue Class a spin.\r\n
\r\n',195,0,1,'CC-BY-SA','games,Rogue Class,gamebooks',0,0,1),
(1766,'2015-05-11','Sox of Silence',616,'Using SOX to speed up and remove silence in a podcast','
\r\nMany of you may be aware of the \"truncate silence\" filter in audacity. As I already use SOX to speed up my podcasts, I wanted to see if it could also remove silence as well. While the man page is detailed, it is difficult to follow. https://sox.sourceforge.net/\r\n
\r\n # -S, --show-progress\r\n # -V verbose\r\n # tempo Change the audio playback speed but not its pitch. \r\n # remix Select and mix input audio channels into output audio channels. \r\n # remix - performs a mix-down of all input channels to mono.\r\n # silence Removes silence from the beginning, middle, or end of the audio.\r\n # https://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/\r\n # \r\n sox -S -v2 \"${FILENAME}\" \"${FILENAME}-faster-${SPEED}.ogg\" -V9 tempo ${SPEED} remix - silence 1 0.1 1% -1 0.1 1%\r\n
\r\n',30,0,1,'CC-BY-SA','sox, truncate silence',0,0,1),
@@ -18090,7 +18207,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1767,'2015-05-12','An interview with Ed Cable of the Mifos Initiative',704,'David Whitman interviews Ed Cable of the MIFOS Iniative at Linux Fest Northwest on April 25, 2015.','
\r\nDavid Whitman interviews Ed Cable of the MIFOS Initiative\r\nhttps://mifos.org/\r\n
\r\n
\r\nFrom their website:\r\nMifos X is an extended platform for delivering the complete range of financial services needed for an effective financial inclusion solution.\r\n
\r\n
\r\nAs the industrys only open platform for financial inclusion, we provide affordable, adaptable and accessible solutions for any segment of the market, new and small financial institutions can easily start with our community app in a hosted environment, medium and large institutions that are evolving into full-service providers of financial inclusion can use our global network of IT partners to configure a Mifos X solution, and innovators can build and scale entirely new solutions on our API-driven platform.\r\n
',209,78,1,'CC-BY-SA','Microfinance, LinuxFest Northwest',0,0,1),
(1774,'2015-05-21','Router Hacking',1190,'A Quick What, Why, and How of Hacking Routers','
Find used Netgear WNDR3400 router on shelf at local Goodwill store, priced at $3.99.
\r\n
Use my smartphone to check the dd-wrt database to see if this router is hackable.
\r\n
Grin broadly upon seeing the green \"Yes\" beside router WNDR3400.
\r\n
Double-check that power supply is included, find an AC outlet and plug in to be sure it powers on and my phone sees its ESSID. Yep and yep.
\r\n
Take router to cashier and purchase.
\r\n
Do hard reset of router to clear any previous configuration.
\r\n
Hook a laptop up to router using ethernet patch cable (turning off WiFi adapter on laptop).
\r\n
Access router\'s configuration in web browser at default router address of 192.168.1.1 just to confirm that it works.
\r\n
Go back to the dd-wrt router database and find the router again, then download the corresponding \"mini\" and the \"mega\" versions of dd-wrt firmware (The mega version has the most features—including USB support, which I wanted—but on many routers, including this one, you have to install the mini version first or else you could brick the router)
\r\n
Read over the dd-wrt wiki page for this specific router just to see if there\'s anything unusual about the hack. There\'s not.
\r\n
Go to the router\'s stock configuration page again and find the \"Firmware upgrade\" button.
\r\n
Click the button and choose the \"mini\" version of the dd-wrt firmware, and click upgrade, then wait while crossing fingers until it says firmware successfully upgraded.
\r\n
Refresh the configuration page at 192.168.1.1 and see the new dd-wrt configuration interface.
\r\n
Pat myself on the back because I have just hacked another router. Hray!
\r\n
Find the upgrade firmware area on the new dd-wrt interface, and this time choose the \"mega\" firmware file and submit, then wait and cross fingers as before. Celebrate when it works.
\r\n
Configure newly hacked router as wireless bridge (this is NOT going to be my main router), enable the USB and printer support, hook up our formerly-usb-only printer to the router, and configure household computers to be able to print wirelessly to the newly-networked printer.
\r\n
Enjoy kudos from appreciative family.
\r\n\r\n',238,0,0,'CC-BY-SA','Networking, Routers, Printer Setup, dd-wrt, tomato, openwrt',0,0,1),
(1784,'2015-06-04','Intro to the Fugue and the Open Well-Tempered Clavier',1826,'Inspired by the release of the Open Well Tempered-Clavier, I try to explain the Fugue.','
Intro to the Fugue
\r\n\r\n
This episode of HPR is inspired by the recent release of a new recording by Kimiko Ishizaka of J.S. Bach\'s Well-Tempered Clavier, Book I. This is a very special recording because it is free and open, licensed to be shared freely forever. The recording was crowdfunded and immediately released with a public license after editing. This allows for legal remixing and sharing, and also makes it perfect for stuff like I do in this episode—cutting the recordings up for inserting as musical examples and then presenting the whole thing for your listening enjoyment.
\r\n\r\n
Full Show Notes
\r\n\r\n
Please see the full show notes for detailed descriptions of the parts of a fugue and a few musical examples as well.
\r\n',238,0,1,'CC-BY-SA','Fugue, J. S. Bach, Classical Music, Creative-Commons Music, Music, Counterpoint',0,0,1),
-(1789,'2015-06-11','The Ubuntu Quickly Ebook Template and Ebooks in General',2032,'Jon Kulp and Mike Hingley talk about ebooks in general and Mike\'s Quickly Ebook Template project','
Ubuntu Quickly Ebook Template
\r\n\r\n
I recorded this conversation with Mike Hingley about a year ago (12 June 2014) but never released it because I thought the audio didn\'t sound very good and I didn\'t feel like editing it at the time. Honestly I forgot all about it until now when the HPR queue is low again. I apologize for the slightly clippy quality of my audio, I must have had my microphone too hot on the mumble. It\'s really interesting to listen to this conversation a year later because I have worked out so many of the problems that I was mentioning to Mike, including the automation of the entire build process using command-line tools from Calibre.
\r\n',238,0,0,'CC-BY-SA','ebooks, calibre, quickly, ubuntu',0,0,1),
+(1789,'2015-06-11','The Ubuntu Quickly Ebook Template and Ebooks in General',2032,'Jon Kulp and Mike Hingley talk about ebooks in general and Mike\'s Quickly Ebook Template project','
Ubuntu Quickly Ebook Template
\r\n\r\n
I recorded this conversation with Mike Hingley about a year ago (12 June 2014) but never released it because I thought the audio didn\'t sound very good and I didn\'t feel like editing it at the time. Honestly I forgot all about it until now when the HPR queue is low again. I apologize for the slightly clippy quality of my audio, I must have had my microphone too hot on the mumble. It\'s really interesting to listen to this conversation a year later because I have worked out so many of the problems that I was mentioning to Mike, including the automation of the entire build process using command-line tools from Calibre.
\r\n',238,0,0,'CC-BY-SA','ebooks, calibre, quickly, ubuntu',0,0,1),
(1771,'2015-05-18','Audacity: Label Tracks',683,'Intro to my recent discovery of \"Label Tracks\" in Audacity','
Label Tracks in Audacity
\r\n\r\n
I don\'t know if I\'m ignorant and everyone else already knows about this, but I decided to record a quick show about Audacity \"Label Tracks,\" something I discovered while working on another HPR episode today.
\r\n\r\n
The label track is one of the most useful things I\'ve found in a long time. It allows you to annotate your audio project so that you can quickly see important spots or summarize the contents of whole segments and see at a glance what they are about without hunting all over the place and playing things back, trying to find the part where you were talking about X,Y, or Z. You can also export the labels as a plain text file with exact timestamps. I have not tried this, but according to the documentation you can also use labels to mark the beginnings of separate songs in a long track and export multiple separate files at once from a single source based on the labels.
\r\n\r\n
To add a label track, go to the Tracks menu and select Add New --> Label Track, and it will add the label track to the bottom of your list of tracks. To add a label, either stick the cursor where you want the label to be and press ctrl+b to add text, or select a region to label by clicking and dragging over a region in the label track, then do ctrl+b to start typing the label text.
\r\n',238,45,0,'CC-BY-SA','Audacity, audio editing, podcasting',0,0,1),
(1772,'2015-05-19','Random thoughts',748,'I talk about some of the things I appreciate in life','
\r\nMy blogsite as well as just one of the many posts on my site that deal with what I appreciate about my life in general\r\n
',297,0,0,'CC-BY-SA','life, random',0,0,1),
(1773,'2015-05-20','LFNW 2015 interview with Deb Nicholson',1052,'David Whitman interviews Deborah Nicholson of the Open invention Network. Enjoy!','
\r\nDeb Nicholson: \r\nhas been a free speech advocate, economic justice organizer and civil liberties defender. After working in Massachusetts politics for fifteen years, she then became involved in the free software movement at the Free Software Foundation. \r\n
\r\nSeattle GNU/Linux Conference https://seagl.org/ IRC on Freenode in #seagl.\r\nWere very excited to be returning to Seattle Central College for SeaGL on Friday October 23rd and Saturday October 24th, 2015. \r\nSeaGL is a grassroots technical conference dedicated to spreading awareness and knowledge about the GNU/Linux community and free/libre/open-source software/hardware.\r\nCost of attendance is free.\r\nAttendee Registration will not require the use of non-free software.\r\nYou may attend SeaGL without identifying yourself, and you are encouraged to do so to protect your privacy. \r\n
Join us on IRC:#mediagoblin on irc.freenode.net \r\n
\r\n
',209,78,1,'CC-BY-SA','Software Patents, Linux Fest, Mediagoblin, GNU',0,0,1),
@@ -18122,11 +18239,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1796,'2015-06-22','Audacity - Chains, Notches and Labels',909,'Some more Tips and Tricks when using Audacity','
\r\nI expand some on Jon Kulp\'s show on using Labels in Audacity. Specifically, I comment on importing a Label track from a Tab separated text file.\r\n
\r\n',307,45,0,'CC-BY-SA','Audacity, Recording, Editing, notch filter, chain',0,0,1),
(1798,'2015-06-24','Machine learning and service robots.',563,'Interview with Prof. Dr. Wolfgang Ertel at the 2014 MakerWorld in Germany','
\r\nLink to the general Ravensburg-Weingarten University of Applied Sciences page, where you can also find videos of the service robots \"Kate\" and \"Marvin\": \r\nhttps://iki.hs-weingarten.de/?lang=eng&page=aktuelles\r\n
',271,78,0,'CC-BY-SA','machine learning, robots, maker',0,0,1),
(1801,'2015-06-29','How to tell your left earbud from your right',152,'Lowering the quality of shows, Ken provides a lifehack tip.','
AMAZING LIFE HACK
\r\n
\r\nTie a knot in your left ear bud lead, and you can feel which is which without looking.\r\n
',30,0,0,'CC-BY-SA','lifehack, earphones, knots, tips, hints, tricks',0,0,1),
-(1956,'2016-02-01','HPR Community News for January 2016',2340,'HPR Community News for January 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 2:\nDave Morriss on 2016-01-27:\n\"Thanks Frank\"
\n
\n
hpr1952\n(2016-01-26) \"Time now Ladies and Gents\"\nby Ken Fallon.\n
Comment 1:\nDave Morriss on 2016-01-28:\n\"Great show idea\"
\n
\n
hpr1954\n(2016-01-28) \"Grandpa Shows Us How to Turn Custom Pens\"\nby Jon Kulp.\n
Comment 1:\nDave Morriss on 2016-01-28:\n\"Most interesting and entertaining\"
Comment 2:\nJon Kulp on 2016-01-28:\n\"Acrylic smells\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(1981,'2016-03-07','HPR Community News for February 2016',5248,'HPR Community News for February 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
hpr1973\n(2016-02-24) \"Free/Libre/Vrije Software: The Goal and the Path\"\nby Ken Fallon.\n
Comment 1:\nAndreas on 2016-02-24:\n\"there is something missing...\"
Comment 2:\nJames Michael Du Pont on 2016-02-27:\n\"cut off\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2001,'2016-04-04','HPR Community News for March 2016',5317,'HPR Community News for March 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2021,'2016-05-02','HPR Community News for April 2016',5521,'HPR Community News for April 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 1:\nDave Morriss on 2016-05-26:\n\"Cooking! Yay!\"
\n
\n
hpr2038\n(2016-05-25) \"Attempting to fix a plastic boat\"\nby Jezra.\n
Comment 1:\nJon Kulp on 2016-05-24:\n\"Hilarious\"
Comment 2:\nDennis New on 2016-05-27:\n\"Hilarious Indeed\"
Comment 3:\nFiftyOneFifty on 2016-05-28:\n\"Good Times\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1956,'2016-02-01','HPR Community News for January 2016',2340,'HPR Community News for January 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 2:\nDave Morriss on 2016-01-27:\n\"Thanks Frank\"
\n
\n
hpr1952\n(2016-01-26) \"Time now Ladies and Gents\"\nby Ken Fallon.\n
Comment 1:\nDave Morriss on 2016-01-28:\n\"Great show idea\"
\n
\n
hpr1954\n(2016-01-28) \"Grandpa Shows Us How to Turn Custom Pens\"\nby Jon Kulp.\n
Comment 1:\nDave Morriss on 2016-01-28:\n\"Most interesting and entertaining\"
Comment 2:\nJon Kulp on 2016-01-28:\n\"Acrylic smells\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(1981,'2016-03-07','HPR Community News for February 2016',5248,'HPR Community News for February 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
hpr1973\n(2016-02-24) \"Free/Libre/Vrije Software: The Goal and the Path\"\nby Ken Fallon.\n
Comment 1:\nAndreas on 2016-02-24:\n\"there is something missing...\"
Comment 2:\nJames Michael Du Pont on 2016-02-27:\n\"cut off\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2001,'2016-04-04','HPR Community News for March 2016',5317,'HPR Community News for March 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2021,'2016-05-02','HPR Community News for April 2016',5521,'HPR Community News for April 2016','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
Comment 1:\nDave Morriss on 2016-05-26:\n\"Cooking! Yay!\"
\n
\n
hpr2038\n(2016-05-25) \"Attempting to fix a plastic boat\"\nby Jezra.\n
Comment 1:\nJon Kulp on 2016-05-24:\n\"Hilarious\"
Comment 2:\nDennis New on 2016-05-27:\n\"Hilarious Indeed\"
Comment 3:\nFiftyOneFifty on 2016-05-28:\n\"Good Times\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1813,'2015-07-15','Apt Spelunking: surf, lightyears, and fbterm',896,'Windigo introduces several applications he found by wandering around the debian repositories.','
\r\n\"Apt spelunking\" is a silly term I made up for the act of searching through the Debian package repositories with vague terms, and trying out random applications therein.\r\n
\r\n
\r\nToday, we will be covering three packages: surf, lightyears, fbterm\r\n
\r\n\r\n
surf
\r\n\r\n
\r\nSurf is a lightweight, graphical browser. It uses the webkit rendering engine, and is a GTK-based application (not that you can tell). It is extremely spartan. Part of the suckless project, surf takes the Unix philosophy to it\'s extreme.\r\n
\r\n
\r\nEssentially, you only get a single browser window. No tabs, bookmarks, or other interface to speak of. Any navigation is accomplished through links on the page, or some very rudimentary keyboard shortcuts. Ctrl+H goes forward in history, and Ctrl+L goes backwards. If you want to visit a URL, you can either send it as a command-line argument, or use Ctrl+G to bring up a drun-like text input. It is perfect for lightweight system configurations, surf does the bear minimum to qualify as a web browser.\r\n
\r\n
\r\nIf you\'re looking for zen simplicity, or want an easy way to embed a web app in its own window without a lot of overhead, surf is an excellent option.\r\n
\r\n\r\n
lightyears
\r\n\r\n
\r\n20,000 light years into space bills itself as a \"single player real-time strategy game with steampunk sci-fi\". In it, you are given a square of alien landscape, dotted with steam vents, and a small settlement at the center. This settlement runs on the steam so abundant on this alien world, and it\'s your job to keep the steam flowing.\r\n
\r\n
\r\nThe game consists of building steam nodes, which capture steam from the vents, and connecting them back to your settlement. Of course, you can\'t simply build a straight pipe back to your settlement; the length of the pipe is taken into account, and the longer the pipe, the harder it is to get steam to travel through it. You can get around this by daisy chaining nodes together in a web, and providing multiple routes back to your settlement. Running a steam-powered base on this alien planet isn\'t without its share of dangers, however! There are aliens, inclement weather, and seismic instability that can all damage your network of steam pipes and nodes. If your steam pressure falls below a certain threshold, you lose. \r\n
\r\n
\r\nThis game has an eerie similarity to network engineering, and I\'ve always enjoyed it a lot. It can get very frustrating, though, and the difficulty levels are steep steps. If you\'re interested in strategy games, I\'d highly recommend giving this one a try.\r\n
\r\n\r\n
fbterm
\r\n\r\n
\r\nAnother in the lightweight category, fbterm is a terminal emulator that\'s designed to be run with a framebuffer. A framebuffer is a low-level method for displaying text and/or graphics on a monitor, and is often used to run GUI applications without the overhead of an X server.\r\n
\r\n
\r\nYou can use fbterm to get an antialiased terminal, with freetype font support. That means you can use bitmap and vector fonts, just like most full-featured terminal emulators, without the extra weight of running an X session and window manager.\r\n
\r\n
\r\nIf you like window managers, you could also use fbterm as a replacement for one of your consoles, using a program called \"rungetty\". Here\'s the instructions: https://superuser.com/a/810655/21018 I don\'t mind having fbterm as a backup terminal, in case I need to debug an X session or my window manager has locked up. Having an option that is more graphically pleasing than a bare getty TTY can be a lifesaver.\r\n
',196,98,0,'CC-BY-SA','games,debian,terminal,browser',0,0,1),
(1809,'2015-07-09','My \"New\" Used Kindle Touch',665,'I talk about why used stuff is often better than new stuff, with my new used Kindle Touch as example','
In this show I talk about why I like to buy stuff used whenever possible, whether it be printers, routers, shirts, books, or my latest acquisition, a used Kindle Touch, which in many ways is much better than my (much newer) Kindle paperwhite. Just for fun, I allow the Kindle Touch itself (using its built-in text-to-speech capabilities) to tell me the ways in which it\'s better than the Kindle Paperwhite.
',238,0,0,'CC-BY-SA','Kindle, eBook Readers, Used Stuff, Recycling, Thrifting',0,0,1),
(1814,'2015-07-16','Custom Context Menus in GNU/Linux GUI File Managers',763,'I describe how to add custom context menu items in the Nautilus and Thunar file managers.','
On Nautilus
\r\n\r\n
On Nautilus you have to put your scripts into the Nautilus scripts folder, which on my system is located here:
\r\n\r\n
\r\n~/.local/share/nautilus/scripts\r\n
\r\n\r\n
You can either put copies of the scripts in there, or you can do like I did and make symlinks from the Nautilus scripts folder to your /home/bin folder. (I prefer to make symlinks instead of copying the files in there, just in case I make any changes to my scripts. If I have made a symlink instead of copying the file, then I only have to change original script and the symlink will automatically use the updated version.) Once you\'ve done that, you right-click on a file and choose scripts then <yourscriptname> to run your script on the file.
\r\n\r\n
Thunar
\r\n\r\n
On Thunar you don\'t have to put your scripts anywhere special. It actually handles custom actions much better than Nautilus, in my opinion. What you do is go to the Edit menu and choose Configure custom actions. Then you get a dialog box with two tabs. The first tab is where you can give your custom action a name and then tell it what command to run, and also tell it whether to apply the custom action only to the selected file, to all files in the directory, or to all selected files. On the other tab you choose the context in which this custom action will appear. You can select categories of files—like images, audio files, or text files, and so forth—or you can specify filetypes by extension, so that your custom action will only appear if you right click on a file that has the extension.
Auphonic: Automatic audio post production web service for podcasts, broadcasters, radio shows, movies, screencasts and more. https://auphonic.com/
\r\n
',238,0,0,'CC-BY-SA','Scripting, File Managers, Desktop Customization, GNU/Linux',0,0,1),
@@ -18147,7 +18264,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1845,'2015-08-28','60 - LibreOffice Impress - The Gallery and Themes',869,'LibreOffice Clip Art Gallery and Theme collections','
\r\nIn the last tutorial we looked at pictures and how they can be used in Impress. But I left out one area because the tutorial was already running a bit long, and I wanted to give the Gallery and Themes the full attention they deserve. I think this is something a lot of people have missed when working with Impress, at least I have not seen these elements includes much in peoples presentations. But they are a wonderful addition to your toolkit, and well-worth some attention. Note that the Gallery is a common feature of all LibreOffice applications, and is available in applications like Writer and Calc, though there is less need for it there. It is when you get to applications like Impress and Draw that you really discover how useful it can be.\r\nFor more go to https://www.ahuka.com/?page_id=1222\r\n
',198,70,0,'CC-BY-SA','LibreOffice, Impress, Presentations, Clip Art, Gallery, Themes',0,0,1),
(1824,'2015-07-30','I\'m Learning Some Python',1920,'I discuss how I use Python and some of the cool modules and libraries that I\'ve found','\r\n\r\n
I\'m Learning Some Python
\r\n\r\n
Lately I\'m finally getting around to learning some Python. I wouldn\'t go as far as to say I\'m learning it properly—that\'s not really my way—I\'m kind of poking around in the dark learning things on an \"as-needed\" basis, but I\'m finding that it\'s incredibly powerful and making me much more efficient in my daily life. In this podcast I discuss some of my favorite ways of using it and some of the cool modules and libraries that I\'ve found that make things surprisingly easy in Python that used to be difficult for me in bash.
\r\n\r\n
What I Use It For
\r\n\r\n\r\n
Website build scripts, both for the School of Music and for my personal website. Converted from bash, tested and working fine on Windows and Mac.
\r\n
Text manipulation scripts, used in conjuction with blather. These do things like change text case, remove spaces, and so forth.
\r\n
Text entry. Voice commands insert various kinds of text templates or canned email responses for my classes. Also used in conjunction with blather.
\r\n
Adding or stripping HTML tags to/from selected text.
\r\n
Getting current weather conditions and forecasts, having results spoken back to me using system text-to-speech engine.
\r\n
Fun blather commands where I interact with my computer and have it talk back to me.
smartypants is a Python fork of SmartyPants, which easily translates "plain" ASCII punctuation characters into “smart” typographic punctuation HTML entities.
\r\n',238,0,1,'CC-BY-SA','python, scripting, programming',0,0,1),
(1829,'2015-08-06','My \"New\" Used Kindle DX',836,'I talk about my latest gadget, a used Kindle DX','
I talk about my latest gadget, a used Kindle DX, which is a discontinued model with a 9.7 inch epaper screen. I talk about its features, limitations, how to navigate it, and I demonstrate its text-to-speech capabilities. Incidentally I really low-balled the original price of the Kindle DX. Looking around a little bit, I find that the original retail price was $479, which was then reduced to just under $400. Mine now seems like a bargain at $128 used.
\r\n\r\n
\r\n',238,0,0,'CC-BY-SA','ebooks, ereaders, kindle, gadgets, reviews',0,0,1),
-(1827,'2015-08-04','How I make bread',1112,'I\'ve been making my own bread for nearly 40 years, and I thought I\'d share my methods','
Ken Fallon was asking for bread-making advice on a recent Community News recording. I\'ve been making my own bread since the 1970\'s and I thought I\'d share my methods in response. Frank Bell also did an excellent bread-making episode in 2013.
',225,93,1,'CC-BY-SA','cooking,bread,yeast,baking,loaves,dough,gluten',0,0,1),
+(1827,'2015-08-04','How I make bread',1112,'I\'ve been making my own bread for nearly 40 years, and I thought I\'d share my methods','
Ken Fallon was asking for bread-making advice on a recent Community News recording. I\'ve been making my own bread since the 1970\'s and I thought I\'d share my methods in response. Frank Bell also did an excellent bread-making episode in 2013.
',225,93,1,'CC-BY-SA','cooking,bread,yeast,baking,loaves,dough,gluten',0,0,1),
(1828,'2015-08-05','Multimeter Mod\'s Part 1',1162,'NYbill modifies his multimeter to add features he feels are lacking.','
\r\nNYbill talks about modifying his UNI-T UT61E multimeter to add two features he finds lacking. \r\n
\r\n
\r\nIn part one an LED back light gets installed for the LCD screen. Part two will cover the second mod, a auto-time out feature to save the units battery. \r\n
',235,103,0,'CC-BY-SA','multimeter,back light,LED,hardware hack',0,0,1),
(1836,'2015-08-17','The Statusnet Shuffle',2711,'Theru and NYbill talk about moving a Statusnet instance and converting it to GNU-Social','
\r\nTheru and NYbill talk about moving a Statusnet instance to a new server. Also, upgrading an existing Statusnet instance to GNU-social.\r\n
',235,0,0,'CC-BY-SA','StatusNet,GNU social',0,0,1),
(1834,'2015-08-13','Password Cards',500,'How to hide a password using a password card','
How to Hide a Password Using a Password Card
\r\n\r\n
It\'s okay to write your password down and keep it in your wallet, but it\'s best to try to hide it as well. Here\'s how to keep your password secure and handy at the same time by embedding it in a password card.
\r\n\r\n
Method 1
\r\n\r\n
Generate a fancy symbol-and-color-coded password card at passwordcard.org: https://www.passwordcard.org/en. Follow the directions there on how to use it best.
\r\n\r\n
Method 2
\r\n
Make your own. Use the password generation package pwgen on Linux to generate a whole bunch of random passwords. In the following example, the -s flag tells it you want secure passwords that are generated randomly, not suitable for human memory. The -y flag tells it to include special characters, and 24 indicates how many characters each password should contain.
\r\n\r\n
\r\npwgen -sy 24\r\n
\r\n\r\n
Then either use one of the passwords that was generated from this command or embed your own existing password somewhere inside the giant block of gibberish such that only you will know where your password begins and ends. You can put a copy of this in your wallet.
\r\n',238,74,0,'CC-BY-SA','Privacy, security, passwords',0,0,1),
@@ -18170,9 +18287,10 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1842,'2015-08-25','TiT Radio 20 You\'ve Been Pwned (probably)',7543,'While Peter is on walkabout, TiT Radio returns for a very short engagement','
\r\nLongtime listeners of Hacker Public Radio will remember \'TiT Radio\', a semi-weekly FOSS \"news\" and commentary show that appeared on HPR, recorded by the cast of \"Linux Cranks\" on the off schedule weeks. \"Linux Cranks\" eventually morphed into the \"Kernel Panic Oggcast\". While Peter is on walkabout, the cast of KPO has resurrected \"Tit Radio\" on a temporary basis. The listener is cautioned, while KPO is family friendly, \"TiT Radio\" makes no such commitment. Please join netminer, FiftyOneFifty, and pegwole as they drag you down the rabbit hole that has always been \"TiT Radio\".\r\n
\r\n
\r\nOur show topics were drawn from these links. Not all these topics made it into the show, but feel free to browse anyway:\r\n
',131,30,1,'CC-BY-SA','TiT Radio,news,commentary',0,0,1),
(1858,'2015-09-16','Multimeter Mod\'s Part 2',1379,'NYbill finishes modification two to his multimeter. ','
\r\nNYbill talks about the second modification to his UNI-T UT61E multimeter. In this episode the switch and auto-timeout circuitry is installed.\r\n
\r\n
\r\nThis is a follow up to Multimeter Mod\'s Part 1:\r\n
',235,103,1,'CC-BY-SA','multimeter,hack,maker,mod,modification,improve,electronics,blender,3D printing',0,0,1),
(1869,'2015-10-01','Irssi Connectbot',848,'NYbill talks about setting up Irssi Connectbot on a Android phone to access IRC.','
\r\nNYbill talks about setting up Irssi Connectbot on a Android phone to access IRC.\r\n
',235,0,0,'CC-BY-SA','Android,phone,IRC,Irssi,Irssi ConnectBot,ssh',0,0,1),
-(2066,'2016-07-04','HPR Community News for June 2016',5832,'Dave and Ken review the last month without talking about brexit much','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
hpr2062\n(2016-06-28) \"Now The Chips Are Definitely Down\"\nby MrX.\n
Comment 1:\nMike Ray on 2016-06-28:\n\"Baofeng UV5R\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2086,'2016-08-01','HPR Community News for July 2016',4160,'Dave and Ken miss the regular recording slot but still get in the show','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n
The main threads this month were:
\n\n
From: Clinton Roy <clinton.roy@...> \n Date: 2016-06-30 14:09:02 +1000 \n Subject: World map of contributors? \n Link: https://comments.gmane.org/gmane.network.syndication.podcast.hacker-public-radio/1273 \n Messages: 5
The list of mail threads above date from a time when HPR mailing list\nmessages were copied to Gmane. At that time the Mailman mailing list software\nused to run the list seemed not to be able to archive messages, or possibly\ncouldn\'t make them visible. We built lists of threads by reading the Gmane\ndata and showed them here.
\n
Since then Gmane has failed, and been restored, but the HPR lists have been\nlost. However, a later version of Mailman made these messages available as\nthey should have been, so nothing was actually lost!
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2111,'2016-09-05','HPR Community News for August 2016',5495,'Dave and Ken discuss the last month, why we need shows and the correct way to hang toilet paper.','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive and the Mailman archive.\n
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 32 comments in total.
\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2066,'2016-07-04','HPR Community News for June 2016',5832,'Dave and Ken review the last month without talking about brexit much','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
hpr2062\n(2016-06-28) \"Now The Chips Are Definitely Down\"\nby MrX.\n
Comment 1:\nMike Ray on 2016-06-28:\n\"Baofeng UV5R\"
\n
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2086,'2016-08-01','HPR Community News for July 2016',4160,'Dave and Ken miss the regular recording slot but still get in the show','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive.\n
\n
The main threads this month were:
\n\n
From: Clinton Roy <clinton.roy@...> \n Date: 2016-06-30 14:09:02 +1000 \n Subject: World map of contributors? \n Link: https://comments.gmane.org/gmane.network.syndication.podcast.hacker-public-radio/1273 \n Messages: 5
The list of mail threads above date from a time when HPR mailing list\nmessages were copied to Gmane. At that time the Mailman mailing list software\nused to run the list seemed not to be able to archive messages, or possibly\ncouldn\'t make them visible. We built lists of threads by reading the Gmane\ndata and showed them here.
\n
Since then Gmane has failed, and been restored, but the HPR lists have been\nlost. However, a later version of Mailman made these messages available as\nthey should have been, so nothing was actually lost!
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2111,'2016-09-05','HPR Community News for August 2016',5495,'Dave and Ken discuss the last month, why we need shows and the correct way to hang toilet paper.','\n
\nPolicy decisions surrounding HPR are taken by the community as a whole. This discussion takes\nplace on the Mail List which is open to all\nHPR listeners and contributors. The discussions are open and available on the\nGmane\narchive and the Mailman archive.\n
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 32 comments in total.
This was the first show by gemlog and he used Bash, sed, grep, wget,\nto scrape the HPR site. This is great but as he points out any change to\nthe site will break the script.
\n
A safer way to get the episodes is by scraping the rss feed, and the\nfollowing is an example of how you might do that
\n',30,42,0,'CC-BY-SA','response, bash, rss, xml, xmlstarlet',0,0,1),
(1847,'2015-09-01','Client Side C- WTF Is Wrong With You?',640,'In this episode of hackerpublicradio sigflup talks about her efforts porting stuff with emscripten','
',115,0,1,'CC-BY-SA','emscripten,c,c++,browser, javascript',0,0,1),
(1848,'2015-09-02','Introduction to w3m, a Command Line Web Browser',901,'A brief introduction to using w3m, a command line web browser with tab and image support.','
W3M is a text browser with image and tab support which supports both keyboard and mouse navigation. (Image support is not available in some terminals, but does work in Xterm and rxvt, but images may be opened in a external viewer)). Mouse and keyboard navigation are supported, but I recommend learning the keybindings. Keybindings are case sensitive.
\r\n
The manual is 12 pages long and quite exhaustive. Here are some useful keybindings to get started with.
\r\n
\r\n
Open new tab: SHIFT-T
\r\n
Close tab: CTRL-Q
\r\n
Open URL: U (opens text dialog at bottom of window)
\r\n
See URL of current page: u (displays current URL at bottom of window)
\r\n
Close tab: CTRL Q
\r\n
Go left one tab: {
\r\n
Go right one tab: }
\r\n
Back in the same page: b
\r\n
Page Up: - (hyphen) or PG UP
\r\n
Page Down: SPACE or PG DOWN
\r\n
Previous page ("Buffer"): B
\r\n
There is no "forward" button, but you can use view History: CTRL-h
\r\n
Search in page: / (opens search dialog at bottom of window)
\r\n
Help: H
\r\n
Add bookmark: ESC-a
\r\n
View bookmarks: ESC-v
\r\n
Run shell command: # (Opens a dialog at the bottom of the window. Exit with B.)
\r\n
Paste into dialogs (e. g., passwords): Middle mouse button.
\r\n',195,0,1,'CC-BY-SA','web browser, text web browser, tabs',0,0,1),
(1849,'2015-09-03','LinuxLugCast Episode-004 Outtakes',547,'Preshow & aftershow banter that does not get published through our normal feeds.','
\r\n',265,0,1,'CC-BY-SA','linuxlugcast,outtakes',0,0,1),
@@ -18191,21 +18309,21 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1861,'2015-09-21','Cool Stuff pt. 4',1032,'CPrompt talks about some more cool stuff for you to enjoy!','
\r\n\"Follows a young computer programmer (Malek) who suffers from social anxiety disorder and forms connections through hacking. He\'s recruited by a mysterious anarchist, \r\nwho calls himself Mr. Robot.\"\r\n
\r\n
\r\nThe pilot for Mr. Robot was directed by Niels Arden Oplev (The Girl With The Dragon Tattoo) \r\n
\r\n
\r\nDirected by: \r\n
\r\n\r\n
\r\n
Sam Esmail\r\n
\r\n
\r\n\r\n
\r\nStarring:\r\n
\r\n\r\n
\r\n
Rami Malek\r\n
\r\n
Christian Slater\r\n
\r\n
Carly Chaikin\r\n
\r\n
Portia Doubleday\r\n
\r\n
Martin Wallstrm\r\n
\r\n
',252,0,0,'CC-BY-SA','CMUS,Mr Robot',0,0,1),
(1862,'2015-09-22','The Awesomely Epic Guide To KDE Part 1',1307,'A tutorial of the KDE Desktop','
\r\nHello my name is Geddes and this is my first HPR Episode. Its part 1 of an audio voice recording of an article entitled THE AWESOMELY EPIC GUIDE TO KDE. This is a tutorial on the KDE Desktop, which I did for Linux Voice Magazine back at the start of 2015. Its primarily in response to the call from HPR for more shows, but in my introduction I\'ve also mentioned a few other reasons which I hope listeners will find interesting, a couple are around the issues of diversity and accessibility. \r\n
',310,0,0,'CC-BY-SA','Linux Voice,KDE,desktop',0,0,1),
(1870,'2015-10-02','19 - Home SSH Server',1115,'To learn ssh it helps to experiment, so this explains setting up a simple home server.','
\r\nThe best way to get familiarity with the concepts we will discuss is by experimentation. I think that it is becoming more common these days for people to own more than one computer and set them up in a network. And with cheap computers like Raspberry Pi it is really easy to get started. In this tutorial I want to discuss how you can set up such a server for your experiments in ssh. I encourage you to do this even though I dont intend this series to focus on server administration. The idea is that by practising these these techniques behind a good firewall you can get some familiarity with them before you get out on the Internet where it matters. For most Linux users, at least, installing and setting up a server is really simple, and you can do it minutes.\r\nFor more go to https://www.zwilnik.com/?page_id=847 \r\n
',198,74,0,'CC-BY-SA','ssh, Telnet, server',0,0,1),
-(1900,'2015-11-13','20 - SSH Basics',1009,'In this we tutorial explore the basics of making an ssh connection.','
\r\nSo as we saw in the introductory tutorial, SSH uses the Client-Server model. Now, technically a server is just the machine you are connecting to, and there is no reason in principle that it could not be another desktop, a laptop, or even a telephone if it has the appropriate software. and in the previous tutorial we showed how you can easily install and set up an ssh server on your home network using another computer or a Raspberry Pi so that you can experiment with these commands. The model really reduces to you as the client, and the other machine as the server. As with all Internet connections there are standards and protocols involved. The original Telnet communicated over TCP through port 23. Because SSH was conceived as a replacement, it used the same TCP protocols, and was assigned the adjacent port number of 22. \r\nFor more go to https://www.zwilnik.com/?page_id=726 \r\n
\r\n',198,74,0,'CC-BY-SA','ssh, client, basics',0,0,1),
-(1863,'2015-09-23','The Awesomely Epic Guide To KDE Part 2',1307,'The Awesomely Epic Guide To KDE Part 2','
\r\nHello my name is Geddes and this is my second HPR Episode. Its part 2 of an audio voice recording of an article entitled THE AWESOMELY EPIC GUIDE TO KDE. This is a tutorial on the KDE Desktop, which I did for Linux Voice Magazine back at the start of 2015. In this half the topics I cover are - Upgrade Launch Menu, File Management, Window Management, and Visual Effects.\r\n
',310,0,0,'CC-BY-SA','Linux Voice,KDE,desktop',0,0,1);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1920,'2015-12-11','21 - SSH Authentication - Keys',1119,'We introduce the idea of using public/private key pairs for authentication','
\r\nWhen you first try to login to a remote server you need to authenticate yourself, which means you have to demonstrate that you have rights to be on that server. You can do this in several ways:\r\n
\r\n\r\n
\r\n
Password You authenticate to the server by typing in your password. This is easy because you can generally remember your password, and it means you can easily login from any computer with that knowledge. This is still the most common authentication mechanism for SSH. It is also the least secure.\r\n
\r\n
Public Key This is much more secure. It involves the creation of a key pair, of course. It is possible to use a key pair generated by PGP or GPG in the most current versions (version 2.0.13 introduced support for this). But there is a long established method using the Unix program ssh-keygen. This is very similar to generating a key pair as we discussed earlier. You run the program ssh-keygen, harvest some entropy, generate a passphrase to protect it, and so on.\r\n
',198,74,0,'CC-BY-SA','ssh, client, encryption, keys',0,0,1),
+(1900,'2015-11-13','20 - SSH Basics',1009,'In this we tutorial explore the basics of making an ssh connection.','
\r\nSo as we saw in the introductory tutorial, SSH uses the Client-Server model. Now, technically a server is just the machine you are connecting to, and there is no reason in principle that it could not be another desktop, a laptop, or even a telephone if it has the appropriate software. and in the previous tutorial we showed how you can easily install and set up an ssh server on your home network using another computer or a Raspberry Pi so that you can experiment with these commands. The model really reduces to you as the client, and the other machine as the server. As with all Internet connections there are standards and protocols involved. The original Telnet communicated over TCP through port 23. Because SSH was conceived as a replacement, it used the same TCP protocols, and was assigned the adjacent port number of 22. \r\nFor more go to https://www.zwilnik.com/?page_id=726 \r\n
\r\n',198,74,0,'CC-BY-SA','ssh, client, basics',0,0,1);
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (1863,'2015-09-23','The Awesomely Epic Guide To KDE Part 2',1307,'The Awesomely Epic Guide To KDE Part 2','
\r\nHello my name is Geddes and this is my second HPR Episode. Its part 2 of an audio voice recording of an article entitled THE AWESOMELY EPIC GUIDE TO KDE. This is a tutorial on the KDE Desktop, which I did for Linux Voice Magazine back at the start of 2015. In this half the topics I cover are - Upgrade Launch Menu, File Management, Window Management, and Visual Effects.\r\n
',310,0,0,'CC-BY-SA','Linux Voice,KDE,desktop',0,0,1),
+(1920,'2015-12-11','21 - SSH Authentication - Keys',1119,'We introduce the idea of using public/private key pairs for authentication','
\r\nWhen you first try to login to a remote server you need to authenticate yourself, which means you have to demonstrate that you have rights to be on that server. You can do this in several ways:\r\n
\r\n\r\n
\r\n
Password You authenticate to the server by typing in your password. This is easy because you can generally remember your password, and it means you can easily login from any computer with that knowledge. This is still the most common authentication mechanism for SSH. It is also the least secure.\r\n
\r\n
Public Key This is much more secure. It involves the creation of a key pair, of course. It is possible to use a key pair generated by PGP or GPG in the most current versions (version 2.0.13 introduced support for this). But there is a long established method using the Unix program ssh-keygen. This is very similar to generating a key pair as we discussed earlier. You run the program ssh-keygen, harvest some entropy, generate a passphrase to protect it, and so on.\r\n
',198,74,0,'CC-BY-SA','ssh, client, encryption, keys',0,0,1),
(1864,'2015-09-24','Turning an old printer into a network printer',1261,'Using a Raspberry Pi as a print spooler for an old USB printer','
Overview
\r\n
I have a USB printer I bought back in 2005 when I bought a Windows PC for the family. It\'s an HP PSC 2410 PhotoSmart All-in-One printer. This device is a colour inkjet printer, with a scanner, FAX and card-reading facilities. It has been left unused in a corner for many years, and I recently decided to to see if I could make use of it again, so I cleaned it up and bought some new ink cartridges for it.
\r\n
It is possible to use this printer on Linux using CUPS for the printing and SANE for scanning. I connected it to my Linux desktop for a while to prove that it was usable. However, rather than leaving it connected in this way, I wanted to turn it into a network printer that could be used by the rest of the family. My kids are mostly away at university these days but invariably need to print stuff when they pass through. I searched the Internet and found an article in the Raspberry Pi Geek magazine which helped with this project.
\r\n',225,0,1,'CC-BY-SA','printer,network,raspberry pi,CUPS,SANE',0,0,1),
(1866,'2015-09-28','An awkward talk with two young computer users',327,'Eric and Emily discuss operating systems, school and fun uses of computers.','
\r\nQuvmoh speaks with Eric 15 and Emily 10 about their computer usage and implore others to contribute to HPR\r\n
',110,0,0,'CC-BY-SA','young computer users',0,0,1),
(1873,'2015-10-07','TiT Radio 21 - I Thought I Had Better Links',4183,'TiT Radio rides again, again','
\r\nAnother installment of TiT Radio with Kevin Wisher, pegwole, netminer, and FiftyOneFifty\r\n
\r\n
\r\nSome of these links may have bee discussed during the show:\r\n
\r\n',131,30,1,'CC-BY-SA','TiT Radio',0,0,1),
(1860,'2015-09-18','FiftyOneFifty interviews Chris Waid of Save WiFi',8226,'This could be the most important podcast you listen to this year','
\r\nThe Save WiFi program has been instituted to combat the greatest threat the open source movement has faced from government over regulation. If you have listened to LinuxLUGCast.com, The Linux Link Tech Show, Linux for the Rest od US,or HPR recently, you may already be aware that recent decisions by the FCC have already forced router manufactures to lock down their equipment against the installation of non factory firmware. My guest, Chris Waid, CEO of Think Penguin and a leader in the Save WiFi project, joins me to explain how Linux on the desktop may also become subject to FCC regulation. As manufacturers incorporate more Software Defined Radio into PC\'s, the FCC may feel it has no choice but to lock down (or lock out), not only open source software, but any software that is not pre vetted and pre certified, even on proprietery OS\'s.\r\n
\r\n
\r\nRight now, there is a narrow window where the FCC has invited comment from the public, and Hacker Public Radio invites all our listeners to add their voices against this ill advised course of action.\r\n
\r\nThere is one small saving grace. Kevin Wisher found an Ars Technica article where an unnamed FFC spokesman seems to be saying locking open source firmware out of routers was not the intended consequence (even though Open-WRT was mentioned by name in the updated rules). I think the FCC might prefer manuafacturers avoid incorporating radio hardware that is so easily manipulated:\r\nhttps://arstechnica.com/information-technology/2015/09/fcc-accused-of-locking-down-wi-fi-routers-but-the-truth-is-a-bit-murkier/\r\n
\r\n
\r\nI want to give special thanks to Chris Waid for going above and beyond for recording our conversation because I was having ISP problems. I want to appologize in advance for any audio problems, I was way low and had to fix it in post.\r\n
\r\n\r\n',131,78,1,'CC-BY-SA','Save WiFi,router,FCC',0,0,1),
-(1868,'2015-09-30','Glasgow Podcrawl review',2908,'The intrepid Glasgow Podcrawlers meet to discuss their experiences back in July','
Glasgow Podcrawl review
\r\n
The second Glasgow Podcrawl took place on the 10th of July 2015. The participants were:
',225,0,1,'CC-BY-SA','Glasgow,Podcrawl,review',0,0,1),
+(1868,'2015-09-30','Glasgow Podcrawl review',2908,'The intrepid Glasgow Podcrawlers meet to discuss their experiences back in July','
Glasgow Podcrawl review
\r\n
The second Glasgow Podcrawl took place on the 10th of July 2015. The participants were:
',225,0,1,'CC-BY-SA','Glasgow,Podcrawl,review',0,0,1),
(1872,'2015-10-06','Sim City BuildIt September 2015',1417,'I talk about one of my favorite games sim city buildit','
\r\nDefinately focus on getting enough golden keys as it allows you to get some very good buildings\r\n
',297,0,0,'CC-BY-SA','games, iPad, android, google play',0,0,1),
(1876,'2015-10-12','MicrobeLog, or: On Shaving Yaks and Doing Things',561,'Why I\'m making an HPR episode, and why I\'m making a vaporware social network engine','
\r\nI think I\'ve pretty much had to fight excuses 5, 7, 10 and 12. :-)\r\n
',311,0,0,'CC-BY-SA','federation, python, microservices, gtd, yakshaving',0,0,1),
(1877,'2015-10-13','Recording HPR on the fly on your Android phone',378,'How quickly can you get an HPR recording done? 10 minutes including app install! Sort of.','
This episode was produced entirely on my phone, including upload.
\r\n\r\n
Apologies for the atrocious sound quality and the low volume. Consider it performance art. I know I need to speak closer to the phone next time. There\'s DroidGain, but I guess it only accepts mp3.
\r\n\r\n
TL;DL: Install Urecord from F-Droid, choose 44.1 kHz, RECORD!
\r\n\r\n\r\n
I estimate the total amount of time spent on this episode at:
\r\n
\r\n
20 mins – installing apps on two phones
\r\n
20 mins – evaluate apps on two phones (while cooking!)
\r\n
6 mins – record episode
\r\n
10 mins – update HPR user profile
\r\n
30 mins – write show notes (while having dinner!)
\r\n
15 mins – figure out how to upload this thing from a phone
\r\n
?? – upload episode
\r\n
\r\n\r\n
A large part of the typing time was angle brackets. HATE screen input. I want a modern phone with sliding QWERTY like the good old X10 Mini Pro, or maybe the slightly larger HTC Desire Z. Apparently the market doesn\'t. :-(
\r\n\r\n
Wow, turns out the difficult part was to upload the file. Had to use a file manager as a \"provider\" for Firefox to get the \"document\" from.
\r\n',311,0,1,'CC-BY-SA','android, hpr, audio, recording',0,0,1),
(1881,'2015-10-19','My road to Linux',912,'I\'m so old I actually installed Watchtower on an Amiga and I review 22 years of Linux distributions','
I went against my own recommendations from my previous episode \r\nand used Rehearsal Assistant, because it can rename files inside the app. \r\nWell, turns out it records at 8 kHz and encodes it as 3GPP.
\r\n\r\n
Sound quality: Yes, it\'s at a terrible sample rate, but you can \r\nhear what I\'m saying and at least I\'m Holding It Right.\r\nThere\'s no problem with sudden drops in \r\nlevel.
\r\n\r\n
Do as I say, don\'t do as I do. Use\r\nUrecord,\r\nwhich is obviously \r\npronounced you record as in telling someone to record something, not \r\nyou record! as in insulting someone by comparing them to a vinyl disc. \r\nDon\'t say as I say.
\r\n\r\n
Slirp can use either SLIP or \r\nPPP. I think I used Slirp with SLIP, and there was some other connection \r\nmethod that provided PPP directly without logging in and running a command. \r\nMaybe their getty even understood the PPP blurb and just went directly to \r\npppd. Anyway, my Amiga-side software didn\'t support it. When I switched to \r\nLinux I was able to use the other method and just talk PPP directly and \r\nauthorize using CHAP.
\r\n\r\n
Debian didn\'t support Amiga\r\nuntil Debian Hamm, which was released in 1998. So I didn\'t have much\r\nchoice but to run Watchtower and compile my own stuff. By 1998 the Amiga was\r\nalready gathering dust in my wardrobe back at my parents\' place, while my PC\r\nand I were preparing to travel the seas with the Swedish Royal Navy and\r\nhang out (not really) with David Letterman on Saint Barths.
\r\n\r\n
Wikipedia says that \r\nyes, it was Bruce Perens who tried to get UserLinux going, but they claim \r\nUbuntu killed it. I don\'t remember UserLinux getting any traction at all. I \r\nthink it\'s more accurate to say that Ubuntu put the last nail in its coffin. \r\nLWN seems to agree: The \r\nimmediate cause of death was an inability to deliver software. Today there \r\nstill is no real delivered product, over three months after the release of \r\nDebian Sarge.
\r\n\r\n
But the same article reveals that I was completely wrong about Bruce \r\ntrying to gather existing vendors together: It was occasionally \r\nconfused with UnitedLinux by people familiar with the Linux market. \r\nUnitedLinux is the old Caldera, Conectiva, SUSE and Turbolinux \r\ninitiative. Yeah, I was thinking of the one with Turbolinux in it. \r\nThat name rings a bell. But I thought Turbolinux was Finnish. Apparently they \r\nwere Japanese. Or actually, \r\napparently they are Japanese.
I know that guix\r\nis pronounced geeks. I just don\'t know it in my heart. Just \r\nlike I actually think GNU/Linux is the better descriptive term, but I keep \r\ntalking about the Linux ecosystem* etc, where 95% of that ecosystem is \r\nabstracted away from Linux by glibc and runs just as well on \r\nFreeBSD.
\r\n\r\n
* Yes, you may hate the term ecosystem. I happen to think it\'s an \r\napt** analogy.
\r\n',311,29,0,'CC-BY-SA','Urecord,Slirp,Amiga,turbolinux,guix',0,0,1),
(1878,'2015-10-14','What\'s In My Bag',548,'What\'s in my travel bag for my upcoming client trip','
What\'s in My Bag Show Notes
\r\n
Here are some links from the highlights of the episode
\r\n',300,23,0,'CC-BY-SA','Consulting, travel',0,0,1),
(1886,'2015-10-26','Moral Volcano\'s Linux Tips & Tricks podcast for Hacker Public Radio',3884,'A collection of Linux tips and tricks that may be useful new users.','
\r\nWelcome to my first podcast for Hacker Public Radio. \r\n
\r\n\r\n
Like Gnome 3? Good for you.\r\n
\r\n
Don\'t like Gnome 3 or like Gnome 2 more? Then, get a Linux distro with the Mate desktop. Mate desktop was forked from Gnome 2. Gnome 2 development was stopped by the Gnome 3 team.
Firestarter firewall - I think it needs only a little attention from Linux developers before it can be extremely useful again. Most of it still works. \r\n https://fs-security.com/
\r\n\r\n',312,0,0,'CC-BY-SA','desktop,Mate,wvdial,gnome-ppp,fonts,Firestarter firewall ',0,0,1),
-(1874,'2015-10-08','Interview with Droops',3239,'To mark the 10 year anniversary of HPR we talk to droops one of the founders of Today with a Techie.','
\r\nWe started producing shows as Today with a Techie 10 years ago this weekend. To mark the project we track down droops one of the founders and ask him about the early days.\r\n
\r\n
About HPR.
\r\n
Hacker Public Radio (HPR) is an Internet Radio show (podcast) that releases shows every weekday Monday through Friday. HPR has a long lineage going back to Radio FreeK America, Binary Revolution Radio & Infonomicon, and it is a direct continuation of Twatech radio. Please listen to StankDawg\'s \"Introduction to HPR\" for more information.
\r\n \r\n
What differentiates HPR from other podcasts is that the shows are produced by the community - fellow listeners like you. There is no restrictions on how long the show can be, nor on the topic you can cover as long as they \"are of interest to Hackers\". If you want to see what topics have been covered so far just have a look at our Archive. We also allow for a series of shows so that host(s) can go into more detail on a topic.
\r\n\r\n
You can download/listen to the show here or you can subscribe to the show in your favorite podcatching client (like BashPodder) to automatically get our new shows as soon as they are available. You can copy and redistribute the shows for free provided you adhere to the Creative Commons AttributionShareAlike 3.0 License.
\r\n \r\n
We do not filter the shows in any way other than to check if they are audible and not blatant attempts at spam.
\r\n \r\n
\r\n Hacker Public Radio is dedicated to sharing knowledge. We do not accept donations, but if you listen to HPR, then we would love you to contribute one show a year.\r\n
\r\n',30,78,1,'CC-BY-SA','TWaTech, RFA, Radio FreeK America, BinRev, Binary Revolution Radio, Infonomicon',0,0,1),
+(1874,'2015-10-08','Interview with Droops',3239,'To mark the 10 year anniversary of HPR we talk to droops one of the founders of Today with a Techie.','
\r\nWe started producing shows as Today with a Techie 10 years ago this weekend. To mark the project we track down droops one of the founders and ask him about the early days.\r\n
\r\n
About HPR.
\r\n
Hacker Public Radio (HPR) is an Internet Radio show (podcast) that releases shows every weekday Monday through Friday. HPR has a long lineage going back to Radio FreeK America, Binary Revolution Radio & Infonomicon, and it is a direct continuation of Twatech radio. Please listen to StankDawg\'s \"Introduction to HPR\" for more information.
\r\n \r\n
What differentiates HPR from other podcasts is that the shows are produced by the community - fellow listeners like you. There is no restrictions on how long the show can be, nor on the topic you can cover as long as they \"are of interest to Hackers\". If you want to see what topics have been covered so far just have a look at our Archive. We also allow for a series of shows so that host(s) can go into more detail on a topic.
\r\n\r\n
You can download/listen to the show here or you can subscribe to the show in your favorite podcatching client (like BashPodder) to automatically get our new shows as soon as they are available. You can copy and redistribute the shows for free provided you adhere to the Creative Commons AttributionShareAlike 3.0 License.
\r\n \r\n
We do not filter the shows in any way other than to check if they are audible and not blatant attempts at spam.
\r\n \r\n
\r\n Hacker Public Radio is dedicated to sharing knowledge. We do not accept donations, but if you listen to HPR, then we would love you to contribute one show a year.\r\n
\r\n',30,78,1,'CC-BY-SA','TWaTech, RFA, Radio FreeK America, BinRev, Binary Revolution Radio, Infonomicon',0,0,1),
(1879,'2015-10-15','Hacking a Belt to Make it Fit',906,'I record a show while hacking a belt to make it fit.','
In this episode I talk while I\'m performing a belt hack. I bought a belt at Goodwill that is in excellent condition but does not fit me. To make it fit I need to cut off 6.25 inches and then put it back together.
\r\n
This is the belt as I got it. Notice the very small screws holding the buckle to the belt.
\r\n
\r\n
The screws are out, the belt removed from the buckle. You can see here the two holes that accommodate the screws as well as the rectangular notch.
\r\n
\r\n
I\'ve cut off 6.25" from the belt, ready to make the holes and notch in the remaining part.
\r\n
\r\n
Here I\'ve clamped the part of the belt that I cut off to the remaining part to use as a template for making the holes and the notch.
\r\n
\r\n
Holes and notch cut in the remaining part of the belt. Doesn\'t look as nice as the original but it should work.
\r\n
\r\n
All done. Belt is reassembled and I\'m wearing it, fits just right!
\r\n
\r\n\r\n',238,0,0,'CC-BY-SA','DIY, belts, dressing spiffily',0,0,1),
(1880,'2015-10-16','Arduino Bluetooth HOWTO',2494,'Klaatu talks about getting a bluetooth module for an arduino, and how to make it work','
\r\nKlaatu talks about the HC-05 and -06 series of bluetooth modules and how to use them with an Arduino, including some basic code on the Arduino to get it to respond to signals over bluetooth, and some basic PyQt code on how to send signals to the bluetooth device. PLUS, he talks about configuring the bluetooth so that it is connected to the serial port of your system (so that Python can use it).\r\n
\r\n
\r\nA super basic bluetooth controller app can be found here:\r\nhttps://gitlab.com/makerbox/rovcon \r\n(it\'s Klaatu\'s code, and it\'s not quite finished, so if you have improvements or questions, feel free to comment or merge or email)\r\n
',78,91,0,'CC-BY-SA','arduino,python,qt',0,0,1),
(1882,'2015-10-20','How I Compute Away From My Computer',1666,'Thaj explains his setup for computing outside of the house, without his laptop.','
Here is a list of the stuff I bought, as well as the apps I list in the episode:
\r\n',270,0,0,'CC-BY-SA','android, tablet, on the go, portable, apps, free software, open source software',0,0,1),
@@ -18219,10 +18337,10 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1940,'2016-01-08','WASHLUG Talk on LastPass',3446,'An expanded discussion of the LastPass intrusion as delivered at our LUG.','
\r\nI had the opportunity to present a talk on the LastPass intrusion at our local LUG, the Washtenaw Linux Users Group, which expanded on a previous HPR episode and added some additional material that I think might be of interest to our listeners. I still stand by my claim that LastPass was not seriously affected by the intrusion and is still an excellent security solution for most computer users.\r\nFor more go to https://www.zwilnik.com/?page_id=841 \r\n
',198,74,0,'CC-BY-SA','LastPass, passwords, password vaults',0,0,1),
(1893,'2015-11-04','My LastPass Alternative',225,'How I do password management among my devices.','
\r\nMy LastPass Alternative\r\n
\r\n\r\n
\r\n
Password Database: KeePass https://keepass.info/\r\nKeePass client is in the fedora repos.\r\n
\r\n
\r\n\r\n
\r\nSave file to a location that will be synced between devices. Im my case Owncloud. Desktop Client syncs available for Linux, Windows and Mac. Mobile clients for Android, IOS, and even blackberry. Syncing note: I do not launch the desktop client on login. This allows the owncloud client to sync files before launching keepass. Also, I exit keypass before logging out for the same reason.\r\n
\r\nOn same server with ownlcloud, can open files\r\n
',273,74,0,'CC-BY-SA','Lastpass, keepass, password management',0,0,1),
(1894,'2015-11-05','Interview with Davide Zilli and Dr Marianne Sinka of the HumBug Project',3648,'Mosquito Detection and Habitat Mapping for Improved Malaria Modelling','
\r\nBack in 2012 I put up a blog post on my site related to the need for an Open Source Mosquito Locator. Mosquitoes are the greatest killer of humans per year.\r\n
\r\n\r\n
\r\nRecently Alexandre Azzalini left a comment pointing me to the HumBug project which is dedicated to Mosquito Detection and Habitat Mapping for Improved Malaria Modelling. I got in touch, and so today I talk to Davide Zilli, and Dr. Marianne Sinka who were winners of the Google Impact Challenge UK 2014.\r\n
\r\n
\r\n
Royal Botanic Gardens Kew: Crowdsourcing data to help prevent mosquito-borne diseases
\r\n
\r\nMosquitoes are responsible for the spread of some of the most deadly and costly diseases, with more than half the world\'s population living in areas where they are routinely exposed to disease carrying mosquitoes. One of the most deadly diseases that they transmit is malaria, that kills over 600,000 people every year. The Royal Botanic Gardens Kew will equip villagers in rural Indonesia with wearable acoustic sensors to detect the sound of mosquitoes. Each species has its own wing beat allowing the research team to record the occurrence of different species, as well as daily readings of critical environmental conditions. Combined with detailed vegetation maps, this will be able to track disease-bearing mosquitoes. Over the next three years, Kew Gardens will work with Oxford University to turn this project into a reality, creating a downloadable smartphone app and a range of wearable acoustic detectors. This novel technology will be trialled in 150 rural households in Indonesia with the aim of preventing and managing outbreaks of mosquito-borne disease. This prototype technology has the potential ultimately to be rolled out in every region of the world where mosquito-borne diseases pose a threat to life. \r\nhttps://impactchallenge.withgoogle.com/uk2014\r\n
\r\n\r\n',30,78,0,'CC-BY-SA','mosquito, humbug, Google Impact Challenge, Hardware',0,0,1),
-(2131,'2016-10-03','HPR Community News for September 2016',5065,'HPR Community News for September 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 26 comments in total.
Comment 2:\nDave Morriss on 2016-09-29:\n\"Re: textbook?\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2156,'2016-11-07','HPR Community News for October 2016',4628,'HPR Community News for October 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 30 comments in total.
Comment 2:\nWindigo on 2016-10-30:\n\"Superb interview\"
Comment 3:\nKevin O'Brien on 2016-10-30:\n\"Fantastic Interview!!\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2176,'2016-12-05','HPR Community News for November 2016',4692,'HPR Community News for November 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 21 comments in total.
\n
There are 5 comments on\n5 previous shows:
\n
hpr2130\n(2016-09-30) \"Git push to two repositories at once\"\nby klaatu.
\n
\n
Comment 4:\nDave Morriss on 2016-11-02:\n\"Thought I'd never use this\"
\n
hpr2140\n(2016-10-14) \"Vim Plugins I Use\"\nby b-yeezi.
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2196,'2017-01-02','HPR Community News for December 2016',5343,'HPR Volunteers talk about shows released and comments posted in December 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 68 comments in total.
hpr2195\n(2016-12-30) \"All you need to know when uploading a show\"\nby Ken Fallon.
\n
\n
Comment 1:\nclacke on 2016-12-29:\n\"Text source\"
Comment 2:\nclacke on 2016-12-29:\n\"Correction: Text source\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2131,'2016-10-03','HPR Community News for September 2016',5065,'HPR Community News for September 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 26 comments in total.
Comment 2:\nDave Morriss on 2016-09-29:\n\"Re: textbook?\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2156,'2016-11-07','HPR Community News for October 2016',4628,'HPR Community News for October 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 30 comments in total.
Comment 2:\nWindigo on 2016-10-30:\n\"Superb interview\"
Comment 3:\nKevin O'Brien on 2016-10-30:\n\"Fantastic Interview!!\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2176,'2016-12-05','HPR Community News for November 2016',4692,'HPR Community News for November 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 21 comments in total.
\n
There are 5 comments on\n5 previous shows:
\n
hpr2130\n(2016-09-30) \"Git push to two repositories at once\"\nby klaatu.
\n
\n
Comment 4:\nDave Morriss on 2016-11-02:\n\"Thought I'd never use this\"
\n
hpr2140\n(2016-10-14) \"Vim Plugins I Use\"\nby b-yeezi.
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2196,'2017-01-02','HPR Community News for December 2016',5343,'HPR Volunteers talk about shows released and comments posted in December 2016','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 68 comments in total.
hpr2195\n(2016-12-30) \"All you need to know when uploading a show\"\nby Ken Fallon.
\n
\n
Comment 1:\nclacke on 2016-12-29:\n\"Text source\"
Comment 2:\nclacke on 2016-12-29:\n\"Correction: Text source\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1906,'2015-11-23','Apt Spelunking 2: tvtime, phatch, and xstarfish',1068,'Windigo digs through his software repositories and finds another couple of gems','
\r\n Welcome to the another episode of apt spelunking! If you missed the first\r\n episode, I should explain. Apt spelunking is the act of aimlessly searching\r\n through your distribution\'s software repositories, and picking out the gems\r\n that you find. I call it apt spelunking because I use Debian, which uses the\r\n apt packaging format.\r\n
\r\n
\r\n Let\'s jump into the first package: tvtime.\r\n
\r\n The package tvtime is a simple one, but it does what it does very well. tvtime\r\n interfaces with a TV tuner - specialized hardware that allows your computer to\r\n process analog television signals, via coaxial or RCA video cables. If you have\r\n this hardware, usually an expansion card or USB peripheral, tvtime allows you to\r\n use your computer as an analog television.\r\n
\r\n
\r\n tvtime binds to the card of your choosing, allows you to switch between NTSC and\r\n PAL modes (NTSC is what I use, that being the American standard), and shows you\r\n a wonderfully grainy video. It has filters that can help smooth out the image a\r\n bit, but it\'s still an analog video.\r\n
\r\n
\r\n tvtime is video only, so you need to use something else to handle the audio of\r\n whatever you are hooking up. Often this is done by the hardware tv tuner\r\n somehow; my PCI card tuner has a 3.5mm jack that offloads any sound received\r\n over the coaxial wire, and I patch that into my sound card. RCA cables have\r\n separate wires for audio, and I plug those into my sound card via a converter\r\n cable.\r\n
\r\n
\r\n I have used tvtime to hook up videogame consoles, VCRs, and older computers like\r\n the TRS-80. It\'s helped me to defeat Eternal Darkness, an old GameCube game that\r\n is still worth a look, and it\'s allowed me to digitize old VHS tapes we have\r\n lying around. More on that in another episode.\r\n
\r\n
\r\n It is a fantastic alternative to keeping an older analog TV around. If you have\r\n older equipment that needs to dump analog video somewhere, tvtime and a hardware\r\n tuner makes for a great setup.\r\n
\r\n This absurdly spelled program is incredibly good at what it does. Phatch, some\r\n sort of unholy combination of \"photo\" and \"batch\", is a GUI interface for\r\n assembling chains of actions to manipulate image files.\r\n
\r\n
\r\n I use this program for web development to save time when creating static photo\r\n galleries or other types of images with similar constraints.\r\n
\r\n
\r\n To use phatch, you assemble a set of operations (phatch refers to these as\r\n \"actions\") in an ordered \"action list\". I\'ll use my gallery thumbnail action\r\n list as an example.\r\n
\r\n
\r\n There are only two actions in my thumbnail action list: \"fit\", and \"save\". Each\r\n action has a set of predefined parameters and options that let you tweak what\r\n happens to your files. The \"fit\" action resizes an image without goofing up the\r\n aspect ratio. You give it a box to fit the image in, and it fits it fully into\r\n that box and cuts off any extra edges. The most important parameters for this\r\n action are canvas width, and canvas height - which tells phatch how big the box\r\n is. The save action has parameters that let you set which image format to use,\r\n which folder to save to, and even what to name the file. For my thumbnails, I\r\n have it use the original filename, and append a \"_t\".\r\n
\r\n
\r\n Once you have your action list together, you can tell phatch to run on an entire\r\n directory and include or exclude different file types.\r\n
\r\n
\r\n There is much, much more to phatch than just resizing images. Sounds like\r\n another episode idea… anyhow, moving on!\r\n
\r\n I left xstarfish until the end, because it\'s so much fun and so very, very\r\n weird. xstarfish generates a random, tileable background that can be dumped to\r\n a file, or assigned directly to the X display of your choice.\r\n
\r\n
\r\n It uses some sort of magic randomsauce to pick a color palette, some patterns,\r\n and some other distortions to that you get a brand-new, unique background every\r\n time you run it.\r\n
\r\n
\r\n It can also be started in daemon mode, with a timer, to automatically change\r\n your wallpaper periodically.\r\n
\r\n
\r\n There are at least two problems with this.\r\n
\r\n
\r\n First of all, let\'s start with the practical. You can set the size of the image\r\n xstarfish generates, by either using the -g flag and manually setting the\r\n geometry with a pixel width and/or height, or you can use the -s flag and set a\r\n general size like \"small\", \"large\", or \"full\". If you use \"full\", xstarfish\r\n automatically generates a full wallpaper for your display.\r\n
\r\n
\r\n Since xstarfish generates randomness (which is often CPU intensive) and uses\r\n that to generate random filters (which can be hard on your CPU) and can be set\r\n to do it periodically (which, depending on frequency, could keep your CPU busy),\r\n this utility can be a resource hog. I have two monitors, each running 1280x1024\r\n resolution, and when I set it to generate a new background every 10 seconds...\r\n well, it didn\'t. It just maxed out one of my CPU cores, and spit out a\r\n background every once and a while. Cutting it down to only generate a single\r\n monitor-sized image every 60 seconds made things much more reasonable.\r\n
\r\n
\r\n The second, more pertinent issue with xstarfish is that it randomly picks colors\r\n and patterns. It is exceptionally random about it. Imagine for a moment that you\r\n needed to paint a room, and you wanted to pick random colors and patterns for a\r\n room in your house. You would begin by blindfolding a friend and pushing them\r\n into the paint isle at your nearest hardware store. Whatever three buckets of\r\n paint they bump into first, well, that\'s your color palette. What do you mean\r\n you don\'t like orange, sea foam and gunmetal grey? \r\n
\r\n
\r\n Then, you take those paint cans and proceed to tie one to your ceiling fan, one\r\n to your eight-year-old child and swing the third around your head at a 35 degree\r\n angle. Fairly quickly, you\'ll have your own xstarfish-inspired decor.\r\n
\r\n
\r\n With all of the potentially awful things that can happen, I really do like\r\n xstarfish. It\'s not something I keep running all the time, and a lot of the\r\n options remind me of early 90s Encino Man fashion and school photo backdrops\r\n with lasers. But sometimes the patterns are actually quite pleasing, and if I\r\n keep the tile size small, it reminds me of 90s web design.\r\n
\r\n\r\n
\r\n That concludes the second installment of apt spelunking. Please don\'t let me\r\n take all the glory; take a tour through your package manager, whatever distro\r\n you use, and tell us about some cool stuff you find!\r\n
',196,98,0,'CC-BY-SA','apt,tvtime,xstarfish,phatch,images,batch,video,wallpaper,terrible',0,0,1),
(1899,'2015-11-12','MyTinyTodo List',752,'Introduction to one of my favorite productivity tools, the web-based todo list called MyTinyTodo','
This show is about my favorite tool to keep track of stuff I have to do, stuff I want to do, gift ideas for my family, books I want to read, HPR topics to record, etc. It\'s called MyTinyTodo. It\'s a web app that you can host on your own server and access from any device that has a web browser.
\r\n
The website claims that it is already mobile friendly, but I did not like the mobile interface they had, and also did not like the fact that I had to use a different URL to get the mobile interface, so I hacked the stylesheet and the index.html file in the code to make it a responsive design. Now it looks great on all of my devices.
\r\n
Features
\r\n
\r\n
Multiple lists
\r\n
Task notes
\r\n
Tags (and tag cloud)
\r\n
Due dates (input format: y-m-d, m/d/y, d.m.y, m/d, d.m)
\r\n
Priority (-1, 0, +1, +2)
\r\n
Different sortings including sort by drag-and-drop
\r\n
Search
\r\n
Password protection
\r\n
\r\n
System requirements
\r\n
\r\n
PHP 5.2.0 or greater;
\r\n
PHP extensions: php_mysql (MySQL version), php_pdo and php_pdo_sqlite (SQLite version).
',238,0,0,'CC-BY-SA','productivity, organization, web apps, self-hosting',0,0,1),
(1911,'2015-11-30','Thoughts on GUI v CLI and the best distro',909,'Thoughts on which desktop to use, and which GUI to use','
Promotion of GUI to new users
\r\n
\r\nDeciding which GUI to present to a non techie, is simply a non issue as they can and do use different OS\'s all the time. We all have family and friends who have managed to operate phones, TV\'s and tablets as they iterate through their UI changes. Think about the changes in phones from Symbian to Android, iOS. The move from up and down channel tv\'s to DVR\'s, STB\'s and smart TV\'s. An then they all managed to get the hang of iPads and tablets without even calling you.\r\n
\r\n\r\n
Promotion of GUI to tech savvy users.
\r\n
\r\nTeach someone to use a GUI and they can use that computer. \r\nTeach someone the command line and they can use any computer.\r\n
\r\nOn the other hand, if you learn to computer via the command line ONCE, then you know how to operate computers from 46 years ago, and most likely in 46 years. If you plans involve a career in the tech industry, you need to be using the command line.\r\n
\r\n
\r\nMost of the issues are the fear of not been the expert any more.\r\n
\r\nDon\'t worry about it. Find what works for you and use it. Try and learn as much as you can. Learning stuff that will be around in 5 years is a good investment, but that is your choice.\r\n
\r\n',30,0,0,'CC-BY-SA','GUI,Graphical User Interface,CLI,Command Line Interface',0,0,1),
@@ -18264,7 +18382,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1946,'2016-01-18','Wok Cookery',1237,'I prepare a vegetarian version of Chow Mein for my son\'s visit','
Wok Cookery
\r\n
Not for the first time I\'m following in the footsteps of Frank Bell. Frank did an HPR episode entitled "A Beginner with a Wok", episode number 1787, on 2015-06-09. On it he spoke about his experiences stir-fry cooking using a wok.
\r\n
Frank got a lot of comments about his episode and there seemed to be an interest in the subject. I have been interested in Chinese, Indonesian and other Far Eastern cookery styles for some time, and do a lot of cooking, so I thought I\'d record a show about one of the recipes I use.
\r\n
My son visits around once a week and eats dinner with me. I offered to cook him my version of Chow Mein, which since he is vegetarian, needed to use no meat. This is my description of the recipe I used.
\r\n
I loosely based this version of Chow Mein on Ken Hom\'s recipe in his book Chinese Cookery, page 226. This is from his 1984 BBC TV series, which I watched. I also learnt many of my preparation techniques from Ken Hom\'s books and TV shows.
Apologies for the sounds of a mouse scroll wheel in the audio. I was trying a new microphone position and didn\'t realise how sensitive it was to these sounds.
\r\n',225,93,1,'CC-BY-SA','cooking,wok,stir-fry,chow mein,noodles,Quorn',0,0,1),
(1935,'2016-01-01','Quick Bashpodder Fix',578,'Charles in NJ returns with a short show to discuss a fix he made to Bashpodder.','
\r\nBashpodder is a great Bash script for downloading the latest episodes of podcasts and other media from their feeds.\r\n
\r\n
\r\nThere are a few feeds that are not handled properly by Bashpodder, namely, the TED Talks podcast feed and the NPR digest show called the TED Radio Hour.\r\n
\r\n
\r\nThe URLs for the audio files have a number of additional fields at the end of the string after the media file name, and Bashpodder picks up the last field as if it were the media file name for the show. So every TED Radio Hour episode is called \"510298\". If you download more than one episode at a time, only the last episode to be saved will survive. Each new file clobbers the last one, because they all get the same filename.\r\n
\r\n
\r\nCharles in NJ made a simple fix to Bashpodder.shell to correct this problem, and he shares it in this episode.\r\n
',229,0,1,'CC-BY-SA','Bashpodder, podcast, bash, awk',0,0,1),
(1939,'2016-01-07','Collating Pages with pdftk',934,'I describe how to collate the pages of two separate PDF files using pdftk','
I\'m moving into my new office at work, and among many things I had to move are file boxes full of old class notes from graduate school. The academic hoarder in me doesn\'t want to recycle them—I might need these things again! I\'m scanning.
\r\n\r\n
I\'ve inherited an excellent scanner/copier with a feeder that lets you scan stacks of pages with one click. This works great for single-sided documents, but most of my handwritten notes are double-sided. I scan one side, then turn the stack over and scan the other side, and I end up with two PDFs for a single stack of pages—one with the front pages and the other with back pages in reverse order. The difficulty is to collate the pages of those two files so that the front and back sides appear in a single PDF in the correct order. Sounds like a job for a shell script!
\r\n\r\n
The script takes two CLI arguments. The first argument is the PDF containing front pages, and the second is the PDF of the back pages.
\r\n\r\n
The first job is take the backsides and reverse the page order, because they were scanned in last-page-to-first. This is very easy with pdftk:
\r\n\r\n
pdftk back.pdf cat end-1 output backfix.pdf
\r\n\r\n
Now that the pages are all in the correct order it\'s time to collate them. We\'re going to use the burst function of the PDF toolkit to explode each of the two PDFs into separate pages. After that, we recombine the separate pages in the correct order. The trick is finding a way to do this efficiently. In concept, it\'s not hard to collate pages in whatever order you want after they\'ve been burst. You simply keep giving pdftk CLI arguments for all of the files you want to combine and then output them as a single file. However, if you have 40 or 50 pages, it\'s extremely tedious to provide that many CLI args one at a time. This must be automated!
\r\n\r\n
The way I figured out how to do this was to ensure that the burst command would output files that would appear in the correct order automatically when using the ls command inside the working directory. The burst command automatically numbers the output files, but you can specify certain filename formatting parameters if you want to. I chose a format that would begin the filename with the numerical page count in at least three digits with leading zeros (001, 002, etc), followed by an underscore and either the word \"front\" for the front pages or \"reverse\" for the back pages.
Notice how the front and back pages all appear in the correct order? Now, instead of typing in the filename for every page, we can use the output of the ls command, filtering out any files not beginning with numbers.
',238,0,0,'CC-BY-SA','pdftk, scripting, productivity, scanning, document management, pdf',0,0,1),
-(1951,'2016-01-25','Some additional Bash tips',2424,'More about expansion in Bash: this time arithmetic expansion','
Some additional Bash tips
\r\n
Expansion
\r\n
As we saw in the last episode 1903 there are seven types of expansion applied to the command line in the following order:
\r\n
\r\n
Brace expansion (we looked at this subject in episode 1884)
\r\n',225,42,1,'CC-BY-SA','Bash,expansion,arithmetic expansion,shell arithmetic,number base',0,0,1),
+(1951,'2016-01-25','Some additional Bash tips',2424,'More about expansion in Bash: this time arithmetic expansion','
Some additional Bash tips
\r\n
Expansion
\r\n
As we saw in the last episode 1903 there are seven types of expansion applied to the command line in the following order:
\r\n
\r\n
Brace expansion (we looked at this subject in episode 1884)
\r\n',225,42,1,'CC-BY-SA','Bash,expansion,arithmetic expansion,shell arithmetic,number base',0,0,1),
(1949,'2016-01-21','The Kindle/Kobo Open Reader (KOReader)',1638,'I talk about installing an alternate ebook reader app on a jailbroken Kindle','
In this episode I talk about installing an alternate ebook reader app on your Kindle paperwhite. The one I\'m using is called the Kindle/Kobo Open Reader (KOReader), and it has many features that the stock Kindle reader does not have:
\r\n\r\n
\r\n
Epub support
\r\n
Word-breaking hyphenation
\r\n
PDF reflow
\r\n
Take screenshot with diagonal swipe
\r\n
Export highlights to Evernote
\r\n
Fills more screen space
\r\n
User-installed fonts
\r\n
\r\n\r\n
How to get it running:
\r\n\r\n
\r\n
Jailbreak your Kindle, refer to this post. Jailbreaking doesn\'t give you any new programs. What it does is unlock the potential of the device and allows you to install different launchers and applications.
\r\n
Install alternate launcher, such as KUAL, the Kindle Unified Application Launcher. This is a framework that allows developers to create menu items that will launch applications on a jailbroken Kindle.
You can allow KOreader to take over styling of whatever book you\'re reading. If you don\'t like the style rules it applies, you can hack the epub CSS file located here: /koreader/data/epub.css
\r\n',238,0,0,'CC-BY-SA','kindle, kobo, ebooks, epub, jailbreaking, rooting, ebook readers',0,0,1),
(1938,'2016-01-06','How I prepare HPR shows',1574,'I use my own tools for preparing my HPR shows. I talk about them in this episode','
How I prepare HPR shows
\r\n
Introduction
\r\n
I have been contributing shows to Hacker Public Radio since 2012. In those far off days (!) we sent everything in via FTP, and had to name the files with a combination of our host id, our name, the slot number and the title. The show notes had to contain a chunk of metadata in a defined format to signal all of the various attributes of the show. I found myself making numerous mistakes with this naming and metadata formatting and so started designing and writing some tools to protect myself from my own errors.
\r\n
I started developing a Bash script in mid-2013 which I called hpr_talk. I used Bash since I thought I might be able to make something with a small footprint that I could share, which might be useful to others. The script grew and grew and became increasingly complex and I found I needed to add other scripts to the toolkit and to resort to Perl and various Perl modules to perform some actions.
\r\n
Then in 2014 Ken changed the upload procedure to what it is now. This is a much better design and does away with the need to name files in odd ways and add metadata to them. However, this left my toolkit a bit high and dry, so I shelved the plans to release it.
\r\n
Since then I have been enhancing the hpr_talk toolkit, adding features that I found useful and removing bugs, until the present time. Now it is probably far too complex and idiosyncratic to be of direct use to others, and is rather too personalised to my needs to be easily shared. Nevertheless, it is available on GitLab and I am going to describe it here in case it (or the methods used) might be of interest to anyone.
I had to record this in two parts. In the second part there was a constant background hum which I tried to remove. My removal process was not particularly successful I\'m afraid, so it cuts in and out. I\'m still learning how to do this sort of thing in Audacity!
\r\n',225,0,1,'CC-BY-SA','Markdown,Pandoc,ePub,Bash,Perl,FTP',0,0,1),
(1943,'2016-01-13','HPR AudioBook Club 11.5 - Interview with David Collins-Rivera',8866,'The HPR Audiobook Club interviews the author of the latest book we reviewed.','
SUMMARY
\r\n
In this episode, the HPR_AudioBookClub interviews David Collins-Rivera.
\r\n
David\'s Writing
\r\n
\r\n
\r\n
\r\n
\r\n
David\'s Voice work and Acting
\r\n
\r\n
\r\n
\r\n
\r\n
(summary)
\r\n
BEVERAGE REVIEWS
\r\n
As usual, the HPR_AudioBookClub took some time to review the beverages that each of us were drinking during the episode
\r\n
\r\n
x1101: Green & Mint tea. Very mellow and refreshing
\r\n
Thaj: Typical homemade lemonade. Teeth rotting good :)
\r\n
pokey: I was drinking a can of Polar Lime Seltzer. I love seltzer, and lime is my favorite flavor. I think that seltzer feels (not tastes!) like cheap beer, and I once used it to help me quit drinking beer. I have since quit quitting beer, but I now I can\'t quit seltzer
pegwole suggested this AudioBook, and we all thought that horror was a pretty good selection for our October episode.
\r\n
NEXT RECORDING
\r\n
Our next book club recording will be 2014/10/14T23:00:00+00:00. https://en.wikipedia.org/wiki/ISO_8601#Times If you\'d like a Google calendar invite, or if you\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hpr at hackerpublicradio dot org\'
\r\n
OUR AUDIO
\r\n
This episode was processed using Audacity https://audacity.sourceforge.net/. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. It\'s been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
Mumble uses a sample rate of 48kHz, but HPR requires a sample rate of 44.1kHz so the first step in our audio process is to resample the file at 44.1kHz. Resampeling can take a long time if you don\'t have a powerful computer, and sometimes even if you do. If you record late at night, like we do, you may want to start the task before you go to bed, and save it first thing in the morning, so that the file is ready to go the next time you are.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\r\n
\r\n
Threshold: -30db
\r\n
Noise Floor: -50db
\r\n
Ratio: 3:1
\r\n
Attack Time: 0.2sec
\r\n
Decay Time: 1.0 sec
\r\n
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata. We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extreemly effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too agressively your audio may sound sped up and choppy.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR FTP server.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.
\r\n
FURTHER RECOMMENDATIONS
\r\n
FEEDBACK
\r\n
Thank you very much for listening to this episode of the HPR_AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time. Please leave a few words in the episode\'s comment section.\r\n As always; remember to visit the HPR contribution page HPR could really use your help right now.
\r\nAt Mozilla, we’re a global community of technologists, thinkers and builders working together to keep the Internet alive and accessible, so people worldwide can be informed contributors and creators of the Web. We believe this act of human collaboration across an open platform is essential to individual growth and our collective future.\r\n
\r\n\r\n
\r\nMozilla is a free-software community, created in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, with only minor exceptions. The community is supported institutionally by the Mozilla Foundation and its tax-paying subsidiary, the Mozilla Corporation.\r\n \r\nMozilla produces many products such as the Firefox web browser, Thunderbird e-mail client, Firefox Mobile web browser, Firefox OS mobile operating system, Bugzilla bug tracking system and other projects.\r\n
\r\n\r\n
Listen to the interview with Francisco Picolini, Community Events Manager
\r\nThe mission of the Apache Software Foundation (ASF) is to provide software for the public good. We do this by providing services and support for many like-minded software project communities of individuals who choose to join the ASF.\r\n
\r\nIn a nutshell, Jenkins is the leading open source automation server. Built with Java, it provides hundreds of plugins to support building, testing, deploying and automation for virtually any project. \r\n \r\nJenkins is an award-winning, cross-platform, continuous integration and continuous delivery application that increases your productivity. Use Jenkins to build and test your software projects continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. It also allows you to continuously deliver your software by providing powerful ways to define your build pipelines and integrating with a large number of testing and deployment technologies.\r\n
\r\nXWiki Enterprise is a professional wiki with enterprise features such as Blog, strong rights management, LDAP authentication, PDF export, full skining and more. It also includes an advanced Form and scripting engine making it a development environment for data-based applications. It has powerful extensibility features such as scripting in pages, plugins and a highly modular architecture.\r\n \r\nSee the full feature list for more: https://enterprise.xwiki.org/xwiki/bin/view/Main/Features.\r\n
\r\nDokuWiki is a simple to use and highly versatile Open Source wiki software that doesn\'t require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator\'s favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.\r\n
\r\nTiki is the Free / Libre / Open Source Web Application Platform with the most built-in features. Whatever feature you can imagine running in a browser window, chances are Tiki does it.\r\n
\r\n\r\n
\r\nTiki Wiki CMS Groupware or simply Tiki, originally known as TikiWiki, is a free and open source Wiki-based content management system and online office suite written primarily in PHP and distributed under the GNU Lesser General Public License (LGPL) license. In addition to enabling websites and portals on the internet and on intranets and extranets, Tiki contains a number of collaboration features allowing it to operate as a Geospatial Content Management System (GeoCMS) and Groupware web application.\r\n
\r\nThe Wikimedia Foundation, Inc. is a nonprofit charitable organization dedicated to encouraging the growth, development and distribution of free, multilingual, educational content, and to providing the full content of these wiki-based projects to the public free of charge. The Wikimedia Foundation operates some of the largest collaboratively edited reference projects in the world, including Wikipedia, a top-ten internet property.\r\n
\r\nLinux From Scratch (LFS) is a type of a Linux installation and the name of a book written by Gerard Beekmans, among others. The book gives readers instructions on how to build a Linux system from source. The book is available freely from the Linux From Scratch site and is currently in version 7.8.\r\n \r\nLinux From Scratch is a way to install a working Linux system by building all components of it manually. This is, naturally, a longer process than installing a pre-compiled Linux distribution. According to the Linux From Scratch site, the advantages to this method are a compact, flexible and secure system and a greater understanding of the internal workings of the Linux-based operating systems.\r\n
\r\n\r\n
Listen to the interview with Jean-Philippe Mengual
\r\nPowerful, stable, mature, portable\r\n \r\nPerl 5 is a highly capable, feature-rich programming language with over 27 years of development. Perl 5 runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large scale development projects.\r\n \r\n\"Perl\" is a family of languages, \"Perl 6\" is part of the family, but it is a separate language which has its own development team. Its existence has no significant impact on the continuing development of \"Perl 5\".\r\n
\r\n\r\n
Listen to the interview with Wendy G.A. van Dijk, Mark \"shadowcat\" Keating, and Curtis \"Ovid\" Poe
\r\nA Language Independent Code Analysis Application. coala is an application that makes it very easy, writing analysis for any programming language or even arbitrary textual data. It is a useful abstraction that provides a convenient user interface and takes away a lot of common tasks from the algorithm developer, effectively making bare research available for production use.\r\n
\r\nThe Google Summer of Code (GSoC) is an international annual program, first held from May to August 2005, in which Google awards stipends (of US$5,500, as of 2015) to all students who successfully complete a requested free and open-source software coding project during the summer. The program is open to students aged 18 or over – the closely related Google Code-In is intended for students under the age of 18.\r\n
\r\nWe wanted everyone to be able to enjoy the experience of making. Whether it was a cat dressed as an astronaut or a mechanical masterpiece. We set it as our goal to enable you to make those things. So we built a pioneering device that everyone could use and enjoy. We made it open source so everyone really could pitch in. And we started to grow.\r\n
\r\n',30,78,0,'CC-BY-SA','FOSDEM, Mozilla, Apache, Jenkins, xwiki, dokuwiki, tikiwiki, MediaWiki, Linux from scratch, Perl, Barghest, Coala, Google Summer of Code, Ultimaker',0,0,1),
(1960,'2016-02-05','FOSDEM 2016 AW Building and more',6952,'FreeBSD,Matrix,Brainduino,Butterknife,pyhurdy,Coreboot,OpenEmbedded, PicoTCP,PTXdist,JavaCardPro','
\r\nThe FreeBSD Foundation is a 501(c)(3), US based, non-profit organization dedicated to supporting and building the FreeBSD Project and community worldwide. The Foundation gratefully accepts donations from individuals and businesses, using them to fund and manage projects, sponsor FreeBSD events, Developer Summits and provide travel grants to FreeBSD developers.\r\n \r\nIn addition, the Foundation represents the FreeBSD Project in executing contracts, license agreements, copyrights, trademarks, and other legal arrangements which require a recognized legal entity. The FreeBSD Foundation is entirely supported by donations.\r\n<\r\nThe FreeBSD Foundation will support both the development and the popularization of FreeBSD, the world\'s best open source operating system.\r\n
\r\n\r\n
Listen to the interview with Ed Maste, Director of Project Development
\r\nMatrix is an open standard for decentralised persistent communication over IP. It provides simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers. Matrix can be used for decentralised group chat, WebRTC signaling, Internet of Things data transfer, and anywhere you need a common data fabric to link together fragmented silos of communication. Our focus is on simplicity and security.\r\n
\r\nIn the recent years, affordable Brain-Computer Interfaces are becoming more accessible for consumers. Applications range from controlling computers / machines, biofeedback and Quantified Self. At first sight, the current generation of commercial devices seem to be decent in their functionality, and various use cases are suggested. However, neurophysiological signal quality, as well as limitations of software and hardware hackability are among the greatest issues and hurdles towards advancement in user experience. This is why we started to work on Brain-Duino, an open-source brainwave amplifier shield for the Arduino and other microcontrollers. Brain-Duino is a high quality, low noise and affordable EEG / BCI for hackers, makers, researchers, artists and other enthusiasts. \r\n
\r\nButterknife is the last missing piece of the puzzle that makes Linux-based desktop OS deployment a breeze. Butterknife complements your Puppet or Salt infrastructure and reduces the time you spend setting up Linux-based desktop machines. Lauri developed Butterknife as part of his MSc thesis at KTH while preparing for deployment of 4000+ dual-boot desktops and laptops of Tallinn Education Board. Butterknife is released under MIT license, feel free to share and improve.\r\n
\r\ncoreboot is an extended firmware platform for delivering lightning fast and ultra secure boot experience on modern computers and embedded systems. As an Open Source project it provides auditability and helps regaining control over technology.\r\n
\r\n\r\n
\r\nflashrom is a utility for identifying, reading, writing, verifying and erasing flash chips. It is designed to flash BIOS/EFI/coreboot/firmware/optionROM images on mainboards, network/graphics/storage controller cards, and various other programmer devices.\r\n
\r\n\r\n
Listen to the interview with Carl-Daniel Hailfinger
\r\nWelcome to OpenEmbedded, the build framework for embedded Linux. OpenEmbedded offers a best-in-class cross-compile environment. It allows developers to create a complete Linux Distribution for embedded systems.\r\n
\r\npicoTCP is the answer for a size, speed and feature conscious open source TCP/IP stack for embedded devices.\r\n \r\nEach component of the stack is deployed in a separate module, allowing the user to select at compile time what needs to be included for any specific platform. This allows you to free up memory and resources, which are often mission-critical for a project.\r\n \r\nThe provided API\'s are small, well documented and give you access to the library facilities, both from the applications and from the device drivers. The library facilitates the integration with the surroundings and minimizes the time needed to combine the stack with existing code. The support required to port to a new architecture is reduced to a set of macros defined in a header file specific for the platform.\r\n
\r\n\r\n
Listen to the interview with Toon Peters, Embedded Software Engineer at Intelligent Systems Belux by Altran
\r\nWhat is the best way to build a Linux distribution for an embedded system in a reproducible way, caring about long term maintenance and small footprint? PTXdist is a GPL licensed build system for userlands, started by Pengutronix. It uses the Kconfig configuration system from the Linux kernel. Although PTXdist (without patches) still fits on one disc, a whole root filesystem can be built as easy as \"ptxdist go\".\r\n
\r\n\r\n
\r\nbarebox is a bootloader designed for embedded systems. It runs on a variety of architectures including x86, ARM, MIPS, PowerPC and others. barebox aims to be a versatile and flexible bootloader, not only for booting embedded Linux systems, but also for initial hardware bringup and development. barebox is highly configurable to be suitable as a full-featured development binary as well as for lean production systems. Just like busybox is the Swiss Army Knife for embedded Linux, barebox is the Swiss Army Knife for bare metal, hence the name.\r\n
\r\nJava Card OpenPlatform (JCOP) is a smart card operating system for the Java Card platform developed by IBM Zürich Research Laboratory. On 31 January 2006 the development and support responsibilities transferred to the IBM Smart Card Technology team in Böblingen, Germany. Since July 2007 support and development activities for the JCOP operating system on NXP / Philips silicon are serviced by NXP Semiconductors.\r\n
\r\nTrack name : Free Software Song\r\nPerformer : Fenster\r\nRecorded date : 2002\r\nCopyright : Copyright (C) 2002, \r\nFenster LLC. Verbatim copying of this entire recording is permitted in any medium, \r\nprovided this notice is preserved. \r\nPerformers: \r\nPaul Robinson (vocals), \r\nRoman Kravec (guitar), \r\nEd D\'Angelo (bass), \r\nDave Newman (drums), \r\nBrian Yarbrough (trumpet), \r\nTony Moore (trumpet). \r\n
\r\n',30,78,0,'CC-BY-SA','FOSDEM, FreeBSD, Matrix, Brainduino, Butterknife, pyhurdy, Coreboot, OpenEmbedded, PicoTCP, PTXdist, JavaCardPro, Knitting',0,0,1),
(1950,'2016-01-22','Kdenlive Part 2: Advanced Editing Technique',1057,'We discuss advanced editing techniques and review the tools you\'ll be using as a video editor.','
\r\nHello again HPR listeners this is Geddes back with Part 2 in the series covering the video editing application KdenLive.\r\n
\r\n
\r\nLast time in part one we looked at Installing, First launch, Your workspace, Importing footage, Three-point editing, and lastly The basic tools. \r\nhttps://hackerpublicradio.org/eps.php?id=1925\r\n
\r\n
\r\nThis time round we’ll be looking at advanced editing technique and Part 2 covers the following topics: \r\n
',310,0,0,'CC-BY-SA','video editing,Kdenlive',0,0,1),
-(1952,'2016-01-26','Time now Ladies and Gents',1860,'How to get the total duration of a lot of media files.','
\r\n',30,42,0,'CC-BY-SA','fix_tags,ffprobe,ffmpeg,bc,sed,awk,grep,time,iso8601,date,mediainfo,xmlstarlet',0,0,1),
+(1952,'2016-01-26','Time now Ladies and Gents',1860,'How to get the total duration of a lot of media files.','
\r\n',30,42,0,'CC-BY-SA','fix_tags,ffprobe,ffmpeg,bc,sed,awk,grep,time,iso8601,date,mediainfo,xmlstarlet',0,0,1),
(1965,'2016-02-12','Adding SQLite as a datasource to SQLeo',601,'Using the graphical query builders from SQLeo with SQLite','
I have been looking for a tool that will graphically and programmatically track identifiers as they pass through systems. I could have done this in Inkscape after following the excellent tutorials on https://screencasters.heathenx.org/, however I also wanted to be able to describe the relationships programmatically.
\r\n
This got me to thinking about graphical query builders for databases. The idea is to show each system as a table block and then draw lines between them to show how \"Field_X\" in \"System_A\" will map to \"Field_Y\" in \"System_B\". Many of the proprietary and some free database solutions allow this type of view. However I also want to easily package the entire thing up, so that someone else could access it without needing to pay for or install any specialized software. That limited the choice of database to SQLite, which is small, supported on many platforms and is released into the Public Domain.\r\n
SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. SQLite is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.
\r\nPlease follow the instructions on the SQLite site for information on how you can install it on your system. For me on Fedora it\'s simple to install via dnf/yum. You might also want to install some GUI managers if that\'s your thing.\r\n
dnf install sqlite sqlitebrowser sqliteman\r\n
\r\nI created a small database for demonstration purposes, consisting of two tables and one field in each.\r\n
Next step is to download SQLeo Visual Query Builder which has support for a graphical query builder.\r\n
A powerful SQL tool to transform or reverse complex queries (generated by OBIEE, Microstrategy, Cognos, Hyperion, Pentaho ...) into diagrams to ease visualization and analysis. A graphical query builder that permits to create complex SQL queries easily. The GUI with multi-connections supports virtually all JDBC drivers, including ODBC bridge, Oracle, MySQL, PostgreSQL, Firebird, HSQLDB, H2, CsvJdbc, SQLite. And top of that, everything is open-source!
\r\nSQLeo is a Java Tool and there is a limited version available on the web site which is limited to 3 tables per graph and 100 rows. Now as the program is released under the GPLv2.0, you could download the code and remove the restrictions. You can also support the project to the tune of €10 and you will get the full version ready to rock.\r\n
Unzip the file and enter the newly created directory, and run the program as follows:\r\n
java -Dfile.encoding=UTF-8 -jar SQLeoVQB.jar\r\n
\r\nOne slightly confusing thing, and the reason for this post, is that I could not find support for SQLite listed in the list of databases to connect to. A quick search on the support forum and I found the question \"Connection to SQLite DB\". I found the answer a bit cryptic until I read the manual related to JDBC Drivers, which told me how to add the sqlite library.\r\n
SQLeo uses a standard Java sqlite library that is released under the Apache Software License, Version 2.0. You can download it from the SQLite JDBC MVNRepository and save it into the same directory as SQLeo.
\r\n
Right Click in the Metadata explorer window and select new driver.
\r\n',30,0,0,'CC-BY-SA','SQLite, JDBC, SQLeo',0,0,1),
-(1961,'2016-02-08','2015-2016 HPR New Years Show Episode 1',9946,'Education, Podcasts, Trains and Bikes','
HPR NEW YEARS EVE SHOW EPISODE: 1
\r\n
\r\n
FiftyOneFifty and Thaj Sara discuss modern education
\r\n',159,121,1,'CC-BY-SA','New Year,2016',0,0,1),
+(1961,'2016-02-08','2015-2016 HPR New Years Show Episode 1',9946,'Education, Podcasts, Trains and Bikes','
HPR NEW YEARS EVE SHOW EPISODE: 1
\r\n
\r\n
FiftyOneFifty and Thaj Sara discuss modern education
\r\n',159,121,1,'CC-BY-SA','New Year,2016',0,0,1),
(1962,'2016-02-09','2015-2016 HPR New Years Show Episode 2',12011,'distros, Wearable, distros, RIP Ian Murdock, Chromebooks, Samsung, WW1, Libre Planet, TTS, and more','
',159,121,1,'CC-BY-SA','New Year,2016',0,0,1),
(1963,'2016-02-10','2015-2016 HPR New Years Show Episode 3',10762,'Dyson Sphere, Star Wars, spammers, Tizen, Kevie, TV, Security, Single board PC\'s in general','
\r\n',159,121,1,'CC-BY-SA','New Year,2016',0,0,1),
(1964,'2016-02-11','2015-2016 HPR New Years Show Episode 4',11108,'Cheap computers, ARM, Audio Book Club, Lights, Living, Orlando, Etching, Pronunciation, Pranks','
HPR NEW YEARS EVE SHOW EPISODE: 4
\r\n
\r\n
Can you buy a NEW CHEAP computer that can run GNU Linux?
\r\n',159,121,1,'CC-BY-SA','New Year,2016',0,0,1),
@@ -18293,15 +18411,15 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(1972,'2016-02-23','How I got into Linux',1224,'My first podcast. Me rambling about how I got into Linux.','
\r\nI will apologize now for some of the rough sound. This was recorded on a very old Sony tape recorder (all I had at the time). Hopefully, the tape hiss will cover up some of my Kentucky accent. Or vice versa. Whatever. This is the saga of me. And Linux. \r\n
',325,29,1,'CC-BY-SA','Sony tape recorder,RedHat Linux,Enlightenment E16,dial-up,Mandrake,Debian,Icepack Linux,Slackware,Linux Mint,CrunchBang,OpenBSD',0,0,1),
(1977,'2016-03-01','What\'s In My Bag',914,'EDC/Gear I carry/use','
',325,23,1,'CC-BY-SA','Velox,multi-tool,Pocket Reference,screwdriver,Thermos',0,0,1),
(1970,'2016-02-19','How I got started with Linux',1665,'I talk at length about how I got started with Linux','
\r\nThis story begins at the beginning of 2010. I was broke at the time so I was trying to find a free operating system. I needed something I could run on my PC’s at home. I had searched on the Internet, but found nothing useful for a long time. But one day I was at Barnes and Noble and I saw a magazine for Linux. (While I had heard of linux before I never thought of it as something I would ever be able to use.) When I asked people who I knew were computer professionals, I was told it was for people that were experts, and difficult to use. I never heard anything positive about it. I am so amazed that I hadn’t came across it sooner.
\r\n
When I read the magazine I became exposed to Ubuntu 9.10. Karmic Koala. It sounded so good, as if it was exactly what I was looking for. As a result, I got very excited took it home, and to my surprise had such an easy time installing it to my PC that I decided to run it along with Windows XP as a dual boot system. All I did was put the live CD in the drive and the instructions were step by step you would have to be pretty slow to not get how to set things up.
\r\n
Since then I have been very satisfied with Ubuntu in general and I have been able to check out later versions of it such as 10.04 (Maverick Meerkat) and 10.10 Lucid Lynx. I am looking forward to 11.04 Natty Narwhal for how it integrates multi-touch even more than 10.04. This experience just goes to show once again how I manage to find the coolest stuff by accident.
\r\n
I will keep you posted on how I learn and grow with the different distros available so keep posted.
',297,29,0,'CC-BY-SA','linux',0,0,1),
-(1973,'2016-02-24','Free/Libre/Vrije Software: The Goal and the Path',6929,'A presentation given by Richard Stallman as part of FOSDEM fringe.','
\r\nNOTE for mp3 subscribers: On the request of RMS, we are not distributing this show in mp3 format. \r\n
\r\n\r\n
\r\nThis is a live recording of the presentation given by Richard Stallman as part of FOSDEM fringe. It was recorded at Auditorium D0.03, Campus Etterbeek, Vrije Universiteit Brussel, Pleinlaan 2, 1050 Ixelles, Belgium on Jan 29, 2016. You may remember that pokey interviewed Richard Stallman in episode hpr1116 (https://hackerpublicradio.org/eps.php?id=1116)\r\n
\r\nRichard Matthew Stallman (born March 16, 1953), often known by his initials, rms,[1] is a software freedom activist and computer programmer. He campaigns for software to be distributed in a manner such that its users receive the freedoms to use, study, distribute and modify that software. Software that ensures these freedoms is termed free software. Stallman launched the GNU Project, founded the Free Software Foundation, developed the GNU Compiler Collection and GNU Emacs, and wrote the GNU General Public License.\r\n \r\nStallman launched the GNU Project in September 1983 to create a Unix-like computer operating system composed entirely of free software. With this, he also launched the free software movement. He has been the GNU project\'s lead architect and organizer, and developed a number of pieces of widely used GNU software including, among others, the GNU Compiler Collection, the GNU Debugger and the GNU Emacs text editor. In October 1985 he founded the Free Software Foundation.\r\n \r\nStallman pioneered the concept of copyleft, which uses the principles of copyright law to preserve the right to use, modify and distribute free software, and is the main author of free software licenses which describe those terms, most notably the GNU General Public License (GPL), the most widely used free software license.\r\n \r\nIn 1989 he co-founded the League for Programming Freedom. Since the mid-1990s, Stallman has spent most of his time advocating for free software, as well as campaigning against software patents, digital rights management, and other legal and technical systems which he sees as taking away users\' freedoms, including software license agreements, non-disclosure agreements, activation keys, dongles, copy restriction, proprietary formats and binary executables without source code.\r\n \r\nAs of 2014, he has received fifteen honorary doctorates and professorships.\r\n\r\n
',30,0,0,'CC-BY-SA','RMS, GNU, Four freedoms',0,0,1),
+(1973,'2016-02-24','Free/Libre/Vrije Software: The Goal and the Path',6929,'A presentation given by Richard Stallman as part of FOSDEM fringe.','
\r\nNOTE for mp3 subscribers: On the request of RMS, we are not distributing this show in mp3 format. \r\n
\r\n\r\n
\r\nThis is a live recording of the presentation given by Richard Stallman as part of FOSDEM fringe. It was recorded at Auditorium D0.03, Campus Etterbeek, Vrije Universiteit Brussel, Pleinlaan 2, 1050 Ixelles, Belgium on Jan 29, 2016. You may remember that pokey interviewed Richard Stallman in episode hpr1116 (https://hackerpublicradio.org/eps.php?id=1116)\r\n
\r\nRichard Matthew Stallman (born March 16, 1953), often known by his initials, rms,[1] is a software freedom activist and computer programmer. He campaigns for software to be distributed in a manner such that its users receive the freedoms to use, study, distribute and modify that software. Software that ensures these freedoms is termed free software. Stallman launched the GNU Project, founded the Free Software Foundation, developed the GNU Compiler Collection and GNU Emacs, and wrote the GNU General Public License.\r\n \r\nStallman launched the GNU Project in September 1983 to create a Unix-like computer operating system composed entirely of free software. With this, he also launched the free software movement. He has been the GNU project\'s lead architect and organizer, and developed a number of pieces of widely used GNU software including, among others, the GNU Compiler Collection, the GNU Debugger and the GNU Emacs text editor. In October 1985 he founded the Free Software Foundation.\r\n \r\nStallman pioneered the concept of copyleft, which uses the principles of copyright law to preserve the right to use, modify and distribute free software, and is the main author of free software licenses which describe those terms, most notably the GNU General Public License (GPL), the most widely used free software license.\r\n \r\nIn 1989 he co-founded the League for Programming Freedom. Since the mid-1990s, Stallman has spent most of his time advocating for free software, as well as campaigning against software patents, digital rights management, and other legal and technical systems which he sees as taking away users\' freedoms, including software license agreements, non-disclosure agreements, activation keys, dongles, copy restriction, proprietary formats and binary executables without source code.\r\n \r\nAs of 2014, he has received fifteen honorary doctorates and professorships.\r\n\r\n
',30,0,0,'CC-BY-SA','RMS, GNU, Four freedoms',0,0,1),
(1974,'2016-02-25','Ubuntu Community donations, Governance and Hardware',1598,'In general I was feeling bad about how donations work with Ubuntu','
\r\nThe only one that I found was non profit was debain. It a real nonprofit certification in the USA.\r\n
',129,0,0,'CC-BY-SA','donations,Ubuntu,Xubuntu,Fedora,OpenSUSE,Debian',0,0,1),
(1975,'2016-02-26','Interview With An Android App Developer',829,'Sigflup here and holy crud it turns out my brother in law is an android developer','
\r\nIt\'s Christmas time and sigflup is spending time interviewing Dillon, who\'s an android developer.\r\n
',115,78,1,'CC-BY-SA','interview,android',0,0,1),
(1979,'2016-03-03','How to Make Perfect Steel-Cut Oats',630,'I explain how to make the perfect tasty, nutritious breakfast in a slow cooker','
How to Make Perfect Steel-Cut Oats
\r\n\r\n
Steel-Cut oats are amazingly good—delicious and nutritious—but they\'re kind of a pain to cook because they\'re so hard and require so much simmering. It can take up to 30 minutes to cook them on the stove top and you have to stir constantly to make sure they don\'t boil over or stick to the pan. I tried doing them in a rice maker and in the microwave, neither of which turned out well. Then I tried the slow cooker and found that this is the perfect way to make steel-cut oats exactly right every time with hardly any effort.
\r\n\r\n
Ingredients
\r\n\r\n
\r\n
Steel-cut oats
\r\n
Water (4-to-1 water-to-oats ratio)
\r\n
Salt (¼ teaspoon for each ¼ c. oats)
\r\n
Pure maple syrup to taste
\r\n
Butter to taste
\r\n
\r\n\r\n
Instructions
\r\n\r\n
Just put all the ingredients in the slow cooker and cook on 200 degrees Fahrenheit for about 4 hours. The water and oats should be combined in a 4 to 1 ratio. When I make this using American measurements, I used 1 Cup water for each ¼ cup of oats. In the metric system this is about 240 ml water for each 40 grams of oats.
\r\n',238,93,0,'CC-BY-SA','oatmeal, breakfast, cooking, slow cooker, oats, steel-cut oats',0,0,1),
-(1985,'2016-03-11','Fixing Bug 1092571',212,'Cant mount drive with cifs but can with kioslave smb','
\r\nAfter a windows server upgrade in work, I was no longer able to mount samba network drives from my laptop. Basically it boils down to not been able to mount drives on the console, but been able to browse them in the GUI. After investigating and trying all the options presented, I filed a bug with Fedora. \r\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1092571\r\n
\r\n
\r\nDespite filling in all the information, the bug remained untouched by human hands. Robots shut it, I reopened it. To be honest I thought it might be my set-up as nobody else was reporting it as an issue. Sure there were other people reporting problems but not attached to this bug.\r\n
\r\nJeremy was immediately able to pinpoint the issue to the kernel probably only supporting SMB version 1, while user space uses libsmbclient that supports smb1/smb2.\r\n
',30,0,0,'CC-BY-SA','samba, smb1, smb2, /etc/fstab',0,0,1),
+(1985,'2016-03-11','Fixing Bug 1092571',212,'Cant mount drive with cifs but can with kioslave smb','
\r\nAfter a windows server upgrade in work, I was no longer able to mount samba network drives from my laptop. Basically it boils down to not been able to mount drives on the console, but been able to browse them in the GUI. After investigating and trying all the options presented, I filed a bug with Fedora. \r\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1092571\r\n
\r\n
\r\nDespite filling in all the information, the bug remained untouched by human hands. Robots shut it, I reopened it. To be honest I thought it might be my set-up as nobody else was reporting it as an issue. Sure there were other people reporting problems but not attached to this bug.\r\n
\r\nJeremy was immediately able to pinpoint the issue to the kernel probably only supporting SMB version 1, while user space uses libsmbclient that supports smb1/smb2.\r\n
',30,0,0,'CC-BY-SA','samba, smb1, smb2, /etc/fstab',0,0,1),
(1978,'2016-03-02','Ultra High Vacuum: loading samples',162,'A short overview of how to load a sample into UHV (ultra high vacuum)','
\r\nI hope this is the correct version of my introduction to Ultra high vacuum systems and loading samples. \r\n
\r\n
\r\nPlease consult with a professional before using nitrogen and ultra high vacuum system.\r\n
\r\n
\r\nNitrogen is dangerous in close environments as it displaces oxygen so please consult the health and safety risks. \r\n
\r\n',301,0,1,'CC-BY-SA','Ultra high vacuum,nitrogen',0,0,1),
-(2221,'2017-02-06','HPR Community News for January 2017',5117,'HPR Volunteers talk about shows released and comments posted in January 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 51 comments in total.
hpr2214\n(2017-01-26) \"Upgrading Vehicle Lights From Halogen to LED\"\nby Jon Kulp.
\n
\n
Comment 1:\nSteve on 2017-01-26:\n\"What about the blinkers?\"
Comment 2:\nClinton Roy on 2017-01-26:\"[no title]\"
Comment 3:\nJonathan Kulp on 2017-01-27:\n\"Probably not \"
Comment 4:\nJonathan Kulp on 2017-01-27:\n\"Blinkers\"
Comment 5:\nKen Fallon on 2017-01-27:\n\"Smokin' hot CANbus LED lamps. (230C in open air.)\"
Comment 6:\nJonathan Kulp on 2017-01-27:\n\"Yikes\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2241,'2017-03-06','HPR Community News for February 2017',2099,'HPR Volunteers talk about shows released and comments posted in February 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 13 comments in total.
\n
There are 5 comments on\n5 previous shows:
\n
hpr2198\n(2017-01-04) \"How awesome is Guix and why will it take over the world\"\nby clacke.
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2261,'2017-04-03','HPR Community News for March 2017',4221,'HPR Volunteers talk about shows released and comments posted in March 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 37 comments in total.
Comment 2:\nDave Morriss on 2017-03-30:\n\"Interesting\"
Comment 3:\nJonathan Kulp on 2017-03-31:\n\"Minidisk Walkman\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2221,'2017-02-06','HPR Community News for January 2017',5117,'HPR Volunteers talk about shows released and comments posted in January 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 51 comments in total.
hpr2214\n(2017-01-26) \"Upgrading Vehicle Lights From Halogen to LED\"\nby Jon Kulp.
\n
\n
Comment 1:\nSteve on 2017-01-26:\n\"What about the blinkers?\"
Comment 2:\nClinton Roy on 2017-01-26:\"[no title]\"
Comment 3:\nJonathan Kulp on 2017-01-27:\n\"Probably not \"
Comment 4:\nJonathan Kulp on 2017-01-27:\n\"Blinkers\"
Comment 5:\nKen Fallon on 2017-01-27:\n\"Smokin' hot CANbus LED lamps. (230C in open air.)\"
Comment 6:\nJonathan Kulp on 2017-01-27:\n\"Yikes\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2241,'2017-03-06','HPR Community News for February 2017',2099,'HPR Volunteers talk about shows released and comments posted in February 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 13 comments in total.
\n
There are 5 comments on\n5 previous shows:
\n
hpr2198\n(2017-01-04) \"How awesome is Guix and why will it take over the world\"\nby clacke.
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2261,'2017-04-03','HPR Community News for March 2017',4221,'HPR Volunteers talk about shows released and comments posted in March 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 37 comments in total.
Comment 2:\nDave Morriss on 2017-03-30:\n\"Interesting\"
Comment 3:\nJonathan Kulp on 2017-03-31:\n\"Minidisk Walkman\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(1976,'2016-02-29','Introduction to sed - part 1',2668,'What sed is and how to use it in a simple way','
Introduction to sed - part 1
\r\n
sed is an editor which expects to read a stream of text, apply some action to the text and send it to another stream. It filters and transforms the text along the way according to instructions provided to it. These instructions are referred to as a sed script.
\r\n
The name \"sed\" comes from Stream Editor, and sed was developed from 1973 to 1974 as a Unix utility by Lee E. McMahon of Bell Labs. GNU sed added several new features including better documentation, though most of it is only available on the command line through the info command. The full manual is of course available on the web.
',225,90,1,'CC-BY-SA','sed,stream editor,option,regular expression,substitution',0,0,1),
(1980,'2016-03-04','Fixing An Audio Problem while having a rant',593,'Describing how I solved an audio problem while having a rant about automation limiting control','
This podcast details how I solved an audio problem I discovered while trying to record another episode for HPR. I\'ll hopefully get around to recording my original idea at a later date.
\r\n
The recording was done in a bit of a hurry and I was a bit flustered so please excuse the fast talking and ranting.
\r\n',201,0,0,'CC-BY-SA','Audio, Hardware, Linux',0,0,1),
(1982,'2016-03-08','Whats in my virtual bag',1710,'The usual programs I use everyday in my system','
\r\n',323,23,1,'CC-BY-SA','Basic setup, Linux, Power user, Vim, Ratpoison, Sakura, Puppy Linux',0,0,1),
@@ -18372,9 +18490,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2065,'2016-07-01','Whats in My Bag',271,'This is a short episode about what I carry in My Geek bag at various times','
\r\n
0.00 Intro
\r\n
0.38 Lenovo x201
\r\n
1.10 Lenovo x200 Tablet
\r\n
1.30 Lenovo x61s
\r\n
2.25 Raspberry Pi stuff
\r\n
3.55 Portable HDD
\r\n
4.24 sign off
\r\n
\r\n',338,23,0,'CC-BY-SA','toolkit,laptop,tablet,netbook,Lenovo,Raspberry Pi,microSD,external HD',0,0,1),
(2052,'2016-06-14','A Nerdy Conversation With Linden About Technology',2429,'In this episode of HPR sigflup interviews Linden who specializes in databases.','
In this episode of HPR sigflup interviews Linden who specializes in databases. The subject of this interview varies wildly. All the way from databases to python and arch linux
\r\n
\r\nYou can contact Linden on twitter at @tesherista\r\n
',115,0,0,'CC-BY-SA','MySQL, SQLite, R, C, Python, Logo, Arch ',0,0,1),
(2076,'2016-07-18','What Magazines I read Part 1',300,'This is a short episode about the Magazines I read that may be of interest to other listeners','\r\n
Magazines I Read
\r\n
Hi This is Tony Hughes for Hacker Public Radio, I\'m trying to do a show once a month or so and I was thinking of ideas that might be of interest to the listeners out there.
\r\n
While there are regular shows on \'What\'s on my pod-catcher\' I\'ve never heard one about what magazines that people in the HPR community like to read. With the advent of digital media and subscription services such as Issuu, Magzter, Google Play Newsstand and I\'m sure many others which offer both Free and subscription content I\'m sure many of you like me have quite a number of magazines you regularly read, and some you dip in to from time to time. So this show is about the Magazines I like to read.
\r\n
First I\'d like to say that to facilitate regularly reading of digital media I feel for me a 10" tablet is the smallest format for comfortable reading (although for those of you with young enough eyesight to be able to read small fonts with no difficulty you may feel different). However my Tablet of choice is the 12" Samsung SM-P900 which I purchased in February 2015. My only gripe with this tablet is I\'ll probably never get Android 6 on it as it\'s now over 2 years since original release. While I agree with Apple that the 4:3 screen configuration for reading on a tablet is more user friendly I can not bring myself to spend that kind of money or be tied to the Apple ecosystem.
\r\n
So what Magazines do I actually read?
\r\n
\r\n
Linux Voice (https://www.linuxvoice.com) This is a Linux magazine that was set up a couple of years ago by some of the former editorial team from Linux Format after a successful Kick Starter Campaign. Good content for and about Linux and the Linux community and they support the community by distributing 50% of their annual profits back to the Open Source Community after a ballot of readers. They also release issues of the magazine with a creative commons licence 9 months after publication. This is the only magazine I currently have a Paper subscription to (it also comes with a free DRM free PDF copy for subscribers)
\r\n
Linux Format (https://www.linuxformat.com) Similar in content to Linux Voice but without quite the same community philosophy, but still a very good publication.
\r\n
MicroMart (https://subscribe.micromart.co.uk) This is a more general computer magazine that started in 1985, as a place you could buy and sell computers and components but is now more of a regular weekly magazine format with news, reviews and articles about all things computer and technology related. As I said in my Journey to Linux show this was the Magazine that introduced me to Linux in the late 90\'s early 00\'s. They still have a weekly Linux page and regular Raspberry Pi and other Linux related content.
\r\n
MagpPi (https://www.raspberrypi.org/magpi) This is the official Monthly magazine of the Raspberry Pi Community and as you will have worked out is focused on all things Raspberry Pi. Lots of Good content including: News, tutorials, and reviews of new peripherals for the Pi, and since being brought in house by the foundation it has a very professional look and feel about it. All the content is provided by members of the Raspberry Pi Community both from inside, and outside the Foundation. You can get a free Creative commons PDF from the website or to support the foundation you can subscribe to both Print and digital copies if you wish to.
\r\n
Full Circle Magazine (https://fullcirclemagazine.org/) This is a completely community driven magazine for all things related to Ubuntu Linux and its derivatives. They carry news of what is happening in the World of Ubuntu and articles and tutorials of how to use Linux software for both the beginner and more experienced users. This is a Creative Commons and can be downloaded free from the website in both PDF and e-book formats.
\r\n
PCLinuxOS Magazine (https://pclosmag.com/index.html) This is another community driven magazine from The PCLinuxOS community and is similar to Full Circle in its content, with the aim of helping users of this distro to get the most out of it they can. Also available as a free Creative Commons PDF download from their website.
\r\n',338,0,0,'CC-BY-SA','Magazine, Linux, Computing',0,0,1),
-(2281,'2017-05-01','HPR Community News for April 2017',5549,'HPR Volunteers talk about shows released and comments posted in April 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 43 comments in total.
Comment 1:\nTony Hughes on 2017-03-09:\n\"hpr 2280\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2306,'2017-06-05','HPR Community News for May 2017',5248,'HPR Volunteers talk about shows released and comments posted in May 2017','\n
New hosts
\n
\nWelcome to our new hosts: \n TheDUDE, \n Knox.\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 50 comments in total.
\n
There are 8 comments on\n8 previous shows:
\n
hpr2168\n(2016-11-23) \"Analogue Random Number Generation\"\nby klaatu.
Comment 2:\nDave Morriss on 2017-05-31:\n\"Glad you found it useful\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2326,'2017-07-03','HPR Community News for June 2017',4644,'HPR Volunteers talk about shows released and comments posted in June 2017','\n\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 38 comments in total.
The annual Podcrawl Glasgow will take place on Saturday July 29th\n at 6pm, starting in The State Bar, Holland Street, Glasgow ... and\n going on to who knows where!
We hope to see some HPR listeners and contributors there!
\n
\n
UK Table Kit\n
From @timttmy:
\n
Could you mention on the community news that I still have the\n HPR table kit and if anyone needs it to let me know via the\n mailing list. Sadly I won\'t be able to make oggcamp this year\n and I\'m a more than a little gutted as this will be the first\n time I\'ve missed the event. I hope somebody can represent HPR\n this year but I\'ve not heard any chatter of excitement about\n it on the interwebs from anyone yet.
\n
\n\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2281,'2017-05-01','HPR Community News for April 2017',5549,'HPR Volunteers talk about shows released and comments posted in April 2017','\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 43 comments in total.
Comment 1:\nTony Hughes on 2017-03-09:\n\"hpr 2280\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2306,'2017-06-05','HPR Community News for May 2017',5248,'HPR Volunteers talk about shows released and comments posted in May 2017','\n
New hosts
\n
\nWelcome to our new hosts: \n TheDUDE, \n Knox.\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 50 comments in total.
\n
There are 8 comments on\n8 previous shows:
\n
hpr2168\n(2016-11-23) \"Analogue Random Number Generation\"\nby klaatu.
Comment 2:\nDave Morriss on 2017-05-31:\n\"Glad you found it useful\"
\n
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2326,'2017-07-03','HPR Community News for June 2017',4644,'HPR Volunteers talk about shows released and comments posted in June 2017','\n\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 38 comments in total.
The annual Podcrawl Glasgow will take place on Saturday July 29th\n at 6pm, starting in The State Bar, Holland Street, Glasgow ... and\n going on to who knows where!
We hope to see some HPR listeners and contributors there!
\n
\n
UK Table Kit\n
From @timttmy:
\n
Could you mention on the community news that I still have the\n HPR table kit and if anyone needs it to let me know via the\n mailing list. Sadly I won\'t be able to make oggcamp this year\n and I\'m a more than a little gutted as this will be the first\n time I\'ve missed the event. I hope somebody can represent HPR\n this year but I\'ve not heard any chatter of excitement about\n it on the interwebs from anyone yet.
\n
\n\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2056,'2016-06-20','Interview with a young hacker',271,'This is a short interview with a young member of my makerspace and local Raspberry Jam','
The following interview is with a young member of the Maker Space and Raspberry Pi community here in the North West of the UK.
\r\n',338,78,0,'CC-BY-SA','interview,maker,makerspace,Blackpool,soldering,electronics,Python,EduPython,Open SUSE',0,0,1),
(2060,'2016-06-24','Introduction to sed - part 5',2889,'Finishing covering sed commands. Looking at some example scripts','
Introduction to sed - part 5
\r\n
This episode is the last one in the \"Introduction to sed\" series.
\r\n
In the last episode we looked at the full story of how sed works with the hold and pattern buffers. We looked at some of the commands that we had not yet seen and how they can be used to do more advanced processing using sed\'s buffers.
\r\n
In this episode we will look at a selection of the remaining commands, which might be described as quite obscure (even very obscure). We will also look at some of the example sed scripts found in the GNU sed manual.
\r\n',225,90,1,'CC-BY-SA','sed,stream editor,pattern space,hold space',0,0,1),
(2097,'2016-08-16','New Toys',555,'Story of my PC hardware journey in last 20 years','
Hi HPR listeners this is Tony Hughes talking from Blackpool UK
\r\n
I did a show a few weeks ago about my Geek Bags but didn’t talk about the Desktop PC I use and as I’ve just upgraded to a new (used) PC I thought I would tell the story of my Desktop PC’s over the years.
\r\n
I was a latecomer to the world of personal computing having been at school in the Late 60’s and early 70’s when we hadn’t even got calculators, if you were lucky to be able to work out the intricacy of it you may have had use of a slide rule. Even after calculators started to be more widely used I had a lecturer at college while studying marine engineering, that was so good with his slide rule and mental calculation, he could, and would often work out equations far faster than those of us using a calculator.
\r\n
I first came across my first IBM clone PC back at college in 1987 while studying a control systems course this was a Intel 286 PC which the college ran CAD/CAM software on and we used it to learn how to create engineering drawings electronically. This would be the last time I used a computer until the early 1990’s when by then I had changed career and become a Registered Nurse. I was working in a residential nursing home and we had access to a Windows 3.xx PC which I would use to create templates of the clinical paperwork we used for record keeping.
\r\n
Around this time I met my then wife to be and she needed a PC for the University Course she was on so we obtained a used Intel 386 PC from a Friend and upgraded the Ram from 1Mb to 4Mb which cost nearly half the price we paid for the PC £120, which in 1993 was a good chunk of cash. It was a time when there was a world shortage of Ram and offices were getting burgled just for the memory in the office PC’s.
\r\n
While we had this PC in the house it didn’t much interest me at the time, this was pre internet days for the average user, we weren’t on line at work and the Word processing software was Dos based and I hated using it, so would do the odd things I needed to at work during my break.
\r\n
Move forward 5 years and Windows 95 had taken over the world and there was this wonderful new OS called Windows 98 starting to appear in the shops. In September 1998 I went back to do a Nursing Degree in my specialist area of practice and found that we were required to submit all our course work in word processed format, no long hand written assignments this time around. So I decided that I would invest in a new home PC.
\r\n
There were a couple of Big Box PC retailers in the UK at the time that advertised heavily in the press and on TV and I chose to go to one of these and bought a PC with the following specs:
\r\n
Pentium 2 350 CPU, 128Mb Ram, 6Gig HDD, 56k modem and a DVD Rom. It also came bundled with a Scanner, Inkjet printer and software including MS Office for small Business. All for the grand total of £1400 which at the time was about a month’s take home pay so I had to pay for it with the flexible friend (my Credit Card for those of you too young to remember the ad’s)
\r\n
I also signed up for an AOL account to access the internet over the 56k modem, dog slow now but at the time was the only affordable way us mere mortals could afford home internet access. I remember it could take a minute or 2 to render my Bank’s web site when I started online banking in 2001 and that was using compression software to reduce the bandwidth.
\r\n
I used that PC to write all my college work and with the help of a couple of friends started to tinker with the PC, getting a 120 ZIP drive for it, and later adding a CD RW drive for storing documents and Photos that I’d scanned and later taken with my first digital Camera.
\r\n
By 2002 the PC was starting to get a bit long in the tooth and I decided it was time for an upgrade and I had a PC built for me by a local shop with P4 2.5Ghz CPU 40Gig HDD and 512Mb Ram (later upgraded to 2Gig) and a CD RW drive again later upgraded to DVD RW drive. This PC cost me half of what I paid for the P2 four years previously and was to be the last PC I bought new, all the PC’s including laptops I’ve owned since this PC have been second hand. Some given by family or friends, some built from parts of Freecycle/Freegle, and lately PC’s I’ve bought at a local computer auction in the north west of the UK.
\r\n
The title of this podcast is “New Toys” and so to the juicy bit, my Desktop for the last 6 years has been a Lenovo ThinkCentre 7373 Core 2 Duo PC with a 2.6Ghz CPU, 250Gig SSD, an upgrade from the 160Gig HDD it came with and 12Gig Ram also upgraded from the 4Gig it came with and requiring a bios flash to get the MB to support 16Gig. This rig has served me well but lately I have found it starting to feel its age and taking a long time to do things I now do regularly such as video and photo editing, Audio editing and virtual PC’s in virtualBox. So I decided it was time I looked around for an upgrade. As usual I was not in the market for a new PC, I could afford one but I don’t like splashing the cash unnecessarily. As luck would have it the monthly Auction catalog included a HP Compaq Elite 8300 i7 Micro Tower. I checked out the specs and liked what I read. So Monday 1st of August I took a trip to the auction and as luck would have it I became the proud owner of said PC for the princely sum of £212.80, hammer price of £190 plus commission.
\r\n
The full spec of the PC is: i7 3.4Ghz CPU (22nm architecture) 4 cores and 8 threads, 8Gig Ram Supports 32Gig 500Gig HDD, DVD RW drive and a card reader. Also came with a Win7 pro CoA but no installed OS.
\r\n
So it took me 10 minutes to install Linux Mint 18 and another 30 to complete the updates and install my software over and above the base install. It boots in just over a minute, which is only slightly slower than the old PC with an SSD, so I guess it will boot mega fast with an SSD upgrade, which is on the cards after I return from Holiday as may an upgrade to the Ram. I’ve already used some Ram from the old PC to increase to 12Gig but I need some matching 8Gig Ram to go to 16 or higher.
\r\n
Well that charts my PC hardware journey over the last 20 odd years it’s amazing to think that one of the Raspberry Pi 3’s I own has more processing power than most of the hardware I’ve had up to the Core 2 Duo in 2010.
\r\n',338,57,0,'CC-BY-SA','slide rule,Intel 286,Intel 386,Windows,AOL,modem,Linux Mint,Raspberry Pi',0,0,1),
@@ -18396,7 +18514,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2074,'2016-07-14','Experience With A Neighborhood Cat',915,'A show about a cat. Warning. Repeat. Warning. Contains content that will be disturbing to some.','
\r\nAn old friend comes home...\r\n
',329,0,1,'CC-BY-SA','cat, compassion, death, medical, hospice, friend, pet, life',0,0,1),
(2071,'2016-07-11','Undocumented features of Baofeng UV-5R Radio',531,'Follow on show about undocumented features I found on my Baofeng UV-5R radio','\r\n
This is a short follow on show listing undocumented features I came across while playing with my new Baofeng UV-5R radio
\r\n',201,43,1,'CC-BY-SA','Electronics, Amateur Radio, Open Source',0,0,1),
(2072,'2016-07-12','That Awesome Time I Deleted My Home Directory',505,'sigflup deletes her home directory only to recover one important file','
Omg, Sigflup deletes her home directory! Commands in this episode include:
\r\n
\r\n\r\n\r\ngrep -b -a \"what you remember\" /dev/sd0a > /tmp/log\r\ndd if=/dev/sd0a bs=1 skip=12345 of=/tmp/out count=123456\r\n\r\n\r\n
',115,0,0,'CC-BY-SA','filesystem, grep, dd',0,0,1),
-(2351,'2017-08-07','HPR Community News for July 2017',2315,'Murphy is strong but Ken struggles on talking about shows released and comments posted in July 2017','\n\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 23 comments in total.
\n
There are 3 comments on\n3 previous shows:
\n
hpr2253\n(2017-03-22) \"How to make and use a stencil\"\nby @einebiene.
\n
\n
\n
\nComment 12:\nadmin on 2017-07-11:\n\"congrates\"
hpr2340\n(2017-07-21) \"Tracking the HPR queue in Python\"\nby MrX.
\n
\n
Comment 1:\nKen Fallon on 2017-05-25:\n\"You don't need to scrape\"
Comment 2:\nMrX on 2017-05-31:\n\"Re you don't need to scrape\"
Comment 3:\nDave Morriss on 2017-06-01:\n\"See show 1986\"
Comment 4:\nMrX on 2017-06-01:\n\"re: See show 1986\"
\n
hpr2343\n(2017-07-26) \"Healthcare in the Netherlands\"\nby Ken Fallon.
\n
\n
Comment 1:\nb-yeezi on 2017-07-26:\n\"Unexpectedly interesting\"
Comment 2:\nKevin O'Brien on 2017-07-26:\n\"On the way\"
\n
\n
Any other business
\n
\n
Tags and Summaries\n
In the past month we have had contributions from \n bjb and\n Windigo \n and I have added a few tags & summaries myself. Many thanks to\n all contributors.
\n
See the current status and instructions for making your own\n contribution at \"Shows without a summary and/or tags\".\n This page has recently been reformatted for easier navigation and\n a new section has been added. This section lists the hosts whose\n shows need attention followed by the show numbers that need work.
\n
Currently there are 957 shows which need summaries or tags to be\n added. All contributions to this project are most welcome.
\n
\n\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2351,'2017-08-07','HPR Community News for July 2017',2315,'Murphy is strong but Ken struggles on talking about shows released and comments posted in July 2017','\n\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 23 comments in total.
\n
There are 3 comments on\n3 previous shows:
\n
hpr2253\n(2017-03-22) \"How to make and use a stencil\"\nby @einebiene.
\n
\n
\n
\nComment 12:\nadmin on 2017-07-11:\n\"congrates\"
hpr2340\n(2017-07-21) \"Tracking the HPR queue in Python\"\nby MrX.
\n
\n
Comment 1:\nKen Fallon on 2017-05-25:\n\"You don't need to scrape\"
Comment 2:\nMrX on 2017-05-31:\n\"Re you don't need to scrape\"
Comment 3:\nDave Morriss on 2017-06-01:\n\"See show 1986\"
Comment 4:\nMrX on 2017-06-01:\n\"re: See show 1986\"
\n
hpr2343\n(2017-07-26) \"Healthcare in the Netherlands\"\nby Ken Fallon.
\n
\n
Comment 1:\nb-yeezi on 2017-07-26:\n\"Unexpectedly interesting\"
Comment 2:\nKevin O'Brien on 2017-07-26:\n\"On the way\"
\n
\n
Any other business
\n
\n
Tags and Summaries\n
In the past month we have had contributions from \n bjb and\n Windigo \n and I have added a few tags & summaries myself. Many thanks to\n all contributors.
\n
See the current status and instructions for making your own\n contribution at \"Shows without a summary and/or tags\".\n This page has recently been reformatted for easier navigation and\n a new section has been added. This section lists the hosts whose\n shows need attention followed by the show numbers that need work.
\n
Currently there are 957 shows which need summaries or tags to be\n added. All contributions to this project are most welcome.
\n
\n\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2073,'2016-07-13','The power of GNU Readline - part 1',716,'There\'s a lot you can do to speed up typing by using GNU Readline. We\'ll explore how in this series','
The power of GNU Readline - part 1
\r\n
We all use GNU Readline if we we use the CLI in Linux because it manages input, line editing and command history in Bash and in many tools.
\r\n
I have been using Unix and later Linux since the 1980\'s, and gradually learnt how to do things like jump to the start or the end of the line, delete a character backwards up to a space, or delete the entire line.
\r\n
I think that learning GNU Readline is worthwhile since it contains a lot more features than what I just described. I thought I would do a few episodes on HPR to introduce some of what I consider to be the most useful features.
\r\n
I want to keep the episodes short since this is a dry subject, and, if you are anything like me, you can\'t take in more than a few key sequences at a time.
\r\n
The source of my information is the GNU Readline Manual. This is very well written, if a little overwhelming.
',225,102,1,'CC-BY-SA','command line,cli,GNU Readline',0,0,1),
(2075,'2016-07-15','Skin cancer',359,'My recent experience with skin cancer, and a primer on UV','\r\n
This is a very personal podcast, discussing minor surgery. If that sort of stuff makes you cringe at all, this may not be the recording for you. I should also point out that I am not a medical professional, you should not take this recording as medical advice, if you have any concerns about your skin, seek professional medical advice.
\r\n
I am a very white person living in Queensland, Australia. Our state has amongst the highest rate of skin cancers in the world, I believe we\'re in a tussle with New Zealand for first place at the moment.
\r\n
There are two main types of skin cancer, melanoma and non-melanoma. The non-melanoma type is slow growing, and rarely spreads to other parts of the body, while melanoma is fast growing and spreads to the rest of the body.
\r\n
Both my parents have had multiple lesions excised, so something like this was always on my mind. We live in a sunny, sub-tropical environment, the sort of clothing you\'d want to wear for comfort is light, breezy, and not covering much skin, exactly the wrong sort of clothes you\'d need to wear to protect yourself from ultraviolet (UV) rays that help cause skin cancer.
\r\n
According to the Australian BoM FAQ https://www.bom.gov.au/uv/faq.shtml the per capita risk of skin cancer in Australia is ten times higher than America and sixty times higher than the UK.
\r\n
The UV scale rarely gets above eight in the UK, in Brisbane the UV scale is above eight for roughly eight months of the year.
\r\n
There are a lot of variables when it comes to UV. Cloud cover is probably the most important. Something that I can\'t stress enough is that heat and UV are not correlated, you can definitely be exposed to lots of UV when it\'s cold (see New Zealand, they\'re much more south, much more cold, and have more exposure due to the ozone hole). Another example is snow, UV will bounce off the snow and back at you.
\r\n
The link between skin cancer and UV is quite strong, 95-99% of skin cancers are caused by excess sun exposure. (https://www.cancer.org.au)
\r\n
So, with all that history, I started getting yearly skin checks a couple of years ago. I\'d had a couple of skin checks when I was very young, and now that I\'m more advanced in years I wanted something less ad-hoc. Someone working for one such organisation gave a talk at one of the user groups I attended, and i made an appointment with Molemap. It\'s a full on procedure where your entire body is photographed, and each mole, freckle, bump and lump that is of possible concern is photographed from a few centimetres off the skin, and with the magnification lens sitting right on top of the mole.
\r\n
I have some near 200 spots on myself that are of interest, so my follow up appointments take about two and half hours to go over all these spots, plus looking for new ones. The hope is that, by doing this close to yearly, small changes in all these spots won\'t go unnoticed, and we can get on top of any cancers early.
\r\n
Interestingly, the spot that was actually a problem was a new one, so under a year old, and was hiding underneath my beard, so in future I\'m definitely going to have my skin checked clean shaven.
\r\n
The other thing I want to communicate is that early detection is key, all the skin cancers have a 90% plus survival rate (at five years) if caught early enough. This does potentially mean that a yearly check is not enough, but it\'s already proven it\'s worth to me.
\r\n
Molemap only does photography of spots, and visual diagnosis. It does not do any treatment or biopsies or excisions, therefore there it has no self interest in recommending treatment on borderline cases. Molemap sprang out of a University of Queensland project, which is my alma mater. After receiving the diagnosis (via an online form, secured with a second factor sent to my phone) and panicking a fair bit, I contacted my regular doctors practice (we call them general practitioners in Australia, I\'m sure they\'re called different things elsewhere) for an appointment with a GP who had experience with skin cancers. In QLD, most medical centres will have at least one doctor with experience in this area. As it turns out, my regular GP has such experience and I got an appointment for the following week.
\r\n
I wasn\'t really sure what to expect from my GP appointment, but I was mostly expecting to get the diagnosis confirmed, and either get sent to a specialist to deal with it, or organise another appointment at the GP.
\r\n
What actually happened was it took all of five minutes for my doctor to confirm the diagnosis, then work how he had time in his schedule, and there was a nurse free, to excise the lesion straight away. I was given a local anaesthetic, so I felt no pain whatsoever, but you still feel the doctor pulling on your skin up, down left and right, so that the complete lesion can be removed, as well as a small amount of surrounding skin in case the cancer has spread.
\r\n
Here I should mention that melanomas spread very fast, and when they\'re excised up to a centimetre of skin may need to be removed, where as for a non-melanomic, a millimetre or so is good enough.
\r\n
I got four sutures put in, they stayed for a week (we have a long easter break in Australia) so it ended up being closer to a week and a half. I had no problems, my scar healed up quickly and nicely. Now, a couple of months later, there\'s a little redness along the scar line, but that\'s about it.
\r\n
So. The take aways. UV is not correlated to heat, you can get a lot of UV exposure in cold environments. If you\'re travelling through a high UV area, take precautions (clothes that cover a lot of your skin, hat, sunglasses, sunscreen). If you live in a high UV area, get your skin checked regularly. Also, keep an eye on your own skin. Use a diary to record any new bumps, lumps, spots etc.
\r\n',315,100,1,'CC-BY-SA','skin cancer,melanoma,UV,ultraviolet light',0,0,1),
(2078,'2016-07-20','What\'s in my bag?',884,'A short summary of all the crap Windigo lugs back and forth','
If you should happen to find me on the road, don’t kill me! I’m an atheist!
\r\n
Also, this will be the contents of my bag:
\r\n
\r\n
Stainless steel coffee mug, Stewarts-branded
\r\n
Stanley stainless steel thermos
\r\n
Kleen kanteen wide, 40oz stainless steel water bottle
\r\n
1½-foot micro USB cable
\r\n
Ethernet cable (currently retractable)
\r\n
Sony headphones
\r\n
Handful of SD and USB storage, including 64GB primary on keychain
\r\n
Maglite AA-powered flashlight
\r\n
Ballpoint pen
\r\n
Lunch, usually in a mason jar or metal box
\r\n
If it’s Wednesday or Thursday, my backup drive
\r\n
Dell Mini 9 with AC adapter
\r\n
If I’m walking to the Tech Center, a ZaReason Verix laptop with AC adapter
\r\n
\r\n',196,23,0,'CC-BY-SA','coffee mug,thermos flask,ethernet cable,Maglite,ZaReason Verix,Dell Mini 9',0,0,1),
@@ -18442,10 +18560,10 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2126,'2016-09-26','My new (old) tablet',455,'How I got the cruft off my LG Gpad 7','
It took a while, but I finally figured out how to install custom recovery and flash a new OS on my $1 tablet.
Klaatu ponders analogue programming and tabletop gaming.
\r\n',78,0,1,'CC-BY-SA','game,gaming,tabletop,card,boardgame',0,0,1),
(2132,'2016-10-04','Gloom Tabletop Game',1409,'Klaatu reviews the card game Gloom','
Klaatu reviews the card game “Gloom”, including its strengths, weaknesses, and potential for player mods.
',78,95,1,'CC-BY-SA','game,gaming,tabletop,card,boardgame',0,0,1),
-(2371,'2017-09-04','HPR Community News for August 2017',5259,'HPR Volunteers talk about shows released and comments posted in August 2017','\n\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 45 comments in total.
Comment 1:\nMike Ray on 2017-08-30:\n\"Noooo...don't stop buying and reviewing meters\"
Comment 2:\nDave Lee on 2017-08-31:\n\"Excellent show\"
\n
\n
Any other business
\n
\n
Comment System\n
As mentioned on the\n mailing\n list, we are working on a new comment system to replace the failing one we have now. We\'ll be reporting\n progress on the mailing list.\n
\n
\n
Filling the queue\n
The queue got very low recently but is now looking healthier. Thanks to\n everyone for their contributions. However, it would be better in\n future if shows could be spread out more to leave room for new contributors and to help prevent the\n feast/famine problem. See the Scheduling Guidelines on the Calendar page:\n
\n \n
You must have have your audio recording ready to upload before you pick a slot.
\n
Always try and fill any free slots that are available in the upcoming week.
\n
If the queue is filling up then please consider leaving some slots free for new contributors.
\n
If you have a non urgent show then find a empty week and schedule it then.
\n
If you are uploading a series of shows, consider scheduling one every two weeks.
\n \n
\n
Amateur Radio Round Table\n
The current proposal is to record the next show on 2017-09-13 at 18:00 UTC. \n Please let Michael (mirwi) know via the HPR mailing list if you\'d like to attend.
\n
\n
Tags and Summaries\n
In the past month we have had contributions from \n Epicanis\n and Windigo\n and I (Dave\n Morriss) have added a few tags & summaries myself. Many\n thanks to all contributors.
\n
Currently there are 950 shows which need summaries or tags to be\n added. All contributions to this project are most welcome. See the\n current status and instructions for making your own contribution\n at \"Shows without a summary and/or tags\".
\n
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2391,'2017-10-02','HPR Community News for September 2017',4875,'HPR Volunteers talk about shows released and comments posted in September 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 41 comments in total.
\n
There are 11 comments on\n5 previous shows:
\n
hpr2356\n(2017-08-14) \"Safely enabling ssh in the default Raspbian Image\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nsesamemucho on 2017-09-10:\n\"Thanks for pulling this together\"
\n
\nComment 3:\nKen Fallon on 2017-09-19:\n\"Fantastic\"
\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
The Podcast Awards\n Ceremony is at 5pm PST on September 30th 2017. That is the day on\n which this HPR episode is being recorded, and it is also\n International Podcast Day!
\n
Again this year, HPR is a contender for the Technology Category.
\n
\n
FOSDEM 2018\n
For the upcoming FOSDEM 2018 we have applied for a Podcaster\'s\n Table where a range of technical podcasts (including HPR)\n will be promoted. We have collected notes of interest from a wide\n range of podcasts, and some representatives will hopefully be able\n to join us as we run this table.
\n
We are hoping that this application will be approved by the FOSDEM\n administrators.
\n
\n
Website issues\n
Over the past month the HPR website has been very slow at times, or\n has been so overloaded that it has effectively been unavailable.\n This has been caused by various web robots which have been\n scanning the site for long periods in a very inefficient way.
\n
We are aware of this and Josh has been taking remedial action.\n However, because these robots are not behaving in a standard way,\n the range of preventative action is limited without purchasing more\n sophisticated tools.
\n
For the moment we are monitoring the situation.
\n
\n
Anhonesthost.com\n
Just a reminder: HPR\'s webhosting service and behind the scenes\n facilities are provided free of charge by Josh Knapp of\n anhonesthost.com.
\n
\n\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2416,'2017-11-06','HPR Community News for October 2017',4714,'HPR Volunteers talk about shows released and comments posted in October 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 33 comments in total.
Comment 5:\nNYbill on 2017-11-04:\n\"...We will expect a show about the build, Ken.\"
\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:
HPR show notes which contain images or which link to other files are something we encourage. However, when uploading these to the Internet Archive (IA) at archive.org there are a number of issues:
\n
\n
If a file has been submitted as part of the original HPR upload we copy it to archive.org and use the URL of the copy in the notes. This mechanism has been added in the past few months and seems to be working fine.
\n
If the notes for a show contain links to external files these do not always seem to be accessible through the archive.org interface. For example, the recent show 2406 links to an image showing the cabling of a CAT6 plug, but the archive.org copy did not show this image (though it does now - see below).
\n
One way of dealing with the issue of external files would be to make a copy and place it on the HPR site, then it would be uploaded to the IA as described earlier. This might have copyright issues though.
\n
Another way would be to point to a copy on the Wayback Machine (WM). Sometimes the file has been copied there already, or it is possible to request that the WM snapshot it. This is what was done for the IA copy of show 2406. However, it was a manual process and therefore rather labour-intensive, which is not ideal.
\n
\n
Any suggestions on how to deal with this situation would be appreciated.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2129,'2016-09-29','Gnu Awk - Part 2',1598,'We examine how Awk works, records and fields, printing and program files','
Gnu Awk - Part 2
\r\n
This is the second episode in a series where b-yeezi and I will be looking at the AWK language (more particularly its GNU variant gawk). It is a comprehensive interpreted scripting language designed to be used for manipulating text.
\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk language, gawk, text manipulation',0,0,1),
+(2371,'2017-09-04','HPR Community News for August 2017',5259,'HPR Volunteers talk about shows released and comments posted in August 2017','\n\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 45 comments in total.
Comment 1:\nMike Ray on 2017-08-30:\n\"Noooo...don't stop buying and reviewing meters\"
Comment 2:\nDave Lee on 2017-08-31:\n\"Excellent show\"
\n
\n
Any other business
\n
\n
Comment System\n
As mentioned on the\n mailing\n list, we are working on a new comment system to replace the failing one we have now. We\'ll be reporting\n progress on the mailing list.\n
\n
\n
Filling the queue\n
The queue got very low recently but is now looking healthier. Thanks to\n everyone for their contributions. However, it would be better in\n future if shows could be spread out more to leave room for new contributors and to help prevent the\n feast/famine problem. See the Scheduling Guidelines on the Calendar page:\n
\n \n
You must have have your audio recording ready to upload before you pick a slot.
\n
Always try and fill any free slots that are available in the upcoming week.
\n
If the queue is filling up then please consider leaving some slots free for new contributors.
\n
If you have a non urgent show then find a empty week and schedule it then.
\n
If you are uploading a series of shows, consider scheduling one every two weeks.
\n \n
\n
Amateur Radio Round Table\n
The current proposal is to record the next show on 2017-09-13 at 18:00 UTC. \n Please let Michael (mirwi) know via the HPR mailing list if you\'d like to attend.
\n
\n
Tags and Summaries\n
In the past month we have had contributions from \n Epicanis\n and Windigo\n and I (Dave\n Morriss) have added a few tags & summaries myself. Many\n thanks to all contributors.
\n
Currently there are 950 shows which need summaries or tags to be\n added. All contributions to this project are most welcome. See the\n current status and instructions for making your own contribution\n at \"Shows without a summary and/or tags\".
\n
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2391,'2017-10-02','HPR Community News for September 2017',4875,'HPR Volunteers talk about shows released and comments posted in September 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 41 comments in total.
\n
There are 11 comments on\n5 previous shows:
\n
hpr2356\n(2017-08-14) \"Safely enabling ssh in the default Raspbian Image\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nsesamemucho on 2017-09-10:\n\"Thanks for pulling this together\"
\n
\nComment 3:\nKen Fallon on 2017-09-19:\n\"Fantastic\"
\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 in the archives run\nexternally by Gmane\n(see below) and on the HPR server under Mailman.\n
\n
Note: since the summer of 2016 Gmane has changed location and is currently\nbeing reestablished. At the moment the HPR archive is not available there.
\n
The threaded discussions this month can be found here:
The Podcast Awards\n Ceremony is at 5pm PST on September 30th 2017. That is the day on\n which this HPR episode is being recorded, and it is also\n International Podcast Day!
\n
Again this year, HPR is a contender for the Technology Category.
\n
\n
FOSDEM 2018\n
For the upcoming FOSDEM 2018 we have applied for a Podcaster\'s\n Table where a range of technical podcasts (including HPR)\n will be promoted. We have collected notes of interest from a wide\n range of podcasts, and some representatives will hopefully be able\n to join us as we run this table.
\n
We are hoping that this application will be approved by the FOSDEM\n administrators.
\n
\n
Website issues\n
Over the past month the HPR website has been very slow at times, or\n has been so overloaded that it has effectively been unavailable.\n This has been caused by various web robots which have been\n scanning the site for long periods in a very inefficient way.
\n
We are aware of this and Josh has been taking remedial action.\n However, because these robots are not behaving in a standard way,\n the range of preventative action is limited without purchasing more\n sophisticated tools.
\n
For the moment we are monitoring the situation.
\n
\n
Anhonesthost.com\n
Just a reminder: HPR\'s webhosting service and behind the scenes\n facilities are provided free of charge by Josh Knapp of\n anhonesthost.com.
\n
\n\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2416,'2017-11-06','HPR Community News for October 2017',4714,'HPR Volunteers talk about shows released and comments posted in October 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 33 comments in total.
Comment 5:\nNYbill on 2017-11-04:\n\"...We will expect a show about the build, Ken.\"
\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:
HPR show notes which contain images or which link to other files are something we encourage. However, when uploading these to the Internet Archive (IA) at archive.org there are a number of issues:
\n
\n
If a file has been submitted as part of the original HPR upload we copy it to archive.org and use the URL of the copy in the notes. This mechanism has been added in the past few months and seems to be working fine.
\n
If the notes for a show contain links to external files these do not always seem to be accessible through the archive.org interface. For example, the recent show 2406 links to an image showing the cabling of a CAT6 plug, but the archive.org copy did not show this image (though it does now - see below).
\n
One way of dealing with the issue of external files would be to make a copy and place it on the HPR site, then it would be uploaded to the IA as described earlier. This might have copyright issues though.
\n
Another way would be to point to a copy on the Wayback Machine (WM). Sometimes the file has been copied there already, or it is possible to request that the WM snapshot it. This is what was done for the IA copy of show 2406. However, it was a manual process and therefore rather labour-intensive, which is not ideal.
\n
\n
Any suggestions on how to deal with this situation would be appreciated.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2129,'2016-09-29','Gnu Awk - Part 2',1598,'We examine how Awk works, records and fields, printing and program files','
Gnu Awk - Part 2
\r\n
This is the second episode in a series where b-yeezi and I will be looking at the AWK language (more particularly its GNU variant gawk). It is a comprehensive interpreted scripting language designed to be used for manipulating text.
\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk language, gawk, text manipulation',0,0,1),
(2134,'2016-10-06','Shutdown Sequence Systemd',888,'Klaatu demonstrates how to sequence systemd shutdown processes','
Set up a service to trigger FIRST (this would be the shutdown service):\r\n
\r\n\r\n
\r\n# cat /lib/systemd/system/fakehalt.service\r\n\r\n[Unit]\r\nDescription=Fake-Halt Service\r\nAfter=fakevm.service\r\nRequires=fakevm.service\r\n\r\n[Service]\r\nType=simple\r\nExecStart=/usr/local/bin/fakehalt.sh #this will fail until fakevm succeeds\r\nExecReload=/usr/local/bin/fakehalt.sh\r\n
\r\n\r\n
\r\nAnd then set up the one that you want to run and complete BEFORE shutdown is permitted:
\r\nStart the service you want to happen AFTER the first one:\r\n
\r\n\r\n
\r\n# systemctl start fakehalt\r\n
\r\n\r\n
\r\nWhat \"should\" happen is that fakehalt will fail to find a file called /tmp/fake.test to cat from, and so everything should go horribly wrong.\r\n
\r\nWhat actually happens is that systemd places fakehalt service on hold until it gets an exit 0 signal from the fake service. So if you wait 21 seconds and cat /tmp/fakehalt.test, you see that the cat from a file that did not exist when fakehalt was started - actually succeeded.\r\n
\r\n',78,0,1,'CC-BY-SA','systemd,service',0,0,1),
(2141,'2016-10-17','Make Web Python with Flask',2193,'Klaatu talks about Flask, a Python-based web microframework','
Klaatu talks about the Python web framework, Flask. Think Ruby-on-Rails but for Python, or a lightweight Django.
\r\n',78,0,1,'CC-BY-SA','Python,Flask,web framework',0,0,1),
(2146,'2016-10-24','Cards Against Humanity Tabletop Game',1231,'Klaatu reviews Cards Against Humanity','
Klaatu reviews the tabletop game, Cards Against Humanity. This is a non-offensive episode, so you can listen to it regardless of your feelings about the game.
\r\n',78,95,1,'CC-BY-SA','game,gaming,tabletop game,card,boardgame',0,0,1),
@@ -18475,15 +18593,15 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2168,'2016-11-23','Analogue Random Number Generation',2521,'Klaatu ponders analogue random number generation','
Klaatu talks about different ways of coming up with random numbers without electronics.\r\n
\r\n
\r\nDiscussed: dice, flipping through a book, sequential modulo, shifting tables, and pocketdiceroller.
',78,0,0,'CC-BY-SA','game,gaming,tabletop,card,boardgame,random,number,math',0,0,1),
(2178,'2016-12-07','Dice Mixer',1583,'Klaatu reviews the Dice Mixer dice tower','
Spoiler: it's really amazing and a heck of a lot of fun to put together.
\r\n\r\n\r\n\r\n\r\n',78,0,0,'CC-BY-SA','game,gaming,tabletop,card,boardgame,random,number',0,0,1),
(2174,'2016-12-01','Dungeoneer Tabletop Game',2560,'Klaatu reviews the Dungeoneer RPG card game','
\r\nKlaatu reviews the RPG card game, Dungeoneer, especially concentrating upon solitaire play.\r\n
\r\n
\r\nIf you're keen to play, you'll want to use Klaatu's re-write of the official rules, or his re-write and touch-up of the unofficial solo rules. Neither of these are unique in themselves, but Klaatu humbly believes that they're a lot easier to comprehend than those online or in the box.
',78,95,0,'CC-BY-SA','game,gaming,tabletop,card,rpg',0,0,1),
-(2155,'2016-11-04','Ohio LinuxFest 2016',1124,'My experience of Ohio LinuxFest 2016','
Ohio LinuxFest is an annual Linux and Open Source conference held in the fall in Columbus, Ohio, USA. This year it happened on October 7-8, and I was not only an attendee, but a speaker. This program is about my experiences there this year.
',198,0,0,'CC-BY-SA','Open Source, Linux',0,0,1);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (2154,'2016-11-03','Replacing a Bicycle Brake Cable',1769,'I replace the brake cable and housing on my 1985 Schwinn','
Part of my series of fixing stuff and wearing a microphone while I do it, listen along as I replace the brake cable and housing on my bicycle. For information about the tools I\'m using, check out my earlier episode about the tools in my bicycle repair toolbox. Check the Flickr photo album below for pictures to go along with the narrative. Sorry I kept sniffling so much. Allergies were terrible. The church bells in the background are from Our Lady of Fatima Church, which is nearby. I remember Dave wondered about the church bells from a previous episode.
Ohio LinuxFest is an annual Linux and Open Source conference held in the fall in Columbus, Ohio, USA. This year it happened on October 7-8, and I was not only an attendee, but a speaker. This program is about my experiences there this year.
',198,0,0,'CC-BY-SA','Open Source, Linux',0,0,1),
+(2154,'2016-11-03','Replacing a Bicycle Brake Cable',1769,'I replace the brake cable and housing on my 1985 Schwinn','
Part of my series of fixing stuff and wearing a microphone while I do it, listen along as I replace the brake cable and housing on my bicycle. For information about the tools I\'m using, check out my earlier episode about the tools in my bicycle repair toolbox. Check the Flickr photo album below for pictures to go along with the narrative. Sorry I kept sniffling so much. Allergies were terrible. The church bells in the background are from Our Lady of Fatima Church, which is nearby. I remember Dave wondered about the church bells from a previous episode.
\r\n',238,115,0,'CC-BY-SA','DIY, bicycles, brakes, repairs, bicycle maintenance, bikes',0,0,1),
(2153,'2016-11-02','Splitting a Block of Bees Wax',1101,'I need to split a block of bees wax','
\r\nI need to cut a block of wax... \r\nI use a heat gun, some string, and a knife... \r\nAlso some ramblings about other stuff. \r\n
\r\n
\r\n\r\n
\r\n',329,0,1,'CC-BY-SA','heat, cutting, diy',0,0,1),
-(2158,'2016-11-09','Art Club',372,'Have fun learning about art with your friends','
\r\n',326,0,0,'CC-BY-SA','art,art club,art museum',0,0,1),
-(2160,'2016-11-11','An Audio Illustration Tying the Bowline Knot',343,'David Whitman attempts an audio illustration of how to tie the bowline knot.','
"The bowline (/ˈboʊlɪn/ or /ˈboʊlaɪn/)[1] is an ancient and simple knot used to form a fixed loop at the end of a rope. It has the virtues of being both easy to tie and untie; most notably, it is easy to untie after being subjected to a load. The bowline is sometimes referred as King of the knots because of its importance. It is one of the four basic maritime knots (the other three are figure-eight knot, reef knot and clove hitch).
\r\n
The structure of the bowline is identical to that of the sheet bend, except the bowline forms a loop in one rope and the sheet bend joins two ropes. Along with the sheet bend and the clove hitch, the bowline is often considered one of the most essential knots.[2]
\r\n
Although generally considered a reliable knot, its main deficiencies are a tendency to work loose when not under load, to slip when pulled sideways[3] and the bight portion of the knot to capsize in certain circumstances.[citation needed] To address these shortcomings, a number of more secure variations of the bowline have been developed for use in safety-critical applications".
\r\n',209,0,1,'CC-BY-SA','Knots, CLasoo, Bowline',0,0,1),
+(2158,'2016-11-09','Art Club',372,'Have fun learning about art with your friends','
\r\n',326,0,0,'CC-BY-SA','art,art club,art museum',0,0,1);
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (2160,'2016-11-11','An Audio Illustration Tying the Bowline Knot',343,'David Whitman attempts an audio illustration of how to tie the bowline knot.','
"The bowline (/ˈboʊlɪn/ or /ˈboʊlaɪn/)[1] is an ancient and simple knot used to form a fixed loop at the end of a rope. It has the virtues of being both easy to tie and untie; most notably, it is easy to untie after being subjected to a load. The bowline is sometimes referred as King of the knots because of its importance. It is one of the four basic maritime knots (the other three are figure-eight knot, reef knot and clove hitch).
\r\n
The structure of the bowline is identical to that of the sheet bend, except the bowline forms a loop in one rope and the sheet bend joins two ropes. Along with the sheet bend and the clove hitch, the bowline is often considered one of the most essential knots.[2]
\r\n
Although generally considered a reliable knot, its main deficiencies are a tendency to work loose when not under load, to slip when pulled sideways[3] and the bight portion of the knot to capsize in certain circumstances.[citation needed] To address these shortcomings, a number of more secure variations of the bowline have been developed for use in safety-critical applications".
\r\n',209,0,1,'CC-BY-SA','Knots, CLasoo, Bowline',0,0,1),
(2161,'2016-11-14','What\'s in my freezer?',246,'Inscius talks about the food stored in his freezer.','
A short true tale of what I store in my (small) freezer, mid-October 2016. It is also the first time I record a podcast with a portable recorder.
\r\n',283,0,0,'CC-BY-SA','food, storage, seasonal, garden',0,0,1),
-(2185,'2016-12-16','Soldering a Soldering Fan',309,'Practising soldering skills by hacking together a soldering extraction fan.','
',30,0,0,'CC-BY-SA','soldering',0,0,1),
+(2185,'2016-12-16','Soldering a Soldering Fan',309,'Practising soldering skills by hacking together a soldering extraction fan.','
',30,0,0,'CC-BY-SA','soldering',0,0,1),
(2162,'2016-11-15','Review/Criticism of Hipp\'s \"Git: Just Say No\"',1272,'In which I take an IRC rant to audio and look at what\'s really wrong with git.','
I didn\'t listen to all of it, but I\'m putting this out there with the material I have, because anything else would be procrastination and this is HPR. We Want Shows!
\r\n
Here are his criticisms, or suggested enhancements, top 10:
\r\n\r\n
Show descendants of a check-in
\r\n
Simplified mental model
\r\n
Remember branch history
\r\n
Multiple check-outs from the same repo
\r\n
Sliced check-out and clones
\r\n
Check-out & commit against a remote repo
\r\n
"Busybox" version of git
\r\n
All comms via HTTP/HTTPS
\r\n
"git all" command
\r\n
"git serve" command
\r\n\r\n
I think the killer of these is #2, the rest are nitpicks or incorrect. And for addressing #2 there is the very interesting gitless report and project, which I\'m guessing doesn\'t abandon git entirely, just reworks the UI, which does need rework. Not for people like me, who already learned the nooks and crannies and make productive use of several of what might be misfeatures, but to lower the threshold for people coming to our software projects and whatever other source code we are managing.
\r\n
TL;DL:
\r\n\r\n
Why? Complete git log and less does the job, even for the oldest git project – git.
\r\n
YES, see gitless.
\r\n
Why?
\r\n
Already works.
\r\n
Presumably already works, don\'t know how well.
\r\n
Why?
\r\n
(Didn\'t listen) Why?
\r\n
(Didn\'t listen) Why? It has HTTP/HTTPS, but it also has the ssh model, which is great.
It works great for me, and I didn\'t have to bother setting up a native IRC bouncer like ZNC or Quassel.
\r\n
The quick-quick version: Just go to #freenode_#oggcastplanet:matrix.org and you\'re in the best IRC web chat available, in the #oggcastplanet channel on freenode.
\r\n',311,0,0,'CC-BY-SA','git, fossil, rant',0,0,1),
-(2163,'2016-11-16','Gnu Awk - Part 4',1869,'Recapping the last episode and looking at variables in an Awk program','
Gnu Awk - Part 4
\r\n
Introduction
\r\n
This is the fourth episode of the series that b-yeezi and I are doing. These shows are now collected under the series title “Learning Awk”.
\r\n
Recap of the last episode
\r\n
Logical Operators
\r\n
We have seen the operators ‘&&’ (and) and ‘||’ (or). These are also called Boolean Operators. There is also one more operator ‘!’ (not) which we haven’t yet encountered. These operators allow the construction of Boolean expressions which may be quite complex.
\r\n
If you are used to programming you will expect these operators to have a precedence, just like operators in arithmetic do. We will deal with this subject in more detail later since it is relevant not only in patterns but also in other parts of an Awk program.
\r\n
The next statement
\r\n
We saw this statement in the last episode and learned that it causes the processing of the current input record to stop. No more patterns are tested against this record and no more actions in the current rule are executed. Note that “next” is a statement like “print”, and can only occur in the action part of a rule. It is also not permitted in BEGIN or END rules (more of which anon).
\r\n
The BEGIN and END rules
\r\n
The BEGIN and END elements are special patterns, which in conjunction with actions enclosed in curly brackets make up rules in the same sense that the ‘pattern {action}’ sequences we have seen so far are rules. As we saw in the last episode, BEGIN rules are run before the main ‘pattern {action}’ rules are processed and the input file is (or files are) read, whereas END rules run after the input files have been processed.
\r\n
It is permitted to write more than one BEGIN rule and more than one END rule. These are just concatenated together in the order they are encountered by Awk.
\r\n
Awk will complain if either BEGIN or END is not followed by an action since this is meaningless.
\r\n
Variables, arrays, loops, etc
\r\n
Learning a programming language is never a linear process, and sometimes reference is made to new features that have not yet been explained. A number of new features were mentioned in passing in the last episode, and we will look at these in more detail in this episode.
With a view to making portable notes for this series I have included ePub and PDF versions with this episode. Feedback is welcome to help decide which version is preferable, as are any suggestions on the improvement of the layout.
',225,94,1,'CC-BY-SA','Awk utility, Awk language, gawk,variables',0,0,1),
+(2163,'2016-11-16','Gnu Awk - Part 4',1869,'Recapping the last episode and looking at variables in an Awk program','
Gnu Awk - Part 4
\r\n
Introduction
\r\n
This is the fourth episode of the series that b-yeezi and I are doing. These shows are now collected under the series title “Learning Awk”.
\r\n
Recap of the last episode
\r\n
Logical Operators
\r\n
We have seen the operators ‘&&’ (and) and ‘||’ (or). These are also called Boolean Operators. There is also one more operator ‘!’ (not) which we haven’t yet encountered. These operators allow the construction of Boolean expressions which may be quite complex.
\r\n
If you are used to programming you will expect these operators to have a precedence, just like operators in arithmetic do. We will deal with this subject in more detail later since it is relevant not only in patterns but also in other parts of an Awk program.
\r\n
The next statement
\r\n
We saw this statement in the last episode and learned that it causes the processing of the current input record to stop. No more patterns are tested against this record and no more actions in the current rule are executed. Note that “next” is a statement like “print”, and can only occur in the action part of a rule. It is also not permitted in BEGIN or END rules (more of which anon).
\r\n
The BEGIN and END rules
\r\n
The BEGIN and END elements are special patterns, which in conjunction with actions enclosed in curly brackets make up rules in the same sense that the ‘pattern {action}’ sequences we have seen so far are rules. As we saw in the last episode, BEGIN rules are run before the main ‘pattern {action}’ rules are processed and the input file is (or files are) read, whereas END rules run after the input files have been processed.
\r\n
It is permitted to write more than one BEGIN rule and more than one END rule. These are just concatenated together in the order they are encountered by Awk.
\r\n
Awk will complain if either BEGIN or END is not followed by an action since this is meaningless.
\r\n
Variables, arrays, loops, etc
\r\n
Learning a programming language is never a linear process, and sometimes reference is made to new features that have not yet been explained. A number of new features were mentioned in passing in the last episode, and we will look at these in more detail in this episode.
With a view to making portable notes for this series I have included ePub and PDF versions with this episode. Feedback is welcome to help decide which version is preferable, as are any suggestions on the improvement of the layout.
',225,94,1,'CC-BY-SA','Awk utility, Awk language, gawk,variables',0,0,1),
(2166,'2016-11-21','How to use a Slide Rule',887,'By popular request, a description of how a slide rule works','
How to use a Slide Rule
\r\n
In my show 1664, “Life and Times of a Geek part 1”, I spoke about using a slide rule as a schoolboy. As a consequence, I was asked if I would do a show on slide rules, and this is it (after a rather long delay).
',225,0,1,'CC-BY-SA','slide rule,logarithm,slipstick,analogue computer',0,0,1),
(2165,'2016-11-18','Get the most out of your commute with these great audio suggestions.',2156,'Knightwise talks about ways to stay entertained during your commute to work by listening to podcasts','
',111,0,1,'CC-BY-SA','podcast,podcatcher,online course',0,0,1),
(2169,'2016-11-24','How I connect to the awesome #oggcastplanet on mobile',795,'I give a quick overview of the challenges of IRC on the go and how Riot and Matrix solve them for me','
On HPR #2162 I mentioned that I\'m connecting to freenode IRC using Riot and Matrix. Here I explain a bit of background to why, what Matrix is, and why you should use it too.
Correction to audio: Riot is on F-Droid. For some reason I couldn\'t find it at the time, even though it\'s clearly there, so I\'m currently using the version from the Google Play Store. I hear that battery use may be an issue if you\'re independent from the evil GOOG.
\r\n
Alternatives
\r\n
Other ways of connecting to IRC over flaky or intermittent connections without losing context:
In particular, check out this pretty elaborate ZNC-on-ZNC setup to solve the issue with having multiple devices that all want an independent scrollback buffer. I was just about considering setting up something like this when I discovered the Matrix bridge instead.
\r\n',311,0,0,'CC-BY-SA','matrix, irc, federation, mobile, im',0,0,1),
@@ -18499,8 +18617,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2182,'2016-12-13','why say GNU/Linux ?',460,'Dedicated to all the people that says Linux instead of GNU/Linux','
Stop saying Linux or open source or FOSS or FLOSS !!1!
',344,0,1,'CC-BY-SA','GNU/Linux,Linux,open source,FOSS,FLOSS',0,0,1),
(2180,'2016-12-09','Mail to myself@myfirstemployment, Part 2 of 2',501,'I expand on a list of one-liner advice to myself 20 years ago, that I posted on pump.io. Part 2 of 2','
\r\n',311,0,0,'CC-BY-SA','advice,programming,job',0,0,1),
(2183,'2016-12-14','Data Privacy: Farlands or bust',895,'Conversation in response to comments about my last Episode called \"Google It\"','
Thanks to everyone for the emails and the opinion on the \"Google It\" episode.
\r\n
I received a lot of emails and comments on my first episode. No one stated they disagreed with me on the opinion I was expressing but changed the conversation to be about their own privacy issues they have with Google\'s practices.
\r\n
I wasn\'t dismissing those who feel Google overreaches in the privacy department. I was stating the fact that they are a very successful company DESPITE a lot of Tech writers and podcasters out here stating they aren\'t. You can argue the privacy points all you want but the fact is all I was stating was they are successful.
\r\n
So with that said I weigh in on Privacy and how I see it. Disagree? let me know!
\r\n',346,0,1,'CC-BY-SA','Google',0,0,1),
-(2436,'2017-12-04','HPR Community News for November 2017',5241,'HPR Volunteers talk about shows released and comments posted in November 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 44 comments in total.
\n
There are 18 comments on\n9 previous shows:
\n
hpr2376\n(2017-09-11) \"Information Underground: 21st Century Superstar\"\nby deepgeek.
\n
\n
\n
\nComment 4:\nKlaatu on 2017-11-07:\n\"re: Me Too\"
Comment 1:\ndodddummy on 2017-12-02:\n\"Link so you don't have to find the previous ep\"
\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:
If there is anyone else who hasn\'t submitted a show this year there are only a few slots free !!!
\n
\n
New Year\'s Eve
\n
\n
HonkeyMagoo and associates have offered to look after the HPR New Year\'s Eve event again this year. They say:
\n
\n
\n
"We plan on starting on 2017-12-31T10:00:00Z (December 31, 2017 5:00 am EST) \nWe will stop the recording and the stream as long as there is no one on at 2018-01-01T12:00:00Z (January 1, 2018 7:00 am EST). If people are still on and talking we will keep the stream and the recording going."
\n
\n
\n
Further details are available on the HPR mailing list and the LinuxLUGcast website.
\n
\n
Tags and Summaries
\n
\n
Thanks to Windigo and bjb for sending in updates in the past month.
\n
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2456,'2018-01-01','HPR Community News for December 2017',5229,'HPR Volunteers talk about shows released and comments posted in December 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 43 comments in total.
Comment 1:\nTrucker Rich on 2017-12-28:\n\"Delivery and Content\"
\n
hpr2455\n(2017-12-29) \"Interface Zero RPG Part 5\"\nby klaatu.
\n
\n
Comment 1:\nKen Fallon on 2017-12-20:\n\"Wasting shows\"
Comment 2:\nKlaatu on 2017-12-28:\n\"Forgot a link\"
Comment 3:\nDave Morriss on 2017-12-30:\n\"Added forgotten link\"
\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:
Josh of AnHonestHost.com has provided HPR with a GitLab repository we use for storing website code and scripts. It includes an issue tracker which we have been using to track some of the recent issues we have been experiencing. We plan to use this more in the future.
HPR is hosted by Josh of AnHonestHost.com. We would appreciate it if you could donate to help reduce his costs in funding the hosting.
\n
HPR\'s shows and audio are also hosted by the Internet Archive (archive.org). They are currently running a funding drive where a generous supporter will match donations 3-to-1. As they say: "Your $5 becomes $20!"
\n
Donations to the Internet Archive would also be appreciated.
\n
HPR shows on the Internet Archive
\n
HPR shows from number 871 up to 2455 are currently available on the Internet Archive as individual "identifiers" in the Archive terminology.
\n
Gradually, earlier shows are being added and the shows for the coming week are added each weekend. The podcast feeds have recently been redirected to download from the copies on archive.org.
\n
In recent months the upload process has been enhanced to make sure that a copy of the notes and all other components of each show (such as pictures, and downloadable files) are available on archive.org as well as on the HPR site. Earlier uploads where this was not the case will be updated in due course.
\n
Static web site
\n
Can anyone recommend static site tools?
\n
Tags and Summaries
\n
Thanks to Xoke for sending in updates in the past month.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2436,'2017-12-04','HPR Community News for November 2017',5241,'HPR Volunteers talk about shows released and comments posted in November 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 44 comments in total.
\n
There are 18 comments on\n9 previous shows:
\n
hpr2376\n(2017-09-11) \"Information Underground: 21st Century Superstar\"\nby deepgeek.
\n
\n
\n
\nComment 4:\nKlaatu on 2017-11-07:\n\"re: Me Too\"
Comment 1:\ndodddummy on 2017-12-02:\n\"Link so you don't have to find the previous ep\"
\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:
If there is anyone else who hasn\'t submitted a show this year there are only a few slots free !!!
\n
\n
New Year\'s Eve
\n
\n
HonkeyMagoo and associates have offered to look after the HPR New Year\'s Eve event again this year. They say:
\n
\n
\n
"We plan on starting on 2017-12-31T10:00:00Z (December 31, 2017 5:00 am EST) \nWe will stop the recording and the stream as long as there is no one on at 2018-01-01T12:00:00Z (January 1, 2018 7:00 am EST). If people are still on and talking we will keep the stream and the recording going."
\n
\n
\n
Further details are available on the HPR mailing list and the LinuxLUGcast website.
\n
\n
Tags and Summaries
\n
\n
Thanks to Windigo and bjb for sending in updates in the past month.
\n
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2456,'2018-01-01','HPR Community News for December 2017',5229,'HPR Volunteers talk about shows released and comments posted in December 2017','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 43 comments in total.
Comment 1:\nTrucker Rich on 2017-12-28:\n\"Delivery and Content\"
\n
hpr2455\n(2017-12-29) \"Interface Zero RPG Part 5\"\nby klaatu.
\n
\n
Comment 1:\nKen Fallon on 2017-12-20:\n\"Wasting shows\"
Comment 2:\nKlaatu on 2017-12-28:\n\"Forgot a link\"
Comment 3:\nDave Morriss on 2017-12-30:\n\"Added forgotten link\"
\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:
Josh of AnHonestHost.com has provided HPR with a GitLab repository we use for storing website code and scripts. It includes an issue tracker which we have been using to track some of the recent issues we have been experiencing. We plan to use this more in the future.
HPR is hosted by Josh of AnHonestHost.com. We would appreciate it if you could donate to help reduce his costs in funding the hosting.
\n
HPR\'s shows and audio are also hosted by the Internet Archive (archive.org). They are currently running a funding drive where a generous supporter will match donations 3-to-1. As they say: "Your $5 becomes $20!"
\n
Donations to the Internet Archive would also be appreciated.
\n
HPR shows on the Internet Archive
\n
HPR shows from number 871 up to 2455 are currently available on the Internet Archive as individual "identifiers" in the Archive terminology.
\n
Gradually, earlier shows are being added and the shows for the coming week are added each weekend. The podcast feeds have recently been redirected to download from the copies on archive.org.
\n
In recent months the upload process has been enhanced to make sure that a copy of the notes and all other components of each show (such as pictures, and downloadable files) are available on archive.org as well as on the HPR site. Earlier uploads where this was not the case will be updated in due course.
\n
Static web site
\n
Can anyone recommend static site tools?
\n
Tags and Summaries
\n
Thanks to Xoke for sending in updates in the past month.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2184,'2016-12-15','Gnu Awk - Part 5',2394,'In this episode, I describe how to use regular expressions with Awk.','
GNU AWK - Part 5
\r\n
Regular Expressions in AWK
\r\n
The syntax for using regular expressions to match lines in AWK is as follows:
\r\n
word ~ /match/
\r\n
Or for not matching, use the following:
\r\n
word !~ /match/
\r\n
Remember the following file from the previous episodes:
\r\n
name color amount\r\napple red 4\r\nbanana yellow 6\r\nstrawberry red 3\r\ngrape purple 10\r\napple green 8\r\nplum purple 2\r\nkiwi brown 4\r\npotato brown 9\r\npineapple yellow 5
\r\n
We can run the following command:
\r\n
$1 ~ /p[elu]/ {print $0}
\r\n
We will get the following output:
\r\n
apple red 4\r\ngrape purple 10\r\napple green 8\r\nplum purple 2\r\npineapple yellow 5
\r\n
In another example:
\r\n
$2 ~ /e{2}/ {print $0}
\r\n
Will produce the output:
\r\n
apple green 8
\r\n
Regular expression basics
\r\n
Certain characters have special meaning when using regular expressions.
\r\n
Anchors
\r\n
\r\n
^ - beginning of the line
\r\n
$ - end of the line
\r\n
\\A - beginning of a string
\r\n
\\z - end of a string
\r\n
\\b on a word boundary
\r\n
\r\n
Characters
\r\n
\r\n
[ad] - a or d
\r\n
[a-d] - any character a through d
\r\n
[^a-d] - not any character a through d
\r\n
\\w - any word
\r\n
\\s - any white-space character
\r\n
\\d - any digit
\r\n
\r\n
The capital version of w, s, and d are negations.
\r\n
Or, you can reference characters the POSIX standard way:
\r\n
\r\n
[:alnum:] - Alphanumeric characters
\r\n
[:alpha:] - Alphabetic characters
\r\n
[:blank:] - Space and TAB characters
\r\n
[:cntrl:] - Control characters
\r\n
[:digit:] - Numeric characters
\r\n
[:graph:] - Characters that are both printable and visible (a space is printable but not visible, whereas an ‘a’ is both)
\r\n
[:lower:] - Lowercase alphabetic characters
\r\n
[:print:] - Printable characters (characters that are not control characters)
\r\n
[:punct:] - Punctuation characters (characters that are not letters, digits, control characters, or space characters)
\r\n
[:space:] - Space characters (such as space, TAB, and formfeed, to name a few)
\r\n
[:upper:] - Uppercase alphabetic characters
\r\n
[:xdigit:] - Characters that are hexadecimal digits
\r\n
\r\n
Quantifiers
\r\n
\r\n
. - match any character
\r\n
+ - match preceding one or more times
\r\n
* - match preceding zero or more times
\r\n
? - match preceding zero or one time
\r\n
{n} - match preceding exactly n times
\r\n
{n,} - match preceding n or more times
\r\n
{n,m} - match preceding between n and m times
\r\n
\r\n
Grouped Matches
\r\n
\r\n
(...) - Parentheses are used for grouping
\r\n
| - Means or in the context of a grouped match
\r\n
\r\n
Replacement
\r\n
\r\n
The sub command substitutes the match with the replacement string. This only applies to the first match.
\r\n
The gsub command substitutes all matching items.
\r\n
The gensub command command substitutes the in a similar way as sub and gsub, but with extra functionality
\r\n
The & character in the replacement field references the matched text. You have to use \\& to replace the match with the literal & character.
\r\n',300,94,0,'CC-BY-SA','awk, bash, command-line, cli',0,0,1),
(2187,'2016-12-20','The Toshiba Libretto 100ct',1707,'In this episode I discuss some of the quirks of setting up Toshiba Libretto for retro gaming.','
In this episode, I discuss some of the quirks I encountered when setting up my recently acquired Toshiba Libretto 100ct for retro gaming. I cover the hardware specs, a few tips on getting it running while dealing with Win98 woes.
\r\n',325,0,1,'CC-BY-SA','Retro gaming, vintage hardware, Toshiba Libretto',0,0,1),
(2192,'2016-12-27','Fun with Oscilloscopes',572,'Taking a look at oscilloscope music.','
For an example of the effect, here is an example -
\r\n',325,0,1,'CC-BY-SA','Oscilloscope,music',0,0,1),
@@ -18529,12 +18647,12 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2209,'2017-01-19','Calibre eBook Server',750,'A quick rundown of how to share your ebook Library on your network using calibre-server','
You can share your Calibre ebook library by running the calibre-server daemon, either from your desktop machine or on a server that is available on your local network. (Or, if you have it set up that way, it can be outward-facing to the wide world.)
\r\n\r\n
To share your library from the desktop Calibre application, choose Connect/share from the menu at the top of the window, then choose Start Content Server. Make a note of the IP address and port, and then you can use other devices on your network to access the library at that address. Normally I use the \"Get Books\" function of the Marvin ebook app on my iPad, or else the \"Experimental Browser\" on my Kindle and download the books directly to the devices. On my Android phone, I use the Chrome browser and then long press on the link to an Epub file, choose to save to device, and then open it using FBreader.
\r\n\r\n
To share the library from your GNU/Linux server, you\'ll have to install Calibre on the server and then put a copy of your ebook Library on the server as well. To start and stop the server daemon, you need to put a service startup script in the /etc/init.d directory with all of the other system startup scripts. An example is given below—fill in with the appropriate paths and user data for your setup. (See the calibre-server user manual for a full list of options and their descriptions.) When the script is in place and has executable permissions, you start and stop the service as follows (as root):
\r\n\r\n
\r\nservice calibre-server start|stop|restart\r\n
\r\n\r\n
Service Startup Script
\r\n\r\n
\r\n#!/bin/bash\r\n\r\nCALIBRE_LIBRARY_PATH="/path/to/CalibreLibrary"\r\nPIDFILE=/tmp/calibre-server.pid\r\nUSER=<run_as_user> # run daemon as this user\r\nLOGIN=<end_user_username> # to log into library (optional)\r\nPW=<password> # to log into library (optional)\r\nPORT=3456\r\n\r\nstart() {\r\n echo "Starting Calibre server..."\r\n su -c "calibre-server --with-library=\\"$CALIBRE_LIBRARY_PATH\\" --username=$LOGIN --password=$PW -p $PORT --pidfile=$PIDFILE --daemonize" & \r\n if [ $? -ne 0 ]; then\r\n echo "Could not start calibre-server."\r\n fi\r\n}\r\n\r\nstop() {\r\n echo "Stopping Calibre server..."\r\n if [ -e $PIDFILE ]; then\r\n read PID < $PIDFILE\r\n ps aux | grep "$PID" | grep \'calibre-server\' > /dev/null\r\n RUNNING=$?\r\n if [ $RUNNING -eq 0 ]; then\r\n kill $PID\r\n if [ $? -eq 0 ]; then\r\n rm $PIDFILE\r\n fi\r\n else\r\n echo "Could not find a calibre-server process with PID $PID."\r\n fi\r\n else\r\n echo "Could not find pidfile: $PIDFILE"\r\n fi\r\n}\r\n\r\nrestart() {\r\n stop\r\n start\r\n}\r\n\r\nstatus() {\r\n if [ -e $PIDFILE ]; then\r\n read PID < $PIDFILE\r\n echo "calibre-server is running with PID $PID."\r\n else\r\n echo "calibre-server is not running."\r\n fi\r\n}\r\n\r\nunknown() {\r\n echo "Unrecognized command: $1"\r\n echo "Try one of the following: (start|stop|restart|status)"\r\n}\r\n\r\ncase $1 in\r\n start ) \r\n start\r\n ;;\r\n stop )\r\n stop\r\n ;;\r\n restart )\r\n restart\r\n ;;\r\n status )\r\n status\r\n ;;\r\n * )\r\n unknown\r\n ;;\r\nesac\r\n
',238,0,0,'CC-BY-SA','ebooks, home servers, sharing',0,0,1),
(2210,'2017-01-20','On Freedom of Speech and Censorship',1302,'Reflections on Freedom of Speech ','
In this episode, I discuss some of issues that can arise with Freedom of Speech, as well as some of the finer points of what constitutes "censorship".
\r\n',325,0,1,'CC-BY-SA','Freedom of Speech, Censorship',0,0,1),
(2213,'2017-01-25','Clay Body',652,'Basic clay theory','
Before we create ceramics, we will begin with some basic theory.
\r\n\r\n',329,0,1,'CC-BY-SA','clay,pottery,porcelain,ceramic',0,0,1),
-(2481,'2018-02-05','HPR Community News for January 2018',4509,'HPR Volunteers talk about shows released and comments posted in January 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 33 comments in total.
\n
There are 9 comments on\n6 previous shows:
\n
hpr2399\n(2017-10-12) \"Using Super Glue to create Landmarks on Keyboards\"\nby dodddummy.
\n
\n
\n
\nComment 7:\ndodddummy on 2018-01-01:\n\"One more use case and a generalization\"
\n
hpr2422\n(2017-11-14) \"Kickstarter Post Mortem\"\nby klaatu.
\n
\n
\n
\nComment 2:\nKlaatu on 2018-01-12:\n\"@busybusy\"
hpr2477\n(2018-01-30) \"Reading Audio Books While Distracted\"\nby dodddummy.
\n
\n
Comment 1:\ndodddummy on 2018-01-29:\n\"Correction\"
\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:
Due to the recent spate of future show reservations a change of text is required. The proposed change is from:
\n
\n
All reservations need to be approved. In the case where you wish to reserve a particular slot but do not have the media recorded, you will need to get the reservation approved in advance by the HPR Mailing List.
\n
\n
To
\n
\n
All reservations need to be approved. Any host can reserve any slot one year in advance by recording their show and posting it on the desired day as normal. In exceptional circumstances it possible to make a reservation, but only if there was no way to have recorded the show in time, and with approval in advance by the HPR Mailing List.
\n
\n
This is intended only for exceptional circumstances such as a scheduled interview where we would like the audio to be released as soon after as possible, or to cover an important topical situation
\n
Upload Errors
\n
Some uploaders are reporting 403 permission denied. This is because one of the protection scripts is checking for strange activity. We narrowed this down to \' (quote) in file names, or | (pipes) in the show notes.
\n
New series
\n
Two new series have been added to the HPR system:
\n
\n
Health and Healthcare (13 episodes)
\n
Sound Scapes (6 episodes)
\n
\n
Comment form \'justification\'
\n
The \'What does HPR mean to you?\' field on the comment form is required when commenting on older shows. As an anti-spam measure this field needs to completed with text which is between 20 and 200 characters in length.
\n
Tags and Summaries
\n
Thanks to bjb and Windigo for sending in updates in the past month.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2481,'2018-02-05','HPR Community News for January 2018',4509,'HPR Volunteers talk about shows released and comments posted in January 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 33 comments in total.
\n
There are 9 comments on\n6 previous shows:
\n
hpr2399\n(2017-10-12) \"Using Super Glue to create Landmarks on Keyboards\"\nby dodddummy.
\n
\n
\n
\nComment 7:\ndodddummy on 2018-01-01:\n\"One more use case and a generalization\"
\n
hpr2422\n(2017-11-14) \"Kickstarter Post Mortem\"\nby klaatu.
\n
\n
\n
\nComment 2:\nKlaatu on 2018-01-12:\n\"@busybusy\"
hpr2477\n(2018-01-30) \"Reading Audio Books While Distracted\"\nby dodddummy.
\n
\n
Comment 1:\ndodddummy on 2018-01-29:\n\"Correction\"
\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:
Due to the recent spate of future show reservations a change of text is required. The proposed change is from:
\n
\n
All reservations need to be approved. In the case where you wish to reserve a particular slot but do not have the media recorded, you will need to get the reservation approved in advance by the HPR Mailing List.
\n
\n
To
\n
\n
All reservations need to be approved. Any host can reserve any slot one year in advance by recording their show and posting it on the desired day as normal. In exceptional circumstances it possible to make a reservation, but only if there was no way to have recorded the show in time, and with approval in advance by the HPR Mailing List.
\n
\n
This is intended only for exceptional circumstances such as a scheduled interview where we would like the audio to be released as soon after as possible, or to cover an important topical situation
\n
Upload Errors
\n
Some uploaders are reporting 403 permission denied. This is because one of the protection scripts is checking for strange activity. We narrowed this down to \' (quote) in file names, or | (pipes) in the show notes.
\n
New series
\n
Two new series have been added to the HPR system:
\n
\n
Health and Healthcare (13 episodes)
\n
Sound Scapes (6 episodes)
\n
\n
Comment form \'justification\'
\n
The \'What does HPR mean to you?\' field on the comment form is required when commenting on older shows. As an anti-spam measure this field needs to completed with text which is between 20 and 200 characters in length.
\n
Tags and Summaries
\n
Thanks to bjb and Windigo for sending in updates in the past month.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2208,'2017-01-18','Kayak Camping',1502,'Kayak camping is a really fun (and affordable) way to explore the outdoors and get away.','
I talk about my setup for camping out of my kayak and ways to do this for very little money using stuff you already have and getting good cheap gear.
\r\n
Getting out into nature is my favorite thing and I love going where I will not see others for days at a time.
\r\n',1,0,0,'CC-BY-NC-SA','camping, outdoors, kayak, kayaking, boating',0,0,1),
(2214,'2017-01-26','Upgrading Vehicle Lights From Halogen to LED',1080,'A quick show about upgrading some of the lights on our vehicles from halogen to LED','
This episode is about the process of upgrading halogen vehicle lights to LED. I did this on my pickup truck for the interior dome light, the brake lights, the third brake light, front and back turn signal lights, the backup lights, and also for the license plate lights. While I\'m talking about this process, I also install new LED brake light bulbs on our Honda CR-V. I almost forgot to talk about the necessity of installing resistors to handle the problem of hyperflashing with the blinker lights.
\r\n\r\n
Click on the image below to view the photo album associated with this podcast.
\r\n',238,0,0,'CC-BY-SA','DIY, Automotive, Auto Repair, Car Repair, LED, Lighting',0,0,1),
(2220,'2017-02-03','Taking apart a tablet',1716,'In which I fail to discover or correct the problem with my son\'s tablet','
My son\'s tablet stopped working a few days ago, so I took it apart to see if I could find the problem. I discuss my kit and give a sound seeing tour of the disassembly.
',257,0,0,'CC-BY-SA','repair,electronics,spudger,tablet',0,0,1),
(2212,'2017-01-24','meanderings Cyberpunk and the Minidisc',298,'The Cyberpunk history of the Sony Minidisc','
',110,0,0,'CC-BY-SA','cyberpunk, minidisc, movies',0,0,1),
-(2211,'2017-01-23','My podcast workflow',1558,'How I download, manage, listen to and delete podcasts','
My podcast workflow
\r\n
I have been listening to podcasts for many years. I started in 2005, when I bought my first MP3 player.
\r\n
Various podcast downloaders (or podcatchers) have existed over this time, some of which I have tried. Now I use a script based on Bashpodder, which I have built to meet my needs. I also use a database to hold details of the feeds I subscribe to, what episodes have been downloaded, what is on a player to be listened to and what can be deleted. I have written many scripts (in Bash, Perl and Python) to manage all of this, and I will be describing the overall workflow in this episode without going into too much detail.
\r\n',225,0,1,'CC-BY-SA','podcast,RSS,Atom,Rockbox,playlist,Bashpodder,PostgreSQL,XSLT',0,0,1),
+(2211,'2017-01-23','My podcast workflow',1558,'How I download, manage, listen to and delete podcasts','
My podcast workflow
\r\n
I have been listening to podcasts for many years. I started in 2005, when I bought my first MP3 player.
\r\n
Various podcast downloaders (or podcatchers) have existed over this time, some of which I have tried. Now I use a script based on Bashpodder, which I have built to meet my needs. I also use a database to hold details of the feeds I subscribe to, what episodes have been downloaded, what is on a player to be listened to and what can be deleted. I have written many scripts (in Bash, Perl and Python) to manage all of this, and I will be describing the overall workflow in this episode without going into too much detail.
\r\n',225,0,1,'CC-BY-SA','podcast,RSS,Atom,Rockbox,playlist,Bashpodder,PostgreSQL,XSLT',0,0,1),
(2216,'2017-01-30','Working AO-85 with my son',993,'My son and I try to make a contact on an amateur radio satellite','
Working AO-85 with my son!
\r\n
Given all the talk about Amateur Radio on the mailing list, I decided to record a live operation show. In this episode my son and I try to make a contact on AO-85. He eventually loses interest and it\'s just me yelling into a microphone.
\r\n
We don\'t manage to make a successful contact but we do pick up the bird. One person toward the end tried to pull us out of the noise but there were simply too many people utilizing the satellite for us to make contact. Part of that may have been my Doppler shift settings.
\r\n
Here is the pass data from gPredict (in CST) for this particular attempt:
',241,0,0,'CC-BY-SA','hamradio, ham, radio, amateur, satellites, projects',0,0,1),
(2215,'2017-01-27','Kickstarter Omega2 Plus first time setup walkthrough',534,'I talk about my experience setting up the Omega2 plus for the first time','
I paid for one Omega2 Plus Kickstarter pledge. Later, as most do, the project offers upgrades. My pack was for one Omega2 plus, an OLED module, and the expansion board. After pledging I then added on another Omega2, a GPS module and a mini expansion board. Review wise, this is a good inexpensive IOT kit for any beginner. Someone that is more advanced can get into Arduino, or ESP8266 with microPython.
TJoe single board computer show: https://code4sale.com/sbc/ Joe follows and re-posts lots of really good tiny or single board computer links on Google plus.
Follow the Tony Dicola tutorials at Adafruit. He\'s got a lot of really good video tutorials on exactly what you need and how to do just about everything you would want to do with microcontrollers. https://learn.adafruit.com/users/tdicola
',96,91,0,'CC-BY-SA','onion.io, omega2, python, linux, sbc, single board computer, espeak, ogg vorbis, mc hawking',0,0,1),
(2217,'2017-01-31','building a new voice input device',351,'a bunch of jibber jabber about putting a little computer into a phone','
',315,78,0,'CC-BY-SA','lca2017',0,0,1),
(2236,'2017-02-27','Hoarding Raspberry Pis',1515,'In this episode, I discuss my growing obsession with building a Raspberry Pi data center.','
Show Notes
\r\n
In this episode, I discuss my growing obsession with building a Raspberry Pi data center.
\r\n',300,0,0,'CC-BY-SA','Raspberry Pi, server, raspbian',0,0,1),
(2237,'2017-02-28','Do you care?',464,'Some thoughts on the phrase I couldn\'t care less.','
CPrompt talks about one of his pet-peeves. The phrase "I could care less"
\r\n',252,0,0,'CC-BY-SA','English,idiom',0,0,1),
-(2238,'2017-03-01','Gnu Awk - Part 6',2379,'Looking more deeply into Awk\'s regular expressions','
Gnu Awk - Part 6
\r\n
Introduction
\r\n
This is the sixth episode of the “Learning Awk” series that b-yeezi and I are doing.
\r\n
Recap of the last episode
\r\n
Regular expressions
\r\n
In the last episode we saw regular expressions in the ‘pattern’ part of a ‘pattern {action}’ sequence. Such a sequence is called a ‘RULE’, (as we have seen in earlier episodes).
\r\n
$1 ~ /p[elu]/ {print $0}
\r\n
Meaning: If field 1 contains a ‘p’ followed by one of ‘e’, ‘l’ or ‘u’ print the whole line.
\r\n
$2 ~ /e{2}/ {print $0}
\r\n
Meaning: If field 2 contains two instances of letter ‘e’ in sequence, print the whole line.
\r\n
It is usual to enclose the regular expression in slashes, which make it a regexp constant.
\r\n
We had a look at many of the operators used in regular expressions in episode 5. Unfortunately, some small errors crept into the list of operators mentioned in that episode. These are incorrect:
\r\n
\r\n
\\A (beginning of a string)
\r\n
\\z (end of a string)
\r\n
\\b (on a word boundary)
\r\n
\r\n
The first two operators exist, in languages like Perl and Ruby, but not in GNU Awk.
\r\n
For the ‘\\b’ sequence the GNU manual says:
\r\n
\r\n
In other GNU software, the word-boundary operator is ‘\\b’. However, that conflicts with the awk language’s definition of ‘\\b’ as backspace, so gawk uses a different letter. An alternative method would have been to require two backslashes in the GNU operators, but this was deemed too confusing. The current method of using ‘\\y’ for the GNU ‘\\b’ appears to be the lesser of two evils.
\r\n
\r\n
The corrected list of operators is discussed later in this episode.
\r\n
Replacement
\r\n
Last episode we saw the built-in functions that use regular expressions for manipulating strings. These are sub, gsub and gensub. Regular expressions are used in other functions but we will look at them later.
\r\n
We will be looking at sub, gsub and gensub in more detail in this episode.
\r\n
Long notes
\r\n
I have written out a set of longer notes for this episode and these are available here.
',225,94,1,'CC-BY-SA','Awk utility, Awk language, gawk, regular expression',0,0,1),
-(2245,'2017-03-10','Managing tags on HPR episodes - 1',1568,'Looking for the best way to store and manage tags in the HPR database, part 1','
Managing tags on HPR episodes - 1
\r\n
Introduction
\r\n
We have been collecting and storing tags for new HPR shows for a while now with the intention of eventually offering a search interface. In addition, a number of contributors, including myself have been adding tags (and summaries), to shows that do not have them, since August 2015. There is still a way to go, but we’re making progress. At the time of writing (2017-01-31) 56.29% (1248) of all HPR shows (2217) have tags.
\r\n
In recent times the way in which we should use these tags has been discussed. In show 2035 on 2016-05-20 droops suggested:
\r\n
\r\n
The website, which is a lot of work, needs to have related shows listed on each individual show’s page. This will take a tag system and someone to tag all of the almost uncountable previous episodes.
\r\n
\r\n
This episode begins a discussion about some of the ways that tags can be stored, managed and accessed efficiently in the HPR database.
\r\n
I started planning a show about this subject in the summer of 2016, and the amount of information I have accumulated has grown since then. There is now quite a lot, so I am going to split what was originally going to be one show into three.
\r\n
The subject becomes quite technical in the later shows, discussing database design techniques, and all three of the shows contain examples of database queries and scripts. If you are not interested in this subject than feel free to skip past. However, you might find this first episode more palatable, and any thoughts you might have on the subject would be appreciated.
\r\n
Long notes
\r\n
I have written out a set of longer notes for this episode and these are available here.
Perl script to clean the tags field in the database: clean_csv_tags
\r\n
\r\n
',225,0,1,'CC-BY-SA','HPR,database,schema,tag',0,0,1),
+(2238,'2017-03-01','Gnu Awk - Part 6',2379,'Looking more deeply into Awk\'s regular expressions','
Gnu Awk - Part 6
\r\n
Introduction
\r\n
This is the sixth episode of the “Learning Awk” series that b-yeezi and I are doing.
\r\n
Recap of the last episode
\r\n
Regular expressions
\r\n
In the last episode we saw regular expressions in the ‘pattern’ part of a ‘pattern {action}’ sequence. Such a sequence is called a ‘RULE’, (as we have seen in earlier episodes).
\r\n
$1 ~ /p[elu]/ {print $0}
\r\n
Meaning: If field 1 contains a ‘p’ followed by one of ‘e’, ‘l’ or ‘u’ print the whole line.
\r\n
$2 ~ /e{2}/ {print $0}
\r\n
Meaning: If field 2 contains two instances of letter ‘e’ in sequence, print the whole line.
\r\n
It is usual to enclose the regular expression in slashes, which make it a regexp constant.
\r\n
We had a look at many of the operators used in regular expressions in episode 5. Unfortunately, some small errors crept into the list of operators mentioned in that episode. These are incorrect:
\r\n
\r\n
\\A (beginning of a string)
\r\n
\\z (end of a string)
\r\n
\\b (on a word boundary)
\r\n
\r\n
The first two operators exist, in languages like Perl and Ruby, but not in GNU Awk.
\r\n
For the ‘\\b’ sequence the GNU manual says:
\r\n
\r\n
In other GNU software, the word-boundary operator is ‘\\b’. However, that conflicts with the awk language’s definition of ‘\\b’ as backspace, so gawk uses a different letter. An alternative method would have been to require two backslashes in the GNU operators, but this was deemed too confusing. The current method of using ‘\\y’ for the GNU ‘\\b’ appears to be the lesser of two evils.
\r\n
\r\n
The corrected list of operators is discussed later in this episode.
\r\n
Replacement
\r\n
Last episode we saw the built-in functions that use regular expressions for manipulating strings. These are sub, gsub and gensub. Regular expressions are used in other functions but we will look at them later.
\r\n
We will be looking at sub, gsub and gensub in more detail in this episode.
\r\n
Long notes
\r\n
I have written out a set of longer notes for this episode and these are available here.
',225,94,1,'CC-BY-SA','Awk utility, Awk language, gawk, regular expression',0,0,1),
+(2245,'2017-03-10','Managing tags on HPR episodes - 1',1568,'Looking for the best way to store and manage tags in the HPR database, part 1','
Managing tags on HPR episodes - 1
\r\n
Introduction
\r\n
We have been collecting and storing tags for new HPR shows for a while now with the intention of eventually offering a search interface. In addition, a number of contributors, including myself have been adding tags (and summaries), to shows that do not have them, since August 2015. There is still a way to go, but we’re making progress. At the time of writing (2017-01-31) 56.29% (1248) of all HPR shows (2217) have tags.
\r\n
In recent times the way in which we should use these tags has been discussed. In show 2035 on 2016-05-20 droops suggested:
\r\n
\r\n
The website, which is a lot of work, needs to have related shows listed on each individual show’s page. This will take a tag system and someone to tag all of the almost uncountable previous episodes.
\r\n
\r\n
This episode begins a discussion about some of the ways that tags can be stored, managed and accessed efficiently in the HPR database.
\r\n
I started planning a show about this subject in the summer of 2016, and the amount of information I have accumulated has grown since then. There is now quite a lot, so I am going to split what was originally going to be one show into three.
\r\n
The subject becomes quite technical in the later shows, discussing database design techniques, and all three of the shows contain examples of database queries and scripts. If you are not interested in this subject than feel free to skip past. However, you might find this first episode more palatable, and any thoughts you might have on the subject would be appreciated.
\r\n
Long notes
\r\n
I have written out a set of longer notes for this episode and these are available here.
Perl script to clean the tags field in the database: clean_csv_tags
\r\n
\r\n
',225,0,1,'CC-BY-SA','HPR,database,schema,tag',0,0,1),
(2248,'2017-03-15','2016-2017 HPR New Year show episode 2',14462,'Hacker Public Radio new years eve show episode 2','
',159,121,1,'CC-BY-SA','new years eve show',0,0,1),
(2240,'2017-03-03','Amateur Radio Round Table',3219,'HPR community hams get together to talk about ham radio','
HPR Amateur Radio Round Table
\r\n
2017-01-27, 0300 UTC
\r\n
Participants:
\r\n
\r\n
cmhobbs KD5RYO
\r\n
Jon KT4KB
\r\n
Steve KD0IJP
\r\n
Michael DL4MGM
\r\n
Tyrel KG5RHT
\r\n
\r\n
After a short introduction of the hosts, we start discussing the question that came up on the mailinglist:
\r\n
How do you get started at all? How do you get the license to participate in amateur radio?
\r\n
Probably the amateur radio organisation in your country will provide the essential information required for obtaining an amateur radio license. Start looking at the International Amateur Radio Union at https://www.iaru.org and track down your country. From there you can search for information about your local area and local groups. In the US, look for the ARRL at https://www.arrl.org.
\r\n
If you do not chose to get involved with the local club before taking the test to get the license, we suggest you do so after that. Local events and clubs can provide the insight into the vast possibilities amateur radio has to offer. This will allow you to chose much better, where your personal interests are and where to start. Radio "nets", are mentioned as a good starting point to actually get "on the air" and to overcome any possible shyness.
\r\n
Acronyms explained along the way
\r\n
\r\n
VFO: Variable Frequency Oscillator. The thing behind the main tuning dial to adjust the frequency, an important building block of radio equipment. In modern gear the VFO-mode is the mode where you can continuously change the frequency in certain increments, as opposed to memory mode, where you normally select from a set of fixed frequencies previously stored.
\r\n
CW: Continuous Wave. Used to reference to Morse code telegraphy as an operating mode.
\r\n
VHF: Very High Frequency. Generally this references the frequency range 30 Mhz to 300 MHz. In the context of a radio user, it normally means the sub range in there, that is assigned to the specific use.
\r\n
UHF: Ultra High Frequency. 300 MHz to 3 GHz
\r\n
HF: High Frequency. Range 3 MHz to 30 MHz. Also referenced to as "short wave" frequencies. Several amateur radio "bands" are spread out in that frequency range.
\r\n
\r\n
We often reference frequency ranges by wavelength. E.g. the "20m band", which is the frequency allocation for amateur radio at 14 MHz. The connection is: Wavelength = c / frequency, with c being the speed of light. A rule of thumb is: Wavelength [m] = 300 / frequency [MHz]
We went on describing a bit where our personal interests in amateur radio are.
\r\n
Our combined interests cover all the way from Morse code over voice communication to digital modes and "foxhunt" (the radio sport of Amateur Radio Direction Finding). Note that there are many other facets to amateur radio. Even our combined interests are just a small segment of the possible activities within the avocation.
\r\n
We talk about getting started with just listening to amateur radio traffic on the short wave frequencies.
\r\n
Why do you need a license, why not just do it?
\r\n
First, without a license, it is ILLEGAL.
\r\n
Law makers have acknowledged that one important goal of amateur radio is education and experimentation. We are allowed to modify equipment or even build it completely from scratch and operate it legally on the assigned frequencies. This is a unique privilege that sets amateur radio apart from any other radio users which have to use certified equipment.
Next ham radio round table will be held in about a month, with a time that will be better suited for European time zones. We welcome anyone to participate, whether or not you are a licensed ham. Watch the HPR email list for announcements and details.
\r\n',109,0,0,'CC-BY-SA','amateur radio, ham',0,0,1),
-(2242,'2017-03-07','Interview with Colin J. Mills, organizer of KW Linuxfest',647,'After the KW Linuxfest, Bob Jonkman and Colin Mills sat down and talked for a while.','
After the KW Linuxfest on Saturday, 28 January 2017, Bob Jonkman and Colin J. Mills (HPR host cjm) sat down and talked about some of the organizational challenges in running an event, Colin\'s co-op program at Conestoga College, and anticipating another KW Linuxfest in 2018.
You can reach Colin J. Mills at kwlinuxfest.nospam@nospam.gmail.com
\r\n',350,78,0,'CC-BY-SA','Linux, Kitchener-Waterloo',0,0,1),
+(2242,'2017-03-07','Interview with Colin J. Mills, organizer of KW Linuxfest',647,'After the KW Linuxfest, Bob Jonkman and Colin Mills sat down and talked for a while.','
After the KW Linuxfest on Saturday, 28 January 2017, Bob Jonkman and Colin J. Mills (HPR host cjm) sat down and talked about some of the organizational challenges in running an event, Colin\'s co-op program at Conestoga College, and anticipating another KW Linuxfest in 2018.
You can reach Colin J. Mills at kwlinuxfest.nospam@nospam.gmail.com
\r\n',350,78,0,'CC-BY-SA','Linux, Kitchener-Waterloo',0,0,1),
(2247,'2017-03-14','2016-2017 HPR New Year show 1',15870,'Hacker Public Radio new years eve show episode 1','
\r\n',159,121,1,'CC-BY-SA','new years eve show',0,0,1),
(2249,'2017-03-16','2016-2017 HPR New Year show episode 3',13526,'Hacker Public Radio new years eve show episode 3','
HPR new years eve show episode 3
\r\n
\r\n
Carrie Fisher
\r\n
voting / politics
\r\n
heritages
\r\n
Wikipedia for news
\r\n
pizza gate
\r\n
why we love Linux
\r\n
text editors
\r\n
forum fun
\r\n
coffee is great
\r\n
making money with free software
\r\n
free software in the workplace
\r\n
Single board computers
\r\n
\r\n',159,121,1,'CC-BY-SA','new years eve show',0,0,1),
(2250,'2017-03-17','2016-2017 HPR New Year show episode 4',14536,'Hacker Public Radio new years eve show episode 4','
',159,121,1,'CC-BY-SA','new years eve show',0,0,1),
@@ -18595,21 +18713,21 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2347,'2017-08-01','An Intro to Apache Hadoop',2249,'Just a pretty boring summary of what Hadoop is and how it works.','
\r\n',129,0,1,'CC-BY-SA','Hadoop,big data,MapReduce,cluster,HDFS',0,0,1),
(2275,'2017-04-21','Penguicon 2017',1126,'A look at the lineup for the 2017 event.','
Penguicon 2017 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I give you a look at the lineup you can expect to see.
',129,0,0,'CC-BY-SA','Apache Hadoop, Hadoop',0,0,1),
-(2278,'2017-04-26','Some supplementary Bash tips',2375,'Finishing off the subject of expansion in Bash (part 1)','
Some supplementary Bash tips
\r\n
Pathname expansion; part 1 of 2
\r\n
Expansion
\r\n
As we saw in the last episode 2045 (and others in this sub-series) there are eight types of expansion applied to the command line in the following order:
\r\n
\r\n
Brace expansion (we looked at this subject in episode 1884)
This is the last topic in the (sub-) series about expansion in Bash. However, when writing the notes for this episode it became apparent that there was too much to fit into a single HPR episode. Consequently I have made it into two.
\r\n
In this episode we will look at simple pathname expansion and some of the ways in which its behaviour can be controlled. In the next episode we’ll finish by looking at extended pattern matching. Both are included in the “Manual Page Extracts” section at the end of the long notes.
\r\n
Long Show Notes
\r\n
I have written out a moderately long set of notes about this subject and these are available here.
\r\n\r\n',225,42,1,'CC-BY-SA','Bash,expansion,pathname expansion,shopt',0,0,1),
+(2278,'2017-04-26','Some supplementary Bash tips',2375,'Finishing off the subject of expansion in Bash (part 1)','
Some supplementary Bash tips
\r\n
Pathname expansion; part 1 of 2
\r\n
Expansion
\r\n
As we saw in the last episode 2045 (and others in this sub-series) there are eight types of expansion applied to the command line in the following order:
\r\n
\r\n
Brace expansion (we looked at this subject in episode 1884)
This is the last topic in the (sub-) series about expansion in Bash. However, when writing the notes for this episode it became apparent that there was too much to fit into a single HPR episode. Consequently I have made it into two.
\r\n
In this episode we will look at simple pathname expansion and some of the ways in which its behaviour can be controlled. In the next episode we’ll finish by looking at extended pattern matching. Both are included in the “Manual Page Extracts” section at the end of the long notes.
\r\n
Long Show Notes
\r\n
I have written out a moderately long set of notes about this subject and these are available here.
\r\n\r\n',225,42,1,'CC-BY-SA','Bash,expansion,pathname expansion,shopt',0,0,1),
(2283,'2017-05-03','Saving money shaving with double and single edge safety razors',1031,'Using double and single edge safety razors to save money','
',77,0,0,'CC-BY-SA','shaving,razor,safety razor,razor blade',0,0,1),
(2284,'2017-05-04','Resurrecting a dead ethernet switch',893,'Replacing a failing capacitor in the power supply of an ethernet switch to make it work again.','
In this episode I simply let you participate with me replacing an electrolytic capacitor in the power supply of an Ethernet switch.
\r\n
The broken capacitor shows a bulge in its housing and was therefore easily identifiable. The supply voltage in the fault condition could be observed with an oscilloscope to completely collapse when load is turned on. Both facts are illustrated in the image below.
\r\n
Replacing the capacitor fixed the switch and brought it back in service.
\r\n
',271,0,0,'CC-BY-SA','Ethernet switch, capacitor, power supply',0,0,1),
(2279,'2017-04-27','The first Intel CompuStick sound fix with LUbuntu',296,'A quick podcast about sound with LUbuntu','
\r\n',129,0,1,'CC-BY-SA','Intel CompuStick,Lubuntu,pulse audio',0,0,1),
(2285,'2017-05-05','The Tick Conspiracy',621,'A show that covers the ongoing war between ticks (may they rot in hell) and everything else.','
\r\nReminder: This show is released in .ogg a non patent encumbered format.\r\n
',354,0,1,'CC-BY-SA','Ticks, Paranoia, Comedic, Informative?',0,0,1),
(2290,'2017-05-12','How to change the height of your Ironing board',168,'Amazing Life Hack that will change your life forever.','
Tired of having back ache after Ironing
\r\n
Check out this amazing episode to hear how you too can transform a dull chore into an enjoyable experience !!!!
\r\n',30,0,1,'CC-BY-SA','Amazing Life Hack',0,0,1),
(2287,'2017-05-09','Desparately Seeking Saving RMS - Introduction',1830,'My attempt to start moving towards the RMS Model','
\r\nMy start towards the RMS ideal.\r\n
\r\n',151,0,1,'CC-BY-SA','free software, richard stallman, RMS',0,0,1),
-(2501,'2018-03-05','HPR Community News for February 2018',2881,'HPR Volunteers talk about shows released and comments posted in February 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 19 comments in total.
\n
There are 6 comments on\n4 previous shows:
\n
hpr2418\n(2017-11-08) \"What\'s in my ham shack, part 2\"\nby MrX.
\n
\n
\n
\nComment 2:\nMrX on 2018-02-25:\n\"re great infos\"
\n
hpr2465\n(2018-01-12) \"TronScript where have you been all my life!\"\nby operat0r.
Comment 1:\nb-yeezi on 2018-02-26:\n\"Directly into my toolbox\"
Comment 2:\nDave Morriss on 2018-02-27:\n\"Thanks b-yeezi\"
\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 page has been extended this month by the addition of a list of tags at the end. Each tag is followed by the show numbers which use that tag, each being a link to the show.
\n
The thinking is that if you are considering which tags to add to a show without them you can look through this list to find out whether other people have used the tag and in what context.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2521,'2018-04-02','HPR Community News for March 2018',3923,'HPR Volunteers talk about shows released and comments posted in March 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 34 comments in total.
Comment 1:\nclacke on 2018-03-27:\n\"Markdown shownotes\"
\n
hpr2516\n(2018-03-26) \"Intro to git branch\"\nby klaatu.
\n
\n
Comment 1:\nMike Ray on 2018-03-26:\n\"Intro to git\"
\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:
The summary page has been further enhanced this month. The list of tags at the end of the page has been laid out to show the blocks with the same starting letter, and an alphabetic index added at the front. It is hoped that this will make it easier to find tags relating to the show to which you are about to add tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2546,'2018-05-07','HPR Community News for April 2018',1591,'Ken is on his own and talks about shows released and comments posted in April 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 18 comments in total.
\n
There are 11 comments on\n4 previous shows:
\n
hpr2254\n(2017-03-23) \"Introduction to Model Rocketry\"\nby Steve Saner.
\n
\n
\n
\nComment 4:\nJohn E Thompson on 2018-04-04:\n\"Great Show\"
\n
\nComment 5:\nSteve on 2018-04-04:\n\"Re: Great Show\"
hpr2538\n(2018-04-25) \"My geeky plans for the new house.\"\nby knightwise.
\n
\n
Comment 1:\ntuturto on 2018-04-25:\n\"Such a beautiful soundscape\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2501,'2018-03-05','HPR Community News for February 2018',2881,'HPR Volunteers talk about shows released and comments posted in February 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 19 comments in total.
\n
There are 6 comments on\n4 previous shows:
\n
hpr2418\n(2017-11-08) \"What\'s in my ham shack, part 2\"\nby MrX.
\n
\n
\n
\nComment 2:\nMrX on 2018-02-25:\n\"re great infos\"
\n
hpr2465\n(2018-01-12) \"TronScript where have you been all my life!\"\nby operat0r.
Comment 1:\nb-yeezi on 2018-02-26:\n\"Directly into my toolbox\"
Comment 2:\nDave Morriss on 2018-02-27:\n\"Thanks b-yeezi\"
\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 page has been extended this month by the addition of a list of tags at the end. Each tag is followed by the show numbers which use that tag, each being a link to the show.
\n
The thinking is that if you are considering which tags to add to a show without them you can look through this list to find out whether other people have used the tag and in what context.
\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2521,'2018-04-02','HPR Community News for March 2018',3923,'HPR Volunteers talk about shows released and comments posted in March 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 34 comments in total.
Comment 1:\nclacke on 2018-03-27:\n\"Markdown shownotes\"
\n
hpr2516\n(2018-03-26) \"Intro to git branch\"\nby klaatu.
\n
\n
Comment 1:\nMike Ray on 2018-03-26:\n\"Intro to git\"
\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:
The summary page has been further enhanced this month. The list of tags at the end of the page has been laid out to show the blocks with the same starting letter, and an alphabetic index added at the front. It is hoped that this will make it easier to find tags relating to the show to which you are about to add tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2546,'2018-05-07','HPR Community News for April 2018',1591,'Ken is on his own and talks about shows released and comments posted in April 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 18 comments in total.
\n
There are 11 comments on\n4 previous shows:
\n
hpr2254\n(2017-03-23) \"Introduction to Model Rocketry\"\nby Steve Saner.
\n
\n
\n
\nComment 4:\nJohn E Thompson on 2018-04-04:\n\"Great Show\"
\n
\nComment 5:\nSteve on 2018-04-04:\n\"Re: Great Show\"
hpr2538\n(2018-04-25) \"My geeky plans for the new house.\"\nby knightwise.
\n
\n
Comment 1:\nTuula on 2018-04-25:\n\"Such a beautiful soundscape\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2288,'2017-05-10','Installing and using virtualenvwrapper for python',665,'Installing and using virtualenvwrapper for python, (What I learned the hard way!)','
lsvirtualenv (Lists all virtual environments you have\r\ncreated.)
\r\n
workon <project_name>
\r\n
deactivate
\r\n
\r\n
Don\'t use SUDO when installing inside the virtualenv
\r\n\r\n',355,0,1,'CC-BY-SA','python, programming',0,0,1),
(2289,'2017-05-11','Sendy Send. Tell if your email has been read!!',281,'Sigflup announces sendy send, which is a mechanism to tell if people read your email.','
',115,0,0,'CC-BY-SA','HTML mail,read notification',0,0,1),
(2291,'2017-05-15','Arch on CELES',725,'Convinces you, and herself that Arch Linux on a Chromebook is a good idea!','
Architecture : x86_64\r\nMode(s) opératoire(s) des processeurs : 32-bit, 64-bit\r\nBoutisme : Little Endian\r\nProcesseur(s) : 2\r\nListe de processeur(s) en ligne : 0,1\r\nThread(s) par cœur : 1\r\nCœur(s) par socket : 2\r\nSocket(s) : 1\r\nNœud(s) NUMA : 1\r\nIdentifiant constructeur : GenuineIntel\r\nFamille de processeur : 6\r\nModèle : 76\r\nNom de modèle : Intel(R) Celeron(R) CPU N3050 @ 1.60GHz\r\nRévision : 3\r\nVitesse du processeur en MHz : 642.089\r\nVitesse maximale du processeur en MHz : 2160,0000\r\nVitesse minimale du processeur en MHz : 480,0000\r\nBogoMIPS : 3200.00\r\nVirtualisation : VT-x\r\nCache L1d : 24K\r\nCache L1i : 32K\r\nCache L2 : 1024K\r\nNœud NUMA 0 de processeur(s) : 0,1\r\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat
\r\n
\r\n
lspci
\r\n
\r\n
00:00.0 Host bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register (rev 21)\r\n00:02.0 VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 21)\r\n00:0b.0 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller (rev 21)\r\n00:14.0 USB controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller (rev 21)\r\n00:1b.0 Audio device: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller (rev 21)\r\n00:1c.0 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 (rev 21)\r\n00:1c.2 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3 (rev 21)\r\n00:1f.0 ISA bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU (rev 21)\r\n02:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)
\r\n',349,0,1,'CC-BY-SA','xe500c13,celes,chromebook,archlinux,arch',0,0,1),
(2292,'2017-05-16','Baofeng UV5R VHF/UHF Handset part 1',1306,'An in depth series about the Baofeng UV5R VHF/UHF hand-held transceiver.','
In this episode I give a brief introduction and demonstration of the Baofeng UV5R VHF / UHF Hand Held Transceiver
Link to the Free, open-source tool for programming your amateur radio. It supports a large number of manufacturers and models, as well as provides a way to interface with multiple data sources and formats. \r\nhttps://chirp.danplanet.com/projects/chirp/wiki/Home
\r\n
\r\n',201,43,0,'CC-BY-SA','Amateur Radio',0,0,1),
-(2293,'2017-05-17','More supplementary Bash tips',2305,'Finishing off the subject of expansion in Bash (part 2)','
More supplementary Bash tips
\r\n
Pathname expansion; part 2 of 2
\r\n
Expansion
\r\n
As we saw in the last episode 2278 (and others in this sub-series) there are eight types of expansion applied to the command line in the following order:
\r\n
\r\n
Brace expansion (we looked at this subject in episode 1884)
',225,42,1,'CC-BY-SA','Bash, expansion, filename expansion, extglob, extended pattern matching',0,0,1),
+(2293,'2017-05-17','More supplementary Bash tips',2305,'Finishing off the subject of expansion in Bash (part 2)','
More supplementary Bash tips
\r\n
Pathname expansion; part 2 of 2
\r\n
Expansion
\r\n
As we saw in the last episode 2278 (and others in this sub-series) there are eight types of expansion applied to the command line in the following order:
\r\n
\r\n
Brace expansion (we looked at this subject in episode 1884)
',225,42,1,'CC-BY-SA','Bash, expansion, filename expansion, extglob, extended pattern matching',0,0,1),
(2294,'2017-05-18','Activities with a Toddler',663,'11 things you can do with a toddler you are taking care of.','
Here is the list I check when I am looking for something to do with my toddler. Note that these are good indoor activities.
\r\n
[ ] Milk and TV\r\n[ ] Duplo\r\n[ ] Dollhouse\r\n[ ] Meal preparation\r\n[ ] Mixing bowl\r\n[ ] Crafts or painting\r\n[ ] Sink time\r\n[ ] Chasing and tickling\r\n[ ] Reading\r\n[ ] Cat videos\r\n[ ] Container of similar things
',250,0,0,'CC-BY-SA','parenting, toddlers, children',0,0,1),
(2296,'2017-05-22','Baofeng UV5R VHF/UHF Handset part 2',724,'An in depth series about the Baofeng UV5R VHF/UHF hand-held transceiver.','
In this episode I go through the general specification of the Baofeng UV5R VHF / UHF Hand Held Transceiver
\r\n',201,43,1,'CC-BY-SA','Amateur Radio',0,0,1),
(2301,'2017-05-29','Baofeng UV5R VHF/UHF Handset part 3',804,'An in depth series about the Baofeng UV5R VHF/UHF hand-held transceiver.','
This episode will be right up your street if you like rambling podcasts.
\r\n
I planned to cover the supplied accessories of the Baofeng UV5R VHF / UHF Hand Held Transceiver however somewhere along the line I rambled off topic and started blathering on about a whole range of topics.
\r\n
I cover the VHF / UHF spectrum, radio frequency, wavelength Omni-directional antennas, mains hum time stamp fingerprinting among other things.
',201,43,0,'CC-BY-SA','Amateur Radio',0,0,1),
@@ -18633,7 +18751,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2310,'2017-06-09','Kdenlive Part 6 Workflow and Conclusion. ',1136,'A look at the final Kdenlive project workflow and conclusion.','
Hello HPR listeners this is Geddes with part 6 the final article in this Kdenlive series entitled Workflow and Conclusion.
\r\n',310,0,0,'CC-BY-SA','Kdenlive,opensource.com,workflow',0,0,1),
(2312,'2017-06-13','Troubleshooting Websites with XAMPP',886,'Frank describes how he used XAMPP to clone his website to localhost so he could shoot some trouble.','
Using XAMMP To Toubleshoot a Website
\r\n
XAMMP is package containing a complete LAMPP stack configured to work out of the box. It is avalable for Mac, Windows, and Linux from ApacheFriends.org and includes
\r\n\r\n
Apache
\r\n
MariaDB
\r\n
PHP
\r\n
Perl
\r\n\r\n
XAMPP is excellent for testing a new website, testing updates for an existing site, or troubleshooting a misbehaving site.
\r\n
In this podcast, Frank tells how to set up XAMPP against the background of having recently had to troubleshoot his own recalcitrant website.
\r\n
XAMPP startup messages:
\r\n
# cd /opt/lampp\r\n# ./lampp start\r\nStarting XAMPP for Linux 5.6.30-0...\r\nXAMPP: Starting Apache...ok.\r\nXAMPP: Starting MySQL...ok.\r\nXAMPP: Starting ProFTPD...ok.
',195,0,0,'CC-BY-SA','XAMPP,Apache,PHP,Perl,Wordpress',0,0,1),
(2313,'2017-06-14','NilFS2',2099,'Klaatu talks about NilFS2','
\r\nKlaatu talks about NilFS2, including how to monitor checkpoints, create snapshots, and browse snapshots.\r\n
\r\n
\r\nNILFS or NILFS2 (New Implementation of a Log-structured File System) is a log-structured file system implementation for the Linux kernel. It is being developed by Nippon Telegraph and Telephone Corporation (NTT) CyberSpace Laboratories and a community from all over the world. NILFS was released under the terms of the GNU General Public License (GPL).\r\n \r\nhttps://en.wikipedia.org/wiki/NILFS\r\n
\r\n',78,77,0,'CC-BY-SA','file system,NILFS,NILFS2,checkpoint,snapshot',0,0,1),
-(2317,'2017-06-20','Bash snippet - extglob and scp',1707,'How does scp manage extended glob patterns?','
Bash snippet - extglob and scp
\r\n
The Problem
\r\n
Following on from my last show on filename expansion, concentrating on extended patterns and the extglob option, I was asked a question by Jon Kulp in the comment section.
\r\n
Jon was using ls *(*.mp3|*.ogg) to find all OGG and MP3 files in a directory which also held other files. However, when he wanted to copy this subset of files elsewhere he had problems using this expression in an scp command.
\r\n
Having done some investigations to help solve this I thought I\'d put what I found into an HPR episode and share it, and this is the show.
\r\n
Along the way clacke commented too and this led me to more investigations!
\r\n
Long notes
\r\n
As often happens, my idea of a brief episode turned into something much longer, so I converted the notes into long notes which you can find here. In them I have marked some sections which you might want to skip over -- unless you are as much of a geek as I am! I have not covered these sections in detail in the audio.
',225,42,1,'CC-BY-SA','Bash,shopt,filename expansion,scp,rsync',0,0,1),
+(2317,'2017-06-20','Bash snippet - extglob and scp',1707,'How does scp manage extended glob patterns?','
Bash snippet - extglob and scp
\r\n
The Problem
\r\n
Following on from my last show on filename expansion, concentrating on extended patterns and the extglob option, I was asked a question by Jon Kulp in the comment section.
\r\n
Jon was using ls *(*.mp3|*.ogg) to find all OGG and MP3 files in a directory which also held other files. However, when he wanted to copy this subset of files elsewhere he had problems using this expression in an scp command.
\r\n
Having done some investigations to help solve this I thought I\'d put what I found into an HPR episode and share it, and this is the show.
\r\n
Along the way clacke commented too and this led me to more investigations!
\r\n
Long notes
\r\n
As often happens, my idea of a brief episode turned into something much longer, so I converted the notes into long notes which you can find here. In them I have marked some sections which you might want to skip over -- unless you are as much of a geek as I am! I have not covered these sections in detail in the audio.
',225,42,1,'CC-BY-SA','Bash,shopt,filename expansion,scp,rsync',0,0,1),
(2314,'2017-06-15','Bad Caps',1584,'NYbill talking about repairing a computer motherboard.','\r\n
NYbill talks about repairing a motherboard.
\r\n
Errata:
\r\n
Even though I go into a bit about different types of capacitors I didn\'t plan on this being an episode about capacitors themselves. Even though I mention some different types. Bonus, there are also Trimmer Caps.
\r\n
And yes, I know LCD\'s don\'t have a trace. The old school CRT user popped out there. You all knew what I meant.
\r\n
Also, I know I mentioned getting a 90 piece cap set from Banggood. I decided to order proper Nichicon replacements from Digikey. Had this been a repair for myself, I would use the no name caps I ordered from China. But, being this repair is for a friend, I figured I better get the real deal. ...BTW they were 220 uf caps.
\r\n
(Thanks Jezra for the musical interlude. We were joking calling it, "Time Passing".)
\r\n',235,103,1,'CC-BY-SA','repair,motherboard,capacitor,polymer electrolytic capacitor,ceramic capacitor',0,0,1),
(2315,'2017-06-16','Penguicon 2017 Report',1211,'Penguicon 2017 took place on April 28-30, 2017 in Southfield, Michigan','
Penguicon 2017 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I tell you about my own personal experience at Penguicon this year.
',198,0,1,'CC-BY-SA','Penguicon 2017, open source event',0,0,1),
(2325,'2017-06-30','Insurance - How It Works',1292,'To begin discussing the policy we need to first explain how insurance works','
Health policy is difficult and tricky. In the U.S. health care is mostly financed through insurance. How does that work, and what does it imply. There are some hard truths here.
\r\n',198,100,0,'CC-BY-SA','Health Insurance, Health Policy',0,0,1),
@@ -18642,9 +18760,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2329,'2017-07-06','Building a Digital Clock Kit',1707,'I bought a self-build digital clock on eBay and document the building process','
Building a Digital Clock Kit
\r\n
Introduction
\r\n
In April 2017 my son and I decided to each build a digital clock. I had been interested in the idea since seeing Big Clive build one on YouTube, and I think my son had been similarly motivated.
\r\n
He found one, which I have linked to below. It\'s smaller than the one shown by Big Clive, comes from ShenZhen China, and costs $5.35 (about £4.18) postage free. It takes a long time to arrive, so patience is needed!
\r\n
There are many digital clock kits on eBay, and lots of YouTube videos showing how to build them. I think it\'s a great project for someone wanting some soldering practice which is a little more demanding than a beginner project.
\r\n
One type to avoid, I think, is the surface mount type. The one I have uses a through-hole PCB, but I have seen some that provide SMD (surface-mounted device) components. That type of soldering is beyond me at the moment (though my son has been teaching himself to do it).
\r\n
Long notes
\r\n
I have provided detailed notes detailing the unpacking and building of this device, with photographs. These are available here.
',225,103,1,'CC-BY-SA','electronics,clock,soldering',0,0,1),
(2322,'2017-06-27','A bit of background on virtualenvwrapper',1059,'Linux processes, the process environment and the shell, as they relate to virtualenvwrapper.','
A bit of background on virtualenvwrapper
\r\n
Or, Linux processes, the process environment and the shell.
\r\n
speaker intro
\r\n
Hi, I\'m bjb. I\'ve been using Linux for wow, 20 years now.
\r\n
motivation
\r\n
knox gave a nice podcast on virtualenvwrapper - it was timely for me, I was just trying to use it the other day and not finding all the bits and pieces. So thank you for collecting that info in one place.
\r\n
knox asked why virtualenvwrapper behaves as it does ...
\r\n
introduction
\r\n
virtualenvwrapper is a combination of bash functions and programs.
\r\n
To understand how it works you need to know a little bit about bash and Linux.
\r\n
I know there have been some very good earlier and current! HPR shows on bash. But bash is a huge topic. The man page for it was 3500 lines about 10 years ago ...now it is 4300 plus lines. It has a LOT of functionality, and when you\'re just trying to get something done, it\'s overwhelming to look at. So in this HPR episode, I will just answer one or two of knox\'s questions. It gives me an excuse to make an episode.
\r\n
Also I\'m not going to go too deep into the description. In order to keep the podcast short and to-the-point, I\'m just going to cover what is needed. There is lots more depth - there are several shells you could use and I\'m only going to talk about bash; at startup bash can read more than just the files I mention in this podcast ... I\'m just not going to cover all the possibilities. That\'s what the over 4300 line man page is for : -). If you have questions, ask them in the comments, or make your own podcast and ask them! Maybe you\'ll get some answers - either from me or from another HPR community member.
\r\n\r\n
environment for processes
\r\n
A program that has no inputs is not flexible or powerful. As a simple example, a program that displays the results of a hard-coded search is certainly useful if you want to know about that hard-coded search term. But a program that can search for a term that you specify at run time is so much more useful. You do not have to recompile the program to change the search term.
\r\n
Programs can receive inputs in several ways.
\r\n
On Linux and other unix-like OSs, a program can be run with arguments, read and write to file descriptors (and that includes standard in, standard out and standard error), they can receive signals - and they have another input: the "environment". That is a bunch of key-value pairs that are made available to the program when it starts. Some examples of environment variables are PATH, HOME, EDITOR and PAGER. The name of the environment variable, \'PAGER\', is the key, and the thing on the other side of the equals sign, like \'less\', is the value - the pair make up a key-value entry in the environment.
\r\n
People who program in C or C++ and maybe other languages know that the program starts with a main function, and that function has some parameters. The first one is a count of arguments and the second one is an array of strings, each string being one of the arguments passed to the program when it is launched. There is a little-known optional third parameter: an array of strings that represents the "environment".
\r\n
The way the program gets these strings is that it inherits them from its parent process. The parent process of programs that are run from the command line is ... the command line itself, bash. Or csh, or whatever your shell is. When the program starts, it gets a copy of the exported parts of the environment of its parent.
\r\n
environment in bash
\r\n
Bash gives you the ability to set these environment variables and mark them as "available for handing to subprocesses", and that is what is happening when you give that "export" command.
\r\n
You can view all the currently defined variables that have been marked for export by using the "env" command with no arguments. E N V - echo november victor. Or, env, short for environment.
\r\n
Since these variables are passed down the generations from parent to child, it is usually sufficient to define it once at the top level.
\r\n
The command line itself is a program called bash. It reads some files at startup.
\r\n
As an example of the "generations", you can call bash from within bash. And you can call bash again from within that bash. Then the first bash is the parent of the second one, and the second one is the parent of the third. The third bash is the child of the second.
\r\n
You can see the environment changing: Set a variable fred=one in the first shell and export it:
\r\n
export fred=one
\r\n
then run bash. In that bash you can echo $fred, and see that fred is one. Now you can change fred to two:
\r\n
export fred=two
\r\n
and run the third bash. In the third bash, you can see that fred is two:
\r\n
echo $fred
\r\n
now exit bash with the exit command.
\r\n
If you echo $fred, you will see fred is still two, since we set it to two just before we ran the third bash. But if you exit again, you will be back to the first bash, and you will see that fred is now one. This is the environment that bash had, just before you launched the second bash. The second and third environments are gone - those processes terminated when the exit command was given on their prompts; and when they did, their environments were cleaned up and removed.
\r\n
In the show notes, I have another exercise to help with understanding this environment thing.
\r\n
Here\'s another exercise to illustrate this principle. Type bash and \r\nenter, and you will be in a subshell. If you show a process listing \r\nin a hierarchical format, with children indented from their parents, \r\nyou will see that the bash you are currently in is a child of \r\nanother bash. The command to see the list of running processes in \r\nhierarchical format is:
\r\n
ps -efH
\r\n
There are several bash processes. In order to pick out the bash \r\ninstance that I\'m running, I look for the ps process, because it has \r\na uniqe string in the arguments: -efH. In the less session, search \r\nfor \'efH\' by typing "/efH". The screen will jump to where the \r\nps -efH process is, and highlight the "efH" string that you searched \r\nfor. The line you searched for will be at the top of the display \r\n... to see the few lines above, type "kkkk" (one k for each line to \r\nmove up). To exit from less, type q.
\r\n
Go ahead and export another made-up variable - perhaps your street name:
\r\n
export CHESTNUT=rizwan
\r\n
Make sure it is there with the env command:
\r\n
env | grep CHESTNUT
\r\n
and then run another subshell, and search for it again:
\r\n
bash \r\n env | grep CHESTNUT
\r\n
Exit the various shells with the "exit" command or by typing ^D. If \r\nyou exit the subshell, and the shell in which you created the \r\nCHESTNUT environment variable, you can run the env command and \r\nsearch for that environment variable - it will not be there. The \r\nprogram in which the environment variable was created has terminated, \r\nand its environment has been discarded.
\r\n
bash startup files
\r\n
When bash is a login shell, it reads ~/.bash_profile. When it is not a login shell, but some subshell of the login shell, it reads ~/.bashrc.
\r\n
So for things that you only need to set once, you can put them in ~/.bash_profile. For things that you have to run for each new subshell, you put them in .bashrc.
\r\n
(Note that most distributions will set up the user accounts so they will run ~/.bashrc from .bash_profile for interactive shells)
\r\n
the PATH
\r\n
This is important, because of two things. The first is the PATH. The PATH is one of the environment variables that is used by the system to look for executables. So if you want to run a program, it should be in one of the directories on the PATH, or you will have to specify the full path to the program when running it.
\r\n
When you first get your account on a system, there is a default version of the .bashrc and .bash_profile files. In .bash_profile there should be a definition of the PATH. It contains the system directories like /usr/bin and /bin - you don\'t want to remove those from your path or your shell will become next to useless - you will have to use full paths for all commands. So the way that people add directories to the PATH is to assign the existing value of PATH to itself, plus the desired new directories. For example:
\r\n
\r\n
PATH=$PATH:/home/bjb/bin
\r\n
\r\n
But if you put this in .bashrc, then every subshell will have another copy of the directory /home/bjb/bin tacked onto the end of the PATH. So the right place to put this definition is in ~/.bash_profile, where it will be executed once and then inherited by all the subshells.
\r\n
shell functions and aliases
\r\n
However not everything you need in the shell is inherited from the parent program. It turns out that another facility that bash supplies and that virtualenv uses is the ability to define and execute bash functions. Bash also has aliases.
\r\n
A bash function is a series of bash commands that have been given a name, and that you can run by typing that name. It can also receive arguments that can influence how the function will behave. HPR episode 1757 by Dave Morriss called "Useful Bash Functions" talks about bash functions.
\r\n
You can see the list of currently defined bash functions by using the bash command: declare -F
\r\n
An alias is a simpler version of a function - it is (usually) just a shorter string to represent a longer or more complicated command, to make command line use easier (assuming you can remember all the aliases in the first place).
\r\n
You can see the list of currently defined aliases by using the bash command: alias
\r\n
virtualenvwrapper makes use of bash functions. This has consequences.
\r\n
the bash builtin command \'source\'
\r\n
One is that you need to define those functions in every subshell. That\'s why you need to put "source /usr/local/bin/virtualenvwrapper.sh" in your bashrc.
\r\n
Well it seems that on a Debian system virtualenvwrapper puts the workon shell function into your shell via a more convoluted route. I will describe it in the show notes. But in the end, the virtualenvwrapper file that defines the virtualenvwrapper adds the function workon to your shell by sourcing the file /etc/bash_completion.d/virtualenvwrapper whenever .bashrc is sourced. (Note that "." is shorthand for the bash "source" built-in command.) The "workon" function is defined in /etc/bash_completion.d/virtualenvwrapper (the definition is about in the middle of the file.)
\r\n
- ~/.bashrc sources /etc/bash_completion or /usr/share/bash-completion/bash_completion \r\n (whichever one it finds first); \r\n- which sources /usr/share/bash-completion/bash_completion; \r\n- which sources all the files in /etc/bash_completion.d \r\n- one of which is virtualenvwrapper.sh \r\n- which defines the bash function workon.
\r\n
Look at that, on a Debian system "apt-cache show virtualenvwrapper" does indeed list bash-completion as a dependency. The virtualenvwrapper upstream does not assume you will be using command completion, and in the comments at the top of the /etc/bash_completion.d/virtualenvwrapper file tell you to put "source .../virtualenvwrapper.sh" into your ~/.bashrc file.
\r\n
A description of bash-completion could be a topic of another podcast (I\'m not actually volunteering to do this one, heh, just suggesting it as a topic).
\r\n
life cycle of environment
\r\n
Another consequence is this: When you run a program, it will inherit a copy of the environment of its parent. When it is done, it will exit and that environment will disappear. So, you cannot run a program or subshell to try to affect your environment. It will affect the subshell or program environment, and as soon as the command is done, that updated environment will disappear.
\r\n
The "source" built-in bash command is meant to allow you to run a bunch of commands in a file as if they had been typed on the command line. So you can put commands that affect the environment, and the environment will still have the changes when the sourcing is done.
\r\n
back to virtualenvwrapper: conclusion
\r\n
So, virtualenvwrapper is mainly changes to the environment. It consists of a few files that are stored in ~/.virtualenvs, with names like postactivate and premkvirtualenv. They are basically hooks to add functionality before and after the commands you would issue for virtualenv, so you can customize virtualenv.
\r\n
To understand virtualenvwrapper, let\'s have a quick look at virtualenv first. The things you do with virtualenv are to create a virtualenv, destroy one, and activate one.
\r\n
So the things you can do with virtualenvwrapper are to run some script or scriptlet before or after you create a virtualenv, destroy a virtualenv, or activate a virtualenv.
\r\n
The main thing to customize is the "where to find the activate file" and the "what to do after activating \'postactivate\'".
\r\n
It does this by setting environment variables (like PATH and PYTHONHOME) appropriately and by defining bash functions to do things like change directory to where the project is.
\r\n
You just have to edit .virtualenvs/postactivate to contain the location of your project files. You also define WORKON_HOME to be the directory that contains all your virtualenvs (for me that is /usr/local/pythonenv, but for most people it will be some directory in their home directory.
\r\n
Summary
\r\n
virtualenv manipulates the environment in order to allow you to have different python setups for your different projects - handy if you have one project that depends on different versions of python packages than another project and you want to run both.
\r\n
But virtualenv leaves a few rough edges, like leaving it up to you to find the virtualenv in order to source the activate script. That is where virtualenvwrapper comes in.
\r\n
We have talked about the environment, and how virtualenvwrapper manipulates the environment to make it easier to work with the virtualenvs that you have created.
\r\n
The environment refers to the set of environment variables that are defined and passed to child processes. We also discussed the process hierarchy and that a new environment is created for a new process, and it is destroyed when that process exits. We covered sourcing a file of shell commands, so that if those commands affect the environment, then when the sourcing is done, the environment left is the one that was changed and the changes persist past the source command. We talked about the .bash_profile and the .bashrc files.
\r\n
HPR exhortation
\r\n
You\'ve been listening to Hacker Public Radio. Anyone can make a show -if I can do it, so can you.
\r\n',357,0,0,'CC-BY-SA','python,virtualenvwrapper,virtualenv,bash,linux',0,0,1),
(2323,'2017-06-28','How to Configure Mumble in Real Time',384,'The cast of the urandom podcast help a guest troubleshoot their Mumble setup in real time. ','
',270,0,1,'CC-BY-SA','Mumble, Podcasting, Audiobooks, Troubleshooting, How To',0,0,1),
-(2566,'2018-06-04','HPR Community News for May 2018',3807,'HPR Volunteers talk about shows released and comments posted in May 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 18 comments in total.
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2586,'2018-07-02','HPR Community News for June 2018',3510,'HPR Volunteers talk about shows released and comments posted in June 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 20 comments in total.
\n
There are 10 comments on\n7 previous shows:
\n
hpr1992\n(2016-03-22) \"How I\'m handling my podcast-subscriptions and -listening\"\nby folky.
\n
\n
\n
\nComment 2:\nfolky on 2018-06-07:\n\"Changed links to my gits\"
Comment 1:\nJWP on 2018-06-25:\n\"Great Little update\"
\n
hpr2582\n(2018-06-26) \"3 Contribution case studies\"\nby klaatu.
\n
\n
Comment 1:\nKen Fallon on 2018-06-27:\n\"Would love HPR feedback\"
\n
hpr2585\n(2018-06-29) \"Check to see if a Remote Control is working\"\nby Ken Fallon.
\n
\n
Comment 1:\nNYbill on 2018-06-29:\n\"There is one more...\"
\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:
There has been a change to the HPR workflow this month:
\n
\n
Earlier in 2018 a change was made to the database to add an additional version of the host name. This is intended to be spoken by espeak and can hold an alternative spelling which espeak handles better in the audio preamble of shows. In this way the name \'thelovebug\', for example, which espeak renders as "Thel Ove Bug" can be stored as \'TheLoveBug\', which espeak pronounces correctly.
\n
The use of this field has now been incorporated into the workflow.
\n
Many of these "espeak names" were changed in the database, but we probably haven\'t catered for them all. If your name is being mispronounced by espeak let us know and we\'ll try and fix it.
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2611,'2018-08-06','HPR Community News for July 2018',5053,'HPR Volunteers talk about shows released and comments posted in July 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 28 comments in total.
\n
There are 6 comments on\n4 previous shows:
\n
hpr2519\n(2018-03-29) \"the_remora Builds a character in Edge of the Empire\"\nby the_remora.
\n
\n
\n
\nComment 1:\nKlaatu on 2018-07-04:\n\"great walkthrough\"
Comment 1:\nb-yeezi on 2018-07-31:\n\"Seems likea great teaching tool\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2566,'2018-06-04','HPR Community News for May 2018',3807,'HPR Volunteers talk about shows released and comments posted in May 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 18 comments in total.
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2586,'2018-07-02','HPR Community News for June 2018',3510,'HPR Volunteers talk about shows released and comments posted in June 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 20 comments in total.
\n
There are 10 comments on\n7 previous shows:
\n
hpr1992\n(2016-03-22) \"How I\'m handling my podcast-subscriptions and -listening\"\nby folky.
\n
\n
\n
\nComment 2:\nfolky on 2018-06-07:\n\"Changed links to my gits\"
Comment 1:\nJWP on 2018-06-25:\n\"Great Little update\"
\n
hpr2582\n(2018-06-26) \"3 Contribution case studies\"\nby klaatu.
\n
\n
Comment 1:\nKen Fallon on 2018-06-27:\n\"Would love HPR feedback\"
\n
hpr2585\n(2018-06-29) \"Check to see if a Remote Control is working\"\nby Ken Fallon.
\n
\n
Comment 1:\nNYbill on 2018-06-29:\n\"There is one more...\"
\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:
There has been a change to the HPR workflow this month:
\n
\n
Earlier in 2018 a change was made to the database to add an additional version of the host name. This is intended to be spoken by espeak and can hold an alternative spelling which espeak handles better in the audio preamble of shows. In this way the name \'thelovebug\', for example, which espeak renders as "Thel Ove Bug" can be stored as \'TheLoveBug\', which espeak pronounces correctly.
\n
The use of this field has now been incorporated into the workflow.
\n
Many of these "espeak names" were changed in the database, but we probably haven\'t catered for them all. If your name is being mispronounced by espeak let us know and we\'ll try and fix it.
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2611,'2018-08-06','HPR Community News for July 2018',5053,'HPR Volunteers talk about shows released and comments posted in July 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 28 comments in total.
\n
There are 6 comments on\n4 previous shows:
\n
hpr2519\n(2018-03-29) \"the_remora Builds a character in Edge of the Empire\"\nby the_remora.
\n
\n
\n
\nComment 1:\nKlaatu on 2018-07-04:\n\"great walkthrough\"
Comment 1:\nb-yeezi on 2018-07-31:\n\"Seems likea great teaching tool\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2318,'2017-06-21','Talking about my thinkpads',2715,'I talk about why I love my thinkpads so much and how I appreciate having them','
',297,0,0,'CC-BY-SA','thinkpad, laptop, lenovo, x201, t420',0,0,1),
(2324,'2017-06-29','Opensusecon 2017 and Ubuntu 16.04',326,'Performance of Ubuntu 16.04 on my MS surface Tablet and Brief Review of OpenSuse Con 2017','
\r\nOverall the opensuse con 2017 was a great event. Lots of talks, they had guy with 16 Raspberry PIs in a storage cluster and list goes on and on. Many of the folks there were suse employees or Open Cloud employees but they really had their passions down.\r\n
\r\n
\r\nUbuntu 16.04 is running fine on my MS surface tablet and is wife friendly.\r\n
',129,0,1,'CC-BY-SA','openSUSE,openSUSE conference 2017,Ubuntu,Microsoft Surface tablet',0,0,1),
(2330,'2017-07-07','Awk Part 7',1271,'Looping in Awk explained by a sleep-deprived host','
In this episode, I will (very) briefly go over loops in the Awk programming language. Loops are useful when you want to run the same command(s) on a collection of data or when you just want to repeat the same commands many times.
\r\n
When using loops, a command or group of commands is repeated until a condition (or many) is met.
\r\n
While Loop
\r\n
Here is a silly example of a while loop:
\r\n
#!/bin/awk -f\r\nBEGIN {\r\n\r\n# Print the squares from 1 to 10 the first way\r\n\r\n i=1;\r\n while (i <= 10) {\r\n print "The square of ", i, " is ", i*i;\r\n i = i+1;\r\n }\r\n\r\nexit;\r\n}
\r\n
Our condition is set in the braces after the while statement. We set a variable, i, before entering the loop, then increment i inside of the loop. If you forget to make a way to meet the condition, the while will go on forever.
\r\n
Do While Loop
\r\n
Here is an equally silly example of a do while loop:
\r\n
#!/bin/awk -f\r\nBEGIN {\r\n\r\n i=2;\r\n do {\r\n print "The square of ", i, " is ", i*i;\r\n i = i + 1\r\n }\r\n\r\n while (i != 2)\r\n\r\nexit;\r\n}
\r\n
Here, the commands in the do code block are executed at the start, then the looping begins.
\r\n
For Loop
\r\n
Another silly example of a for loop:
\r\n
#!/bin/awk -f\r\nBEGIN {\r\n\r\n for (i=1; i <= 10; i++) {\r\n print "The square of ", i, " is ", i*i;\r\n }\r\n\r\nexit;\r\n}
\r\n
As you can see, we set the variable, set the condition and set the increment method all in the braces after the for statement.
\r\n
For Loop Over Arrays
\r\n
Here is a more useful example of a for loop. Here, we are adding the different values of column 2 into an array/hash-table called a. After processing the file, we print the different values.
\r\n
For file.txt:
\r\n
name color amount\r\napple red 4\r\nbanana yellow 6\r\nstrawberry red 3\r\ngrape purple 10\r\napple green 8\r\nplum purple 2\r\nkiwi brown 4\r\npotato brown 9\r\npineapple yellow 5
\r\n
Using the awk file of:
\r\n
NR != 1 {\r\n a[$2]++\r\n}\r\nEND {\r\n for (b in a) {\r\n print b\r\n }\r\n}
\r\n
We get the results of:
\r\n
brown\r\npurple\r\nred\r\nyellow\r\ngreen
\r\n
In another example, we do a similar process. This time, not only do we store all the distinct values of the second column, we perform a sum operation on column 3 for each distinct value of column 2.
As you can see, we are also printing a header column prior to processing the file using the BEGIN code block.
\r\n',300,94,0,'CC-BY-SA','bash, linux, awk',0,0,1),
@@ -18692,7 +18810,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2373,'2017-09-06','PCGen',2640,'Klaatu talks about a PC generator','
Building characters for your next exciting tabletop RPG session? Use PCGen, and here\'s how!
',78,95,0,'CC-BY-SA','RPG,character,character generator',0,0,1),
(2374,'2017-09-07','How to Make Sauerkraut',595,'This is a short show on making Sauerkraut','
First off I have to admit to being a bit of a foodie and I love Sauerkraut but getting naturally fermented sauerkraut here in the UK in my experience impossible and if you can it tends to be expensive. So I went and had a look on YouTube for some instructions on how to do it, and my first efforts worked well. I’ve just made another batch and took pictures as I was doing it. So this is a how to show on making Sauerkraut.
\r\n
Just to say that this is about making basic sauerkraut but you can add additional flavours with garlic, other veg and spices. At some point I will try chilli but this week I want the clean taste of a basic sauerkraut.
\r\n
I use a large white cabbage which you need to strip any outer leaves that are blemished or dirty then quarter and cut out the hard core. Now before shredding weigh the cabbage as you need this to work out how much salt you will add for each Kilo of cabbage and other vegetables, if using. You need 20 grammes of salt, nothing fancy but use one without any any additives, just pure salt, I used a rock salt which cost £1.35 for 350g. You\'re basically after 2% salt to weight of Cabbage and anything else you are fermenting.
\r\n
It’s also an idea to have about 100mls of a 2% brine to top up if needed to cover the veg in the jar if there is not quite enough liquid made during mashing.
\r\n
\r\n
Shred the cabbage and put into a large bowl with the salt, now the fun bit starts. You need to get your hands in and start to crush the salt covered shredded cabbage to start drawing out the moisture, this will take several minutes or longer depending on quantity, but you will feel the texture changing and the liquid starting to be drawn out quite soon after starting. Continue this process until the cabbage seems to have shrunk by about half and there is also a juice in the bottom of the bowl. You can cheat and do this for a few minutes then cover with food wrap and leave for up to an hour and the salt will have done some of the work for you, but you need to give it a good 5 minutes to start before you do this, and you may have to do a little more mashing before transferring to a jar.
\r\n
\r\n
\r\n
\r\n
At this stage find a jar or jars, large enough to hold all the cabbage with a little to spare, you can sterilise if you wish but a good clean in hot soapy water then rinsed and allowed to dry is sufficient as the salt kills and bad bacteria and encourages to good bacteria to grow. Put all your salted and mashed cabbage mix in the jar/jars well packed down with the juice ensuring that the juice is covering the cabbage by about 1cm (this is where the extra saline solution comes in if you don’t quite have enough.
\r\n
\r\n
Now put your lid on but not overly tight as this is a fermented product and if there is nowhere for the gas to go then you could have a pressure explosion in your cupboard (some people use wine makers fermenting valves but this is a little overkill and more cost than needed).
\r\n
Tuck the jar away in a storage place that’s about room temp and leave for several days checking every so often to see how it is. If the brine has evaporated you may need to top up slightly. After about a week you should have sauerkraut, give it a try, if its sour enough this is when you take it and put in the fridge or cold cellar/garage to stop the fermenting. All you have to do now is start eating, oh, and make your next batch ready for when that’s gone.
\r\n
\r\n',338,93,0,'CC-BY-SA','Cooking, Fermenting, Food preserving ',0,0,1),
(2378,'2017-09-13','Why Docbook?',2405,'Klaatu talks about why Docbook is the greatest','
What\'s so great about Docbook, any way? Glad you asked.
',78,0,0,'CC-BY-SA','xml,docbook,writing',0,0,1),
-(2379,'2017-09-14','sending a text message from the command line',295,'a bunch of waffling on about email and text message sending from the command line','
Notes? We don\'t need no stinking notes!
\r\n\r\nEdited 2017-09-08 by Ken \r\nI beg to differ :).\r\n
\r\n\r\n
\r\nThis show was recorded on Audacity using a Logitech headset.\r\n
\r\n
\r\nIn episode hpr1892 :: my chicken coopjezra went to great lengths to protect his chickens. His system based on a BeagleBone Black ensures the door opens and closes only during the day. \r\n
\r\n
\r\nIn this show jezra explains how he gets the system to send him an email, and a text message using mailx and his phones providers free SMS to Email gateway.\r\n
',243,0,1,'CC-BY-SA','command line, mail, SMS',0,0,1),
+(2379,'2017-09-14','sending a text message from the command line',295,'a bunch of waffling on about email and text message sending from the command line','
Notes? We don\'t need no stinking notes!
\r\n\r\nEdited 2017-09-08 by Ken \r\nI beg to differ :).\r\n
\r\n\r\n
\r\nThis show was recorded on Audacity using a Logitech headset.\r\n
\r\n
\r\nIn episode hpr1892 :: my chicken coopjezra went to great lengths to protect his chickens. His system based on a BeagleBone Black ensures the door opens and closes only during the day. \r\n
\r\n
\r\nIn this show jezra explains how he gets the system to send him an email, and a text message using mailx and his phones providers free SMS to Email gateway.\r\n
',243,0,1,'CC-BY-SA','command line, mail, SMS',0,0,1),
(2380,'2017-09-15','Raspbian X86 on P4 Tower',248,'This is a show on installing Pixel on a Pentium 4 Tower PC','
Raspbian x86 on an old P4 tower
\r\n
Well I’m back again, as I said in the show I did about Raspbian x86 on the Lenovo x61s, I was interested to see how the OS would perform on what I now class as very old hardware in the form of a Pentium 4 tower.
\r\n
We have a spare tower at the Makerspace which gets used to test low resource operating systems to see if they live up to their name, so on Saturday (yesterday as I write this, but a few weeks ago by the time this show goes out) I put the x86 Raspbian image on to this tower to see how it would perform.
\r\n
Tower specifications are: Pentium 4 2.8Gig CPU, 2Gig DDR Ram and a 40Gig HDD, which in its day was a very useful bit of kit, but technology has moved on and most people wouldn’t consider it any use as a working PC today.
\r\n
First problem I encountered was the DVD drive was duff and I didn’t have the image on a flash drive. Luckily I did have my trusty USB DVD in the bag, so I hooked that up, booted into the boot menu and set the disc off loading the OS. I won\'t go into this again as I ran through the install process last time, HPR 2362, but the install went well and I was left with a new install of Pixel on the tower.
\r\n
I went through the new install process and was left with an up to date and password secure PC, I then rebooted to check what the resource use was at first boot, which I was amazed was a consistent 66mb of RAM, and about 1% CPU use.
\r\n
\r\n
Using the Chromium web browser pushes up RAM usage over a 100 but it was smooth and easily coped with navigating to resource hungry sites such as YouTube and the BBC. So first test passed.
\r\n
I next opened a Word document in LibreOffice, this took about 10seconds to load but once open was perfectly usable with no lag, so should provide a good office capable PC.
\r\n
So you can use the Web, Write documents, it has an email client or you can use web mail. And it’s not painfully slow, this PC would now make a very usable homework/first computer for any child, or a computer for an older member of the family that just needs to keep in touch with family and friends without breaking the bank. In fact you could probably pick up a working tower off the likes of Freecycle/Freegle for £0 and you may even get a small 17”/19” TFT monitor from the same place.
\r\n
Yes it’s not as energy efficient as the latest kit but as I said last time the cost of a new PC/laptop can buy a lot of additional electricity in the time you may run it before it finally expires.
',338,57,0,'CC-BY-SA','Linux, Raspbian x86, Pentium4 hardware.',0,0,1),
(2382,'2017-09-19','A Non Spoilery Review of \"git commit murder\" and \"Forever Falls\" by Michael Warren Lucas',555,'I met Mike Lucas at Kansas Linux Fest 2017 and review a couple of his novels','
A Non Spoilery Review of "git commit murder" and "Forever Falls" by Michael Warren Lucas
\r\n
I met Michael at Kansas Linux Fest 2017 where he was a speaker. Turns out we\'ve probably been walking past each other in the halls at Penguicon the last three years that I have attended. Michael is a BSD guy and one of us. As well as being an open source advocate, he works professionally as a systems admin and network engineer. I bought his texts "SSH Mastery" (because I\'ve always needed help getting my head around reverse IP tunneling), "Networking for Systems Administrators", and "$ git commit murder", his latest novel. Because I was a good customer, Michael threw in "Forever Falls" for free.
\r\n
"git commit murder" takes place at a BSD convention. The gathering in the novel is slightly less informal than the Linux conferences I\'ve attended. The conference is targeted at the users, contributors, and managers of the fictional "SkyBSD". Our protagonist, Detroit native Dale Whitehead has come to Canada to deliver a talk on his mesh networking project. The conference is disrupted when attendees start to die in what appear to be unrelated accidents. Dale is unwilling to accept these deaths as accidents, and puts his analytical mind to discovering the killer. He also employees his hacking skills, having already created an admin account on the host university\'s server within minutes of checking in. This makes him understandably reluctant to discuss his theories with the authorities until he has positively identified a culprit.
\r\n
The SkyBSD community is not without contention. A significant number of contributors want to move from Subversion to git for version control and just as many are vehemently opposed. Also, the recent release of candid photos meant to embarrass a contributor has many calling for a Code of Conduct and the banning of violators. Others think this is going too far. Dale has to contemplate whether either of these is reason for murder? Perhaps it is a struggle by an old guard who is not ready to surrender leadership to a younger generation?
\r\n
At first, it was hard to get to like Michael\'s protagonist, Dale Whitehead. Dale suffers from an extreme form of Attention Deficit Disorder which requires medication and causes him to actively shun the company of other people. The same affliction that allows him to get "in the zone" when programming also makes being in crowds a fresh hell for Dale. He is in constant terror that some aberrant behavior on his part will reveal his condition to his companions and he finds it much easier to deal with other humans via e-mail or IRC. It\'s clear Michael Lucas has an understanding of the condition, either via research or contact with someone who suffers ADD.
\r\n
At least one character in the story seemed to me to bear a passing resemblance to a familiar conference fixture in real life. Michael told me the sequel might be set at an open source/Sci Fi convention in a city near the great lakes. Time will tell if the Tuesday Afternoon Solaris Overview or a kilt wearing organizer will make an appearance.
\r\n
"Forever Falls" is also a mystery, as well a SciFi story. Ella Forecourt is a recruit right out of college for the Montague Corporation. As a corporate security officer, she is assigned to investigate the death of a Montague research scientist at the Freefall installation. In the course of the novel, you learn that Montague has proprietary technology that allows them to "portal" into other universes or dimensions where the laws of physics are different from those of our universe. In Freefall, gravity runs parallel to the surface of the world. In other words, you don\'t fall down, you fall sideways, and with no ground to stop you, if you fall, you fall forever.
\r\n
Montague has a research facility built into the "Cliff". With gravity travelling sideways, the surface of the planet appears as an endless cliff. "Above" the facility is a huge metal awning to deflect falling boulders. On top of the awning is where the security team discovers the body of Dr. Devin Grupper. The damage to the body suggests Dr. Grupper impacted with terminal velocity. Even in the lighter gravity of Freefall constant acceleration means terminal velocity is governed by air resistance. Montague does use airships for transport, but there are no records of how Grupper could have secured transportation and a pilot to wind up smashed on the awning without a ship going missing. Thus Security Second Ella Forecourt is assigned to the case. "Forever Falls" is but one in a series of Montague Portal novels by Michael Lucas. I look forward to reading the rest of the series.
',131,0,0,'CC-BY-SA','Kansas Linux Fest, book review',0,0,1),
(2388,'2017-09-27','Apt Spelunking 4: Planet of the Apts',543,'Another couple of interesting packages from the Debian repos','
It\'s another exciting episode of Apt Spelunking! The fourth installation, which covers the following packages:
Dunst is a lightweight, customizeable desktop notification daemon. Similar to Ubuntu\'s notify-osd, it displays passive notifications with very minimal resources. It has customizeable keystrokes, and its colors can be configured as well.
i3 is my window manager of choice; tiling, extremely customizeable, and absurdly light. With fantastic support for multiple monitors, and vim keybindings, it eventually finds its way onto every machine I use.
Derived from Star Control II, Ur-Quan Masters is a fantastic retro game about spaceships and aliens. Earth has been seized, and is isolated from the rest of the galaxy. Luckily, you happen to have yourself a ship built with ancient mystic technology and whatnot.
\r\n
Fun, funny, and dangerously addictive; make sure to stay away from this game if you have things to do.
',196,98,1,'CC-BY-SA','recommendations,software,repositories',0,0,1),
@@ -18707,11 +18825,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2393,'2017-10-04','PWGen - A password generator',1355,'Xoke talks about how he uses PWGen to set people\'s passwords at work','
',79,0,0,'CC-BY-SA','Security, Passwords',0,0,1),
(2417,'2017-11-07','Transmeta Crusoe - Fujitsu-Siemens Futro S210 (ThinClient) - Trouble Shooting and Debian 9 Install',806,'I did a basement clean up and got my old transmeta cpu up and running','
I did the long awaited basement clean up project. \r\nlots of old geeky stuff went to the bins and recycle yards :(
\r\n
The Transmeta company made chips around 2000 and made chip x86 ready though a software layer. Since I love almost anything that is not Intel it was a match made in heaven.
\r\n
The best info I found about the FSI 210 was at this site: \r\nFujitsu-Siemens Futro S210 (ThinClient)
\r\n
If you want to do a project at raspberry PI prices just go to Ebay and type Futro - they have a lot of Thin clients with other chips.
',129,0,0,'CC-BY-SA','Transmeta Crusoe,Fujitsu-Siemens Futro S210,thin client',0,0,1),
(2394,'2017-10-05','The Lost Episode',1622,'NYbill talks about building an inexpensive transistor tester... a year after the fact.','
NYbill puts up a ‘Lost Episode’ recorded in October, 2016. A comment for Ep. 2369 asking if I have ever built one of the many Transistor Kits available jogged my memory. I still had the recording so, I’ll just throw it up. I’m not sure how many pics I can find for the episode. I’ll put up what I can.
\r\n
And just for Mike Ray, I’ll leave in some bench noises I would usually edit out. ;)
The kit (This looks like the one I ordered. But, it\'s been about a year gone by now. This one shows firmware running on the chip in the pics. You can take a gamble on it if you’d like):
',235,103,0,'CC-BY-SA','Electronics, kits, testers',0,0,1),
-(2631,'2018-09-03','HPR Community News for August 2018',4471,'HPR Volunteers talk about shows released and comments posted in August 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 25 comments in total.
\n
There is 1 comment on\n1 previous show:
\n
hpr2542\n(2018-05-01) \"How I helped my dad run a static website using SparkleShare\"\nby clacke.
\n
\n
\n
\nComment 2:\nclacke on 2018-08-04:\n\"Full episode on SparkleShare\"
\n
\n
There are 24 comments on 15 of this month\'s shows:
Comment 1:\ndodddummy on 2018-08-30:\n\"Memories\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2651,'2018-10-01','HPR Community News for September 2018',4790,'HPR Volunteers talk about shows released and comments posted in September 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 29 comments in total.
\n
There are 9 comments on\n8 previous shows:
\n
hpr1512\n(2014-05-20) \"Adopting and Renovating a Public-Domain Counterpoint Textbook\"\nby Jon Kulp.
\n
\n
\n
\nComment 2:\nKen Fallon on 2018-09-30:\n\"Ahhh so that\'s what counterpoint is.\"
\n
hpr1919\n(2015-12-10) \"DerbyCon Interview with Paul Koblitz\"\nby Xoke.
\n
\n
\n
\nComment 2:\nCarpet Muncher on 2018-09-09:\n\":)\"
\n
hpr2549\n(2018-05-10) \"DVD ripping using old hardware\"\nby Archer72.
\n
\n
\n
\nComment 2:\narcher72 on 2018-09-04:\n\"Change to code location\"
\n
hpr2557\n(2018-05-22) \"Styx -- The Purely Functional Static Site Generator\"\nby clacke.
\n
\n
\n
\nComment 3:\nclacke on 2018-09-17:\n\"Update re: TOML in Nix\"
Comment 1:\nKen Fallon on 2018-09-27:\n\"Milkbag wtf\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2676,'2018-11-05','HPR Community News for October 2018',3954,'HPR Volunteers talk about shows released and comments posted in October 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 49 comments in total.
Comment 1:\nClinton Roy on 2018-10-21:\n\"systemd information\"
Comment 2:\nBrian in Ohio on 2018-10-24:\n\"wicd\"
\n
hpr2667\n(2018-10-23) \"Create PDF bookmarks with Pdftk\"\nby klaatu.
\n
\n
Comment 1:\nb-yeezi on 2018-10-23:\n\"gcj deprecated\"
Comment 2:\nClinton Roy on 2018-10-23:\n\"debian\"
Comment 3:\nKlaatu on 2018-10-31:\n\"Thanks for the snap tip\"
\n
hpr2668\n(2018-10-24) \"Explaining the controls on my Amateur HF Radio Part 3\"\nby MrX.
\n
\n
Comment 1:\nMichael on 2018-10-31:\n\"Great Episodes!\"
\n
hpr2669\n(2018-10-25) \"Additional ancillary Bash tips - 12\"\nby Dave Morriss.
\n
\n
Comment 1:\nMad Sweeney on 2018-10-26:\n\"Quoted Literals in Regex\"
Comment 2:\nMad Sweeney on 2018-10-26:\n\"Re: Quoted Literals in Regex\"
Comment 3:\nStuart Little on 2018-10-26:\n\"quoting portions of regex\"
Comment 4:\nMad Sweeney on 2018-10-26:\n\"Re: Quoted Literals in Regex\"
Comment 5:\nDave Morriss on 2018-10-27:\n\"Thanks for the combined wisdom being directed at my question\"
Comment 6:\nDave Morriss on 2018-10-27:\n\"Backslashes in comments\"
Comment 7:\nMad Sweeney on 2018-10-27:\n\"Not just backslashes\"
Comment 8:\nDave Morriss on 2018-10-27:\n\"Comments eating ampersands?\"
Comment 9:\nMad Sweeney on 2018-10-27:\n\"Re: Comments eating ampersands?\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2631,'2018-09-03','HPR Community News for August 2018',4471,'HPR Volunteers talk about shows released and comments posted in August 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 25 comments in total.
\n
There is 1 comment on\n1 previous show:
\n
hpr2542\n(2018-05-01) \"How I helped my dad run a static website using SparkleShare\"\nby clacke.
\n
\n
\n
\nComment 2:\nclacke on 2018-08-04:\n\"Full episode on SparkleShare\"
\n
\n
There are 24 comments on 15 of this month\'s shows:
Comment 1:\ndodddummy on 2018-08-30:\n\"Memories\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2651,'2018-10-01','HPR Community News for September 2018',4790,'HPR Volunteers talk about shows released and comments posted in September 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 29 comments in total.
\n
There are 9 comments on\n8 previous shows:
\n
hpr1512\n(2014-05-20) \"Adopting and Renovating a Public-Domain Counterpoint Textbook\"\nby Jon Kulp.
\n
\n
\n
\nComment 2:\nKen Fallon on 2018-09-30:\n\"Ahhh so that\'s what counterpoint is.\"
\n
hpr1919\n(2015-12-10) \"DerbyCon Interview with Paul Koblitz\"\nby Xoke.
\n
\n
\n
\nComment 2:\nCarpet Muncher on 2018-09-09:\n\":)\"
\n
hpr2549\n(2018-05-10) \"DVD ripping using old hardware\"\nby Archer72.
\n
\n
\n
\nComment 2:\narcher72 on 2018-09-04:\n\"Change to code location\"
\n
hpr2557\n(2018-05-22) \"Styx -- The Purely Functional Static Site Generator\"\nby clacke.
\n
\n
\n
\nComment 3:\nclacke on 2018-09-17:\n\"Update re: TOML in Nix\"
Comment 1:\nKen Fallon on 2018-09-27:\n\"Milkbag wtf\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2676,'2018-11-05','HPR Community News for October 2018',3954,'HPR Volunteers talk about shows released and comments posted in October 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 49 comments in total.
Comment 1:\nClinton Roy on 2018-10-21:\n\"systemd information\"
Comment 2:\nBrian in Ohio on 2018-10-24:\n\"wicd\"
\n
hpr2667\n(2018-10-23) \"Create PDF bookmarks with Pdftk\"\nby klaatu.
\n
\n
Comment 1:\nb-yeezi on 2018-10-23:\n\"gcj deprecated\"
Comment 2:\nClinton Roy on 2018-10-23:\n\"debian\"
Comment 3:\nKlaatu on 2018-10-31:\n\"Thanks for the snap tip\"
\n
hpr2668\n(2018-10-24) \"Explaining the controls on my Amateur HF Radio Part 3\"\nby MrX.
\n
\n
Comment 1:\nMichael on 2018-10-31:\n\"Great Episodes!\"
\n
hpr2669\n(2018-10-25) \"Additional ancillary Bash tips - 12\"\nby Dave Morriss.
\n
\n
Comment 1:\nMad Sweeney on 2018-10-26:\n\"Quoted Literals in Regex\"
Comment 2:\nMad Sweeney on 2018-10-26:\n\"Re: Quoted Literals in Regex\"
Comment 3:\nStuart Little on 2018-10-26:\n\"quoting portions of regex\"
Comment 4:\nMad Sweeney on 2018-10-26:\n\"Re: Quoted Literals in Regex\"
Comment 5:\nDave Morriss on 2018-10-27:\n\"Thanks for the combined wisdom being directed at my question\"
Comment 6:\nDave Morriss on 2018-10-27:\n\"Backslashes in comments\"
Comment 7:\nMad Sweeney on 2018-10-27:\n\"Not just backslashes\"
Comment 8:\nDave Morriss on 2018-10-27:\n\"Comments eating ampersands?\"
Comment 9:\nMad Sweeney on 2018-10-27:\n\"Re: Comments eating ampersands?\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2399,'2017-10-12','Using Super Glue to create Landmarks on Keyboards',639,'Using Super Glue to create Landmarks on Keyboards','Using Super Glue to create Landmarks on Keyboards\r\n',151,0,1,'CC-BY-SA','keyboard, function key, laptop keyboard',0,0,1),
-(2400,'2017-10-13','My commute into work',2208,'In this episode, Dave records an episode across his entire commute into work.','
In this episode, Dave records an episode across his entire commute into work.
Both Caroline and I use that particular microphone each to record The Bugcast each week. Both the Samson and AudioTechnica microphones have been recommended by Daniel J Lewis of The Audacity To Podcast for those podcasters who cannot afford professional level equipment.
\r\n
The cars I have owned
\r\n
This list may contradict the detail provided in the episode... that\'s because I may have made a few errors in recollection when I was recording.
\r\n',314,0,0,'CC-BY-SA','commute,car,cars,driving,podcasting,equipment,podcasting equipment,anchor,anchor.fm,the bugcast',0,0,1),
+(2400,'2017-10-13','My commute into work',2208,'In this episode, Dave records an episode across his entire commute into work.','
In this episode, Dave records an episode across his entire commute into work.
Both Caroline and I use that particular microphone each to record The Bugcast each week. Both the Samson and AudioTechnica microphones have been recommended by Daniel J Lewis of The Audacity To Podcast for those podcasters who cannot afford professional level equipment.
\r\n
The cars I have owned
\r\n
This list may contradict the detail provided in the episode... that\'s because I may have made a few errors in recollection when I was recording.
\r\n',314,0,0,'CC-BY-SA','commute,car,cars,driving,podcasting,equipment,podcasting equipment,anchor,anchor.fm,the bugcast',0,0,1),
(2397,'2017-10-10','The Urban Astronomer',1959,'An introduction to an astronomy podcast that you might like','
The Urban Astronomer
\r\n
I\'m interested in Astronomy and listen to a number of Astronomy podcasts. I have listed a few of these in the past when doing HPR shows about the podcast feeds I subscribe to (shows 1516, 1518 and 2339).
\r\n
One of the recent additions to my podcast list that I have been listening to this year is called "The Urban Astronomer", which has a website here and a podcast feed here. The site and podcast are run by Allen Versfeld, who is based in South Africa.
\r\n
To quote from the website:
\r\n
\r\n
Allen is an amateur astronomer, an IT professional, a podcaster, a father of five beautiful kids and a barely competent chess player. He is also the director of the Astrophotography Section of the Astronomical Society of South Africa, where he coordinates and promotes the activities of people who are far better photographers than him.
\r\n
\r\n
I have been enjoying Allen\'s episodes a lot. There are some great interviews with some very interesting people in the world of Astronomy. Allen has a relaxed interviewing style which I find appealing.
\r\n
I wrote to him, commenting on one of his episodes, and I mentioned Hacker Public Radio in my email. He has subscribed to HPR and has been kind enough to mention it on a recent podcast. I\'m offering you a chance to listen to one of his episodes here.
\r\n
The episode is number 12 of "The Urban Astronomer", from June 16, 2017. It is an interview with Jen Millard, a first year Astronomy PhD student at Cardiff University in the UK. Jen is also a host on the "Awesome Astronomy" podcast, as mentioned in the episode.
\r\n
I hope you enjoy listening to this example episode.
\r\n',225,0,0,'CC-BY-SA','astronomy,podcast',0,0,1),
(2398,'2017-10-11','AutoHotkey Master of Automation ?',1042,'I\'ll go over my AutoHotkey script I used to give free money in GTA (dropping)','
',36,0,0,'CC-BY-SA','GTA5,hacking,macros,autohotkey',0,0,1),
(2401,'2017-10-16','Music Theory Hara-Kiri',970,'A show on music theory, and figuring out what viewers on hear actually want with a music theory show','
Yeah just want feedback on what to do with a music theory show, since I see it was on the requested lists and no one was really doing it that I\'ve seen.
',354,0,1,'CC-BY-SA','Music, Music Theory',0,0,1),
@@ -18745,12 +18863,12 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2429,'2017-11-23','Interface Zero RPG Play',1902,'Klaatu, Lobath, and Thaj play the Interface Zero RPG part 2','
The second session of Interface Zero RPG live play with Klaatu, Lobath, and Thaj.
\r\n\r\n
This week, Chiawei and Syd reach Peter\'s apartment and do some quick detective work, and a little bit of minor bone-breaking.
\r\n\r\n
\r\nIf you\'re really keen to play, send Klaatu an email (Klaatu at the domain of this podcast, or member.fsf.org). The recording schedule is inflexible, Klaatu has oddly high standards for audio that he is inevitably compresses down to 64kbps, and the game has already started, but a new character or guest character is not out of the question!
\r\n\r\n
No give-away this week, but we\'ll be giving a (digital) Pathfinder starter kit out next week.
',78,95,0,'CC-BY-SA','Interface Zero,actual play,rpg,gaming,live play',0,0,1),
(2435,'2017-12-01','Server Basics 102',2926,'Klaatu talks about SSH configuration on the server you set up in 101.','
Klaatu talks about SSH, changing SSH ports, and using SSH keys for the server you presumably set up after hearing Server Basics 101 in this series.
',78,0,0,'CC-BY-SA','server,admin,sys admin,linux',0,0,1),
(2441,'2017-12-11','Server Basics 103',1773,'Firewalls and fail2ban','
Klaatu walks you through installing, configuring, and running fail2ban, and discusses the basics about firewalls.
\r\n',30,0,0,'CC-BY-SA','Correction',0,0,1),
(2432,'2017-11-28','Living with the Nokia 6 – an update to HPR 2405',316,'An update to my show on the Nokia 6 phone','
Living with the Nokia 6 – an update to HPR 2405
\r\n
I’ve now been using the Nokia 6 for about 2 months and just wanted to update listeners to my thoughts on the phone.
\r\n
First a response to Dave who said on the Community News that as he had a OnePlus 1 he was surprised I found it inadequate. The One+1 is a great phone, my problem with it was it does not support O2’s 4G network although it supports EE’s and 3’s 4G networks here in the UK, as I use GiffGaff which runs on the O2 network I have not been able to benefit from their 4G offer and I don’t want to change provider. Also the One+1 was stuck on CyanogenMod 13.1 (Android 6) and no longer got updates, so this was the reason for the new phone purchase. I’ve now flashed Lineage OS onto the One+1 and have a secure backup phone or one I can pass on to my Wife at some stage.
\r\n
Back to the Nokia, now I’ve lived with the phone for a few weeks I can say I am more than happy with it, and some of the issues with battery life I have found are unfounded once you configure some of the settings to be more battery friendly, such as restricting background access to the net for most aps the battery life is well over a day\'s use. At night in stand by mode over 8 hours battery use is less than 1% so even with moderate to heavy use I can get a day out of the phone without any risk of running out. Also if the official charger and cable are used a 1 hour charge gives about a 30-40% battery capacity, so not as slow as the reviews I’ve read. Would I still buy it having used it for 2 months, I would say yes to that, and I also have no issues with recommending it as a large format phone at a budget price.
',338,57,0,'CC-BY-SA','Android, Nokia 6, Phones, New Kit, OnePlus1',0,0,1),
(2437,'2017-12-05','Interface Zero Play-through Part 3',2543,'Klaatu, Lobath, and Thaj play the Interface Zero RPG','
\r\nKlaatu, Lobath, and Thaj continue their play-through of the Interface Zero RPG, using the Job InSecurity adventure.\r\n
\r\n\r\n
\r\nLyphrygerator composed by William Kenlon, used with permission.\r\n
\r\n\r\n
\r\nAll other music by Klaatu.\r\n
\r\n\r\n
Some sounds from freesound.org used for texture. Obligatory credits will appear in final episode.\r\n
',78,95,1,'CC-BY-SA','Interface Zero,cyberpunk,rpg,game',0,0,1),
(2428,'2017-11-22','git Blobs',1982,'Klaatu talks about git-media and git-annex','
How do you manage large binary blobs, like pictures or video or sounds, when using git?
\r\n\r\n
In this episode, Klaatu explains two popular options:
Thanks to CapsLok at freesound.org for the sound effect.
\r\n',78,81,0,'CC-BY-SA','git',0,0,1),
(2444,'2017-12-14','Interface Zero Play-through Part 4',1927,'Klaatu, Lobath, and Thaj play the Interface Zero RPG','
The investigation continues!
\r\n
Guest voice in this and episode 3 by Gort.
',78,95,0,'CC-BY-SA','Interface Zero,rpg,game,play,pathfinder,dnd',0,0,1),
-(2438,'2017-12-06','Gnu Awk - Part 8',1239,'More about loops','
Gnu Awk - Part 8
\r\n
Introduction
\r\n
This is the eighth episode of the "Learning Awk" series that\r\nb-yeezi and I are doing.
\r\n
Recap of the last episode
\r\n
\r\n
The while loop: tests a condition and performs commands while the test returns true
\r\n
The do while loop: performs commands after the do, then tests afterwards, repeating the commands while the test is true.\r\np>
\r\n
The for loop (type 1): initialises a variable, performs a test, and increments the variable all together, performing commands while the test is \r\ntrue.
\r\n
The for loop (type 2): sets a variable to successive indices of an array, preforming a collection of commands for each index.
\r\n
\r\n
These types of loops were demonstrated by examples in the last episode.
\r\n
Note that the example for \'do while\' was an infinite loop (perhaps as a test of the alertness of the audience!):
\r\n
#!/usr/bin/awk -f\r\nBEGIN {\r\n\r\n i=2;\r\n do {\r\n print "The square of ", i, " is ", i*i;\r\n i = i + 1\r\n }\r\n while (i != 2)\r\n\r\nexit;\r\n}
\r\n
The condition in the while is always true:
\r\n
The square of 2 is 4\r\nThe square of 3 is 9\r\nThe square of 4 is 16\r\nThe square of 5 is 25\r\nThe square of 6 is 36\r\nThe square of 7 is 49\r\nThe square of 8 is 64\r\nThe square of 9 is 81\r\nThe square of 10 is 100\r\n...\r\nThe square of 1269630 is 1611960336900\r\nThe square of 1269631 is 1611962876161\r\nThe square of 1269632 is 1611965415424\r\nThe square of 1269633 is 1611967954689\r\nThe square of 1269634 is 1611970493956\r\n...
\r\n
The variable i is set to 2, the print is executed, then i is set to 3. The test "i != 2" is true and will be ad infinitum.
\r\n
Some more statements
\r\n
We will come back to loops later in this episode, but first this seems like a good point to describe another statement: the switch statement.
\r\n
Long notes
\r\n
The notes for rest of this episode are available here.
\r\n',225,94,1,'CC-BY-SA','Awk utility,Awk language,gawk,loops',0,0,1),
+(2438,'2017-12-06','Gnu Awk - Part 8',1239,'More about loops','
Gnu Awk - Part 8
\r\n
Introduction
\r\n
This is the eighth episode of the "Learning Awk" series that\r\nb-yeezi and I are doing.
\r\n
Recap of the last episode
\r\n
\r\n
The while loop: tests a condition and performs commands while the test returns true
\r\n
The do while loop: performs commands after the do, then tests afterwards, repeating the commands while the test is true.\r\np>
\r\n
The for loop (type 1): initialises a variable, performs a test, and increments the variable all together, performing commands while the test is \r\ntrue.
\r\n
The for loop (type 2): sets a variable to successive indices of an array, preforming a collection of commands for each index.
\r\n
\r\n
These types of loops were demonstrated by examples in the last episode.
\r\n
Note that the example for \'do while\' was an infinite loop (perhaps as a test of the alertness of the audience!):
\r\n
#!/usr/bin/awk -f\r\nBEGIN {\r\n\r\n i=2;\r\n do {\r\n print "The square of ", i, " is ", i*i;\r\n i = i + 1\r\n }\r\n while (i != 2)\r\n\r\nexit;\r\n}
\r\n
The condition in the while is always true:
\r\n
The square of 2 is 4\r\nThe square of 3 is 9\r\nThe square of 4 is 16\r\nThe square of 5 is 25\r\nThe square of 6 is 36\r\nThe square of 7 is 49\r\nThe square of 8 is 64\r\nThe square of 9 is 81\r\nThe square of 10 is 100\r\n...\r\nThe square of 1269630 is 1611960336900\r\nThe square of 1269631 is 1611962876161\r\nThe square of 1269632 is 1611965415424\r\nThe square of 1269633 is 1611967954689\r\nThe square of 1269634 is 1611970493956\r\n...
\r\n
The variable i is set to 2, the print is executed, then i is set to 3. The test "i != 2" is true and will be ad infinitum.
\r\n
Some more statements
\r\n
We will come back to loops later in this episode, but first this seems like a good point to describe another statement: the switch statement.
\r\n
Long notes
\r\n
The notes for rest of this episode are available here.
\r\n',225,94,1,'CC-BY-SA','Awk utility,Awk language,gawk,loops',0,0,1),
(2442,'2017-12-12','The sound of Woodbrook Quaker Study centre in the Spring',937,'I recorded the sound of bird song at Woodbrook Quaker study Centre in Birmingham UK in April 2017','
This is a recording I made at Woodbrook Quaker Study Centre in Birmingham UK while I was there in April 2017.
\r\n
I got the idea to release it as a show after listening to hpr2354 :: Night Sounds in Rural Tennessee hosted by Jon Kulp so here it is all 15 minutes of it.
\r\n
The centre is right by the busy A38 trunk road so hence the constant hum of traffic noise in the background.
',338,101,0,'CC-BY-SA','birdsong',0,0,1),
(2443,'2017-12-13','pdmenu',927,'I have been using this menu tool over the past year, and I really like it','
pdmenu
\r\n
Introduction
\r\n
Pdmenu is a tool written by Joey Hess which allows the creation of a simple menu in a terminal (console) window. It is in his list of less active projects, and the latest version is dated 2014, but it seems to be quite complete and useful as it is.
\r\n
I like simple menus. As a Sysadmin in my last job I used one on OpenVMS which helped me run the various periodic tasks I needed to run - especially the less frequent ones - without having to remember all of the details.
\r\n
I do the same on my various Linux systems, and find that pdmenu is ideal for the task.
\r\n
Installation
\r\n
I found pdmenu in the Debian repositories (I run Debian Testing), and it was very easily installed. The C source is available as a tarfile, though I\r\n haven\'t tried building it myself.
\r\n
Running pdmenu
\r\n
Simply typing pdmenu at a command prompt will invoke the utility. It uses the file /etc/pdmenurc as its default configuration file, and this generates a menu with a demonstration of some of its features.
\r\n
This is not particularly useful but it can be overridden by creating your own configuration, which by default is in ~/.pdmenurc. The pdmenu command itself takes a configuration file as an argument, so there is plenty of flexibility.
\r\n
Full notes and examples
\r\n
The full notes which describe the use of pdmenu with examples can be found here.
\r\n',225,0,1,'CC-BY-SA','command line,menu,pdmenu,.pdmenurc',0,0,1),
(2451,'2017-12-25','Server Basics 105 OpenVPN Client',1931,'Klaatu walks you through installing and configuring an OpenVPN client','
In the previous episode of this series, you set up an OpenVPN server. In this episode, Klaatu walks you through:
\r\n\r\n\r\n
\r\nInstalling OpenVPN on a client machine.\r\n
\r\n
\r\nGenerating a key and certificate request.\r\n
\r\n
\r\nSigning a client cert from the server.\r\n
\r\n
\r\nConfiguring the client.conf file.\r\n
\r\n
\r\nConfiguring the client routing table to use the VPN subnet.\r\n
\r\n
\r\nPinging the server over VPN!!!\r\n
\r\n\r\n\r\n
Where to go from here? \r\n
\r\n
Your next steps should be to investigate how your org wants to use VPN, how your clients actually want to join the VPN (Network Manager has some nice features that makes joining a VPN fairly transparent). Have fun!
',78,0,0,'CC-BY-SA','server,vpn,sys admin',0,0,1),
@@ -18758,7 +18876,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2448,'2017-12-20','Useful Bash functions - part 3',2033,'A few more possibly useful Bash functions are discussed','
Useful Bash functions - part 3
\r\n
Overview
\r\n
This is the third show about Bash functions. These are a little more advanced than in the earlier shows, and I thought I\'d share them in case they are useful to anyone.
\r\n
As before it would be interesting to receive feedback on these functions and would be great if other Bash users contributed ideas of their own.
\r\n
Full Notes
\r\n
Since the notes explaining this subject are long, they have been placed here.
\r\n
Links
\r\n
\r\n
Previous HPR episodes in this group Useful Bash functions:\r\n
',225,42,1,'CC-BY-SA','coding,Bash,script,function',0,0,1),
(2439,'2017-12-07','Internal Logic of Stories',1152,'Lostnbronx talks about stories and story consistency.','
Lostnbronx rambles on about the structure of stories, and how their internal logic can make or break them.
',107,105,0,'CC-BY-SA','stories,storytelling,gaming,rpg,movies,writing,star trek,stardrifter,warp,starjump,lostnbronx',0,0,1),
(2446,'2017-12-18','Git server and git hooks',2430,'Klaatu talks about running git on a server, and explains git hooks.','
\r\n',78,81,0,'CC-BY-SA','git',0,0,1),
-(2440,'2017-12-08','How to save bad beans or the French press',57,'how to hash tag coffee?','
Memorial
\r\n
\r\nWe take some time to remember our good friend and fellow host Lord Drachenblut who passed away one year ago yesterday. \r\nNow may be a good time to re listen to hpr2201 :: Matthew \"Lord Drachenblut\" Williams HPR Community members remember the digital dragon.\r\n
\r\n\r\n
Shownotes
\r\n
I was driving in a place where I had no signal, so I recorded an episode about the first thing that popped into my mind.
\r\n
Recorded with lineageos recorder app through monster isport bluetooth headphones. I\'m amazed at the sound quality. I\'ll do this more. I promise
\r\n
(no I won\'t, I\'m lazy)
',126,88,1,'CC-BY-SA','driving, coffee',0,0,1),
+(2440,'2017-12-08','How to save bad beans or the French press',57,'how to hash tag coffee?','
Memorial
\r\n
\r\nWe take some time to remember our good friend and fellow host Lord Drachenblut who passed away one year ago yesterday. \r\nNow may be a good time to re listen to hpr2201 :: Matthew \"Lord Drachenblut\" Williams HPR Community members remember the digital dragon.\r\n
\r\n\r\n
Shownotes
\r\n
I was driving in a place where I had no signal, so I recorded an episode about the first thing that popped into my mind.
\r\n
Recorded with lineageos recorder app through monster isport bluetooth headphones. I\'m amazed at the sound quality. I\'ll do this more. I promise
\r\n
(no I won\'t, I\'m lazy)
',126,88,1,'CC-BY-SA','driving, coffee',0,0,1),
(2445,'2017-12-15','Information Underground: Backwards Capitalism',2896,'Klaatu, Deepgeek, and Lostnbronx talk about markets, innovation, and opportunity.','
\r\nThe Info-Underground guys consider why capitalism does (or maybe doesn\'t) work, why people use it as a tool for a better life (or maybe don\'t), and what the source of ambition, commercial aspiration, and greed truly is (or maybe isn\'t).\r\n
',107,99,0,'CC-BY-SA','information underground,capitalism,klaatu,deepgeek,lostnbronx',0,0,1),
(2453,'2017-12-27','The power of GNU Readline - part 2',1165,'Various ways of deleting and undeleting on the command line with GNU Readline','
The power of GNU Readline - part 2
\r\n
In part 1 we looked at some Control key and Meta key sequences as well as the Backspace and DEL keys in the context of GNU Readline.
\r\n
The full-length notes (available here) contain a brief summary of what we covered and introduce cutting and pasting the GNU Readline way, with some examples.
GNU Readline manual: https://tiswww.cwru.edu/php/chet/readline/rluserman.html (Note that the widely advertised address https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html seems not to work any more. This one, which I found through the main GNU site, seems OK though)
',225,102,1,'CC-BY-SA','command line,cli,GNU Readline',0,0,1),
(2449,'2017-12-21','Org-mode mobile solution',578,'My search for taking org mode on the road','
brief introduction
\r\n
myself
\r\n
Hi, I\'m Brian in Ohio
\r\n
inspiration for show
\r\n
I wanted to tell a little about my trials and tribulations of finding a solution to taking org mode on the road. What\'s org mode? Listen to my last episode or do a duckduckgo to find out.
\r\n
parameters
\r\n
After switching from using a bullet journal to using emacs-org-mode as my organizing device I immediately saw that lugging a laptop everywhere was not going to work for me. I wanted to be able to access org-mode, especially the agenda view, anywhere I might be. Laptops with limited battery life and a large physical presence were not going to work for me.
\r\n
mobile-org app
\r\n
The first solution I tried, and the most obvious, was the mobile-org app. Its available for android or ios. I can only attest to the android version. Its an easy from the play store. This solution didn\'t work for me for a number of reasons. First, the documentation for the setup is terrible, and I became frustrated by the workflow and could not get useful results using the app. Mobile-org seems to be built around using dropox. In order to get around that I tried various methods of syncing my org files using onboard storage. Seeing this wasn\'t going to work I bit the bullet setup a dropbox account installed the clients, one on my slackware laptop and the other on my phone only to find dropbox doesn\'t support this application anymore. A little digging around and it seems the API used by mobile-org isn\'t up to snuff any more so, fail. I cut my loses and moved on to another possible solution.
\r\n
pi-top
\r\n
My next crack at solving the portable org mode problem was getting a pitop laptop https://pi-top.com/. Pitop is a laptop based on a raspberrypi. I won\'t go into the details of the device here but I\'ll say my idea for using this device was its advertised 8+ hour battery life. My old linux laptops rarely give me 2 hours of life So even though the pitop was physically larger than I wanted I gave it a whirl. Lets just say the battery does last 8+ hours, it just can\'t survive many recharges. 2 battery packs later I gave up on the pitop and went looking for something else.
\r\n
pocketchip
\r\n
I heard klaatu mention a device called a pocketchip on his gnuworld order podcast https://gnuworldorder.info/. I looked into it and here I thought might be a device that could work. Pocketchip https://getchip.com/pages/pocketchip is a handheld linux computer. After ordering the device I began setting it up for my use case. There are plenty of tutorials on the pocketchip website on how to extend the usefulness of this product. The size of the device was good and the battery life was ok. Some people complain about the chicklet keyboard but I actually did not mind it to much. It took some fiddling to get the emacs keybindings I use to work on the odd keyboard layout, but its a linux computer so there\'s plenty of information out there. I used a thumb drive as a repository for my org files, wrote a couple of scripts to sync up the files with whatever device the drive was plugged into and wala a mobile org solution! Alas, the pocketchips demise was its build quality. The heart of the pocketchip, the system board\'s usb mini plug fell off, and then one system tweak later I bricked the device. I\'ll recover it eventually, you can program it through the gpio pins, but this was a quest for portable-org-mode, not fixing pocketchips, so onward.
\r\n
raspberry pi tablet
\r\n
I saw a build of a raspberry pi tablet that looked very nice https://www.stefanv.com/electronics/a-compact-home-made-raspberry-pi-tablet.html. Always up for a challenge, I cobbled together a prototype and tried it out. The reason I eventually dropped this solution because the virtual keyboard didn\'t work well and I couldn\'t get the official raspberrypi lcd to rotate from portrait to landscape dynamically. Still a fun project and I\'ll get some use out of it sometime.
\r\n
android phone
\r\n
Well here\'s the solution I came up with. I was searching around on the internet and found a link telling about running emacs on an android phone. https://endlessparentheses.com/running-emacs-on-android.html. It involves installing the termux app, the hackers keyboard, both available in the google play store and apt-get installing emacs on the phone. After that I had full emacs running, all be it in a terminal so its slightly different then running on the desktop, and with emacs you get, drum roll please, org-mode. With this i have the device I always take with running org-mode. I sink my org files between my laptop and phone using the afore mentioned drop box account. The hackers keyboard works flawlessly and can digest any emacs keybinding I need. I also have a logitech bluetoothkeyboard that I can use if I have a lot of typing to do in org-mode on my phone, such as these shownotes!
\r\n
conclusions
\r\n
I find org-mode so useful that I want it available any where I go. And over the course of the last 8 months I went on a journey trying to find a solution to that desire. In the end, the solution was pretty obvious, these portable computers we carry around are amazing and thanks to the developers of termux and the hackers keyboard my phone is now infinitely more useful to me. Thanks for listening.
\r\n',326,0,0,'CC-BY-SA','emacs,org-mode,mobile,mobile-org app,pi-top,pocketchip,Android',0,0,1),
@@ -18776,10 +18894,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2460,'2018-01-05','The Alien Brothers Podcast - S01E03 - Decline of American Empire',6830,'The Alien Brothers penetrate the Van Allen belt to tap in, and transmit an intergalactic podcast','
Summary:
\r\n
\r\nCasper and Rutiger opt for a time of ease and relaxation by discussing happy light topics: the decline of American Empire and recent reversal of Net Neutrality protections [or the rollout of Net Neuterality -c] (December 2017).\r\n
\r\n
Links and Notes:
\r\n
\r\nRe: Empire - moral decline and massive wealth inequality, role in imperial decline [1] -r \r\nRe: Empire - Noam Chomsky and Decline of American Empire [2] -r \r\nRe: Empire - moral decline - death as sport (Onion spoof) [3] -r \r\nRe: Net Neutrality - Rutiger apologies - to Casper, for completely derailing the conversation on Net Neutrality by believing that pay-for-bandwidth/capacity and limiting access to content are both legitimate elements of the Net Neutrality debate, but over-focusing on the infrastructure/de-emphasizing the content argument. See Prevent Over-Use of Bandwidth and Pricing Models vs. Data Discrimination[4] -r \r\nRe: Empire - consumption of human suffering as entertainment - modern Roman colosseum [5] -r \r\nRe: Empire - the thought leaders over at Reddit on elements of declining empire [6] -r \r\nRe: Thoughts - Volume One Chapter Two of Diek Minusky’s The Nature of Systems will be coming with… episode 4! Sorry folks. Hold… hold! -r \r\nRe: Getting Things Done - by David Allen [7] \r\n
\r\n00:00:00 - 00:13:00 Settling in - Casper and Rutiger get acquainted after being off the air for a while. Skip this part if you don’t care about the characters Casper and Rutiger and their degeneration… \r\nBegin Topic 1: Net Neuterality / Net Neutrality Rollback \r\n00:14:00 - 00:30:00 The Deployment of Net Neuterality / Rollback of Net Neutrality - Casper attempts to boil this topic down nice and easy for Rutiger, yet Rutiger conflates this (see above), but that is OK as this is normal for pleebs. Members of HPR will understand. \r\n00:30:00 - 00:36:00 Fox & Disney Merger - Coincidence or Conspiracy on timing w/ Net Neutrality rollback? \r\n00:36:00 - 00:40:30 How Should HPR Community Respond or Mitigate This? Credit goes to Rob Placone and Jimmy Dore for mentioning Municipality developed internet \r\nhttps://www.youtube.com/watch?v=mvJ93kjSXiQ \r\n00:40:30 - 00:48:00 Discussion on Availability of Access \r\n00:48:00 - 00:52:00 Casper takes a sharp pivot off track - A satellite is mentioned and Casper brings up DMB unfortunately for the listener \r\n00:52:00 - 00:56:00 FREESTYLE JAM!@&#%^ \r\n00:58:00 - Ron Swanson has words for Ajit Pai \r\n01:00:00 - Rutiger Does Not Speak in Tribe Called Quest Protocol call and response \r\n01:05:00 - 01:20:00 Casper and Rutiger give their distinct definition of Empire and expand upon this \r\n01:20:00 - 01:23:00 MUDs, OG Tech & Being Alone Together \r\n01:23:00 - Casper mentions 150 people own EVERYTHING as mentioned here by Chamath Palihapitiya \r\nhttps://www.youtube.com/watch?v=PMotykw0SIk \r\n“During his View From The Top talk, Chamath Palihapitiya, founder and CEO of Social Capital, discussed how money is an instrument of change which should be used to make the world a better place” \r\n01:27:00 - 01:30:00 - Being Alone Together \r\n01:30:00 - 01:33:00 - Bullying and how Technology can Exponentiate this \r\n01:33:00 - How to DEBUG… seriouslyhttps://conncounseling.weebly.com/stop--debug.html \r\n01:39:00 - Consumerism and the Decline of Empire \r\n01:40:00 - DW Documentaries Casper said he would find \r\nGreed - https://www.dw.com/en/tv/greed/s-32898 \r\nThe Divide Part 1 - https://www.dw.com/en/the-divide-part-1/av-41378206 \r\nThe Divide Part 2 - https://www.dw.com/en/the-divide-2/av-41467377 \r\n01:42:00 - Immortality Through Consumerism? \r\n01:43:00 - Where are we if Not Here? \r\n01:45:00 - Self Destruction \r\n01:46:00 - Celebrity Chefs and the Tie to the Roman Empire - Casper remembered post-cast that this was from The Four Horsemen Documentary as explained here: \r\nhttps://barnabyisright.com/2013/03/30/why-celebrity-chefs-herald-the-end-of-empire/ \r\n01:47:00 - Casper (Mis)Quotes Frank Zappa - by saying “Politics is the entertainment branch of the Military Industrial Complex” https://www.reddit.com/r/Zappa/comments/2qxpnu/politics_is_the_entertainment_branch_of_industry/ \r\n01:48:00 - (S)Elections are becoming irrelevant \r\n01:50:00 - Casper recommends International News Alternatives like BBC, RT, AlJazeera if you would like to know what is going on in the world \r\nAddendum - Not mentioned in Podcast, but worth a link regarding the state of our MSM in reporting false information on Russia and WikiLeaks from Glenn Greenwald: \r\nhttps://theintercept.com/2017/12/09/the-u-s-media-yesterday-suffered-its-most-humiliating-debacle-in-ages-now-refuses-all-transparency-over-what-happened/ \r\n01:51:00 - Wrapping Up The Show & ShoutOuts to Klaatu! \r\n01:53:00 - Casper argues with Gerald to cut the recording\r\n
\r\n',359,0,1,'CC-BY-SA','Net Neutrality',0,0,1),
(2463,'2018-01-10','Setting up a 32 Bit Ubuntu Server',762,'Repurpose a 32 bit small form factor working station','
So what is the purpose - I had an old windows backup workstation at work that I did a lot backups with. It got to the point where it was just too slow and low spec to handle the windows 7 updates and with my company switching to the 365/sharepoint/one drive it was not needed anymore. So I wanted not to throw it away as I had sprung for 160GB hard drive a long time ago. “I know at work and purchasing a hard drive for work.” But it lasted more than 10 years doing my outlook backups and file shares.
\r\n
So my first problem was I was pretty sure I only had 32 bit.
\r\n
So no centos or suse in 32 bit. I could have went fedora but I wanted a really long time with support. So it came down to ubuntu 16.04, Debian or Net BSD with I386 repos I could use long term. I was more comfortable with Ubuntu and 16.04 has about 3 years support left on it.
\r\n
Its a small form factor computer so I carried it home for a few days. And got the ISO down loaded again no usb drive boot only DVD.
I had a lot of trouble with lamp and own/next cloud with both snaps and straight install. I broke the install several times. In the end I said what do really know how do well with it right now. So I installed Open SSH server, tightVNC, A really thin xfce 4, ffmpeg and youtube-dl and uget. So I will play with snaps only in the future and keep this basic config.
Note I did not auto start VNC because I found in my creations of this server that it used too much RAM vs just starting it and killing it.
\r\n
It is the perfect video processing machine in the moment. If youtube-dl can’t get it I can use uget via vnc and that will then transcode if needed. Mostly for mp3. \r\nhttps://rg3.github.io/youtube-dl/ youtube-dl is a command-line program to download videos from YouTube.com and a few more sites. It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on Mac OS X. It is released to the public domain, which means you can modify it, redistribute it or use it however you like.
\r\n
I will work on the nextcloud snap and other snaps as they are easy to install or remove without hurting the base system.
\r\n
Possible other projects - Owncloud or Storj \r\nhttps://storj.io/share.html \r\nOne you can make a little money with it :)
\r\n',129,0,0,'CC-BY-SA','32-bit server, Ubuntu',0,0,1),
(2464,'2018-01-11','The Alien Brothers Podcast - S01E04 - Digital Instruments',3906,'Casper and Rutiger Detail their Digital and Analog Sonic Setups in IOS and Android','
Casper and Rutiger are back with a very simple topic: Making music with various Digital Audio Workstations.
Casper details his Windows setup with a relatively cheap DAW and various Analog and Digital transmissions he uses to create his noise: \r\nhttps://soundcloud.com/user-393542827
\r\n
@alienbpc
\r\n',359,0,1,'CC-BY-SA','DAW, Sonic Voyages, iOS Music Apps, PreSonus Audiobox 22vsl, Logic Pro X, Studio One',0,0,1),
-(2696,'2018-12-03','HPR Community News for November 2018',4317,'HPR Volunteers talk about shows released and comments posted in November 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 24 comments in total.
\n
There are 9 comments on\n7 previous shows:
\n
hpr2399\n(2017-10-12) \"Using Super Glue to create Landmarks on Keyboards\"\nby dodddummy.
\n
\n
\n
\nComment 8:\ndodddummy on 2018-11-23:\n\"There\'s nothing new under the sun.\"
Comment 2:\npauleb on 2018-11-16:\n\"Great hack, great episode!!\"
\n
hpr2693\n(2018-11-28) \"Getting started with web based game in Haskell and Elm\"\nby tuturto.
\n
\n
Comment 1:\nklaatu on 2018-11-30:\n\"Cool game idea, cool intro\"
\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:
It’s that time of year again. Time for the Hacker Public Radio 24 hr (26 hr) New Years Eve Show.
\n
For those who don’t know on New Years Eve 2018-12-31 at 10:00 am UTC (5:00 am EST) we will have a recording going on the HPR Mumble server (at ch1.teamspeak.cc on port 64747) for anyone to come on say “Happy New Year” and talk about what ever they want.
\n
We will leave the recording going until 2019-01-01 12:00 am UTC (7:00 am EST) or until the conversation stops.
\n
For those who have never used Mumble before, we have a guide over at linuxlugcast.com in our how to section explaining how to setup the desktop Mumble client, but Mumble isn’t only available for the desktop. It is also available for Android and IOS.
\n
We are also going to setup an etherpad for people to share links to things they are discussing.
\n
So please stop in. Say “Hi” and maybe join in the conversation with other HPR listeners and contributors. It’s always a good time.
Libre Lounge is a podcast where we casually discuss various topics involving user freedom, crossing free software, free culture, network and hosting freedom, and libre hardware designs. We discuss everything from policy and licensing to deep dives on technical topics… whatever seems interesting that week. At some point we might even have guests!
\n
\n
Internet Archive funding drive
\n
As you know, HPR uploads all current episodes to the Internet Archive at https://archive.org, and is in the process of uploading older shows, so we are particularly keen that this amazing service continues.
\n
The Internet Archive is currently fundraising. Donations are currently being matched by a generous supporter, so this will double your impact if you are able to donate.
\n
Tags and Summaries
\n
Over the period tags and/or summaries have been added to 23 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2721,'2019-01-07','HPR Community News for December 2018',4247,'HPR Volunteers talk about shows released and comments posted in December 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 34 comments in total.
Comment 1:\nb-yeezi on 2018-12-31:\n\"Already put to use\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (2741,'2019-02-04','HPR Community News for January 2019',4598,'Yannick Dave and Ken talk about shows released and comments posted in January 2019','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 29 comments in total.
\n
There are 8 comments on\n4 previous shows:
\n
hpr2629\n(2018-08-30) \"Thoughts on language learning part 3 - game/story mode.\"\nby dodddummy.
\n
\n
\n
\nComment 2:\ndodddummy on 2019-01-08:\n\"The Stanley Parable\"
\n
hpr2668\n(2018-10-24) \"Explaining the controls on my Amateur HF Radio Part 3\"\nby MrX.
\n
\n
\n
\nComment 3:\nMrX on 2019-01-10:\n\"Re Comment 1 from Michael\"
\n
\nComment 4:\nMrX on 2019-01-10:\n\"Re Comment 2 from lostnbronx\"
Comment 1:\nKlaatu on 2019-01-17:\n\"Coincidentally...\"
Comment 2:\nMrX on 2019-01-20:\n\"Re Coincidentally...\"
\n
hpr2737\n(2019-01-29) \"My Pioneer RT-707 Reel-to-Reel Tape Deck\"\nby Jon Kulp.
\n
\n
Comment 1:\nJon Kulp on 2019-01-29:\n\"Tape counter is functioning now\"
Comment 2:\nBookewyrmm on 2019-01-29:\n\"ancient media\"
Comment 3:\nJon Kulp on 2019-01-29:\n\"Victrola episode\"
Comment 4:\nDave Morriss on 2019-01-29:\n\"Wow! What a beautiful tape deck!\"
Comment 5:\nJon Kulp on 2019-01-29:\n\"I want one!\"
\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:
Google+ is going away on April 2nd. Everything is going to be deleted so backup your files before then.
\n
Mad Sweeney wrote to inform us about https://dnsflagday.net/ Some “DNS software and service providers […] have agreed to coordinate removing accommodations for non-compliant DNS implementations from their software or services, on or around February 1st 2019”
\n
\n
Tags and Summaries
\n
Over the period tags and/or summaries have been added to 11 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2761,'2019-03-04','HPR Community News for February 2019',4022,'HPR Volunteers talk about shows released and comments posted in February 2019','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 10 comments in total.
Comment 1:\nklaatu on 2019-02-27:\n\"this episode\"
\n
hpr2759\n(2019-02-28) \"Cleaning the Potentiometers on a Peavey Bandit 65\"\nby Jon Kulp.
\n
\n
Comment 1:\nNYbill on 2019-02-28:\n\"Stepping on toes!\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2696,'2018-12-03','HPR Community News for November 2018',4317,'HPR Volunteers talk about shows released and comments posted in November 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 24 comments in total.
\n
There are 9 comments on\n7 previous shows:
\n
hpr2399\n(2017-10-12) \"Using Super Glue to create Landmarks on Keyboards\"\nby dodddummy.
\n
\n
\n
\nComment 8:\ndodddummy on 2018-11-23:\n\"There\'s nothing new under the sun.\"
Comment 2:\npauleb on 2018-11-16:\n\"Great hack, great episode!!\"
\n
hpr2693\n(2018-11-28) \"Getting started with web based game in Haskell and Elm\"\nby Tuula.
\n
\n
Comment 1:\nklaatu on 2018-11-30:\n\"Cool game idea, cool intro\"
\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:
It’s that time of year again. Time for the Hacker Public Radio 24 hr (26 hr) New Years Eve Show.
\n
For those who don’t know on New Years Eve 2018-12-31 at 10:00 am UTC (5:00 am EST) we will have a recording going on the HPR Mumble server (at ch1.teamspeak.cc on port 64747) for anyone to come on say “Happy New Year” and talk about what ever they want.
\n
We will leave the recording going until 2019-01-01 12:00 am UTC (7:00 am EST) or until the conversation stops.
\n
For those who have never used Mumble before, we have a guide over at linuxlugcast.com in our how to section explaining how to setup the desktop Mumble client, but Mumble isn’t only available for the desktop. It is also available for Android and IOS.
\n
We are also going to setup an etherpad for people to share links to things they are discussing.
\n
So please stop in. Say “Hi” and maybe join in the conversation with other HPR listeners and contributors. It’s always a good time.
Libre Lounge is a podcast where we casually discuss various topics involving user freedom, crossing free software, free culture, network and hosting freedom, and libre hardware designs. We discuss everything from policy and licensing to deep dives on technical topics… whatever seems interesting that week. At some point we might even have guests!
\n
\n
Internet Archive funding drive
\n
As you know, HPR uploads all current episodes to the Internet Archive at https://archive.org, and is in the process of uploading older shows, so we are particularly keen that this amazing service continues.
\n
The Internet Archive is currently fundraising. Donations are currently being matched by a generous supporter, so this will double your impact if you are able to donate.
\n
Tags and Summaries
\n
Over the period tags and/or summaries have been added to 23 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2721,'2019-01-07','HPR Community News for December 2018',4247,'HPR Volunteers talk about shows released and comments posted in December 2018','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 34 comments in total.
Comment 1:\nb-yeezi on 2018-12-31:\n\"Already put to use\"
\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:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2741,'2019-02-04','HPR Community News for January 2019',4598,'Yannick Dave and Ken talk about shows released and comments posted in January 2019','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 29 comments in total.
\n
There are 8 comments on\n4 previous shows:
\n
hpr2629\n(2018-08-30) \"Thoughts on language learning part 3 - game/story mode.\"\nby dodddummy.
\n
\n
\n
\nComment 2:\ndodddummy on 2019-01-08:\n\"The Stanley Parable\"
\n
hpr2668\n(2018-10-24) \"Explaining the controls on my Amateur HF Radio Part 3\"\nby MrX.
\n
\n
\n
\nComment 3:\nMrX on 2019-01-10:\n\"Re Comment 1 from Michael\"
\n
\nComment 4:\nMrX on 2019-01-10:\n\"Re Comment 2 from lostnbronx\"
Comment 1:\nKlaatu on 2019-01-17:\n\"Coincidentally...\"
Comment 2:\nMrX on 2019-01-20:\n\"Re Coincidentally...\"
\n
hpr2737\n(2019-01-29) \"My Pioneer RT-707 Reel-to-Reel Tape Deck\"\nby Jon Kulp.
\n
\n
Comment 1:\nJon Kulp on 2019-01-29:\n\"Tape counter is functioning now\"
Comment 2:\nBookewyrmm on 2019-01-29:\n\"ancient media\"
Comment 3:\nJon Kulp on 2019-01-29:\n\"Victrola episode\"
Comment 4:\nDave Morriss on 2019-01-29:\n\"Wow! What a beautiful tape deck!\"
Comment 5:\nJon Kulp on 2019-01-29:\n\"I want one!\"
\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:
Google+ is going away on April 2nd. Everything is going to be deleted so backup your files before then.
\n
Mad Sweeney wrote to inform us about https://dnsflagday.net/ Some “DNS software and service providers […] have agreed to coordinate removing accommodations for non-compliant DNS implementations from their software or services, on or around February 1st 2019”
\n
\n
Tags and Summaries
\n
Over the period tags and/or summaries have been added to 11 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1);
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3959,'2023-10-05','Download any HPR series with english file names',165,'A dir with the series name will be created and all shows will be renamed to ShowTitle.mp3 inside it','
Hello all. This is gemlog from Terrace, bc, canada just up near the\nalaska panhandle.
\n
Some of you may know me from in COM chat on sdf dot org or as a\nfedizen on the tilde dot zone instance of mastodon.
\n
Now, the other day I finally got around to checking out HPR properly,\neven though my masto-pal claw-dio-m turned me on to it a couple of years\nago.
\n
Recently, on a friday night in irc on tilde radio, I noticed there\nwere whole series on hpr and not only single shows and that got me kind\nof excited. \nI guess I\'m easily excitable.
\n
Anyhow, something I could listen to at work or while driving. Still,\nI managed to forget about it until /just/ before I was leaving the house\nfor work on Monday morning. I rushed to copy over a few shows - nearly\nat random onto my phone and headed out to work.
\n
After I got my morning sorted at work, I told VLC to play-all and\nenjoyed a couple of shows. I noticed that each show I had chosen had a\nbeg post at the beginning. I figured I could make one on at least\nsomething from my messy gemlog/bin dir.
\n
However, after a break, I came back and couldn\'t remember which 4\ndigit numbered dot mp3 I had finished up on, which mildly irked me.\nWell, as we all know, irk becomes itch and I put my sad regex skills to\nthe test scraping the hpr website with a custom bash script later when I\ngot home.
\n
A very custom bash script. Like all scrapers, if any of the guys at\nhpr even breathe the wrong way, it will probably break horribly. On the\nother hand, I\'ve had scrapers that looked just as sad running for many\nyears against a canadian government site. So. Who knows?
\n
All the script uses are some built-ins from bash along with sed and\nwget for the actual getting. My local instance of searX N G was left\nsmoking as scrambled for sed incantations to string together. I\'m not a\nsed guy.
\n
Usage is simple, as the script only accepts one argument: ... the\nfour digit series number of the show you want to download. It will\ncreate a dir with the series name and download every mp3 it finds,\nrenaming each show to the show title.
\n
I was tempted to doll it up with some niceties like options for\ndownload dir, a selector for a series with a dialog of some kind... yada\nyada yada.
\n
But... we all know what happens when you stretch a quick hack with a\nbash script too far for the scripting language: hours of misery wishing\nyou\'d started with some other language.
\n
So far, I\'ve used the script to download 8 series. DU dash S H tells\nme they add up to 2 dot 2 gig, so it seems to work well enough.
\n
It comes with the same iron clad warranty as everything I write:
\n
If it breaks, you get to keep all the pieces. Thanks for\nlistening.
\n
#!/bin/bash\n# gemlog@gemlog.ca 2023-08-26\n# License: CC BY-SA 4.0.\n# not proud of my continuing lack of regex foo frankly...\n\nif [ $# -lt 1 ]; then\n echo 1>&2 "$0: You need to enter the HPR Series Number to download as 4 digits"\n echo "The full list of HPR Series is at https://hackerpublicradio.org/series/index.html"\n exit 2\nfi\n\nsnumber=$1\nre='^[[:digit:]]{4}$'\nif [[ $snumber =~ $re ]]; then\n wget https://hackerpublicradio.org/series/$snumber.html -q -O /tmp/$snumber.html\n content=$(</tmp/$snumber.html)\n declare -a shows\n shows=$(grep -P '^(?=.*h3)(?=.*title)' /tmp/$snumber.html)\nelse\n echo "'$snumber' is not exactly 4 digits like an HPR series number"\n exit 2\nfi\n\nseries=$(echo $content | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | grep -o -P -m1 '(?<=In-Depth Series:).*(?=Number)' | sed 's/[ t]*$//' )\nseries=$(echo ${series// /_} | cut -b 2-50 | sed 's/_*$//' | sed 's/^_*//' | sed s/[^A-Za-z0-9_.]/_/g)\n\n#outdir="/home/gemlog/Music/Audio/HPR/$series-Se$snumber/"\noutdir=~/"Downloads/HPR/$series-Se$snumber/"\nmkdir -p "$outdir"\necho "Files for the series "$series" will be saved in $outdir"\n\ndeclare -a shows\ndeclare -a url_array\nshows=$(grep -P '^(?=.*h3)(?=.*title)' /tmp/$snumber.html)\nIFS=$'n'\n\nfor line in $shows\n do\n f=$((f+1))\ndone\necho\necho\necho "Downloading $f mp3 files"\n\n\nfor line in $shows\n do\n i=$((i+1))\n title=$(echo $line | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | grep -o -P '(?<=::).*('host')' | sed 's/host//' | sed 's/[ t]*$//' | sed s/[^A-Za-z0-9_.]/_/g | sed 's/ /_/g' | sed 's/^_*//' )\n enumber=$(echo $line | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | grep -o -P '(?<=hpr).*('::')' | sed 's/:://')\n enumber=$(printf "%04d" $((enumber)) )\n outfile=$outdir$title-Ep$enumber.mp3\n url="https://www.hackerpublicradio.org/eps/hpr$enumber.mp3"\n echo "Downloading file $i: $title"\n wget --verbose --max-redirect 2 $url -O $outfile\n sleep 2\n done\n\n\necho\nttlfiles=$(ls -1 $outdir | wc -l)\necho "$ttlfiles files for the series "$series" were saved in $outdir"\n\nexit 0
\n',425,42,1,'CC-BY-SA','Bash, sed, grep, wget, scraper',0,0,1),
+(2761,'2019-03-04','HPR Community News for February 2019',4022,'HPR Volunteers talk about shows released and comments posted in February 2019','\n\n
These are comments which have been made during the past month, either to shows\nreleased during the month or to past shows. \nThere are 10 comments in total.
Comment 1:\nklaatu on 2019-02-27:\n\"this episode\"
\n
hpr2759\n(2019-02-28) \"Cleaning the Potentiometers on a Peavey Bandit 65\"\nby Jon Kulp.
\n
\n
Comment 1:\nNYbill on 2019-02-28:\n\"Stepping on toes!\"
\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:
',79,0,0,'CC-BY-SA','Windows, Screenshot, documentation',0,0,1),
(2468,'2018-01-17','THE WELL',408,'I record a video with audio on my fathers well setup in the sticks','
I record a video with audio on my fathers well setup in the sticks
',36,0,1,'CC-BY-SA','well, pump, troubleshooting',0,0,1),
(2469,'2018-01-18','A flight itinerary in Bash',1065,'Working out dates and times in a Bash script','
A flight itinerary in Bash
\r\n
My daughter flew out to New Zealand before Christmas 2017 to spend some time with her brother, who had been there with his girlfriend since November. I saw her flight itinerary from the airline, but had no idea of how the times related to time back home, so I wrote a little Bash script to calculate times in UTC (my local timezone).
\r\n
Both of my children have travelled a fair bit in the past few years. I like to keep track of where they are and how they are progressing through their journeys because otherwise I tend to worry. This one was a reasonably simple journey, two flights via Doha in Qatar, with not too long a wait between them. The overall journey was long of course.
\r\n
When my daughter flew out to Indonesia in 2015 (4 flights and a boat trip, over 38 hours travel time) I built a spreadsheet. Just whatever provides a good distraction!
\r\n
The rest of the notes, including details of the date command and the script I wrote can be found here.
\r\n
Links
\r\n
\r\n
GNU documentation for date (You can also use man date or info date for the full details. I prefer the HTML version because I don\'t like the info tool very much).
Dann Wasko\'s "Linux in the Shell" episode hpr1182 :: LiTS 023: Date, which is full of useful information.
\r\n
Resources:\r\n
\r\n
The script I wrote, called edi_akl (named to denote the starting and ending airports).
\r\n
\r\n
\r\n',225,42,1,'CC-BY-SA','Bash,date,ISO 8601,epoch',0,0,1),
@@ -18838,12 +18957,12 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2545,'2018-05-04','2017-2018 New Years Eve show part 5',8433,'Part five of the sixth annual HPR New Year Show.','
HPR NYE 2017 - 5
\r\n
\r\n
Guitar Talk, Les Pauls, Strats, etc. SG, Flying V, Squire ... etc.
\r\n',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
(2555,'2018-05-18','2017-2018 New Years Eve show part 6',11722,'Part six of the sixth annual HPR New Year Show.','
HPR NYE 2017 - 6
\r\n
\r\n
Using Ubuntu with snaps or just using Debian for a home server
\r\n
Building a home firewall
\r\n
What is the best firewall distro
\r\n
Maybe just learn ip tables
\r\n
Fun with virtualization
\r\n
https://riscv.org/ \r\nA completely Free Hardware CPU that is gaining press
Amiga and https://www.morphos-team.net/ \r\nMorphOS is a proprietary implementation of AmigaOS for PowerPC, but uses free software components from e.g. AROS
\r\n
https://c64upgra.de/c-one/ \r\nA C64 reimplementation project that turned into an FPGA platform that can even act as an Amiga
\r\n',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
(2565,'2018-06-01','2017-2018 New Years Eve show part 7',10683,'Part seven of the sixth annual HPR New Year Show. This is the last one.','
Ken Fallon the fastest solderer in the West. Able to solder a component tester in a single show...
\r\n
',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
-(2781,'2019-04-01','HPR Community News for March 2019',3564,'HPR Volunteers talk about shows released and comments posted in March 2019','\r\n
These are comments which have been made during the past month, either to shows\r\nreleased during the month or to past shows. \r\nThere are 24 comments in total.
Comment 1:\r\nSteve on 2019-03-12:\r\n\"LessPass\"
\r\n
hpr2766\r\n(2019-03-11) \"Disk enumeration on Linux\"\r\nby klaatu.
\r\n
\r\n
Comment 1:\r\nJoel D on 2019-03-12:\r\n\"The Letters C and F\"
Comment 2:\r\nKlaatu on 2019-03-13:\r\n\"Thanks for the info Joel\"
Comment 3:\r\nAhuka on 2019-03-14:\r\n\"Old drive letters\"
\r\n
hpr2768\r\n(2019-03-13) \"Writing Web Game in Haskell - Planetary statuses\"\r\nby tuturto.
\r\n
\r\n
Comment 1:\r\nKlaatu on 2019-03-15:\r\n\"Agog and aghast\"
Comment 2:\r\ntuturto on 2019-03-15:\r\n\"this made my week\"
\r\n
hpr2773\r\n(2019-03-20) \"Lead/Acid Battery Maintenance and Calcium Charge Voltage\"\r\nby Floyd C Poynter.
\r\n
\r\n
Comment 1:\r\ntuturto on 2019-03-20:\r\n\"Good to know\"
Comment 2:\r\nNybill on 2019-03-20:\r\n\"Good Info\"
\r\n
hpr2774\r\n(2019-03-21) \"CJDNS and Yggdrasil\"\r\nby aldenp.
\r\n
\r\n
Comment 1:\r\ntuturto on 2019-03-21:\r\n\"fascinating\"
Comment 2:\r\nBrian-in-Ohio on 2019-03-21:\r\n\"more shows\"
Comment 3:\r\nnorrist on 2019-03-21:\r\n\"gentoo\"
Comment 4:\r\nGavtres on 2019-03-25:\r\n\"IPv6 end to end encryption\"
\r\n
hpr2776\r\n(2019-03-25) \"Sub-Plots In Storytelling\"\r\nby lostnbronx.
\r\n
\r\n
Comment 1:\r\noperat0r on 2019-03-25:\r\n\"fun stuff\"
\r\n
hpr2777\r\n(2019-03-26) \"The quest for the perfect laptop.\"\r\nby knightwise.
\r\n
\r\n
Comment 1:\r\nBeeza on 2019-03-29:\r\n\"Computer Requirements Specification\"
\r\n
hpr2778\r\n(2019-03-27) \"Functor and applicative in Haskell\"\r\nby tuturto.
\r\n
\r\n
Comment 1:\r\nBeeza on 2019-03-28:\r\n\"Intuitiveness Of Haskell\"
Comment 2:\r\ntuturto on 2019-03-29:\r\n\"thanks and great idea\"
\r\n
hpr2779\r\n(2019-03-28) \"HTTP, IPFS, and torrents\"\r\nby aldenp.
\r\n
\r\n
Comment 1:\r\nHipstre on 2019-03-31:\r\n\"Enjoyed it, sounded great\"
\r\n
\r\n\r\n
Mailing List discussions
\r\n
\r\nPolicy decisions surrounding HPR are taken by the community as a whole. This\r\ndiscussion takes place on the Mail List which is open to all HPR listeners and\r\ncontributors. The discussions are open and available on the HPR server under\r\nMailman.\r\n
\r\n
The threaded discussions this month can be found here:
There was a misunderstanding about Yannick’s show 2740 when it was discussed on the February Community News. The show was about Pop_OS!, a subject Yannick had also spoken about previously on an edition of the TuxJam podcast.
\r\n
The misunderstanding was that we thought this might have gone against guidelines on syndication, where in fact it did not. It was merely a case of the same subject being spoken about by the same person on two different podcasts.
which used to contain a list of all shows contributed by that host, with the show notes, has been made more compact. It now displays only the title, release date, duration, series (if applicable), tags and the show summary. Clicking on the title takes you to the show itself.
\r\n
The list of all hosts in alphabetic order can be seen at https://hackerpublicradio.org/correspondents.php (navigate with the top menu bar: Home→About→Hosts). From there clicking on the host number takes you to the page for that host. There’s also a link to the host page from the page for each show.
',159,83,1,'CC-BY-SA','Community News',0,0,1),
-(2806,'2019-05-06','HPR Community News for April 2019',6840,'HPR Volunteers talk about shows released and comments posted in April 2019','\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 23 comments in total.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr2457\n(2018-01-02) \"Getting ready for my new Macbook Pro\"\nby knightwise.
\n
\n
\n
\nComment 1:\nBart on 2019-04-25:\n\"aren\'t you forgetting a hub?\"
Comment 1:\ntuturto on 2019-04-11:\n\"what about non-fictional stories\"
\n
hpr2793\n(2019-04-17) \"bash coproc: the future (2009) is here\"\nby clacke.
\n
\n
Comment 1:\nDave Morriss on 2019-04-22:\n\"I really enjoyed this!\"
\n
hpr2796\n(2019-04-22) \"IRS,Credit Freezes and Junk Mail Ohh My!\"\nby operat0r.
\n
\n
Comment 1:\ncogoman on 2019-04-25:\n\"Credit card security\"
\n
hpr2798\n(2019-04-24) \"Should Podcasters be Pirates ?\"\nby knightwise.
\n
\n
Comment 1:\ntuturto on 2019-04-24:\n\"Yarrr, record me episodes\"
Comment 2:\nDave Morriss on 2019-04-27:\n\"Memories of early podcasts and pirate radio\"
Comment 3:\nDudeNamedBen on 2019-04-29:\n\"Da Podfather, Adam Curry\"
\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2781,'2019-04-01','HPR Community News for March 2019',3564,'HPR Volunteers talk about shows released and comments posted in March 2019','\r\n
These are comments which have been made during the past month, either to shows\r\nreleased during the month or to past shows. \r\nThere are 24 comments in total.
Comment 1:\r\nSteve on 2019-03-12:\r\n\"LessPass\"
\r\n
hpr2766\r\n(2019-03-11) \"Disk enumeration on Linux\"\r\nby klaatu.
\r\n
\r\n
Comment 1:\r\nJoel D on 2019-03-12:\r\n\"The Letters C and F\"
Comment 2:\r\nKlaatu on 2019-03-13:\r\n\"Thanks for the info Joel\"
Comment 3:\r\nAhuka on 2019-03-14:\r\n\"Old drive letters\"
\r\n
hpr2768\r\n(2019-03-13) \"Writing Web Game in Haskell - Planetary statuses\"\r\nby Tuula.
\r\n
\r\n
Comment 1:\r\nKlaatu on 2019-03-15:\r\n\"Agog and aghast\"
Comment 2:\r\nTuula on 2019-03-15:\r\n\"this made my week\"
\r\n
hpr2773\r\n(2019-03-20) \"Lead/Acid Battery Maintenance and Calcium Charge Voltage\"\r\nby Floyd C Poynter.
\r\n
\r\n
Comment 1:\r\nTuula on 2019-03-20:\r\n\"Good to know\"
Comment 2:\r\nNybill on 2019-03-20:\r\n\"Good Info\"
\r\n
hpr2774\r\n(2019-03-21) \"CJDNS and Yggdrasil\"\r\nby aldenp.
\r\n
\r\n
Comment 1:\r\nTuula on 2019-03-21:\r\n\"fascinating\"
Comment 2:\r\nBrian-in-Ohio on 2019-03-21:\r\n\"more shows\"
Comment 3:\r\nnorrist on 2019-03-21:\r\n\"gentoo\"
Comment 4:\r\nGavtres on 2019-03-25:\r\n\"IPv6 end to end encryption\"
\r\n
hpr2776\r\n(2019-03-25) \"Sub-Plots In Storytelling\"\r\nby lostnbronx.
\r\n
\r\n
Comment 1:\r\noperat0r on 2019-03-25:\r\n\"fun stuff\"
\r\n
hpr2777\r\n(2019-03-26) \"The quest for the perfect laptop.\"\r\nby knightwise.
\r\n
\r\n
Comment 1:\r\nBeeza on 2019-03-29:\r\n\"Computer Requirements Specification\"
\r\n
hpr2778\r\n(2019-03-27) \"Functor and applicative in Haskell\"\r\nby Tuula.
\r\n
\r\n
Comment 1:\r\nBeeza on 2019-03-28:\r\n\"Intuitiveness Of Haskell\"
Comment 2:\r\nTuula on 2019-03-29:\r\n\"thanks and great idea\"
\r\n
hpr2779\r\n(2019-03-28) \"HTTP, IPFS, and torrents\"\r\nby aldenp.
\r\n
\r\n
Comment 1:\r\nHipstre on 2019-03-31:\r\n\"Enjoyed it, sounded great\"
\r\n
\r\n\r\n
Mailing List discussions
\r\n
\r\nPolicy decisions surrounding HPR are taken by the community as a whole. This\r\ndiscussion takes place on the Mail List which is open to all HPR listeners and\r\ncontributors. The discussions are open and available on the HPR server under\r\nMailman.\r\n
\r\n
The threaded discussions this month can be found here:
There was a misunderstanding about Yannick’s show 2740 when it was discussed on the February Community News. The show was about Pop_OS!, a subject Yannick had also spoken about previously on an edition of the TuxJam podcast.
\r\n
The misunderstanding was that we thought this might have gone against guidelines on syndication, where in fact it did not. It was merely a case of the same subject being spoken about by the same person on two different podcasts.
which used to contain a list of all shows contributed by that host, with the show notes, has been made more compact. It now displays only the title, release date, duration, series (if applicable), tags and the show summary. Clicking on the title takes you to the show itself. Note that the host id number NNNN must be 4 digits with leading zeroes.
\r\n
The list of all hosts in alphabetic order can be seen at https://hackerpublicradio.org/correspondents/index.html (navigate with the top menu bar: Home→About→Hosts). From there clicking on the host number takes you to the page for that host. There’s also a link to the host page from the page for each show.
\r\n',159,83,1,'CC-BY-SA','Community News',0,0,1),
+(2806,'2019-05-06','HPR Community News for April 2019',6840,'HPR Volunteers talk about shows released and comments posted in April 2019','\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 23 comments in total.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr2457\n(2018-01-02) \"Getting ready for my new Macbook Pro\"\nby knightwise.
\n
\n
\n
\nComment 1:\nBart on 2019-04-25:\n\"aren\'t you forgetting a hub?\"
Comment 1:\nTuula on 2019-04-11:\n\"what about non-fictional stories\"
\n
hpr2793\n(2019-04-17) \"bash coproc: the future (2009) is here\"\nby clacke.
\n
\n
Comment 1:\nDave Morriss on 2019-04-22:\n\"I really enjoyed this!\"
\n
hpr2796\n(2019-04-22) \"IRS,Credit Freezes and Junk Mail Ohh My!\"\nby operat0r.
\n
\n
Comment 1:\ncogoman on 2019-04-25:\n\"Credit card security\"
\n
hpr2798\n(2019-04-24) \"Should Podcasters be Pirates ?\"\nby knightwise.
\n
\n
Comment 1:\nTuula on 2019-04-24:\n\"Yarrr, record me episodes\"
Comment 2:\nDave Morriss on 2019-04-27:\n\"Memories of early podcasts and pirate radio\"
Comment 3:\nDudeNamedBen on 2019-04-29:\n\"Da Podfather, Adam Curry\"
\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2522,'2018-04-03','Flashbacks In Storytelling',656,'Lostnbronx takes a breezy look at the narrative technique of the flashback.','
Lostnbronx looks at flashbacks, flashforwards, plays-within-plays, and dream sequences as techniques of both good and bad storytelling.
',107,105,0,'CC-0','storytelling,flashback,lostnbronx',0,0,1),
(2523,'2018-04-04','Run Linux on a Windows Box',809,'HP Stream book with windows 10','
A short show about running Debian on windows. \r\nYes it really works.
',129,0,1,'CC-BY-SA','Windows Subsystem for Linux,WSL,Debian,PowerShell',0,0,1),
-(2524,'2018-04-05','General problem solver',1088,'Brief look into general problem solver system and how to use it solve simple problems','
',364,0,0,'CC-BY-SA','lisp, artificial intelligence, problem solving',0,0,1),
-(2526,'2018-04-09','Gnu Awk - Part 10',2535,'More about arrays in Gnu Awk','
Gnu Awk - Part 10
\r\n
Introduction
\r\n
This is the tenth episode of the "Learning Awk" series which is being produced by b-yeezi and myself.
\r\n
In this episode I want to talk more about the use of arrays in GNU Awk and then I want to examine some real-world examples of the use of awk.
\r\n
Long notes
\r\n
The notes for rest of this episode are available here.
',225,94,1,'CC-BY-SA','Awk utility,Awk language,gawk,arrays',0,0,1),
+(2524,'2018-04-05','General problem solver',1088,'Brief look into general problem solver system and how to use it solve simple problems','
',364,0,0,'CC-BY-SA','lisp, artificial intelligence, problem solving',0,0,1),
+(2526,'2018-04-09','Gnu Awk - Part 10',2535,'More about arrays in Gnu Awk','
Gnu Awk - Part 10
\r\n
Introduction
\r\n
This is the tenth episode of the "Learning Awk" series which is being produced by b-yeezi and myself.
\r\n
In this episode I want to talk more about the use of arrays in GNU Awk and then I want to examine some real-world examples of the use of awk.
\r\n
Long notes
\r\n
The notes for rest of this episode are available here.
',225,94,1,'CC-BY-SA','Awk utility,Awk language,gawk,arrays',0,0,1),
(2527,'2018-04-10','Reviews Vs. Critiques',839,'Lostnbronx contrasts \"reviews\" with \"critiques\", which are not the same things.','
Lostnbronx takes a quick look at what it is that constitutes "reviews" of stories (be they books, films, TV shows, audio dramas, whatever) as opposed to "critiques" of them.
\r\n
How do these two things differ, and what are their purposes? Is one more important than the other? Why does it even matter?
',107,105,0,'CC-BY-SA','storytelling,review,critique,lostnbronx,film,writing,audio drama,tv',0,0,1),
(2528,'2018-04-11','CCTV with DARKNET',863,'I got over my current setup for CCTV with Darknet and YOLO','
\r\n',36,0,1,'CC-BY-SA','CCTV,Darknet,YOLO',0,0,1),
(2531,'2018-04-16','Plot And Story',866,'Lostnbronx shares some thoughts about the nature of plot and story in storytelling.','
Lostnbronx talks about plot and story, as well as characters and backgrounds, in storytelling of all types. These things are closely tied together, and a problem with one can easily be a problem with all.
',107,105,0,'CC-0','storytelling,plot,story,character,background,lostnbronx',0,0,1),
@@ -18871,8 +18990,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2556,'2018-05-21','Building trust',2549,'Quasi-philosophical musing about how trust is built both online and in real life','
\r\nWhat is trust? How do you get it? How can you exploit it? How can you keep from being exploited?\r\n
\r\n',78,74,0,'CC-BY-SA','trust,social engineering,gpg,pgp,community',0,0,1),
(2572,'2018-06-12','What\'s in my tool kit',342,'Listing of items I carry for daily use','
portable powerpack/charger (gimmie from Wired Mag)
\r\n
2x 16GB usb thumb drives\r\n
\r\n
1 blank
\r\n
1 portable apps tools including libre office, and wireshark
\r\n
\r\n
6\' power strip/ surge protector
\r\n
Reading glasses
\r\n
alcohol prep wipes
\r\n
latex gloves
\r\n
Band aids
\r\n
Excedrin bottle and migraine meds 1/2 dose for emergencies
\r\n
\r\n
If I expand the definition of tool kit to include the tool box on my pickup truck, I also have...
\r\n
\r\n
10\' telephone cord
\r\n
analogue telephone (princes style) for testing
\r\n
3 spare usb keyboards 1 spare ps/2 keyboards
\r\n
2 usb mice
\r\n
2x 6\' dvi-d cables
\r\n
adjustable wrench
\r\n
pliers
\r\n
needle nose pliers
\r\n
craftsman precision screwdriver set
\r\n
X-acto knife set
\r\n
socket set
\r\n
Ratchet straps
\r\n
50\' cotton bond rope 1/2" diameter
\r\n
50\' nylon 1/2" rope
\r\n
7\'x 8\' medium weight tarp
\r\n
Fluke #117 multimeter
\r\n
Fluke Link runner AT 1000
\r\n
and toner probe
\r\n
machete
\r\n
jumper cables
\r\n
analog linemans handset/ butt set (harris TS30)
\r\n
\r\n',365,23,1,'CC-BY-SA','daily carry, toolkit',0,0,1),
(2554,'2018-05-17','Gnu Awk - Part 11',1686,'In part 11 of the series, we string and number built-in functions','
srand: (pseudo) random between 0 and 1, manually setting the seed
\r\n
\r\n\r\n\r\n
String functions
\r\n\r\n
\r\n
asort: array sort. Returns array with the values sorted
\r\n
asori: array sort. Returns array with the keys (index) sorted
\r\n
gensub: Search the target string target for matches of the regular expression regexp. Returns string with substituted text.
\r\n
gsub: Search target for all of the longest, leftmost, nonoverlapping matching substrings it can find and replace them with replacement. Returns string with substituted text.
\r\n
sub: Search target, which is treated as a string, for the leftmost, longest substring matched by the regular expression regexp. Returns string with substituted text.
\r\n
index: Search the string in for the first occurrence of the string find. Returns the position where that occurence begins
\r\n
length: returns length of string
\r\n
match: Search string for the longest, leftmost substring matched by the regular expression regexp and return the character position (index) at which that substring begins.
\r\n
split: Divide string into pieces delimted by field separator. Returns an array of strings
\r\n
sprintf: Allows you to store the a string in the that would have been the output of printf into a variable
\r\n
strtonum: Turn octal representation to number
\r\n
substr: Substring starting at position x for length of y. Returns string
',300,94,0,'CC-BY-SA','bash, linux, awk',0,0,1),
-(2826,'2019-06-03','HPR Community News for May 2019',3497,'HPR Volunteers talk about shows released and comments posted in May 2019','\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 16 comments in total.
\n
Past shows
\n
There are 6 comments on\n4 previous shows:
\n
\n
hpr2504\n(2018-03-08) \"Intro to Git with pen and paper\"\nby klaatu.
\n
\n
\n
\nComment 1:\nKen Fallon on 2019-05-23:\n\"This needs to be a video\"
\n
hpr2793\n(2019-04-17) \"bash coproc: the future (2009) is here\"\nby clacke.
\n
\n
\n
\nComment 2:\nclacke on 2019-05-04:\n\"Re: backquotes vs dollar-paren\"
\n
\nComment 3:\nclacke on 2019-05-09:\n\"Re: awk coprocesses\"
\n
\nComment 4:\nDave Morriss on 2019-05-09:\n\"Regarding awk coprocesses\"
\n
hpr2794\n(2019-04-18) \"Interview with Martin Wimpress\"\nby Yannick.
\n
\n
\n
\nComment 1:\nKlaatu on 2019-05-26:\n\"Great interview\"
\n
hpr2798\n(2019-04-24) \"Should Podcasters be Pirates ?\"\nby knightwise.
\n
\n
\n
\nComment 4:\nKlaatu on 2019-05-07:\n\"This is one of those episodes...\"
\n
\n
This month\'s shows
\n
There are 10 comments on 4 of this month\'s shows:
Comment 1:\nclacke on 2019-05-09:\n\"Yggdrasil and Hollywood\"
Comment 2:\nclacke on 2019-05-09:\n\"HKOSCON2019\"
\n
hpr2809\n(2019-05-09) \"The Blue Oak Model License and Its One Big Gotcha\"\nby Joel D.
\n
\n
Comment 1:\nnorrist on 2019-05-09:\n\"The show _was_ fun\"
Comment 2:\nJoel D on 2019-05-16:\n\"re: norrist\"
\n
hpr2813\n(2019-05-15) \"Should we dump the linux Desktop.\"\nby knightwise.
\n
\n
Comment 1:\nYannick on 2019-05-15:\n\"Should we dump Windows?\n\"
Comment 2:\nHipstre on 2019-05-15:\n\"Do We Need Linux?\"
Comment 3:\nDV on 2019-05-16:\n\"Response to knightwise\"
Comment 4:\nDeepGeek on 2019-05-17:\n\"Desktop is Dead\"
Comment 5:\nSnapdeus on 2019-05-17:\n\"Linux desktop\"
\n
hpr2814\n(2019-05-16) \"Spectre and Meltdown and OpenBSD and our future\"\nby Zen_Floater2.
\n
\n
Comment 1:\nClaudioM on 2019-05-17:\n\"Hello, Fellow Puffy Disciple!\"
\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2846,'2019-07-01','HPR Community News for June 2019',3364,'HPR Volunteers talk about shows released and comments posted in June 2019','\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 19 comments in total.
\n
Past shows
\n
There is 1 comment on\n1 previous show:
\n
\n
hpr2807\n(2019-05-07) \"Are bash local variables local?\"\nby clacke.
\n
\n
\n
\nComment 1:\nDave Morriss on 2019-06-06:\n\"Thanks for this\"
\n
\n
This month\'s shows
\n
There are 18 comments on 8 of this month\'s shows:
\n
hpr2827\n(2019-06-04) \"Unscripted ramblings from my garage about my first CTF event\"\nby Christopher M. Hobbs.
\n
\n
Comment 1:\nChristopher M. Hobbs on 2019-05-30:\n\"event cancellation\"
Comment 2:\ntuturto on 2019-06-04:\n\"sorry to hear about cancellation\"
\n
hpr2829\n(2019-06-06) \"Discussion around fair use clips on HPR\"\nby Various Hosts.
Comment 3:\nMike Ray on 2019-06-20:\n\"Accessibility and non-English character sets\"
Comment 4:\nTony Hughes on 2019-06-21:\n\"Responce to Mike and Bob\"
Comment 5:\nBob on 2019-06-23:\n\"I wasn\'t serious\"
Comment 6:\nMike Ray on 2019-06-25:\n\"Accessibility\"
Comment 7:\nTonyH1212 on 2019-06-29:\n\"Further responce to Mike and Bob\"
\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.
One of the features is \'gomax=1\' which includes shows in the queue scheduled for the future. For example, the following URL requests 30 OGG format shows including those scheduled for the future:
However, there is a problem with this, caused by the way we direct downloads to archive.org. We usually upload the next week’s shows to archive.org, but not all future shows as they arrive. This means that the links to some future shows returned by the feed point to currently non-existent episodes.
\n
This has been the case ever since we moved to using archive.org in this way, in late 2017. We have not received any comments or complaints about it in that time, so the question is:
\n
\n
Does anyone use \'gomax=1\'?
\n
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: Tony Hughes
\n
Over the period tags and/or summaries have been added to 6 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2826,'2019-06-03','HPR Community News for May 2019',3497,'HPR Volunteers talk about shows released and comments posted in May 2019','\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 16 comments in total.
\n
Past shows
\n
There are 6 comments on\n4 previous shows:
\n
\n
hpr2504\n(2018-03-08) \"Intro to Git with pen and paper\"\nby klaatu.
\n
\n
\n
\nComment 1:\nKen Fallon on 2019-05-23:\n\"This needs to be a video\"
\n
hpr2793\n(2019-04-17) \"bash coproc: the future (2009) is here\"\nby clacke.
\n
\n
\n
\nComment 2:\nclacke on 2019-05-04:\n\"Re: backquotes vs dollar-paren\"
\n
\nComment 3:\nclacke on 2019-05-09:\n\"Re: awk coprocesses\"
\n
\nComment 4:\nDave Morriss on 2019-05-09:\n\"Regarding awk coprocesses\"
\n
hpr2794\n(2019-04-18) \"Interview with Martin Wimpress\"\nby Yannick.
\n
\n
\n
\nComment 1:\nKlaatu on 2019-05-26:\n\"Great interview\"
\n
hpr2798\n(2019-04-24) \"Should Podcasters be Pirates ?\"\nby knightwise.
\n
\n
\n
\nComment 4:\nKlaatu on 2019-05-07:\n\"This is one of those episodes...\"
\n
\n
This month\'s shows
\n
There are 10 comments on 4 of this month\'s shows:
Comment 1:\nclacke on 2019-05-09:\n\"Yggdrasil and Hollywood\"
Comment 2:\nclacke on 2019-05-09:\n\"HKOSCON2019\"
\n
hpr2809\n(2019-05-09) \"The Blue Oak Model License and Its One Big Gotcha\"\nby Joel D.
\n
\n
Comment 1:\nnorrist on 2019-05-09:\n\"The show _was_ fun\"
Comment 2:\nJoel D on 2019-05-16:\n\"re: norrist\"
\n
hpr2813\n(2019-05-15) \"Should we dump the linux Desktop.\"\nby knightwise.
\n
\n
Comment 1:\nYannick on 2019-05-15:\n\"Should we dump Windows?\n\"
Comment 2:\nHipstre on 2019-05-15:\n\"Do We Need Linux?\"
Comment 3:\nDV on 2019-05-16:\n\"Response to knightwise\"
Comment 4:\nDeepGeek on 2019-05-17:\n\"Desktop is Dead\"
Comment 5:\nSnapdeus on 2019-05-17:\n\"Linux desktop\"
\n
hpr2814\n(2019-05-16) \"Spectre and Meltdown and OpenBSD and our future\"\nby Zen_Floater2.
\n
\n
Comment 1:\nClaudioM on 2019-05-17:\n\"Hello, Fellow Puffy Disciple!\"
\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2846,'2019-07-01','HPR Community News for June 2019',3364,'HPR Volunteers talk about shows released and comments posted in June 2019','\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 19 comments in total.
\n
Past shows
\n
There is 1 comment on\n1 previous show:
\n
\n
hpr2807\n(2019-05-07) \"Are bash local variables local?\"\nby clacke.
\n
\n
\n
\nComment 1:\nDave Morriss on 2019-06-06:\n\"Thanks for this\"
\n
\n
This month\'s shows
\n
There are 18 comments on 8 of this month\'s shows:
\n
hpr2827\n(2019-06-04) \"Unscripted ramblings from my garage about my first CTF event\"\nby Christopher M. Hobbs.
\n
\n
Comment 1:\nChristopher M. Hobbs on 2019-05-30:\n\"event cancellation\"
Comment 2:\nTuula on 2019-06-04:\n\"sorry to hear about cancellation\"
\n
hpr2829\n(2019-06-06) \"Discussion around fair use clips on HPR\"\nby Various Hosts.
Comment 3:\nMike Ray on 2019-06-20:\n\"Accessibility and non-English character sets\"
Comment 4:\nTony Hughes on 2019-06-21:\n\"Responce to Mike and Bob\"
Comment 5:\nBob on 2019-06-23:\n\"I wasn\'t serious\"
Comment 6:\nMike Ray on 2019-06-25:\n\"Accessibility\"
Comment 7:\nTonyH1212 on 2019-06-29:\n\"Further responce to Mike and Bob\"
\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.
One of the features is \'gomax=1\' which includes shows in the queue scheduled for the future. For example, the following URL requests 30 OGG format shows including those scheduled for the future:
However, there is a problem with this, caused by the way we direct downloads to archive.org. We usually upload the next week’s shows to archive.org, but not all future shows as they arrive. This means that the links to some future shows returned by the feed point to currently non-existent episodes.
\n
This has been the case ever since we moved to using archive.org in this way, in late 2017. We have not received any comments or complaints about it in that time, so the question is:
\n
\n
Does anyone use \'gomax=1\'?
\n
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: Tony Hughes
\n
Over the period tags and/or summaries have been added to 6 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2558,'2018-05-23','Battling with English - part 1',678,'Misunderstandings about English grammar, spelling, punctuation, etc.','
Battling with English - part 1
\r\n
Introduction
\r\n
This is the first episode of a series about the English language. In it I want to look at some of the problems people (including myself) have with it. I plan to do several episodes and I want to keep them short.
\r\n
The English language is old and has changed – evolved – in many ways over the years. It has come from a multitude of sources, and it\'s difficult to say what is correct in an absolute way.
\r\n
For example, when I was at school we were taught that "nice" should not be used in written material. At that time it was becoming common to see phrases like "I had a nice time" meaning pleasant (in a bland sort of way). In my "Concise Oxford Dictionary" from 1976 the 6th definition, "agreeable" is marked "colloquialism", whereas today this is a common usage.
\r\n
However, it\'s easy to use the wrong word in the wrong context. You might choose one that sounds similar for example. You might also have problems with the spelling of a chosen word. Spelling in English is not always logical. You might also find yourself confused about the use of punctuation – the correct use of apostrophes can be challenging for example.
\r\n
In this series I want to examine some of the problem areas and try to give you the means of remembering the right way.
\r\n
Note: I\'m not an authority on this stuff, but I have tried to teach myself not to make these mistakes over the years. I just wanted to share what I have learnt1 with some links to higher authorities.
\r\n
Long notes
\r\n
I have provided detailed notes as usual, and these can be viewed here.
One thing I have learnt is that "learned" and "learnt" are both correct and mean the same. However, "learnt" is more common in the UK, whereas "learned" is used both in the UK and the USA.↩
\r\n\r\n',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,word misuse,English',0,0,1),
(2562,'2018-05-29','I bought a laptop',1292,'... in which clacke takes months (or years?) to buy a laptop, but comes out pretty pleased','
After months (or years?) of waffling and false starts I finally bought an ASUS X542U. The advertised specs say "up to", but I don’t have the "up to", I have the baseline 7th gen i3, 128GB SSD, 4 GB RAM.
\r\n
Here’s the rambling story of a laptop purchase and its various side quests.
\r\n
Some details that may or may not have made it in to the show (and the show has some that aren’t there) available on the Fediverse at https://pleroma.heldscal.la/notice/7204988 .
\r\n
Side quest to the side quest of making an episode about side quests:
\r\n
Why spend five minutes writing a simple Makefile when you can spend half an afternoon writing a simple default.nix instead?
',311,0,0,'CC-BY-SA','laptop, linux, ubuntu, nix, cryptocurrency',0,0,1),
(2559,'2018-05-24','My Favourite Browser extension',1117,'In this episode I cover my favourite browser Add-on','
My contribution to List of requested shows “Your favourite browser extensions”
On Android, I\'m lazy and just seem to have fallen into using the chrome browser. The Add-on I\'m going to talk about unfortunately isn\'t available for the Android operating system.
\r\n
On the Linux desktop, I use Firefox
\r\n
In the past, I\'ve dabbled with various browser add-ons but until very recently I\'ve been using no browser add-ons on the desktop.
\r\n
A browser add-on I did use and did miss was Tab groups
\r\n
Tab Groups was originally a feature built into Mozilla Firefox
\r\n
The feature was removed but maintained as an add-on until it was broken by changes in Firefox 57
A colleague at work brought the One-Tab add-on to my attention https://www.one-tab.com/
\r\n
It\'s available for both the Chrome browser and Firefox
\r\n
No sign-up or registration required
\r\n
With Tab-group I found myself spending a lot of time arranging groups getting the size right naming them etc.
\r\n
One tab philosophy is a bit different and perhaps maybe not so intuitive, though I think now after some use I prefer it as it gets out of the way and can be used with the minimal of fuss.
\r\n
I highly recommend one-tab if you regularly find yourself dealing with a lot of open tabs in your browser.
\r\n',201,0,1,'CC-BY-SA','Internet, Research, Browser, Firefox, Plug-in, Add-On',0,0,1),
@@ -18900,20 +19019,21 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2595,'2018-07-13','New laptop bargain?',252,'This is a short show about another trip to the computer auction and one of my purchases','
Greetings HPR listeners this is Tony Hughes again coming from Blackpool in the UK. Well, as you heard on my last episode I recently visited the computer auction I frequent here in the UK. If you want to drool over the catalogue at any time their website is here:
So at the sale in June they had some really good 3-4 year old laptops for sale so I decided to take a trip and see if I could liberate a few bargains, and one of the items I came away with was 3 Toshiba Z30a Ultra Books of the i5 4th generation. The basic specs are:
\r\n
\r\n
i5-4300U CPU
\r\n
128GB mSATA solid state drive
\r\n
13.3 inch display
\r\n
8Gig DDR Ram
\r\n
3 x USB3 ports
\r\n
VGA and HDMI video out
\r\n
Full Ethernet Port
\r\n
Combined Audio in/out jack
\r\n
SD card reader
\r\n
Mobile Intel ® HD Graphics with up to 1792MB dynamically allocated
\r\n
shared graphics memory.
\r\n
\r\n
There will be a link in the show notes to the full specifications
I had also picked up some 240Gig SSD\'s and had planned to upgrade the storage but this is not possible with a 2.5 inch drive as it doesn\'t have a bay for this format. However it does support up to 128Gig High capacity SD cards so this could be an option if you don\'t want to go to the expense of upgrading the mSATA drive, however as luck would have it one of my other purchases had a 256Gig mSATA drive in a 2.5 inch caddy so that was quickly swapped out and both laptops got an upgrade. More of that in another show.
\r\n
So after doing the hardware upgrade I proceeded to install Ubuntu 18.04 MATE onto the PC. The install worked flawlessly and after completion and configuring the machine to my liking everything seems to be working just fine. The battery condition for a 4 year old laptop is excellent at over 90%, however a replacement can be had on Ebay for around £30 if needed and I always factor this into any second hand laptops I buy.
\r\n
Since I got it running I\'ve installed Windows 7 in a Virtual Machine, in this case Virtual Box as I have a preconfigured Virtual Box HDD image that makes it less of a hassle to install as I don’t have to spend days waiting for all the updates to come through. When this is running in the background it doesn\'t over tax the host machine, and for Linux users it does mean you have access to that occasional bit of light weight MS software that you may need without the need to lug around 2 PC\'s.
\r\n
So did I bag a bargain, well 4 years ago on release these laptops went for £1100+ in the UK and even today they fetch £160 in good order on the likes of Ebay for a model with the specification as I originally purchased it. I would never have been in the market to spend £1000+ on a laptop now or then so the only way I can enjoy these types of machines is after they have been pre loved by someone else. Lets just say £160 is quite a bit more than I paid but with the upgrade to 256Gig mSATA drive I have a better machine for a little less than that, I personally think I bagged a bargain which will do me good service in the coming months/years.
\r\n',338,57,0,'CC-BY-SA','computer auction,laptop',0,0,1),
(2584,'2018-06-28','Plot Twists In Storytelling',719,'Lostnbronx examines plot twists, including the different types, and how they can be used.','
Plot twists come in several varieties, and can produce different effects in stories. They can be powerful tools, done correctly, but quickly become trite and predictable if over-used, or used poorly. What\'s the best way to include them? And when might it be a mistake to even try?
',107,105,0,'CC-0','storytelling,plot twists,lostnbronx',0,0,1),
(2587,'2018-07-03','Cleaning out your Digital Gutters',1519,'Knightwise talks about being a geek and his quest to curate the library of his mind','
While cleaning out the gutters, Knightwise talks about cleaning out the digital gutters of his information consumption and looking for geeky ways to get his information fix.
\r\n',111,0,1,'CC-BY-SA','geek, life, lifestyle',0,0,1),
-(2588,'2018-07-04','Miniature painting',1740,'tuturto rambles about how to paint miniatures while painting some toy soldiers','
tuturto rambles about miniature painting while painting some ancient British units (horses for chariots to be specific) for De Bellis Antiquitatis.
',364,114,0,'CC-BY-SA','miniatures painting',0,0,1),
+(2588,'2018-07-04','Miniature painting',1740,'Tuula rambles about how to paint miniatures while painting some toy soldiers','
Tuula rambles about miniature painting while painting some ancient British units (horses for chariots to be specific) for De Bellis Antiquitatis.
',364,114,0,'CC-BY-SA','miniatures painting',0,0,1),
(2583,'2018-06-27','Random Rant',917,'Rant on how US sound recordings copyright laws are weird & how I miss Juiced Penguin','
\r\n',354,0,1,'CC-BY-SA','Juiced Penguin,copyright,public domain',0,0,1),
(2599,'2018-07-19','Fitting a 3.5mm adapter to a bluetooth receiver.',489,'Ken cobbles together a bluetooth adapter for any 3.5mm headphone','
\r\nAlas Philips stopped producing the SHE3600/97. SanDisk reduced the specs of the clips, so Rockbox is no longer supported. We\'re left without a flexible option to listening to podcasts.\r\n
\r\n
\r\nOn the other hand the price of Android phones have fallen to sub €50 range, and blue tooth headsets can be had for €25, there is a possibility to have the portability while keeping the cost low.\r\n
\r\n
\r\nI set out to convert the bluetooth headset to a accept generic 3.5mm sockets.\r\n
\r\n
\r\n \r\nA new ear bud set with crappy in ear buds, and the hacked set.\r\n
\r\n
\r\n \r\nPlays fine with large over ear headphones.\r\n
\r\n
\r\n \r\nAlso with small in ear buds, complete with Patent Pending ear identifier\r\n
\r\n',30,0,1,'CC-BY-SA','life hack, earphone, bluetooth',0,0,1),
(2589,'2018-07-05','Saving Money: a response to Klaatu\'s Personal Finance Series',867,'A response to Klaatu\'s very nice series about personal finance.','
\r\n',238,0,0,'CC-BY-SA','personal finance, money, saving, retirement',0,0,1),
-(2593,'2018-07-11','Intro to De Bellis Antiquitatis',1648,'Short intro to tabletop wargame called DBA','
In this episode tuturto paints rambles about De Bellis Antiquitatis while painting more toy soldiers, so expect long pauses and missing thoughts as he tries to do two things at the same time.
\r\n',364,95,0,'CC-BY-SA','tabletop gaming',0,0,1),
+(2593,'2018-07-11','Intro to De Bellis Antiquitatis',1648,'Short intro to tabletop wargame called DBA','
In this episode Tuula paints rambles about De Bellis Antiquitatis while painting more toy soldiers, so expect long pauses and missing thoughts as he tries to do two things at the same time.
\r\n',364,95,0,'CC-BY-SA','tabletop gaming',0,0,1),
(2591,'2018-07-09','International Troubleshooting',1815,'NYbill troubleshoots a DIY kit of Ken Fallon’s.','
NYbill troubleshoots a DIY kit of Ken Fallon\'s.
\r\n
The new toy:
\r\n
AmScope SE400-Z \r\n(The microscope has a nice working height underneath it so you can get your hands and tools in there.)
\r\n',235,103,0,'CC-BY-SA','DIY, Kit, Electronics, Troubleshooting',0,0,1),
(2605,'2018-07-27','The Eyes Have It',599,'My history with vision issues and how I have dealt with them.','
My history with vision issues started when I was 3 years old, and I am still dealing with some issues. Fortunately, things are well-controlled and I am doing well.
',198,100,0,'CC-BY-SA','Health, Medicine, Eye Care, Vision',0,0,1),
(2592,'2018-07-10','Tech Talk With Allison',3010,'This is a talk with Allison about webites, ruby, os design and other such things. ','
\r\n
\r\n\r\nCome join us and listen to Allison talk about her tech!!! This talk includes subjects like websites, ruby, os design and other such things. \r\n
',198,100,0,'CC-BY-SA','Health, Medicine, Cancer, Prostate, Colon, Lungs',0,0,1),
-(2598,'2018-07-18','Calculating planetary orbits in Haskell',1711,'tuturto talks about calculating planetary orbits','
Function signatures (it might or might not be helpful to have these at hand while listening):
\r\n
\r\n
Helpers:
\r\n
\r\n
radToDeg :: Floating a => a -> a\r\n degToRad :: Floating a => a -> a\r\n clamp :: Float -> Float
\r\n
\r\n
Time:
\r\n
\r\n
day :: Int -> Int -> Int -> Float -> Day Float
\r\n
\r\n
Orbital parameters:
\r\n
\r\n
longitudeOfAscendingNode :: Orbit body center => body -> center -> Day d -> LongAscNode body center\r\n inclinationToEcliptic :: Orbit body center => body -> center -> Day d -> InclToEcl body center\r\n argumentOfPeriapsis :: Orbit body center => body -> center -> Day d -> ArgPeri body center\r\n semiMajorAxis :: Orbit body center => body -> center -> Day d -> SemiMajor body center\r\n eccentricity :: Orbit body center => body -> center -> Day d -> Ecc body center\r\n meanAnomaly :: Orbit body center => body -> center -> Day d -> MeanAno body center
\r\n
\r\n
Calculating location on orbital plane:
\r\n
\r\n
eccAnomaly :: MeanAno a b -> Ecc a b -> EccAnomaly a b\r\n trueAnomaly :: EccAnomaly a b -> Ecc a b -> TrueAnomaly a b\r\n dist :: EccAnomaly a b -> Ecc a b -> SemiMajor a b -> Distance a b
\r\n
\r\n
Translating between coordinate systems:
\r\n
\r\n
toEclCoord :: TrueAnomaly a b -> Distance a b -> LongAscNode a b -> ArgPeri a b -> InclToEcl a b -> EclCoord a b\r\n toEqCoordinates :: EclCoord body Earth -> Day Float -> EqCoord body
\r\n',364,107,0,'CC-BY-SA','haskell,astronomy',0,0,1),
+(2598,'2018-07-18','Calculating planetary orbits in Haskell',1711,'Tuula talks about calculating planetary orbits','
Function signatures (it might or might not be helpful to have these at hand while listening):
\r\n
\r\n
Helpers:
\r\n
\r\n
radToDeg :: Floating a => a -> a\r\n degToRad :: Floating a => a -> a\r\n clamp :: Float -> Float
\r\n
\r\n
Time:
\r\n
\r\n
day :: Int -> Int -> Int -> Float -> Day Float
\r\n
\r\n
Orbital parameters:
\r\n
\r\n
longitudeOfAscendingNode :: Orbit body center => body -> center -> Day d -> LongAscNode body center\r\n inclinationToEcliptic :: Orbit body center => body -> center -> Day d -> InclToEcl body center\r\n argumentOfPeriapsis :: Orbit body center => body -> center -> Day d -> ArgPeri body center\r\n semiMajorAxis :: Orbit body center => body -> center -> Day d -> SemiMajor body center\r\n eccentricity :: Orbit body center => body -> center -> Day d -> Ecc body center\r\n meanAnomaly :: Orbit body center => body -> center -> Day d -> MeanAno body center
\r\n
\r\n
Calculating location on orbital plane:
\r\n
\r\n
eccAnomaly :: MeanAno a b -> Ecc a b -> EccAnomaly a b\r\n trueAnomaly :: EccAnomaly a b -> Ecc a b -> TrueAnomaly a b\r\n dist :: EccAnomaly a b -> Ecc a b -> SemiMajor a b -> Distance a b
\r\n
\r\n
Translating between coordinate systems:
\r\n
\r\n
toEclCoord :: TrueAnomaly a b -> Distance a b -> LongAscNode a b -> ArgPeri a b -> InclToEcl a b -> EclCoord a b\r\n toEqCoordinates :: EclCoord body Earth -> Day Float -> EqCoord body
\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, EduBlocks',0,0,1),
(2606,'2018-07-30','Liverpool Makefest 2018 - interview with Dan Lynch',520,'This is an interview with Dan Lynch one of this year\'s Makefest organisers','
Another interview from Liverpool Makefest 2018 this time with Dan Lynch of Linux Outlaws and Floss Weekly
\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Dan Lynch, Linux Outlaws, Floss Weekly',0,0,1),
-(2871,'2019-08-05','HPR Community News for July 2019',3794,'HPR Volunteers talk about shows released and comments posted in July 2019','\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 13 comments in total.
hpr2859\n(2019-07-18) \"HPR NYE Show 2018-2019 part 7\"\nby Honkeymagoo.
\n
\n
Comment 1:\ndodddummy on 2019-07-29:\n\"I disagree with just about all the opinions expressed in this episode.\"
Comment 2:\ndodddummy on 2019-07-29:\n\"1st hour, that is.\"
\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
Ohio LinuxFest Conference CFP
\n
From Susan Rose, Social Media Manager for OLF:
\n
\n
Dear Open Source Fans, Students and Professionals:
\n
The 2019 Ohio LinuxFest is looking for presentations on Friday and Saturday, November 1 and 2. Please visit the CFP page https://ohiolinux.org/call-for-presentations/ for full details about submitting a proposal. The deadline is Friday, August 17, but the sooner you can submit a talk, the better.
\n
Started in 2003, the Ohio LinuxFest https://ohiolinux.org/ is an annual grassroots conference in Columbus, Ohio dedicated to open access for all. Presentations relating to any free and open source software, not just Linux, are welcome. Areas where we’ve had talks in the past include networking, system administration, development, and community building. A preliminary pdf brochure is attached.
\n
Our audience consists of people at all skill levels. Prior speaking experience is a plus, although we do try to provide opportunities for first-time speakers. If you have any questions, please contact us at speakers@ohiolinux.org. We look forward to hearing from you! Thank you for your kind attention and for sharing.
We upload all HPR shows to the Internet Archive (archive.org). Shows downloaded via the HPR RSS feeds actually come from there, though they are also available on the HPR site.
\n
Unfortunately, on Friday July 12th the archive.org copy of the show hpr2855 :: HPR NYE Show 2018-2019 part 6 was found to have been truncated and to consist only of the introduction and final part; no actual content.
\n
The problem was detected during the morning of Friday and was rectified during the afternoon (UK time). The RSS feeds were adjusted to ensure the show was re-downloaded and all podcatchers should have received the correct version the next time they checked the feed.
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: Dave Morriss
\n
Over the period tags and/or summaries have been added to 11 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2891,'2019-09-02','HPR Community News for August 2019',2224,'HPR Volunteers talk about shows released and comments posted in August 2019','\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 24 comments in total.
\n
Past shows
\n
There are 7 comments on\n2 previous shows:
\n
\n
hpr2859\n(2019-07-18) \"HPR NYE Show 2018-2019 part 7\"\nby Honkeymagoo.
\n
\n
\n
\nComment 3:\nMike Ray on 2019-08-05:\n\"First hour\"
\n
\nComment 4:\nMrsXoke on 2019-08-05:\n\"To Mike Ray\"
\n
\nComment 5:\nMike Ray on 2019-08-06:\n\"To Mike Ray\"
\n
\nComment 6:\nMike Ray on 2019-08-06:\n\"Active shooter drills\"
\n
\nComment 7:\nMike Ray on 2019-08-06:\n\"Faith and values\"
\n
\nComment 8:\nfolky on 2019-08-08:\n\"You can fastforward\"
\n
hpr2863\n(2019-07-24) \"Simplified application architectures for improved security\"\nby Beeza.
\n
\n
\n
\nComment 1:\nclacke on 2019-08-14:\n\"Dynamic vs static linking doesn\'t matter\"
\n
\n
This month\'s shows
\n
There are 17 comments on 7 of this month\'s shows:
\n
hpr2869\n(2019-08-01) \"building a bike, following in John Kulp\'s footsteps\"\nby Brian in Ohio.
\n
\n
Comment 1:\nJon Kulp on 2019-08-01:\n\"Recycled Recumbents\"
Comment 1:\nDave Morriss on 2019-08-31:\n\"solder/\"sodder\"/souder\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: Dave Morriss
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2871,'2019-08-05','HPR Community News for July 2019',3794,'HPR Volunteers talk about shows released and comments posted in July 2019','\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 13 comments in total.
hpr2859\n(2019-07-18) \"HPR NYE Show 2018-2019 part 7\"\nby Honkeymagoo.
\n
\n
Comment 1:\ndodddummy on 2019-07-29:\n\"I disagree with just about all the opinions expressed in this episode.\"
Comment 2:\ndodddummy on 2019-07-29:\n\"1st hour, that is.\"
\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
Ohio LinuxFest Conference CFP
\n
From Susan Rose, Social Media Manager for OLF:
\n
\n
Dear Open Source Fans, Students and Professionals:
\n
The 2019 Ohio LinuxFest is looking for presentations on Friday and Saturday, November 1 and 2. Please visit the CFP page https://ohiolinux.org/call-for-presentations/ for full details about submitting a proposal. The deadline is Friday, August 17, but the sooner you can submit a talk, the better.
\n
Started in 2003, the Ohio LinuxFest https://ohiolinux.org/ is an annual grassroots conference in Columbus, Ohio dedicated to open access for all. Presentations relating to any free and open source software, not just Linux, are welcome. Areas where we’ve had talks in the past include networking, system administration, development, and community building. A preliminary pdf brochure is attached.
\n
Our audience consists of people at all skill levels. Prior speaking experience is a plus, although we do try to provide opportunities for first-time speakers. If you have any questions, please contact us at speakers@ohiolinux.org. We look forward to hearing from you! Thank you for your kind attention and for sharing.
We upload all HPR shows to the Internet Archive (archive.org). Shows downloaded via the HPR RSS feeds actually come from there, though they are also available on the HPR site.
\n
Unfortunately, on Friday July 12th the archive.org copy of the show hpr2855 :: HPR NYE Show 2018-2019 part 6 was found to have been truncated and to consist only of the introduction and final part; no actual content.
\n
The problem was detected during the morning of Friday and was rectified during the afternoon (UK time). The RSS feeds were adjusted to ensure the show was re-downloaded and all podcatchers should have received the correct version the next time they checked the feed.
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: Dave Morriss
\n
Over the period tags and/or summaries have been added to 11 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3991,'2023-11-20','YOU ARE A PIRATE ',1539,'I rant I think about piracy ','
XGP-save-extractor
\n
Python script to extract/backup savefiles out of Xbox Game Pass for\nPC games.
\n
When run, the script produces a ZIP file for each supported game save\nfound in the system.
\n
In most cases the files in the ZIP can be copied to the save\ndirectory of the Steam/Epic version of the game. To find out the save\nfile location, check PCGamingWiki.
\n',36,0,1,'CC-BY-SA','hacking, piracy ',0,0,1),
+(2891,'2019-09-02','HPR Community News for August 2019',2224,'HPR Volunteers talk about shows released and comments posted in August 2019','\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 24 comments in total.
\n
Past shows
\n
There are 7 comments on\n2 previous shows:
\n
\n
hpr2859\n(2019-07-18) \"HPR NYE Show 2018-2019 part 7\"\nby Honkeymagoo.
\n
\n
\n
\nComment 3:\nMike Ray on 2019-08-05:\n\"First hour\"
\n
\nComment 4:\nMrsXoke on 2019-08-05:\n\"To Mike Ray\"
\n
\nComment 5:\nMike Ray on 2019-08-06:\n\"To Mike Ray\"
\n
\nComment 6:\nMike Ray on 2019-08-06:\n\"Active shooter drills\"
\n
\nComment 7:\nMike Ray on 2019-08-06:\n\"Faith and values\"
\n
\nComment 8:\nfolky on 2019-08-08:\n\"You can fastforward\"
\n
hpr2863\n(2019-07-24) \"Simplified application architectures for improved security\"\nby Beeza.
\n
\n
\n
\nComment 1:\nclacke on 2019-08-14:\n\"Dynamic vs static linking doesn\'t matter\"
\n
\n
This month\'s shows
\n
There are 17 comments on 7 of this month\'s shows:
\n
hpr2869\n(2019-08-01) \"building a bike, following in John Kulp\'s footsteps\"\nby Brian in Ohio.
\n
\n
Comment 1:\nJon Kulp on 2019-08-01:\n\"Recycled Recumbents\"
Comment 1:\nDave Morriss on 2019-08-31:\n\"solder/\"sodder\"/souder\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: Dave Morriss
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2612,'2018-08-07','Liverpool Makefest 2018 - interview with Joe aka Concrete Dog',353,'An interview with Joe from Liverpool makefest','
In this episode I talk to Joe aka Concrete dog about amateur Rocketry
\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018',0,0,1),
(2616,'2018-08-13','Liverpool Makefest 2018 - interview with Josh - A.K.A - All About Code',310,'An interview with Josh recorded at Liverpool makefest','
This is another short interview recorded at this year\'s Liverpool Makefest, this time with Josh who developed EduBlocks.
',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, EduBlocks, computing, young coders',0,0,1),
(2621,'2018-08-20','Liverpool Makefest 2018 - Chan\'nel Thomas a.k.a little pink maker',293,'In this episode I talk to Chan\'nel Thomas aka little pink maker','
In this episode recorded at Liverpool Makefest 2018 I talk to Chan\'nel Thomas aka little pink maker. Chan\'nel has an amazing web site; the link is below. I was going to include a couple of pictures taken on the day but they don\'t do her work the justice it deserves.
',338,78,0,'CC-BY-SA','Liverpool Makefest 2018,Making, hacking, creativity, inventions',0,0,1),
@@ -18927,16 +19047,16 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2597,'2018-07-17','How to Fix a Remote with Buttons that Don\'t Work',392,'A response to Ken Fallon\'s episode about how to check whether your remote is working or not.','
After listening to Ken Fallon’s episode about how to check whether your remote is working or not, I checked one of our remotes that had been giving us problems and found that only a couple of the buttons produced the light. Then I found a video on YouTube showing how to fix non-working buttons and this is my report.
',238,0,0,'CC-BY-SA','Repairs, Remote Controls, Fixing things, Cleaning',0,0,1),
(2602,'2018-07-24','HPR Quick Tips July 2018',1474,'SpiderOAK Backup and Trekking the AT','
Don’t use GOOGLE DRIVE ! They flag personal content and backups as malware and will not let you download or share your own backups!!!!!
\r\n',36,0,1,'CC-BY-SA','SpiderOAK,Backups,DR,Trekking,Hiking',0,0,1),
(2604,'2018-07-26','Restoration of a Fasco L55A Hassock Fan',1074,'I talk about my recent restoration project of a mid-century modern hassock fan','
The Fasco L55A Hassock Fan
\r\n\r\n
Click the image to view my Flickr slideshow of the restoration process.
\r\n',364,95,0,'CC-BY-SA','BattleTech',0,0,1),
(2600,'2018-07-20','Special episode on 2600, Blue Boxes, Phreaking',3173,'We celebrate the history of hackers, with a nod to the old skool phreak community.','
\r\n2600 Hz is a frequency in hertz (cycles per second) that was used by AT&T as a steady signal to mark currently unused long-distance telephone lines. \r\nA blue box is an electronic device that generates the in-band signaling audio tones formerly used to control long-distance telephone exchanges. \r\nPhreaking is a slang term coined to describe the activity of a culture of people who study, experiment with, or explore telecommunication systems, such as equipment and systems connected to public telephone networks. The term phreak is a sensational spelling of the word freak with the ph- from phone, and may also refer to the use of various audio frequencies to manipulate a phone system. Phreak, phreaker, or phone phreak are names used for and by individuals who participate in phreaking. \r\n
\r\n
Radio FreeK America 1
\r\n
\r\n02/20/02 - Trashing live, dual was \"slammed,\" trouble with Qwest, Qwest releasing customer info then backing off, Rax discusses VOMIT and subsequent fun, start your own telco or isp, Onebox.com, Slingshot pre-paid Internet access, Kondor\'s Trios tribulations, fun with the phone, and more.\r\n
\r\n',30,0,1,'CC-BY-SA','2600, Blue Box, Phreaking, Radio FreeK America',0,0,1),
(2603,'2018-07-25','Dummy shares a tip and a tip/rant about asking and answering questions',1503,'Those blasted rubber coffee mug seals and \"Let me Google that for you.\"','
A quick tip on using paper towel or dish rag to easily remove stubborn travel coffee mug rubber seals followed by a semi ranty discussion on asking and responding to questions in the context of “Let me google that for you.”
\r\n
As a bonus, this is part of a series-ish set of shows I’m going to do recording with different equipment to give you the feel of the quality of shows possible with low cost equipment by someone who doesn’t know how to edit audio or speak to audiences.
\r\n',151,0,1,'CC-BY-SA','travel mug seal,asking questions',0,0,1),
(2607,'2018-07-31','Processing',1777,'Klaatu introduces Processing, a Java subset and IDE suitable for graphical programming projects','
Get Processing from processing.org. Download, extract, and launch. On Linux, just click the processing file.
\r\n
Processing requires that either OpenJDK or Java to be installed.
\r\n
Processing requires a void setup() function, which is a function that Processing expects whenever an application is launched. If you don\'t have a setup function, your application still launches, but with basic Processing defaults. Try this to start with:
\r\n
void setup() {\r\n size(480,720);\r\n}
\r\n
Click the Run button in the top left corner to launch your [very simple] application: an empty window that is 480 pixels wide and 720 pixels tall.
\r\n
Draw a rectangle on your canvas by invoking Processing\'s void draw() function:
\r\n
void draw() {\r\n rect(10,10,80,80);\r\n}
\r\n
Click the Run button in the top left corner to launch your application.
\r\nClacke mentioned SparkleShare in episode 2542, and it occurred to me that not everyone knows what Sparkleshare is. So here's a show about it.\r\n
\r\n\r\n
\r\nTo setup SparkleShare, refer to SparkleShare.org. It\'s available for Linux, Windows, and Mac; great for cross-platform collaboration.\r\n
\r\n\r\n
\r\nThe Linux installer uses FlatPak, so you do need to install that.\r\n
\r\n\r\n
\r\nOnce installed, launch SparkleShare in the usual way. If you have no usual way, you can use this command:
\r\n\r\n
\r\n$ flatpak run org.sparkleshare.SparkleShare\r\n
\r\n\r\n
\r\nThe first screen asks for your name and email. This doesn't have to be your real name and email, but it is what SparkleShare will use when making commits on your behalf. This name and email will be visible to anyone who can see your online Git repository.\r\n
\r\n\r\n
\r\nThe next screen displays the Sync Remote Project screen. You use this screen any time you want to add another share to your sparkle.\r\n
\r\n\r\n\r\n\r\n
\r\nIn this episode, I set up two projects: one brand new one using my home server as host, and one that mirrors an existing project on Gitlab.com.\r\n
\r\n\r\n
Adding a project from Gitlab
\r\n\r\n
\r\nThe first thing you must do is give SparkleShare permission to access Gitlab. To do this, click on the SparkleShare icon in your system tray > SparkleShare > Client ID and copy your ID to your clipboard.\r\n
\r\n\r\n\r\n\r\n
\r\nNow go to your online Git host and add this "Client ID" to your approved SSH Keys. Where this is located depends on your Git host, but in Gitlab, it's located in the left column of the Settings screen. When your SSH Key has been added, Gitlab displays a key fingerprint (actually just a string of numbers) as confirmation.\r\n
\r\n\r\n
\r\nThe path to your remote Git repository is the part of an URL after the host. It usually starts with your username. For example, if I have a project on Gitlab located at gitlab.com/notklaatu/foo.git then the path that SparkleShare needs is notklaatu/foo.git\r\n
\r\n\r\n
\r\nClick the Add button to add the project to your local SparkleShare folder.\r\n
\r\n\r\n\r\n
Adding a project hosted on your own server
\r\n\r\n
\r\nThere are a lot more variables if you're hosting a Git repository on your own server. These are the things that you may need to account for:\r\n
\r\n\r\n
\r\n
Is your local .ssh/config file setting some "invisible" defaults for when you SSH to your server? If so, you may need to modify or add an entry for SparkleShare.
\r\n
Your SparkleShare auto-generated "Client ID" is located in $HOME/.config/org.sparkleshare.SparkleShare/ssh
\r\n
Is your SparkleShare SSH key (the "Client ID" in SparkleShare lingo) in your authorized_hosts file?\r\n
\r\n
Does a Git repository exist on your remote server in the location you think it exists?
\r\n
\r\n\r\n
Using SparkleShare
\r\n\r\n
\r\nUse SparkleShare exactly as you would DropBox or the NextCloud Desktop Client: drag-and-drop a file to add it, drag it to the Trash to delete it. All SparkleShare folders sync\'d with any given project syncs automatically through the magickalfulness of Git hooks.\r\n
\r\n\r\n\r\n\r\n',78,104,0,'CC-BY-SA','git,sparkleshare',0,0,1),
(2613,'2018-08-08','Quick Awk Tip',459,'This is a tip about awk scripts.','
\r\nThis is obvious, but it tripped me up a few times after listening to the excellent Awk series by Dave and B-yeezi, so I though I\'d share it here to save others the trouble.\r\n
\r\n\r\n
\r\nWhen moving from simple awk commands to proper awk scripts, you put a shebang line at the top of your script. It\'s pretty common to many of us, because we do it for Python and Bash all the time.\r\n
\r\n\r\n
\r\nBut if you just put:\r\n
\r\n\r\n
\r\n#!/usr/bin/awk\r\n
\r\n
\r\nThen your awk script won\'t work the way you expect.
\r\n\r\n
\r\nYou must provide the -f flag:\r\n
\r\n
\r\n#!/usr/bin/awk -f\r\n
\r\n\r\n
\r\nNow you can pipe things to your awk script as expected. \r\n
\r\n\r\n\r\n',78,94,0,'CC-BY-SA','tip,awk,shebang',0,0,1),
(2614,'2018-08-09','My 1948 Truetone D1835 Tube Radio',657,'I talk about my \"new\" 1948 D1835 Tube-powered radio.','
The 1948 Truetone D1835 Tube Radio
\r\n\r\n
I recently bought a vintage tube powered radio at an estate sale and in this episode I talk about it and let you hear it. Click the image to view my Flickr pictures.
\r\n',238,0,0,'CC-BY-SA','Vintage audio, legacy technology, radio, antiques',0,0,1),
-(2610,'2018-08-03','Gnu Awk - Part 12',2050,'Advanced use of arrays','
Gnu Awk - Part 12
\r\n
Introduction
\r\n
This is the twelfth episode of the “Learning Awk” series which is being produced by b-yeezi and myself.
\r\n
In this episode I want to continue with the subject I started in episode 10, an advanced-level look at arrays in Awk. This episode covers patsplit which can split a string into an array, the built-in array PROCINFO which can be used to control how awk sorts arrays, as well as asort and asorti, built-in functions for sorting arrays.
\r\n
In case it might be of interest I have also included a section describing a recent use I made of awk to solve a problem.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk, arrays, sorting',0,0,1),
+(2610,'2018-08-03','Gnu Awk - Part 12',2050,'Advanced use of arrays','
Gnu Awk - Part 12
\r\n
Introduction
\r\n
This is the twelfth episode of the “Learning Awk” series which is being produced by b-yeezi and myself.
\r\n
In this episode I want to continue with the subject I started in episode 10, an advanced-level look at arrays in Awk. This episode covers patsplit which can split a string into an array, the built-in array PROCINFO which can be used to control how awk sorts arrays, as well as asort and asorti, built-in functions for sorting arrays.
\r\n
In case it might be of interest I have also included a section describing a recent use I made of awk to solve a problem.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk, arrays, sorting',0,0,1),
(2617,'2018-08-14','Exposing a Raspberry Pi database through a REST API',1219,'In this episode, I discuss how I used python to make my speedtest data available across my network','
\r\n',300,0,0,'CC-BY-SA','python,development',0,0,1),
-(2618,'2018-08-15','Yesod - First Impressions',1385,'tuturto talking about their first impressions of Yesod web framework','
\r\n',364,107,0,'CC-BY-SA','haskell,yesod,web',0,0,1),
+(2618,'2018-08-15','Yesod - First Impressions',1385,'Tuula talking about their first impressions of Yesod web framework','
\r\n',364,107,0,'CC-BY-SA','haskell,yesod,web',0,0,1),
(2619,'2018-08-16','A Gentle Introduction to Quilt',1225,'Quilt - the patch manager. Introduction and tutorial.','
A gentle introduction to quilt
\r\n
Or, patch management for software.
\r\n
Speaker Intro
\r\n
Hi, I\'m bjb. I\'m a programmer.
\r\n
Motivation and topic intro
\r\n
I needed to learn how to use the software tool "quilt", so you get to listen to my podcast about an introduction to quilt.
\r\n
People collaborating on a project must edit the same set of source files. After one person commits some changes, then the other people must rebase their own changes on the new version of the shared files before they can push their changes.
\r\n
A minor fix for some old typo should not be in the same patch as a new feature; a comment correction should also be in its own patch. Essentially, two new features and some bug fixes should not all be smushed together in one patch. Each feature should be in its own patch (or patch series), and each bug fix should be in its own patch. This allows others to be able to review the proposed changes easily, and even lets them pick and choose which patches they want to apply. It becomes a chore to manage all these patches. That\'s where quilt comes in.
\r\n
Sadly, I hadn\'t learned quilt till this weekend ... well one way to ensure I learn it fairly well is to write a HPR episode about it! Here goes.
\r\n
I have written this episode to be understandable by anyone - you don\'t have to be a coder. You could use this tool to keep track of any plain-text files - recipes, todo lists, html, hpr show notes, poetry, what-have-you.
\r\n
Introduction
\r\n
First let\'s describe what a patch is. No, first let\'s describe what source code looks like. Source code is a plain text file full of computer instructions. It is a plain text file, as opposed to a word processing file. Plain text files do not have any formatting codes or styles in them (such as which font should be used, or what colour, and so on). They just contain the characters that make up words of the content.
\r\n
A key feature of these source code files is that a new section of the file starts on a new line. The source code is almost never "reflowed" like prose might be. It is sort of like poetry - the more formal poetry, not prose poetry. There are a lot of really small sections in source code files (called "statements" and "expressions"). Most of these sections fit on one line. This is useful for the tools we\'re going to discuss because when one line changes it does not affect the following lines, as it might when text is reflowed after a change.
\r\n
People have been coding with plain text files in various languages for decades. Thus a large set of tooling has grown around this format. One of those tools is called "diff" and another one is called "patch".
\r\n
Diff is a way to compare two text files. Typically it would be used to compare the "before" and "after" of a source code file undergoing changes. So you could find out what was done to the source code file by running diff on the before and after versions of that file.
\r\n
A diff file is a series of excerpts from the original and changed files. There are various kinds of diffs. Some of them show only the changed lines. Some of them show a few lines before and a few lines after in addition to the changed lines themselves. That second kind is called a "context diff" and helps the automated machinery (and humans too) find the correct part of the file to which the change must be applied.
\r\n
By default there are 3 lines of context before and after the changed lines.
\r\n
The changed part is represented by including the old AND new line. In order to distinguish which lines are old and which are the replacements, all the lines (context lines, removed lines and added lines) are shifted over to the right by one character. The context lines start with a space in the extra left-most character, the original removed lines have a minus sign in the left-most character and the new added lines have a plus sign.
\r\n
Thus if any character on a line in the source file has changed, been added or removed, then the whole line will be replaced with a new line in the new file. The diff will show both the removed line and the new one.
\r\n
The patch utility takes the "diff" output and applies it to the original file to produce the later version of that file. You can apply it in reverse mode to the later version to get the original version. So patch is also a really useful program, and these two tools, diff and patch, are the basis of most of the version control systems out there. It is the existence of these text-based diff and patch tools that makes revision control systems work really well on plain-text files that are naturally structured in a line-by-line format.
\r\n
A note about terminology: the diff program produces a diff. This diff is also called a patch. The patch program takes the diff (aka patch) and applies it to the original file to produce the changed file.
\r\n
So if you have a timeline of adding a few features and making a few fixes on a code-base, it can be fully described by the original file plus a set of patches that had been produced with diff. You can get the final source code by taking the original file, applying the patches one by one, and voila, the final version of the file has been recreated.
\r\n
Now we know enough to give a concise description of quilt:
\r\n
Quilt lets you work with patches, creating them, applying them, un-applying them, and moving some things from one patch to another with a minimum of effort.
\r\n
How to use quilt
\r\n
Now a tutorial on how to get started using quilt.
\r\n
This tutorial will start with a buggy program, create a few bad patches, and fix them up into good patches. I make no claims as to the quality of the final code though. The reason for starting with bad code and patches is to illustrate how to use quilt.
\r\n
Starting to use quilt on a project
\r\n
To start using quilt, create a directory called "patches" at the top of your code or just above.
\r\n
$ mkdir patches
\r\n
If you don\'t do this, quilt will create it for you. However, first it will look for a directory called "patches" in the current working directory, its parent, and all the way up ... if it finds one, it will use it. If not, it will create one in the current directory.
\r\n
So, to keep it from finding some unrelated directory with the name "patches", just create a patches directory yourself in the right place.
\r\n
Quilt first patch, including a new file!
\r\n
You must tell quilt before you make any changes to your source code. Then it can store the original versions of the files that will change, so it can produce the diffs that will become that patch once you change the files.
\r\n
Create a directory called example, and create a file in it like this, called hello.c (don\'t fix the errors):
Now create a new patch - that is, give it a name - before you change any code. This will create (or find) a couple of directories, "patches" and ".pc", and populate them with some files to start.
\r\n
$ quilt new fix-typo
\r\n
And now you can fix the typo and generate the patch. First start by telling quilt that you want hello.c to be in the patch. Quilt saves a copy of it aside for comparing with the later versions:
\r\n
$ quilt add hello.c
\r\n
You can get quilt to tell you what files it knows about:
\r\n
$ quilt files
\r\n
Edit the file - add a semicolon at the end of the print line, and change the double-quotes on the #include line to angle brackets:
\r\n
#include <stdio.h>\r\nprint ("Hello, world!n");
\r\n
Save the file and exit the editor. Next generate the patch:
\r\n
$ quilt refresh
\r\n
The oddly named "refresh" command creates the patch itself. It is called "refresh" because it can also be used to update the patch.
\r\n
Now you can see the current set of patches by giving the command:
\r\n
$ quilt series
\r\n
The single patch is called fix-typo, and its name in the list is coloured brownish. That is because it is the "current" patch, and it is the one that will be updated if you "quilt refresh" again with more changes.
\r\n
One thing I did not find in the quilt documentation is how to add a new file. When adding a new file, there is no existing file that you can name in the quilt add command. Of course, the very first patch I wanted to manage with quilt, I had introduced a new file. It turns out that the quilt edit command can be used to add a file to the patch, even if the file does not yet exist:
\r\n
$ quilt edit header.h
\r\n
Add content to header.h (see below) using the plain-text editor that quilt has started up for you. Save the file.
\r\n
#ifndef HEADER_HH__\r\n#define HEADER_HH__\r\n\r\n#define NAME "bjb"\r\n\r\n#endif
\r\n
Regenerate the patch with the new changes:
\r\n
$ quilt refresh
\r\n
Now you can list the patch series again with quilt series. So far there is one patch. You can see what the patch consists of with the
Now it is time to make a second patch. First we tell quilt we are moving to a new patch:
\r\n
$ quilt new prototype\r\n$ quilt edit header.h
\r\n
Edit this file again - add a function prototype.
\r\n
int do_output(const char *name);
\r\n
Create the patch and look at the list of patches:
\r\n
$ quilt refresh\r\n$ quilt series
\r\n
Now when we give the quilt series command, we see two patches. The first one is green, meaning it has been applied, and the second one is brown, meaning this is the one that quilt refresh will change if you call it.
\r\n
Again you can see what latest diff looks like by giving the quilt diff command.
\r\n
$ quilt diff
\r\n
Now let\'s unapply the latest diff:
\r\n
$ quilt pop\r\n$ quilt series
\r\n
We see that the list of patches has the same patches in it, but now the second patch is white (meaning unapplied) and the first patch is brown (meaning it is the one that would change if we edited a file and typed quilt refresh.
\r\n
$ quilt files
\r\n
That first patch has two files in it, hello.c and header.h.
\r\n
Now unapply the first diff:
\r\n
$ quilt pop\r\n$ quilt series
\r\n
Both patches are listed, and both are shown as white.
\r\n
We can see what files quilt knows about before any patches are applied:
\r\n
$ quilt files
\r\n
No files.
\r\n
Apply all the patches at once:
\r\n
$ quilt push -a\r\n$ quilt series
\r\n
And look at what files quilt knows about:
\r\n
$ quilt files
\r\n
Now quilt reports on only one file, while in the first patch it knew about two files. You must be careful to "add" each file to each patch, or it will not put the changes in those files into the patch. Luckily, quilt edit will put the files in the patch for you, so if you always start your editor with quilt edit fname, then you will have your changed files added to your patches without having to take any other action. But, if you are adding an existing file to the patch, you can add it without having to open your editor with the quilt add command:
\r\n
$ quilt add fname
\r\n
In order to avoid forgetting to add a file in a patch as I was editing, I just added all the files in the directory each time I created a new patch, whether I edited them or not.
\r\n
Split a patch in two parts
\r\n
We are going to split the first patch in two parts. We had fixed a typo and added a new file in one patch. They should be two separate patches.
\r\n
First make the first patch current:
\r\n
$ quilt pop
\r\n
Then make a copy of that patch:
\r\n
$ quilt fork
\r\n
This makes a copy of the first patch called fix-typo-2. But, it removes the first patch fix-typo and puts fix-typo-2 in the series. We need to put the first patch back, and then edit each of the two fix-typo patches so each one contains one part of the original patch.
\r\n
# edit patches/series file and put the first patch back\r\n# The file should contain:\r\n\r\nfix-typo\r\nfix-typo-2\r\nprototype
\r\n
Now edit the first patch using a plain-text editor. It is in patches/fix-typo. Remove the part about the new file, header.h. It should now look like:
\r\n
Index: hello/hello.c\r\n===================================================================\r\n--- hello.orig/hello.c\r\n+++ hello/hello.c\r\n@@ -1,4 +1,4 @@\r\n-#include "stdio.h"\r\n+#include <stdio.h>\r\n\r\n int main (int argc, char *argv[], *env[])\r\n {
\r\n
Save this file. Now edit the second patch patches/fix-typo-2 using a plain-text editor. Remove the part about the file hello.c. It should now look like:
Here we rename a patch from fix-typo-2 to add-header. The quilt rename command acts on the current patch, so make fix-typo-2 current first:
\r\n
$ quilt pop fix-typo-2\r\n$ quilt rename add-header\r\n$ quilt series\r\n$ quilt push -a
\r\n
Reorder the patch series
\r\n
We will make a new patch, then move it earlier in the series:
\r\n
First make the new patch:
\r\n
$ quilt new printf\r\n$ quilt edit hello.c
\r\n
And change the print statement to:
\r\n
printf("Hello, world!n");
\r\n
Save the patch:
\r\n
$ quilt refresh
\r\n
Now to demonstrate the reordering.
\r\n
Unapply all the patches, edit the patches series file patches/series so the patches are in the order you like, and then re-apply the patches. If you are lucky, they will re-apply with no conflicts.
\r\n
$ quilt pop -a\r\n$ vi patches/series\r\n# move "printf" between fix-typo and add-header.\r\n# now all the bug-fixes are at the beginning of the series\r\n$ quilt push -a
\r\n
Merge two patches into one
\r\n
Make another new patch:
\r\n
$ quilt new output-function\r\n$ quilt edit hello.c
\r\n
Change the c file to this:
\r\n
#include <stdio.h>\r\n\r\nint do_output(const char *name)\r\n{\r\n return printf("Hello, %s!n", name);\r\n}\r\n\r\nint main (int argc, char *argv[], char *env[])\r\n{\r\n /* ignoring the return code for do_output */\r\n do_output(NAME);\r\n return 0;\r\n}
\r\n
$ quilt refresh
\r\n
Now, to merge two patches into one:
\r\n
$ quilt pop prototype\r\n$ quilt fold < patches/output-function
\r\n
We have merged the prototype and output-function patches, because they describe a related change.
\r\n
Save the patch.
\r\n
$ quilt refresh
\r\n
Throw away a patch
\r\n
Now we no longer need the last patch, output-function, as it has been included into the prototype patch. But we might want to rename the prototype patch.
\r\n
$ quilt delete output-function\r\n# we have to clean up a bit for quilt or the rename won't work\r\n$ rm patches/output-function\r\n$ quilt rename output-function
\r\n
Deleting will not work on a patch that has been applied before the current patch.
\r\n
You are ready to contribute your patches ... go forth and code.
\r\n
Summary
\r\n
We have seen that quilt can help you manage your contributions to any project that is written in plain-text files. It can generate patch files (usually needed for contributions to open source projects) and can help you manage and update them as the tip of the development branch moves forward with other peoples\' contributions.
\r\n
To use quilt successfully, you need to remember to add files to each patch with quilt add/or quilt edit before editing, and to generate the patch with quilt refresh once all the editing of each patch is done. The rest is easy.
You\'ve been listening to Hacker Public Radio. Anyone can make a show -if I can do it, so can you.
\r\n',357,0,0,'CC-BY-SA','quilt, patch, diff, plain-text, editor',0,0,1),
(2627,'2018-08-28','Home Phone Setup!!',1402,'This episode we set up a small phone system.','
I’m not sure what the echoing is about. It could be picked up from my cell phone’s speaker. Also, I call ftp “tiny ftp” It actually stands for “trivial ftp”
\r\n
\r\n
tftp file for xinetd:
\r\n
service tftp\r\n{\r\n protocol = udp\r\n port = 69\r\n socket_type = dgram\r\n wait = yes\r\n user = nobody\r\n server = /usr/sbin/in.tftpd\r\n server_args = /tftpboot\r\n disable = no\r\n per_source = 11\r\n cps = 100 2\r\n flags = IPv4\r\n}
\r\n',115,0,0,'CC-BY-SA','sip kamailio ',0,0,1),
(2637,'2018-09-11','Convert it to Text',981,'This episode will make you want to TXT all the things.','
Why use plain text?
\n
\n
Portability
\n
Use with Unix tools
\n
Use with Ranger
\n
\n
Ranger for the win
\n
\n
Ranger is a free console file manager that gives you greater flexibility and a good overview of your files without having to leave your *nix console. It visualizes the directory tree in two dimensions: the directory hierarchy on one, lists of files on the other, with a preview to the right so you know where you’ll be going.
\n
The scope functionality is where converting to text pays off. Located at $HOME/.config/ranger/scope.sh, scope is the feature that allows for file preview from inside the console. Text files are highlighted based on their file extension, for non-text files, different converters can be used to coerce the file into a text representation. Some items are available out of the box, but the configuration is written in such a way that any text can be presented in the preview screen.
\n
The basic format of the scope switch statement is as follows:
\n
\n
case "$extension" in\n odt|odp)\n try odt2txt "$path" && { dump | trim | fmt -s -w $width; exit 0; };;
\n
Tools in the toolset
\n
\n
atool
\n
caca-utils
\n
poppler-utils
\n
catdoc
\n
catppt
\n
odt2txt
\n
ods2tsv
\n
docx2txt
\n
xlsx2csv
\n
mediainfo
\n
lynx/w3m/elinks
\n
highlight
\n
\n
Bonus tools
\n
\n
q
\n
jq
\n
xmlstarlet
\n
\n',300,0,0,'CC-BY-SA','Unix,text,portability,ranger',0,0,1),
@@ -18955,14 +19075,14 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2623,'2018-08-22','Actors and Agents, Sprites and Fractals',3426,'In which I sit down with cwebber and try to keep it short, but end up with an hour of tangents','
We’re both fortunate enough to have the chance to get paid for creating all Free Software.
\r\n
Christopher Lemmer Webber and Morgan Lemmer Webber will be speaking at RacketCon 2018 on the topic Racket for Everyone (Else), how non-programmers can do "programmable publishing" using Scribble when writing humanities papers, and how Racket could better target not just beginner programmers and hard-core language theorists, but also the huge space in between.
His Actors library for Guile Scheme is 8sync. A video of him playing in front of an audience with the Multi-User Dungeon (MUD) on top of 8sync is available on the front page.
\r\n
Spritely, the media sharing platform that may or may not be the next MediaGoblin, is currently vaporware, but the underlying Goblins Actors library for Racket is real and works.
I knew that OCap grew up in the context of E, but I didn’t know that E itself actually grew out of the needs of a form of MUD, built by Electric Communities (EC). I’m guessing this is the graphical MMORPG Habitat that EC built for Lucasfilm back in 1986, for the Commodore 64. Some writing about EC and the philosophy and experience around what they did is collected at https://www.crockford.com/ec/.
\r\n
Language-oriented programming (LOP) is an old LISP methodology: Understand the problem, write a language for describing and solving the problem, write the solution in that language. Racket (itself a LISP) is heavily focused on this, and comes with a whole slew of languages out of the box. The Racket slogan on https://racket-lang.org/ is "solve problems — make languages".
\r\n
A recent ACM article describes in depth what the challenges of good LOP are, and how Racket helps the programmer work with it.
\r\n
\r\n',311,0,0,'CC-BY-SA','flow-based, actors, fractalide, racket, ocap, mud, programming',0,0,1),
(2624,'2018-08-23','Cycling through Brussels',1327,'On a hot day Knightwise rides his bike through Brussels.','
This is my ninth contribution to the Bash Scripting series under the heading of Bash Tips. The previous episodes are listed below in the Links section.
\r\n
It seems to me that it would be worthwhile looking at how Bash can be used to make decisions, such as how many times a loop should cycle (looping constructs) or to choose between multiple choices (conditional constructs). Of course we need to look at some of the expressions used in conjunction with the commands that do these tasks – the tests themselves – and we’ll do this in this episode.
\r\n
This is a complex area which I had some trouble with when I first started using Bash, and there is a lot to say about it all. I have prepared a group of HPR shows about this subject, in order to do it justice, and this is the first of the group.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is my tenth contribution to the Bash Scripting series under the heading of Bash Tips. The previous episodes are listed below in the Links section.
\r\n
We are currently looking at decision making in Bash, and in the last episode we examined the tests themselves. In this episode we’ll look at the constructs that use these tests: looping constructs, conditional constructs and lists of commands.
\r\n
Note: this episode and the preceding one were originally recorded as a single episode, but because it was so long it was split into two. As a consequence the audio contains references to examples such as bash9_ex2.sh where the true name is bash10_ex1.sh. The notes have been updated as necessary but not the audio.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is the eleventh episode in the Bash Tips sub-series. It is the third of a group of shows about making decisions in Bash.
\r\n
In the last two episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. Now we want to start examining the expressions that can be used in these tests, and how to combine them. We will also start looking at string comparisons in extended tests.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is my ninth contribution to the Bash Scripting series under the heading of Bash Tips. The previous episodes are listed below in the Links section.
\r\n
It seems to me that it would be worthwhile looking at how Bash can be used to make decisions, such as how many times a loop should cycle (looping constructs) or to choose between multiple choices (conditional constructs). Of course we need to look at some of the expressions used in conjunction with the commands that do these tasks – the tests themselves – and we’ll do this in this episode.
\r\n
This is a complex area which I had some trouble with when I first started using Bash, and there is a lot to say about it all. I have prepared a group of HPR shows about this subject, in order to do it justice, and this is the first of the group.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is my tenth contribution to the Bash Scripting series under the heading of Bash Tips. The previous episodes are listed below in the Links section.
\r\n
We are currently looking at decision making in Bash, and in the last episode we examined the tests themselves. In this episode we’ll look at the constructs that use these tests: looping constructs, conditional constructs and lists of commands.
\r\n
Note: this episode and the preceding one were originally recorded as a single episode, but because it was so long it was split into two. As a consequence the audio contains references to examples such as bash9_ex2.sh where the true name is bash10_ex1.sh. The notes have been updated as necessary but not the audio.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is the eleventh episode in the Bash Tips sub-series. It is the third of a group of shows about making decisions in Bash.
\r\n
In the last two episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. Now we want to start examining the expressions that can be used in these tests, and how to combine them. We will also start looking at string comparisons in extended tests.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
',225,42,1,'CC-BY-SA','Bash,test,conditional expression,string comparison,pattern',0,0,1),
(2645,'2018-09-21','Blinking LED',1390,'In this live show, Ken sees if he can follow simple instructions','
\r\nDuring the New Year Show Ken soldered a component tester. Unfortunately this did not work. \r\n
\r\n
\r\nNYBill offered to fix it and he succeeded in his show hpr2591 :: International Troubleshooting. When he shipped it back he included two 555 timers with the message: Now, figure out how to make LED\'s blink\r\nwith those 555\'s! \r\n
',30,103,1,'CC-BY-NC-SA','555, NYBill, pico, nano',0,0,1),
(2640,'2018-09-14','Another Rambling Drive Into Work',835,'An second attempt at making a show on the way into work','
It’s been a while since I posted my first attempt at recording a show in my car, this attempt was recorded not that long after that but I’d forgotten to post it, hopefully, it’s not too boring.
Link to Dave’s (thelovebug) page and the original John Kulp’s $2 microphone show that kicked all this off. Looking forward to getting a chance to catch up with Dave’s drive into work show. Refer to Dave’s episode HPR2400 and John Kulp’s original $2 microphone show HPR1812
This is a small article in Wikipedia that covers the Electret Microphone which is the type used in the microphone recommended by John Kulp, Dave (thelovebug) and now me. \r\nhttps://en.wikipedia.org/wiki/Electret_microphone
\r\n',201,0,1,'CC-BY-SA','recording, podcasting, audio, microphone, car, Audacity',0,0,1),
(2642,'2018-09-18','My swedish and german Podcasts Part 2',318,'I talk about 6 more podcasts in swedish and german. This time no radio network involved.','
\r\n',309,75,1,'CC-BY-SA','podcast,swedish,german,ccc',0,0,1),
-(2916,'2019-10-07','HPR Community News for September 2019',4081,'HPR Volunteers talk about shows released and comments posted in September 2019','\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 17 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr1328\n(2013-09-04) \"A Hacker\'s Perspective On Schizophrenia \"\nby sigflup.
\n
\n
\n
\nComment 6:\nVegewurst on 2019-09-06:\n\"Insightful\"
\n
hpr2844\n(2019-06-27) \"The Sony TC-222-A Portable Reel-To-Reel Tape Recorder\"\nby Jon Kulp.
\n
\n
\n
\nComment 1:\nMichael on 2019-09-29:\n\"Muffled sound because of low path filtering.\"
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nHipstre on 2019-09-01:\n\"2881 - Audacity: Split Album into Tracks\"
\n
\n
This month\'s shows
\n
There are 14 comments on 9 of this month\'s shows:
hpr2906\n(2019-09-23) \"Feature Engineering for Data-Driven Decision Making\"\nby b-yeezi.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Nice show\"
\n
hpr2907\n(2019-09-24) \"Stardrifter RPG Playtest Part 05\"\nby lostnbronx.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Nice series\"
\n
hpr2909\n(2019-09-26) \"ONICS Basics Part 3: Networking Fundamentals\"\nby Gabriel Evenfire.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Interesting\"
\n
hpr2910\n(2019-09-27) \"Better Social Media 02 - Pluspora\"\nby Ahuka.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Nice show\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: windigo
\n
Over the period tags and/or summaries have been added to 1 show which was without them.
The section of this document which lists all of the tags currently in the system has been made more accessible. If you know of a tag in the system and you want to find out how many instances there are and which shows use them you can construct a query of the form:
This would look for the tag \'vim\' and position the page at the relevant place.
\n
If the tag you are looking for contains spaces, you need to replace them with underscores. So to look for the tag \'vietnamese stringed instruments\' your query would have to be:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2936,'2019-11-04','HPR Community News for October 2019',2514,'Ken discusses last months shows and talks about OggCamp, FLOSS Weekly, FOSDEM, and Star Wars.','\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 are 7 comments on\n5 previous shows:
\n
\n
hpr2895\n(2019-09-06) \"The work of fire fighters, part 2\"\nby Jeroen Baten.
\n
\n
\n
\nComment 3:\nDon on 2019-10-20:\n\"great podcast\"
\n
hpr2900\n(2019-09-13) \"Better Social Media 01 - Introduction\"\nby Ahuka.
\n
\n
\n
\nComment 1:\nJeroen baten on 2019-10-05:\n\"Hope you will find time to discuss Okuna\"
\n
\nComment 2:\nKevin O'Brien on 2019-10-05:\n\"No plans for now\"
\n
hpr2906\n(2019-09-23) \"Feature Engineering for Data-Driven Decision Making\"\nby b-yeezi.
\n
\n
\n
\nComment 2:\nGabriel Evenfire on 2019-10-08:\n\"Love the idea here...\"
\n
hpr2909\n(2019-09-26) \"ONICS Basics Part 3: Networking Fundamentals\"\nby Gabriel Evenfire.
\n
\n
\n
\nComment 2:\nGabriel Evenfire on 2019-10-08:\n\"Thanks for the feedback\"
\n
\nComment 3:\ngerryk on 2019-10-17:\n\"Yet another top episode\"
\n
hpr2911\n(2019-09-30) \"my internet connection\"\nby Jezra.
hpr2913\n(2019-10-02) \"Windows, SDN, and Firewalls\"\nby Beto.
\n
\n
Comment 1:\nClaudioM on 2019-10-02:\n\"+1 on Chocolatey Recommendation\"
\n
hpr2915\n(2019-10-04) \"Intro - My Recording Setup\"\nby Carl.
\n
\n
Comment 1:\nKen Fallon on 2019-10-04:\n\"More shows on ....\"
\n
hpr2921\n(2019-10-14) \"Geocaching with the family\"\nby thelovebug.
\n
\n
Comment 1:\njezra on 2019-10-17:\n\"what a fun adventure\"
Comment 2:\nKevin O'Brien on 2019-10-17:\n\"I loved the show\"
\n
hpr2925\n(2019-10-18) \"LinuxLugCast\'s Memorial for FiftyOneFifty \"\nby Honkeymagoo.
\n
\n
Comment 1:\nlostnbronx on 2019-10-19:\n\"I Never Met Fifty, But I Knew Him\"
\n
hpr2928\n(2019-10-23) \"Building markov chains with Haskell\"\nby tuturto.
\n
\n
Comment 1:\nb-yeezi on 2019-10-29:\n\"Thanks for this episode\"
Comment 2:\ntuturto on 2019-10-31:\n\"thanks for the feedback!\"
\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
FLOSS Weekly
\n
Ken Fallon and Ahuka appeared on FLOSS Weekly Episode 553 on October 30th 2019 to talk about Hacker Public Radio.
\n
OggCamp 2019
\n
There was an HPR presence at OggCamp 2019. This was held at The Manchester Conference Centre during the weekend of October 19th and 20th 2019. We had an HPR table, which was manned by many HPR hosts and received many visitors. Ken recorded interviews which will be released later in November.
\n
FOSDEM 2020
\n
A request has been made to get a Podcasters table at FOSDEM 2020.
\n
HPR on podcast networks
\n
We need some help getting HPR on Google Podcasts, Stitcher, Soundcloud, etc.
\n
Ken versus espeak
\n
Which is preferable, the espeak show summary or Ken’s new reading of the information?
\n
Watching Star Wars for the first time
\n
A question: should it be watched in Episode or Production Order?
\n
Tags and Summaries
\n
There were no tag or summary updates in the past month.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2916,'2019-10-07','HPR Community News for September 2019',4081,'HPR Volunteers talk about shows released and comments posted in September 2019','\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 17 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr1328\n(2013-09-04) \"A Hacker\'s Perspective On Schizophrenia \"\nby sigflup.
\n
\n
\n
\nComment 6:\nVegewurst on 2019-09-06:\n\"Insightful\"
\n
hpr2844\n(2019-06-27) \"The Sony TC-222-A Portable Reel-To-Reel Tape Recorder\"\nby Jon Kulp.
\n
\n
\n
\nComment 1:\nMichael on 2019-09-29:\n\"Muffled sound because of low path filtering.\"
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nHipstre on 2019-09-01:\n\"2881 - Audacity: Split Album into Tracks\"
\n
\n
This month\'s shows
\n
There are 14 comments on 9 of this month\'s shows:
hpr2906\n(2019-09-23) \"Feature Engineering for Data-Driven Decision Making\"\nby b-yeezi.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Nice show\"
\n
hpr2907\n(2019-09-24) \"Stardrifter RPG Playtest Part 05\"\nby lostnbronx.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Nice series\"
\n
hpr2909\n(2019-09-26) \"ONICS Basics Part 3: Networking Fundamentals\"\nby Gabriel Evenfire.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Interesting\"
\n
hpr2910\n(2019-09-27) \"Better Social Media 02 - Pluspora\"\nby Ahuka.
\n
\n
Comment 1:\narcher72 on 2019-09-27:\n\"Nice show\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: windigo
\n
Over the period tags and/or summaries have been added to 1 show which was without them.
The section of this document which lists all of the tags currently in the system has been made more accessible. If you know of a tag in the system and you want to find out how many instances there are and which shows use them you can construct a query of the form:
This would look for the tag \'vim\' and position the page at the relevant place.
\n
If the tag you are looking for contains spaces, you need to replace them with underscores. So to look for the tag \'vietnamese stringed instruments\' your query would have to be:
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2936,'2019-11-04','HPR Community News for October 2019',2514,'Ken discusses last months shows and talks about OggCamp, FLOSS Weekly, FOSDEM, and Star Wars.','\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 are 7 comments on\n5 previous shows:
\n
\n
hpr2895\n(2019-09-06) \"The work of fire fighters, part 2\"\nby Jeroen Baten.
\n
\n
\n
\nComment 3:\nDon on 2019-10-20:\n\"great podcast\"
\n
hpr2900\n(2019-09-13) \"Better Social Media 01 - Introduction\"\nby Ahuka.
\n
\n
\n
\nComment 1:\nJeroen baten on 2019-10-05:\n\"Hope you will find time to discuss Okuna\"
\n
\nComment 2:\nKevin O'Brien on 2019-10-05:\n\"No plans for now\"
\n
hpr2906\n(2019-09-23) \"Feature Engineering for Data-Driven Decision Making\"\nby b-yeezi.
\n
\n
\n
\nComment 2:\nGabriel Evenfire on 2019-10-08:\n\"Love the idea here...\"
\n
hpr2909\n(2019-09-26) \"ONICS Basics Part 3: Networking Fundamentals\"\nby Gabriel Evenfire.
\n
\n
\n
\nComment 2:\nGabriel Evenfire on 2019-10-08:\n\"Thanks for the feedback\"
\n
\nComment 3:\ngerryk on 2019-10-17:\n\"Yet another top episode\"
\n
hpr2911\n(2019-09-30) \"my internet connection\"\nby Jezra.
hpr2913\n(2019-10-02) \"Windows, SDN, and Firewalls\"\nby Beto.
\n
\n
Comment 1:\nClaudioM on 2019-10-02:\n\"+1 on Chocolatey Recommendation\"
\n
hpr2915\n(2019-10-04) \"Intro - My Recording Setup\"\nby Carl.
\n
\n
Comment 1:\nKen Fallon on 2019-10-04:\n\"More shows on ....\"
\n
hpr2921\n(2019-10-14) \"Geocaching with the family\"\nby thelovebug.
\n
\n
Comment 1:\njezra on 2019-10-17:\n\"what a fun adventure\"
Comment 2:\nKevin O'Brien on 2019-10-17:\n\"I loved the show\"
\n
hpr2925\n(2019-10-18) \"LinuxLugCast\'s Memorial for FiftyOneFifty \"\nby Honkeymagoo.
\n
\n
Comment 1:\nlostnbronx on 2019-10-19:\n\"I Never Met Fifty, But I Knew Him\"
\n
hpr2928\n(2019-10-23) \"Building markov chains with Haskell\"\nby Tuula.
\n
\n
Comment 1:\nb-yeezi on 2019-10-29:\n\"Thanks for this episode\"
Comment 2:\nTuula on 2019-10-31:\n\"thanks for the feedback!\"
\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
FLOSS Weekly
\n
Ken Fallon and Ahuka appeared on FLOSS Weekly Episode 553 on October 30th 2019 to talk about Hacker Public Radio.
\n
OggCamp 2019
\n
There was an HPR presence at OggCamp 2019. This was held at The Manchester Conference Centre during the weekend of October 19th and 20th 2019. We had an HPR table, which was manned by many HPR hosts and received many visitors. Ken recorded interviews which will be released later in November.
\n
FOSDEM 2020
\n
A request has been made to get a Podcasters table at FOSDEM 2020.
\n
HPR on podcast networks
\n
We need some help getting HPR on Google Podcasts, Stitcher, Soundcloud, etc.
\n
Ken versus espeak
\n
Which is preferable, the espeak show summary or Ken’s new reading of the information?
\n
Watching Star Wars for the first time
\n
A question: should it be watched in Episode or Production Order?
\n
Tags and Summaries
\n
There were no tag or summary updates in the past month.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2643,'2018-09-19','The Payoff In Storytelling',677,'A brief look at the emotional structure of story endings.','
Lostnbronx takes a quick look at how story endings need to be structured in order to be satisfying. Lots of endings are possible, but they don’t all require the same treatment. Some can be abrupt, some can be sad, but all of them need to meet certain emotional expectations.
\r\n',107,105,0,'CC-0','stories,storytelling,endings,lostnbronx',0,0,1),
(2644,'2018-09-20','Error on show 2642',59,'Error error','
',309,75,0,'CC-BY-SA','podcast, swedish, correction',0,0,1),
(2648,'2018-09-26','Explaining the controls on my Amateur HF Radio Part 1',1646,'I attempt to explain the controls on my Kenwood TS940S HF Amateur Radio.','
In this episode, I cover the transmit section controls.
Below I’ll cover some of the items I missed or didn’t understand when I recorded my off the cuff episode. If I miss something you may find it in the user manual link above.
\r\n
Full and Semi break-in mode is used when operating in CW mode (Morse Code). In full break-in mode the radio jumps back into receive the moment the mores key is released this way you can hear if the station is trying to contact in-between each press of the key. This is very demanding on the radio as it must switch very quickly back into receive mode it can also be distracting for the operator hearing hissing noise between each dot and dash. Semi break-in mode is a bit like using VOX mode in speech the radio goes silent between each dot and dash but will return to receive after the mores key is released for a predetermined time interval.
\r\n
The digital display used on the main display of the TS940S is apparently a Vacuum Fluorescent Display not the more usual LED of the time.
\r\n
The TS 940S was manufactured around 1986, so unbelievably that means my wonderful radio that to me looks fairly modern is around 30 years Old! I believe this HF radio was top of the line for Kenwood back then.
\r\n
The Auto and thru button is used to connect the auto tuner in line with the antenna. When AUTO is selected the radio is connected to the Auto internal tuner and then to the antenna. In THRU the radio bypasses the auto tuner and connects the radio directly to the antenna.
\r\n
The Speech Compressor
\r\n
During SSB operation it is desirable to increase the relative “talk power” of the transceiver by using speech processor circuitry. The speech processor control is set by using the in and out rotary control. The in control level is set by putting the meter into Comp and adjusting the in control to no more than 10 dB of compression. The out control level is set by putting the meter into ALC and adjusting the out control to ensure the meter stays within the ALC section of the meter.
\r\n
IC meter position indicates the power transistor collector current
\r\n
VC meter position indicates the power transistor collector voltage
\r\n
Noise Blanker 1 (NB1) \r\nFor pulse type noise, such as generated by automatic ignition systems.
\r\n
Noise Blanker 2 (NB2) \r\nFor long duration pulse noise, like the Russian woodpecker.
',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
@@ -18976,18 +19096,18 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2685,'2018-11-16','Scientific and Medical Reports',854,'We need to be careful about evaluating news reports about medical studies','
We get bombarded with breathless news stories about medical breakthroughs that may not be as reliable as they are presented. This begins our look at what is reliable and what you need to watch out for.
',198,100,0,'CC-BY-SA','Health, Medicine, Medical Studies, News Reports',0,0,1),
(2695,'2018-11-30','Problems with Studies',798,'Some principles for evaluating medical studies','
All medical studies are not alike. Some are of higher quality than others, and the conclusions they reach need to be evaluated based on some principles of good research. Here we take a look at some warning signs of bad or unreliable studies.
',198,100,0,'CC-BY-SA','Health, Medicine, Medical Studies, Evaluating Studies',0,0,1),
(2705,'2018-12-14','Evidence-based Medicine',1013,'Medicine should be based on objective scientific evidence','
Basing medical care and treatment on the scientific evidence should be the norm, but frequently it is not. Doctors may treat based on how they have always done it, or how other doctors do it (i.e. best practices), but there is a movement now to reorient medicine to follow the best scientific guidelines.
This is the twelfth episode in the Bash Tips sub-series. It is the fourth of a group of shows about making decisions in Bash.
\r\n
In the last three episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use glob and extended glob patterns.
\r\n
Now we want to look at the other form of string comparison, using regular expressions.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is the twelfth episode in the Bash Tips sub-series. It is the fourth of a group of shows about making decisions in Bash.
\r\n
In the last three episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use glob and extended glob patterns.
\r\n
Now we want to look at the other form of string comparison, using regular expressions.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
',225,42,1,'CC-BY-SA','Bash,test,regular expression',0,0,1),
(2657,'2018-10-09','Why we are all going to shit in 30 years due to computers',1555,'Some thoughts about the increasing impact of automation','
Now, this is not a doom and gloom lecture.
\r\n
Actually it is a talk about what is going to happen in the next 30 years.
\r\n
It is a talk about what is called “postcapitalism”.
\r\n
It is a talk about how almost all jobs are going to disappear due to automation. But also how we are going to think about this this and come up with solutions.
\r\n
It talks about the three big challenges we need to face.
\r\n
And yes, this involves you as well!
\r\n',369,0,1,'CC-BY-SA','prediction,post-capitalism',0,0,1),
(2658,'2018-10-10','Questions on podcast production',2784,'Al asks Dave questions about podcast production','
HPR Chat with Al
\r\n
Al asks Dave a number of questions about podcast audio recording and post-production.
\r\n
Al is thinking of doing National Podcast Post Month in November
\r\n
National Podcast Post Month (or NaPodPoMo) is a challenge in a similar vein to National Novel Writing Month (or NaNoWriMo) in which participants are challenged to produce and publish a piece of audio as a podcast, every day for the month of November.
\r\n
Bad podcast audio
\r\n
Audio quality is as important as the content that\'s being presented. Bad audio is going to be what causes new podcasters the most damage in subscriber numbers. An example of good audio is the true crime podcast, One Eye Open, which Dave started listening to a couple of weeks ago. He also picked up a couple of other true crime podcasts as a result of listening to One Eye Open where the audio quality is so bad, that they can\'t be heard!
\r\n
Loudness is a measurement of how loud something is perceived to be. Levelling is a process of ensuring that individual tracks in a podcasts are an an equivalent level, but also the podcast overall is at an equivalent level to other podcasts that have been levelled the same way.
The non-technical definition is that it brings up the quiet bits and brings down the louder bits so that your voice has less of a variance if you shout or whisper.
\r\n
Different microphone types
\r\n
\r\n
Cardioid - focuses on sounds coming from in front of the mic
\r\n
Omnidirectional - can theoretically pick up sound from all directions
Condenser - overall better quality sound than dynamic, but more susceptible to background noise, so requires a really quiet studio environment
\r\n
\r\n
Your level
\r\n
You can measure your own level in Audacity - make sure you stay in the green! If you stray into yellow or even red, either lower your level or move slightly away from the mic.
\r\n
Other people\'s levels
\r\n
Concentrate on your own, get others to manage theirs. If you\'re recording multiple tracks, it can be managed in post-production, but once it\'s been merged into a single track it\'s virtually impossible.
Record in a lossless format, and do your edits and post-production in a lossless format. Only transcode to a lossy format once you\'re ready to publish your final file.
\r\n
Monitoring
\r\n
If you\'re recording yourself, and you don\'t want to hear yourself through headphones, take the headphones off.
\r\n
If you\'re recording with someone else who is not in the same room, you are better off hearing yourself through your headphones at the same level as the person you\'re talking to.
level the individual tracks so that everyone sounds as "loud" as anyone else
\r\n
merge the individual tracks into a single output file (a Multitrack production)
\r\n
\r\n
Dave also gives a specific use case for adding music into the final mix.
\r\n
\r\n
NaPodPoMo revisited
\r\n
This will be Al\'s first attempt at NaPodPoMo, but not for Dave. Dave wants to make sure that he plans for this year, so he doesn\'t run out of material on day 7!!
\r\n
Dave will interview another NaPodPoMo participant at least once a week during November. Looks like Al will be one of them!
Podcasting isn\'t rocket science. You don\'t need lots of expensive equipment to produce a podcast. You just need something to record into (e.g. a mobile phone or portable recorder) and somewhere to host it. You can host on your own website or on one of a number of free services, like Anchor, AudioBoom, or indeed Hacker Public Radio!
Dave originally said that the pickup pattern that picks up 360 degrees was "unidirectional" - it should have been "omnidirectional" and has been fixed in the edit, but it sounds like it was added in afterwards... which, of course, it was!!
\r\n
\r\n',290,0,0,'CC-BY-SA','Admin Admin Podcast',0,0,1),
(2661,'2018-10-15','My Music Production Setup',679,'ClaudioM shares his music production setup.','
This is the thirteenth episode in the Bash Tips sub-series. It is the fifth and final of a group of shows about making decisions in Bash.
\r\n
In the last four episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use glob and extended glob patterns then we devoted an episode to Bash regular expressions.
\r\n
Now we want to look at the final topic within regular expressions, the use of capture groups.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is the thirteenth episode in the Bash Tips sub-series. It is the fifth and final of a group of shows about making decisions in Bash.
\r\n
In the last four episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use glob and extended glob patterns then we devoted an episode to Bash regular expressions.
\r\n
Now we want to look at the final topic within regular expressions, the use of capture groups.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
',225,42,1,'CC-BY-SA','Bash,extended test,regular expression,capture group,BASH_REMATCH,back reference',0,0,1),
(2690,'2018-11-23','A chat about the HiveMQ Broker',425,'Ken talks with Florian Raschbichler and Anja Helmbrecht-Schaar about HiveMQ','
\r\nI had the opportunity to chat with Florian Raschbichler and Anja Helmbrecht-Schaar from the company dc-square GmbH, who are developers of the HiveMQ Broker.\r\n
',30,78,0,'CC-BY-SA','MQTT, HiveMQ, dc-square GmbH',0,0,1),
(2662,'2018-10-16','Repairing a motherboard',196,'I repair a motherboard and get a old tower working again.','
Continued from hpr2549 :: DVD ripping using old hardware
\r\n
Acquired new user tower, replaced old tower with blown caps \r\nDell Pentium 4 CPU 3.20GHz, 2Gb RAM
\r\n
sudo shred -n 5 -vz /dev/sdX\r\n\r\n -n, --iterations=N \r\n -v, --verbose\r\n show progress \r\n -z, --zero\r\n add a final overwrite with zeros to hide shredding
\r\n',318,0,1,'CC-BY-SA','hardware, circuit board, repair',0,0,1),
(2663,'2018-10-17','Short review on a 2.5 inch SSD/HDD caddy',202,'Tony reviews a Short review on a 2.5 inch SSD/HDD caddy from ebay','
Well Ken made another call for shows and as my recent interview series has come to an end by the time you listen to this here is a short review of a USB3 2.5inch HDD/SSD caddy I got from E-bay a few weeks ago.
\r\n
As many of you who have listened to my previous ramblings know I frequent a local Computer auction and recently they have had some cheap 128Gig SSD’s for sale and I managed to pick several up at a good price. After using some to upgrade some desktop PC’s to SSD I had a couple of these spare and as I have USB3 on my main laptop thought it would be good to be able to use one or two of these as portable storage or even for boot drives to test out odd Linux distro or 2.
So after it arrived I plugged in one of the drives and tested it out. The first thing to notice is that SSD’s being 7mm in depth flop about a bit in the case but this is easily resolved by a bit of card under the drive to help it fit snug in the case and it does mean that the case will support the larger 9mm 2.5inch spinners if needed. I’ve not tested a larger older spinner but I suspect they will not fit as 9mm ones are very snug in the case.
\r\n
Anyway the drive was detected by the PC/Laptop and works flawlessly and as it is so quick to swap drives in the caddy means I can carry large data files and my music and video library when on the move with the advantage that it is less likely to be damaged if accidentally dropped or knocked off a surface, which is quite likely with a portable spinner HDD.
\r\n
I am very happy with this purchase and it has already become a regular part of my travelling tool kit/laptop bag.
\r\n',338,23,0,'CC-BY-SA','Computers, Tool Bag',0,0,1),
(2668,'2018-10-24','Explaining the controls on my Amateur HF Radio Part 3',1090,'In this episode I cover the Main / sub displays meter memory and band keys of the TS940S.','
Used either to display the time or in graph mode gives a representation of the receiver bandwidth setting when using CW or SSB.
\r\n
Memories and band keys
\r\n
Ten memory and band keys to switch either between ten stored memories or to switch between the ten pre-set amateur HF bands when in VFO mode. Up / Down step keys jumps in 1Mhz step.
\r\n
Antenna Tuner
\r\n
I tried and failed to find a simple explanation of an antenna tuner it’s a complicated topic, I can at least have a go at explaining how to use a simple manual antenna tuner, hope this makes some sense.
\r\n
A typical manual Antenna Tuner has two rotatable knobs both interact with each other. The Tuner is used to match a badly tuned antenna to your transmitter. The Tuner is placed in-between the transmitter and antenna. To use it you typically hold down the transmit key while looking at the VSWR meter and rotating one knob at a time in turn repeating this operation until the minimum VSWR is achieved.
\r\n',129,0,1,'CC-BY-SA','Raspberry Pi,open media,Etcher',0,0,1),
(2664,'2018-10-18','My git workflow',495,'In this episode I talk about the workflow I use to contribute to opensource project using git','
My git workflow
\r\n
In this episode of HPR I present the workflow I use to contribute to opensource projects using git. I have no idea if this workflow is something that is commonly used, but it is working for me, so I thought I’d share it with the HPR community.
\r\n
The first thing I do is fork the project I want to contribute to. This is done on github most of the time, although this workflow can work on gitlab, bitbucket, or even some self hosted git platform.
\r\n
Once the project is forked, I clone it on my machine :
Now my local repository references my fork under the name origin and the original project under the name upstream.
\r\n
In this workflow, I never work on the master branch. So, when I need to fix a bug for example, I create a new branch :
\r\n
$ git checkout -b bugfix
\r\n
I can then make changes, test my code, make sure everything is ok, stage and commit my changes :
\r\n
$ git add .\r\n$ git commit -m "commit message"
\r\n
Now I need to push this local branch to my repository on github :
\r\n
$ git push -u origin bugfix
\r\n
Since I forked the original project, github knows that origin and upstream are linked. If there are no conflicts, github will show me a big green button to create a pull request. Once the pull request is created, I just have to wait for the maintainer to merge it in upstream’s master branch. Then, I need to sync both my local copy and my fork on github with the original project. In order to do that, on my local copy, I checkout my master branch, fetch upstream’s changes, and merge them :
\r\n',370,104,0,'CC-0','git,github,workflow',0,0,1),
-(2689,'2018-11-22','Bash Tips - 14',1688,'More about loops - the \'for\' loop, \'break\' and \'continue\'','
Bash Tips - 14 (Some auxiliary Bash tips)
\r\n
More about loops
\r\n
This is the fourteenth episode covering useful tips about using Bash. Episodes 9-13 covered Making Decisions in Bash and in these episodes we looked at while and until loops, but not for loops. This episode is making good this deficiency, and is also looking at break and continue which are very useful when using loops.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,loop,for,break,continue',0,0,1),
+(2689,'2018-11-22','Bash Tips - 14',1688,'More about loops - the \'for\' loop, \'break\' and \'continue\'','
Bash Tips - 14 (Some auxiliary Bash tips)
\r\n
More about loops
\r\n
This is the fourteenth episode covering useful tips about using Bash. Episodes 9-13 covered Making Decisions in Bash and in these episodes we looked at while and until loops, but not for loops. This episode is making good this deficiency, and is also looking at break and continue which are very useful when using loops.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,loop,for,break,continue',0,0,1),
(2666,'2018-10-22','Slackware Post-Install',1826,'A quick and dirty guide to getting Slack up and running after it\'s installed.','
This episode started out as just some thoughts on why I decided to move back to Slackware after having been away from it for a few years, and wound up being a short set of notes on the post install configuration of Slackware 14.2
\r\n
This is by no means a definitive or exhaustive in its scope. It’s just a few thoughts and tips on the post-install process that might not be completely clear to a new user.
\r\n',325,0,1,'CC-BY-SA','Slackware, Slackware post-install',0,0,1),
(2671,'2018-10-29','Algae farming with Desearcher',2379,'Desearcher edumacates us all on the benefits of algae farming.','
Apologies for the sound quality. We recorded in a small apartment with only one mic. :-
\r\n',325,0,1,'CC-BY-SA','Phytoplankton,algae,Nannochloropsis',0,0,1),
(2678,'2018-11-07','Explaining the controls on my Amateur HF Radio Part 4',984,'In this episode I cover the first four Receiver section controls of the TS940S','
(2A) Pitch (From the Kenwood manual) \r\nThe CW PITCH control is provided so that you may adjust the pitch or tone of the incoming CW signal so that the tone is pleasing to you. The TS-940S accomplishes this without shifting the actual transmitter or receiver frequency, by shifting the 100kHz IF frequency, just prior to Product detection.
\r\n
(2B) AF Tune (From the Kenwood manual) \r\nThe AF TUNE circuit is just the opposite of the NOTCH circuit. With this control, it is possible to accentuate the desired signal by providing additional rejection of noise and interfering signals whose pitch (tone) falls outside the audio passband. Turn the AF TUNE switch ON and adjust the AF TUNE control to peak the desired signal.
\r\n
\r\n
RIT/XIT
\r\n
\r\n
(3A) RIT – Receiver incremental Tune \r\nThe RIT control allows shifting the receive frequency without effecting the transmit frequency
\r\n
(3B) XIT – Transmitter incremental Tune \r\nThe XIT control allows shifting the transmit frequency without effecting the receive frequency
\r\n
',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
@@ -19004,18 +19124,18 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2688,'2018-11-21','Explaining the controls on my Amateur HF Radio Part 5',1039,'In this episode I cover the remaining Receiver section controls of the TS940S.','
\r\n
The controls covered are
\r\n
\r\n
AF / RF gain\r\n
\r\n
(1A) AF, Audio frequency gain control (Volume) \r\nTurns the volume up and down
\r\n
(1B) RF, Radiofrequency gain control (From the Kenwood manual) \r\nRF GAIN is controlled by changing the AGC (Auto Gain Control) threshold voltage. Adjusting the RF GAIN so that the S-meter reading increases to a point just lower than speech peaks. This also reduces noise during reception. For normal operation, this control should be turned fully clockwise for maximum sensitivity.
\r\n
\r\n
CW VBT (From the Kenwood manual)\r\n
\r\n
Carrier Wave Variable Bandwidth Tuning Control \r\nThis control is very similar to the SSB Slope tuning controls. However, with the CW VBT control, both sides of the IF passband are narrowed at the same time.
\r\n',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2683,'2018-11-14','Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild',1911,'Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild','
Using Python, PHP, JQuery and Linux to visualize the heartrate and blood oxygen saturation level of my stepdaughter.
\r\n
Jeroen Baten talks about how he used his knowledge of a couple of open source tools to visualize the heartrate and oxygen saturation in the blood of one of his children and how this aided a pediatrician at the Wilhelmina childrens hospital to come to the right conclusion and treatment. This talk is a mix of tech and 43 surgery sessions on one single human being.
\r\nEditor\'s Note \r\nJeroen\'s link above was added after the show had been aired.\r\n
\r\n',369,0,0,'CC-BY-SA','python, php, jquery, linux',0,0,1),
(2687,'2018-11-20','Some Additional Talk About Characters -- 02',750,'Lostnbronx takes a look at what sorts of characters work best for certain types of tales. Part 02.','
What are some typical ways to create characters in your stories? Should you create the plot first, or the characters first? Should we think of characters in terms of heroes and villains, or protagonists and antagonists? What is the value of character depth, and is it the same as the character arc? Lostnbronx offers up even more off-the-cuff thoughts about this complicated subject.
\r\n',107,105,0,'CC-0','stories,storytelling,characters,lostnbronx',0,0,1),
-(2956,'2019-12-02','HPR Community News for November 2019',5211,'Dave, Jeroen and Ken talk about shows released and comments posted in November 2019','\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 16 comments in total.
hpr2943\n(2019-11-13) \"Music as Life\"\nby brian.
\n
\n
Comment 1:\nCarl on 2019-11-21:\n\"Interesting Episode\"
\n
hpr2944\n(2019-11-14) \"ONICS Basics Part 4: Network Flows and Connections\"\nby Gabriel Evenfire.
\n
\n
Comment 1:\nDave Morriss on 2019-11-27:\n\"This is wonderful\"
\n
hpr2955\n(2019-11-29) \"Machine Learning / Data Analysis Basics\"\nby Daniel Persson.
\n
\n
Comment 1:\nb-yeezi on 2019-11-29:\n\"Great first episode\"
\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
Stand at FOSDEM
\n
Our proposal for a “Free Culture Podcasts” stand at FOSDEM was accepted for the Sunday 2nd February. This is fantastic news as this is the largest FLOSS event in Europe and is absolutely thronged the whole day.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(2981,'2020-01-06','HPR Community News for December 2019',4671,'HPR Volunteers talk about shows released and comments posted in December 2019','\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 22 comments in total.
\n
Past shows
\n
There are 6 comments on\n6 previous shows:
\n
\n
hpr2924\n(2019-10-17) \"Hacking an Alarm Clock to Make it Quieter\"\nby Jon Kulp.
\n
\n
\n
\nComment 1:\nGabriel Evenfire on 2019-12-24:\n\"Fun to listen to as always\"
\n
hpr2932\n(2019-10-29) \"Stardrifter RPG Playtest Part 10\"\nby lostnbronx.
\n
\n
\n
\nComment 1:\nGabriel Evenfire on 2019-12-24:\n\"Loved the series\"
hpr2974\n(2019-12-26) \"Guitar Setup pt. 2\"\nby NYbill.
\n
\n
Comment 1:\nNYbill on 2019-12-26:\n\"Heh, editing...\"
\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
Tags and Summaries
\n
There were no tag or summary updates in the past month.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2956,'2019-12-02','HPR Community News for November 2019',5211,'Dave, Jeroen and Ken talk about shows released and comments posted in November 2019','\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 16 comments in total.
hpr2943\n(2019-11-13) \"Music as Life\"\nby brian.
\n
\n
Comment 1:\nCarl on 2019-11-21:\n\"Interesting Episode\"
\n
hpr2944\n(2019-11-14) \"ONICS Basics Part 4: Network Flows and Connections\"\nby Gabriel Evenfire.
\n
\n
Comment 1:\nDave Morriss on 2019-11-27:\n\"This is wonderful\"
\n
hpr2955\n(2019-11-29) \"Machine Learning / Data Analysis Basics\"\nby Daniel Persson.
\n
\n
Comment 1:\nb-yeezi on 2019-11-29:\n\"Great first episode\"
\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
Stand at FOSDEM
\n
Our proposal for a “Free Culture Podcasts” stand at FOSDEM was accepted for the Sunday 2nd February. This is fantastic news as this is the largest FLOSS event in Europe and is absolutely thronged the whole day.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2981,'2020-01-06','HPR Community News for December 2019',4671,'HPR Volunteers talk about shows released and comments posted in December 2019','\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 22 comments in total.
\n
Past shows
\n
There are 6 comments on\n6 previous shows:
\n
\n
hpr2924\n(2019-10-17) \"Hacking an Alarm Clock to Make it Quieter\"\nby Jon Kulp.
\n
\n
\n
\nComment 1:\nGabriel Evenfire on 2019-12-24:\n\"Fun to listen to as always\"
\n
hpr2932\n(2019-10-29) \"Stardrifter RPG Playtest Part 10\"\nby lostnbronx.
\n
\n
\n
\nComment 1:\nGabriel Evenfire on 2019-12-24:\n\"Loved the series\"
hpr2974\n(2019-12-26) \"Guitar Setup pt. 2\"\nby NYbill.
\n
\n
Comment 1:\nNYbill on 2019-12-26:\n\"Heh, editing...\"
\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
Tags and Summaries
\n
There were no tag or summary updates in the past month.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2691,'2018-11-26','DerbyCon Interview - John Strand',160,'John Strand talks about behavoural analytics and blockchain','
',79,78,0,'CC-BY-SA','DerbyCon, Interview, Blockchain',0,0,1),
-(2699,'2018-12-06','Bash Tips - 15',1794,'Some of the pitfalls when using loops in Bash','
Bash Tips - 15 (More auxiliary Bash tips)
\r\n
Pitfalls for the unwary Bash loop user
\r\n
This is the fifteenth episode covering useful tips for Bash users. In the last episode we looked at the \'for\' loop, and prior to that we looked at \'while\' and \'until\' loops. In this one I want to look at some of the loop-related issues that can trip up the unwary user.
\r\n
Loops in Bash are extremely useful, and they are not at all difficult to use in their basic forms. However, there are some perhaps less than obvious issues that can result in unexpected behaviour.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,loop,ls,pipe,pipeline,find,extglob',0,0,1),
+(2699,'2018-12-06','Bash Tips - 15',1794,'Some of the pitfalls when using loops in Bash','
Bash Tips - 15 (More auxiliary Bash tips)
\r\n
Pitfalls for the unwary Bash loop user
\r\n
This is the fifteenth episode covering useful tips for Bash users. In the last episode we looked at the \'for\' loop, and prior to that we looked at \'while\' and \'until\' loops. In this one I want to look at some of the loop-related issues that can trip up the unwary user.
\r\n
Loops in Bash are extremely useful, and they are not at all difficult to use in their basic forms. However, there are some perhaps less than obvious issues that can result in unexpected behaviour.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,loop,ls,pipe,pipeline,find,extglob',0,0,1),
(2710,'2018-12-21','Youtube downloader for channels',844,'A followup to hpr2675 how you can download an entire youtube channel for local playout','
\r\nI had a very similar problem to Ahuka aka Kevin, in hpr2675 :: YouTube Playlists. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.\r\n
\r\n
\r\nAdd the url\'s to a file called subscriptions.txt.\r\n
\r\n
\r\n#LASTRUN: 20181030\r\n# /home/ken/sourcecode/personal/bestofyoutube/youtube-channel-watcher.bash\r\n#\r\n# Big Clive \r\nhttps://www.youtube.com/channel/UCtM5z2gkrGRuWd0JQMx76qA 20181030\r\n# Essential Craftsman\r\nhttps://www.youtube.com/channel/UCzr30osBdTmuFUS8IfXtXmg\r\n
\r\n
\r\nThen run the script\r\n
\r\n
\r\n#!/bin/bash\r\n# Downloads videos from youtube based on selection from https://thebestofyoutube.com\r\n# (c) Ken Fallon https://kenfallon.com\r\n# Released under the CC-0\r\n\r\nsavepath=\"/mnt/media/Videos/channels\"\r\nsubscriptions=\"${savepath}/subscriptions.txt\"\r\nYOUNGERTHAN=\"20010101\"\r\nRUNDATE=$(date +%Y%m%d)\r\nyoutubedl=\"/home/ken/sourcecode/youtube-dl/youtube-dl\"\r\n#DRYRUN=\"echo DEBUG: \"\r\n\r\nif [ ! -e \"${subscriptions}\" ]\r\nthen\r\n echo \"Cannot find subscription file \"${subscriptions}\"\"\r\n exit 1\r\nfi\r\n\r\nif [ \"$(grep \"#LASTRUN: \" \"${subscriptions}\" | wc -l )\" -eq 0 ]\r\nthen\r\n sed --follow-symlinks \'1s/^/#LASTRUN: n/\' -i \"${subscriptions}\"\r\nfi\r\n\r\n# Read the subscriptions\r\ncat \"${subscriptions}\" | grep -v \'#\' | while read channel_info\r\ndo\r\n if [ \"$(echo \"${channel_info}\" | grep -P \'t\' | wc -l )\" -eq 0 ]\r\n then\r\n DATEAFTER=\"--dateafter ${YOUNGERTHAN}\"\r\n else\r\n DATEAFTER=\"--dateafter $(echo \"${channel_info}\" | awk \'{print $NF}\' )\"\r\n fi\r\n channel=\"$(echo \"${channel_info}\" | awk \'{print $1}\' )\"\r\n echo \"Processing Channel \"${channel}\" since ${DATEAFTER}\"\r\n ${DRYRUN} ${youtubedl} ${DATEAFTER} --ignore-errors --no-mtime --restrict-filenames --format mp4 -o ${savepath}\'/%(uploader)s/%(upload_date)s-%(title)s⋄%(id)s.%(ext)s\' ${channel}\r\n ${DRYRUN} sed --follow-symlinks \"s,${channel}.*$,${channel}t${RUNDATE},g\" -i \"${subscriptions}\"\r\ndone\r\n\r\n${DRYRUN} sed --follow-symlinks \"s/#LASTRUN: .*$/#LASTRUN: ${RUNDATE}/\" -i \"${subscriptions}\"\r\n
\r\n',30,0,1,'CC-BY-SA','youtube, youtube-dl',0,0,1),
(2720,'2019-01-04','Download youtube channels using the rss feeds',1447,'Ken shares a script that will allow you to quickly keep up to date on your youtube subscriptions','
\r\nI had a very similar problem to Ahuka aka Kevin, in hpr2675 :: YouTube Playlists. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted. \r\nSee previous episode hpr2710 :: Youtube downloader for channels.\r\n
\r\n
\r\nThe problem with the original script is that it needs to download and check each video in each channel and it can crawl to a halt on large channels like EEEVblog.\r\n
Subscribe: Subscriptions are the currency of YouTube creators so don\'t be afraid to create an account to subscribe to the creators. Here is my current subscription_manager.opml to give you some ideas.
\r\n
Export: Login to https://www.youtube.com/subscription_manager and at the bottom you will see the option to Export subscriptions. Save the file and alter the script to point to it.
\r\nThe first part allows you to define where you want to save your files. It also allows you to set what videos to skip based on length and strings in their titles.\r\n
\r\nNow we use the xmlstarlet tool to extract each of the urls and also the title. The title is just used to give some feedback, while the url needs to be stored for later. Now we have a complete list of all the current urls, in all the feeds. \r\n
\r\nThe main part of the script then counts the total so we can have some feedback while we are running it. It then pumps the list from the previous step into a loop which first checks to make sure we have not already downloaded it.\r\n
\r\nThe next part takes advantage of the youtube-dl --dump-json command which downloads all sorts of information about the video which we store to query later.\r\n
\r\nHaving the duration, we can skip long episodes.\r\n
\r\n
\r\n\r\n if [[ -z ${duration} || ${duration} -le 0 ]]\r\n then\r\n echo -e \"nError: The duration \"${length}\" is strange. \"${thisvideo}\".\"\r\n continue\r\n elif [[ ${duration} -ge ${maxlength} ]]\r\n then\r\n echo -e \"nFilter: You told me not to download titles over ${maxlength} seconds long \"${title}\", \"${thisvideo}\"\"\r\n continue\r\n fi\r\n
\r\n
\r\nOr videos that don\'t interest us.\r\n
\r\n
\r\n\r\n if [[ ! -z \"${skipcrap}\" && $( echo ${title} | egrep -i \"${skipcrap}\" | wc -l ) -ne 0 ]]\r\n then\r\n echo -e \"nSkipping: You told me not to download this stuff. ${uploader}: \"${title}\", \"${thisvideo}\"\"\r\n continue\r\n else\r\n echo -e \"n${uploader}: \"${title}\", \"${thisvideo}\"\"\r\n fi\r\n
\r\n
\r\nNow we have a filtered list of urls we do want to keep. These we also save the description in a text file with the video id if we want to refer to it later. \r\n
\r\nAnd finally we download the actual videos saving each channel in its own directory. The file names is first an ISO8601 date, then the title stored as ASCII with no space or ampersands. I then use a \"⋄\" as a delimiter before the video id.\r\n
\r\nNow you have a fast script that keeps you up to date with your feeds.\r\n
\r\n',30,0,1,'CC-BY-SA','youtube, youtube-dl, channels, playlists, xmlstarlet',0,0,1),
-(2693,'2018-11-28','Getting started with web based game in Haskell and Elm',1146,'First steps in writing 4x space exploration game','
Stack is a build tool for Haskell with focus on reproducible build plans, multi-package projects, and a consistent, easy-to-learn interface. With stack, one can create new project: stack new my-project yesod-sqlite (more in the quick start guide: https://www.yesodweb.com/page/quickstart)
\r\n\r\n
models is used to define shape of the data and Yesod uses it to generate datatypes and database for you. For example, to define a Star that has name, spectral type, luminosity class and link to StarSystem, one can write:
\r\n\r\n
\r\nStar json\r\n name Text\r\n starSystemId StarSystemId\r\n spectralType SpectralType\r\n luminosityClass LuminosityClass\r\n
\r\n\r\n
Custom types, like LuminosityClass, need mapping between datatype and database. In simple cases like this, Yesod can do that:\r\n\r\n
\r\ndata LuminosityClass = Iap | Ia | Iab | Ib | II | III | IV | V | VI | VII\r\n deriving (Show, Read, Eq)\r\nderivePersistField \"LuminosityClass\"\r\n
\r\n\r\n
The \"derivePersistField\" part is template haskell call that will generate mapping needed.
\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
-(2703,'2018-12-12','Fog of war in Yesod based game',1515,'How to implement fog of war system in turn based web game','
Duality of the universe: there\'s true state of the universe used in simulation and there\'s state the the players perceive. These most likely will always be in conflict. One possible solution is to separate these completely. Perform simulation in one system and record what players see in other.
\r\n\r\n
For every type of entity in the game, there\'s two sets of data: real and reported. Reports are tied to time and faction. Examples are given for planets. Thus, we have Planet, PlanetReport and CollatedPlanetReport. First is the real entity, second is report of that entity tied in time and faction. Third one is aggregated information a faction has of given entity. In database two first ones are:
\r\n\r\n
\r\nPlanet json\r\n name Text\r\n position Int\r\n starSystemId StarSystemId\r\n ownerId FactionId Maybe\r\n gravity Double\r\n SystemPosition starSystemId position\r\n deriving Show\r\n\r\nPlanetReport json\r\n planetId PlanetId\r\n ownerId FactionId Maybe\r\n starSystemId StarSystemId\r\n name Text Maybe\r\n position Int Maybe\r\n gravity Double Maybe\r\n factionId FactionId\r\n date Int\r\n deriving Show\r\n
Data from database need to be transformed before working on it. Usually it\'s 1:1 mapping, but sometimes it makes sense to enrich it (turning IDs into names for example). For this we use ReportTransform type class:
\r\n\r\n
\r\n-- | Class to transform a report stored in db to respective collated report\r\nclass ReportTransform a b where\r\n fromReport :: a -> b\r\n\r\ninstance ReportTransform PlanetReport CollatedPlanetReport where\r\n fromReport report =\r\n CollatedPlanetReport (planetReportPlanetId report)\r\n (planetReportStarSystemId report)\r\n (planetReportOwnerId report)\r\n (planetReportName report)\r\n (planetReportPosition report)\r\n (planetReportGravity report)\r\n (planetReportDate report)\r\n
\r\n\r\n
To easily combine bunch of collated reports together, we define instances\r\n of semigroup and monoid for collated report data.\r\n Semigroup defines an associative binary operation (<>) and monoid defines a zero or empty item (mempty). My explanation about Monoid and Semigroup were a bit rambling, so maybe have a look at https://wiki.haskell.org/Monoid which explains it in detail.
\r\n\r\n
\r\ninstance Semigroup CollatedPlanetReport where\r\n (<>) a b = CollatedPlanetReport (cprPlanetId a)\r\n (cprSystemId a)\r\n (cprOwnerId a <|> cprOwnerId b)\r\n (cprName a <|> cprName b)\r\n (cprPosition a <|> cprPosition b)\r\n (cprGravity a <|> cprGravity b)\r\n (max (cprDate a) (cprDate b))\r\n\r\ninstance Monoid CollatedPlanetReport where\r\n mempty = CollatedPlanetReport (toSqlKey 0) (toSqlKey 0) Nothing Nothing Nothing Nothing 0\r\n
\r\n\r\n
In some cases there might be a list of collated reports that are about different entities of same type (several reports for every planet in solar system). For those cases, we need a way to tell what reports belong together:
\r\n\r\n
\r\n-- | Class to indicate if two reports are about same entity\r\nclass Grouped a where\r\n sameGroup :: a -> a -> Bool\r\n\r\ninstance Grouped PlanetReport where\r\n sameGroup a b =\r\n planetReportPlanetId a == planetReportPlanetId b\r\n
\r\n\r\n
After this, processing a list of reports for same entity is short amount of very general code:
\r\n\r\n
\r\n-- | Combine list of reports and form a single collated report\r\n-- Resulting report will have facts from the possibly partially empty reports\r\n-- If a fact is not present for a given field, Nothing is left there\r\ncollateReport :: (Monoid a, ReportTransform b a) => [b] -> a\r\ncollateReport reports = mconcat (map fromReport reports)\r\n
\r\n\r\n
For reports of multiple entities is bit more complex, as they need to be sorted first, but the code is similarly general:
\r\n\r\n
\r\n-- | Combine list of reports and form a list of collated reports\r\n-- Each reported entity is given their own report\r\ncollateReports :: (Grouped b, Monoid a, ReportTransform b a) => [b] -> [a]\r\ncollateReports [] = []\r\ncollateReports s@(x:_) = collateReport itemsOfKind : collateReports restOfItems\r\n where split = span (sameGroup x) s\r\n itemsOfKind = fst split\r\n restOfItems = snd split\r\n
\r\n\r\n
Final step is to either render reports as HTML or send them as JSON back to client. For JSON case we need one more type class instance (ToJSON) that can be automatically generated. After that handler function can be defined. After authenticating the user and checking that they are member of a faction, reports of specific planet (defined by its primary key) are retrieved from database, collated, turned into JSON and sent back to client:
\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
-(2692,'2018-11-27','YouTube URL tricks',436,'URL tricks for YouTube to enhance viewing experience and an overview of my viewing methodology','
\r\n',371,0,0,'CC-BY-SA','YouTube,URL,Chrome,Roku,Smart TV',0,0,1),
-(2709,'2018-12-20','Bash Tips - 16',1440,'Arrays in Bash (part 1)','
Bash Tips - 16 (Further auxiliary Bash tips)
\r\n
Arrays in Bash
\r\n
This is the first of a small group of shows on the subject of arrays in Bash. It is also the sixteenth show in the Bash Tips sub-series.
\r\n
We have encountered Bash arrays at various points throughout this sub-series, and have even seen a number of examples, but the subject has never been examined in detail. This group of shows intends to make good this deficiency.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
-(2713,'2018-12-26','Resources in 4x game',1252,'One way to implement data types for raw resources in Haskell','
Raw resources are integral part for most 4x games. Here’s one way of modeling them in Haskell. I wanted a system that is easy to use, doesn’t require too much typing and is type safe.
\r\n
RawResource is basic building block:
\r\n
newtype RawResource a = RawResource { unRawResource :: Int }\r\n deriving (Show, Read, Eq)
\r\n
It can be parametrised with anything, but I’m using three different types:
\r\n
data Biological = Biological\r\ndata Mechanical = Mechanical\r\ndata Chemical = Chemical
\r\n
Example of defining harvest being 100 units of biological raw resources:
Raw resources are often manipulated (added and subtracted mostly). Defining Num instance allows us to use them as numbers:
\r\n
instance Num (RawResource t) where\r\n (+) (RawResource a) (RawResource b) = RawResource $ a + b\r\n (-) (RawResource a) (RawResource b) = RawResource $ a - b\r\n (*) (RawResource a) (RawResource b) = RawResource $ a * b\r\n abs (RawResource a) = RawResource $ abs a\r\n signum (RawResource a) = RawResource $ signum a\r\n fromInteger a = RawResource $ fromInteger a
Comparing size of two resource piles is common operation. Ord instance has methods we need for comparing:
\r\n
instance Ord (RawResource t) where\r\n (<=) (RawResource a) (RawResource b) = a <= b
\r\n
One function is enough, as rest is defined in terms of it. Sometimes (usually for reasons of optimization), one might want to define other functions too.
\r\n
Another way to add bunch of resources of same type together is defining Monoid instance:
\r\n
instance Semigroup (RawResource t) where\r\n (<>) a b = a + b\r\n\r\ninstance Monoid (RawResource t) where\r\n mempty = RawResource 0
\r\n
For example, combining harvests of many fields can be achieved as:
\r\n
harvests :: [RawResource Biological]\r\n harvests = [RawResource 20, RawResource 50, RawResource 25]\r\n\r\n total :: RawResource Biological\r\n total = mappend harvests
\r\n
All these functions keep track of type of resources being manipulated. Compiler will emit an error if two different types of resources are being mixed together.
\r\n
Raw resources are often grouped together for specific purpose. This again uses phantom types to keep track the intended usage:
And in order to be able to combine piles of RawResources, we’ll define Semigroup and Monoid instances. Notice how both instances make use of Semigroup and Monoid instances of RawResource:
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
-(2719,'2019-01-03','Bash Tips - 17',2056,'Arrays in Bash (part 2)','
Bash Tips - 17 (Additional auxiliary Bash tips)
\r\n
Arrays in Bash
\r\n
This is the second of a small group of shows on the subject of arrays in Bash. It is also the seventeenth show in the Bash Tips sub-series.
\r\n
In the last show we saw the two types of arrays, and learned about the multiple ways of creating them and populating them. We also looked at how array elements and entire arrays are accessed.
\r\n
Now we want to continue looking at array access and some of the various parameter expansion operations available.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
+(2693,'2018-11-28','Getting started with web based game in Haskell and Elm',1146,'First steps in writing 4x space exploration game','
Stack is a build tool for Haskell with focus on reproducible build plans, multi-package projects, and a consistent, easy-to-learn interface. With stack, one can create new project: stack new my-project yesod-sqlite (more in the quick start guide: https://www.yesodweb.com/page/quickstart)
\r\n\r\n
models is used to define shape of the data and Yesod uses it to generate datatypes and database for you. For example, to define a Star that has name, spectral type, luminosity class and link to StarSystem, one can write:
\r\n\r\n
\r\nStar json\r\n name Text\r\n starSystemId StarSystemId\r\n spectralType SpectralType\r\n luminosityClass LuminosityClass\r\n
\r\n\r\n
Custom types, like LuminosityClass, need mapping between datatype and database. In simple cases like this, Yesod can do that:\r\n\r\n
\r\ndata LuminosityClass = Iap | Ia | Iab | Ib | II | III | IV | V | VI | VII\r\n deriving (Show, Read, Eq)\r\nderivePersistField \"LuminosityClass\"\r\n
\r\n\r\n
The \"derivePersistField\" part is template haskell call that will generate mapping needed.
\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
+(2703,'2018-12-12','Fog of war in Yesod based game',1515,'How to implement fog of war system in turn based web game','
Duality of the universe: there\'s true state of the universe used in simulation and there\'s state the the players perceive. These most likely will always be in conflict. One possible solution is to separate these completely. Perform simulation in one system and record what players see in other.
\r\n\r\n
For every type of entity in the game, there\'s two sets of data: real and reported. Reports are tied to time and faction. Examples are given for planets. Thus, we have Planet, PlanetReport and CollatedPlanetReport. First is the real entity, second is report of that entity tied in time and faction. Third one is aggregated information a faction has of given entity. In database two first ones are:
\r\n\r\n
\r\nPlanet json\r\n name Text\r\n position Int\r\n starSystemId StarSystemId\r\n ownerId FactionId Maybe\r\n gravity Double\r\n SystemPosition starSystemId position\r\n deriving Show\r\n\r\nPlanetReport json\r\n planetId PlanetId\r\n ownerId FactionId Maybe\r\n starSystemId StarSystemId\r\n name Text Maybe\r\n position Int Maybe\r\n gravity Double Maybe\r\n factionId FactionId\r\n date Int\r\n deriving Show\r\n
Data from database need to be transformed before working on it. Usually it\'s 1:1 mapping, but sometimes it makes sense to enrich it (turning IDs into names for example). For this we use ReportTransform type class:
\r\n\r\n
\r\n-- | Class to transform a report stored in db to respective collated report\r\nclass ReportTransform a b where\r\n fromReport :: a -> b\r\n\r\ninstance ReportTransform PlanetReport CollatedPlanetReport where\r\n fromReport report =\r\n CollatedPlanetReport (planetReportPlanetId report)\r\n (planetReportStarSystemId report)\r\n (planetReportOwnerId report)\r\n (planetReportName report)\r\n (planetReportPosition report)\r\n (planetReportGravity report)\r\n (planetReportDate report)\r\n
\r\n\r\n
To easily combine bunch of collated reports together, we define instances\r\n of semigroup and monoid for collated report data.\r\n Semigroup defines an associative binary operation (<>) and monoid defines a zero or empty item (mempty). My explanation about Monoid and Semigroup were a bit rambling, so maybe have a look at https://wiki.haskell.org/Monoid which explains it in detail.
\r\n\r\n
\r\ninstance Semigroup CollatedPlanetReport where\r\n (<>) a b = CollatedPlanetReport (cprPlanetId a)\r\n (cprSystemId a)\r\n (cprOwnerId a <|> cprOwnerId b)\r\n (cprName a <|> cprName b)\r\n (cprPosition a <|> cprPosition b)\r\n (cprGravity a <|> cprGravity b)\r\n (max (cprDate a) (cprDate b))\r\n\r\ninstance Monoid CollatedPlanetReport where\r\n mempty = CollatedPlanetReport (toSqlKey 0) (toSqlKey 0) Nothing Nothing Nothing Nothing 0\r\n
\r\n\r\n
In some cases there might be a list of collated reports that are about different entities of same type (several reports for every planet in solar system). For those cases, we need a way to tell what reports belong together:
\r\n\r\n
\r\n-- | Class to indicate if two reports are about same entity\r\nclass Grouped a where\r\n sameGroup :: a -> a -> Bool\r\n\r\ninstance Grouped PlanetReport where\r\n sameGroup a b =\r\n planetReportPlanetId a == planetReportPlanetId b\r\n
\r\n\r\n
After this, processing a list of reports for same entity is short amount of very general code:
\r\n\r\n
\r\n-- | Combine list of reports and form a single collated report\r\n-- Resulting report will have facts from the possibly partially empty reports\r\n-- If a fact is not present for a given field, Nothing is left there\r\ncollateReport :: (Monoid a, ReportTransform b a) => [b] -> a\r\ncollateReport reports = mconcat (map fromReport reports)\r\n
\r\n\r\n
For reports of multiple entities is bit more complex, as they need to be sorted first, but the code is similarly general:
\r\n\r\n
\r\n-- | Combine list of reports and form a list of collated reports\r\n-- Each reported entity is given their own report\r\ncollateReports :: (Grouped b, Monoid a, ReportTransform b a) => [b] -> [a]\r\ncollateReports [] = []\r\ncollateReports s@(x:_) = collateReport itemsOfKind : collateReports restOfItems\r\n where split = span (sameGroup x) s\r\n itemsOfKind = fst split\r\n restOfItems = snd split\r\n
\r\n\r\n
Final step is to either render reports as HTML or send them as JSON back to client. For JSON case we need one more type class instance (ToJSON) that can be automatically generated. After that handler function can be defined. After authenticating the user and checking that they are member of a faction, reports of specific planet (defined by its primary key) are retrieved from database, collated, turned into JSON and sent back to client:
\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
+(2692,'2018-11-27','YouTube URL tricks',436,'URL tricks for YouTube to enhance viewing experience and an overview of my viewing methodology','
\r\n',371,0,0,'CC-BY-SA','YouTube,URL,Chrome,Roku,Smart TV',0,0,1),
+(2709,'2018-12-20','Bash Tips - 16',1440,'Arrays in Bash (part 1)','
Bash Tips - 16 (Further auxiliary Bash tips)
\r\n
Arrays in Bash
\r\n
This is the first of a small group of shows on the subject of arrays in Bash. It is also the sixteenth show in the Bash Tips sub-series.
\r\n
We have encountered Bash arrays at various points throughout this sub-series, and have even seen a number of examples, but the subject has never been examined in detail. This group of shows intends to make good this deficiency.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
+(2713,'2018-12-26','Resources in 4x game',1252,'One way to implement data types for raw resources in Haskell','
Raw resources are integral part for most 4x games. Here’s one way of modeling them in Haskell. I wanted a system that is easy to use, doesn’t require too much typing and is type safe.
\r\n
RawResource is basic building block:
\r\n
newtype RawResource a = RawResource { unRawResource :: Int }\r\n deriving (Show, Read, Eq)
\r\n
It can be parametrised with anything, but I’m using three different types:
\r\n
data Biological = Biological\r\ndata Mechanical = Mechanical\r\ndata Chemical = Chemical
\r\n
Example of defining harvest being 100 units of biological raw resources:
Raw resources are often manipulated (added and subtracted mostly). Defining Num instance allows us to use them as numbers:
\r\n
instance Num (RawResource t) where\r\n (+) (RawResource a) (RawResource b) = RawResource $ a + b\r\n (-) (RawResource a) (RawResource b) = RawResource $ a - b\r\n (*) (RawResource a) (RawResource b) = RawResource $ a * b\r\n abs (RawResource a) = RawResource $ abs a\r\n signum (RawResource a) = RawResource $ signum a\r\n fromInteger a = RawResource $ fromInteger a
Comparing size of two resource piles is common operation. Ord instance has methods we need for comparing:
\r\n
instance Ord (RawResource t) where\r\n (<=) (RawResource a) (RawResource b) = a <= b
\r\n
One function is enough, as rest is defined in terms of it. Sometimes (usually for reasons of optimization), one might want to define other functions too.
\r\n
Another way to add bunch of resources of same type together is defining Monoid instance:
\r\n
instance Semigroup (RawResource t) where\r\n (<>) a b = a + b\r\n\r\ninstance Monoid (RawResource t) where\r\n mempty = RawResource 0
\r\n
For example, combining harvests of many fields can be achieved as:
\r\n
harvests :: [RawResource Biological]\r\n harvests = [RawResource 20, RawResource 50, RawResource 25]\r\n\r\n total :: RawResource Biological\r\n total = mappend harvests
\r\n
All these functions keep track of type of resources being manipulated. Compiler will emit an error if two different types of resources are being mixed together.
\r\n
Raw resources are often grouped together for specific purpose. This again uses phantom types to keep track the intended usage:
And in order to be able to combine piles of RawResources, we’ll define Semigroup and Monoid instances. Notice how both instances make use of Semigroup and Monoid instances of RawResource:
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
+(2719,'2019-01-03','Bash Tips - 17',2056,'Arrays in Bash (part 2)','
Bash Tips - 17 (Additional auxiliary Bash tips)
\r\n
Arrays in Bash
\r\n
This is the second of a small group of shows on the subject of arrays in Bash. It is also the seventeenth show in the Bash Tips sub-series.
\r\n
In the last show we saw the two types of arrays, and learned about the multiple ways of creating them and populating them. We also looked at how array elements and entire arrays are accessed.
\r\n
Now we want to continue looking at array access and some of the various parameter expansion operations available.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
(2694,'2018-11-29','Bandit Update',699,'NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.','
(No Spoilers)
\r\n
NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.
\r\n',235,0,0,'CC-BY-SA','Hacking, War games, Linux',0,0,1),
(2697,'2018-12-04','The Linux Shutdown Command Explained',402,'A short pod cast about the linux shutdown command','
\r\nA short podcast about the shutdown command \r\n
',129,0,0,'CC-BY-SA','Linux,shutdown',0,0,1),
(2698,'2018-12-05','XSV for fast CSV manipulations - Part 1',1837,'Written in Rust, xsv is my new favorite tool for manipulating csv files','
XSV for fast CSV manipulations - Part 1: Basic Usage
xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:
\r\n\r\n
Simple tasks should be easy.
\r\n
Performance trade offs should be exposed in the CLI interface.
\r\n
Composition should not come at the expense of performance.
\r\n\r\n
We will be using the CSV file provided in the documentation.
\r\n
Commands covered in this episode
\r\n
\r\n
count - Count the rows of CSV data
\r\n
headers - Show the headers of CSV data, or show the intersection of all headers between many CSV files
\r\n
index - Create an index for a CSV file. This is very quick and provides constant time indexing into the CSV file.
\r\n
frequency - Build frequency tables of each column in CSV data.
\r\n
stats - Show basic types and statistics of each column in the CSV file. (i.e., mean, standard deviation, median, range, etc.)
\r\n
sort - Sort CSV data
\r\n
select - Select or re-order columns from CSV data.
\r\n
slice - Slice rows from any part of a CSV file. When an index is present, this only has to parse the rows in the slice (instead of all rows leading up to the start of the slice).
\r\n
search - Run a regex over CSV data. Applies the regex to each field individually and shows only matching rows.
\r\n
table - Show aligned output of any CSV data using elastic tabstops.
\r\n
flatten - A flattened view of CSV records. Useful for viewing one record at a time.
\r\n
\r\n',300,0,0,'CC-BY-SA','CSV,XSV',0,0,1),
@@ -19025,8 +19145,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2715,'2018-12-28','About ONAP',618,'The Linux foundations ONAP project all about it','
So I went to the open networking trade show sponsored by the Linux Foundation with Ken Fallon’s help.
',129,0,0,'CC-BY-SA','SAP HANA,certification',0,0,1),
-(3001,'2020-02-03','HPR Community News for January 2020',2649,'HPR Volunteers Dave and Ken talk about shows released and comments posted in January 2020','\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 9 comments in total.
Comment 1:\nClaudioM on 2020-01-31:\n\"Wow...just, WOW!\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: Windigo, Dave Morriss
\n
Over the period tags and/or summaries have been added to 9 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3021,'2020-03-02','HPR Community News for February 2020',3272,'Call for shows is open. Ken and eventually Dave discuss the shows, media and development plans.','\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 16 comments in total.
Comment 1:\ncrvs on 2020-02-24:\n\"So that\'s how you use shebangs!\"
Comment 2:\nDave Morriss on 2020-02-24:\n\"Writing awk scripts\"
\n
hpr3014\n(2020-02-20) \"A Headless Raspberry Pi Streaming Radio\"\nby Jon Kulp.
\n
\n
Comment 1:\nb-yeezi on 2020-02-20:\n\"Trying this tonight\"
Comment 2:\nJon Kulp on 2020-02-20:\n\"Still Streaming with URL Update\"
Comment 3:\nb-yeezi on 2020-02-20:\n\"Issue with mpg123\"
Comment 4:\nJon Kulp on 2020-02-21:\n\"HTTP not HTTPS\"
\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3001,'2020-02-03','HPR Community News for January 2020',2649,'HPR Volunteers Dave and Ken talk about shows released and comments posted in January 2020','\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 9 comments in total.
Comment 1:\nClaudioM on 2020-01-31:\n\"Wow...just, WOW!\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: Windigo, Dave Morriss
\n
Over the period tags and/or summaries have been added to 9 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3021,'2020-03-02','HPR Community News for February 2020',3272,'Call for shows is open. Ken and eventually Dave discuss the shows, media and development plans.','\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 16 comments in total.
Comment 1:\ncrvs on 2020-02-24:\n\"So that\'s how you use shebangs!\"
Comment 2:\nDave Morriss on 2020-02-24:\n\"Writing awk scripts\"
\n
hpr3014\n(2020-02-20) \"A Headless Raspberry Pi Streaming Radio\"\nby Jon Kulp.
\n
\n
Comment 1:\nb-yeezi on 2020-02-20:\n\"Trying this tonight\"
Comment 2:\nJon Kulp on 2020-02-20:\n\"Still Streaming with URL Update\"
Comment 3:\nb-yeezi on 2020-02-20:\n\"Issue with mpg123\"
Comment 4:\nJon Kulp on 2020-02-21:\n\"HTTP not HTTPS\"
\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2707,'2018-12-18','Steganalysis 101',864,'Steganalysis is the process of identifying the presence of, and decrypting, steganography.','
1. Introduction
\r\n
Hello and welcome to Hacker Public Radio, I’m Edward Miro and I’ve been a fan of HPR for a while now and really love its collaborative and random nature. It’s always been important for me to support the hacking community. I always take any opportunity to give back to this community who have given me so much throughout the years. I’ve also always subscribed to the idea that the best way to learn something is by teaching and I hope to do a good job for all you listeners. This talk is on mystical art of steganalysis which is the process of identifying the presence of and decrypting (hopefully) steganography.
\r\n
2. What is steganography?
\r\n
I’m into hacking, but I’m not a professional hacker. Usually I call myself a hobbyist. I like CTFs, crypto challenges, lots of stuff from Vulnhub or OverTheWire, things like that. I’ll provide some links in the end if anyone is interested, but for those who aren’t familiar a CTF, or Capture The Flag, it’s a kind of game that helps you get better at hacking. These days there are tons of VMs that are setup to be intentionally vulnerable to different techniques or attacks. You load the VM and pretend it’s a server you want to attack and follow your standard hacking protocols. Some are setup to be boot to root challenges where you ‘win’ when you get root and some are setup with flags that you can find hidden in the target worth points. There are in person and online CTFs and they’ve gotten pretty popular with the National Cyber League being a major competition. Some are easy, some are really hard and most have really good write-ups that can teach you so much about INFOSEC, penetration testing and actually let you practice the techniques in a relatively easy and legal way.
\r\n
Where steganography comes in to this discussion is that it’s an element you sometimes see used in the kinds of challenges I mentioned previously and also in alternate reality games, online recruitment challenges by national agencies/big tech companies and militarys. They are even used in real world espionage and intelligence work or super spooky secret challenges like Cicada 3301.
\r\n
Simply put steganography (and I’m pasting this straight out of Wikipedia): “is the practice of concealing a file, message, image, or video within another file, message, image, or video”. Steganography is used to hide secrets in plain sight. It’s a way to send a message, without anyone detecting that a message is even being sent.
\r\n
I’ll give you more examples in the next section, but imagine a letter that has a secret written in invisible ink. Only the sender and receiver should know about the invisible ink and any eavesdroppers should be none the wiser. This simple example has been used by countless prisoners whose mail is routinely read and examined. Terrorists and spies the world over also use steganography and are known to embed messages in an image and post it online. With how many image hosting sites there are, with millions of people posting to them billions of images day in and day out, you can see why steganography can be such a challenge to combat. Before I move on to some more specific examples I want to stress again that I’m not an expert on cryptography or steganography. While researching for this podcast it’s overwhelmingly clear that you could spend your whole career focused on only steganography. This talk is just a primer on the subject and only the tip of the iceberg.
\r\n
3. Examples (also from Wikipedia, the great repository of all knowledge)
\r\n
\r\n
Analog:\r\n
\r\n
Head shaving
\r\n
Invisible ink
\r\n
Knots tied into ropes
\r\n
Messages hidden under stamps on envelopes
\r\n
Mixed typeface
\r\n
Using a grille cipher
\r\n
Sending messages via newspaper classifieds
\r\n
\r\n
Digital:\r\n
\r\n
Noise in images or sound files
\r\n
Text commented out in source html or other code
\r\n
Using different color text
\r\n
Fractionalized comments
\r\n
Audio signals/spectro
\r\n
Hidden control characters and non printing Unicode
\r\n
\r\n
\r\n
The possibilities are almost endless for how this technique can be applied.
\r\n
4. Why should we care?
\r\n
When we are doing a CTF or crypto challenge and are presented with an image or media file we are pretty well assured there’s something in there, though not every image you find while doing a challenge or CTF will utilize steganography so don’t overanalyze. I’ve known people who are really into alternate reality games spending 100s of hours doing spectrographic analysis and for our purpose(and the scope of this podcast), there should be some clue that steganography is being used. The challenge then becomes how we direct our work flow as to not waste any time and be the most efficient in cracking that particular part the puzzle. There are MANY stego tools out there, some of them homebrewed, and unless the designer of the challenge puts in a clue, you might spend hours trying different algorithms or tools. And even if you do, there’s no guarantee you’ll get anything at all. A lot of the tools that will be mentioned in the next section rely on fingerprinting how known algorithms process data. This is not only a big problem for hackers like us with our CTFs and games, but even more so for governments who are charged with keeping us safe. So if you’re looking at possible steganography, you need to build a good workflow and I noticed a post on Reddit a few weeks ago with a user asking about image forensics. There was a comment posted that was so good I forwarded it to my hacking friends and it inspired me to do this podcast. I’m using the comment as a potential framework for my own personal work with images and steganography. It helped me to develop my own protocol and I wanted to share it with you all and if anyone wants to expand on it or improve it please do so. Thank you /u/Alexeyan!
\r\n
5. Proposed work flow
\r\n
This is coming straight out of the post on Reddit. I thought about rewriting it, but it didn’t seem necessary and I will be giving the author full credit. I add a couple more tools on at the bottom and a few closing thoughts:
\r\n
\r\n
First: Look at the image. Maybe it tells you something important.
\r\n
Use binwalk to check for other file type signatures in the image file.
\r\n
Use Exiftool to check for any interesting exif-metadata.
\r\n
Use stegsolve and switch through the layers and look for abnormalities.
\r\n
Maybe the Flag is painted in the LSB image, or some QR-Code.
\r\n
Maybe there are random pixels that look strange in a certain layer, that’s a hint for Bit-Stego.
\r\n
Use zsteg to automatically test the most common bitstegos and sort by %ascii-in-results. (This one auto-solves about 50% of all image stego challenges)
\r\n
If the file is a png, you can check if the IDAT chunks are all correct and correctly ordered.
\r\n
Check with the strings tool for parts of the flag. If you found for example “CTF{W” in a chunk, check what is on that position in other IDAT chunks.
\r\n
The harder ones can be a lot more tricky though.. JPG coefficiency manipulation, Frequency analysis, …
\r\n
But usually those are frowned upon, because they require a lot of guessing (if no hiding tool is provided)
\r\n
\r\n
Some other go to tools not mentioned above:
\r\n
\r\n
Stegdetect
\r\n
DIIT(Digital Invisible Ink Toolkit )
\r\n
StegSecret
\r\n
ILook Investigator (for law enforcement)
\r\n
\r\n
Detecting steganography is hard work. There are computer scientists who do only this. While we aren’t at that level for the information being presented here, it will require a lot of digging and trying different tools. Hopefully following these steps will help identify the more common techniques in an easier way than trial and error.
\r\n
One last thing I want to mention is that part of how I see detecting steganography in CTFs or cyptochallenges is having a certain mindset and always looking at things in various layers. I try to look at everything within the challenge as if there could be something right in front of my eyes. I mentally flip through different layers and see the codes within the codes. And remember if you’re playing an alternate reality game, a CTF or a crypto challenge, generally speaking, the designers want you to play through the game. They will leave clues if you need them. They want the players to get to the end. Don’t overthink things.
\r\n
Well that’s all I’ve got for today. I hope you enjoyed this podcast and got something useful out of it. Like I said in the introduction, I’m Edward Miro. Have fun, and good luck!
\r\n',372,0,0,'CC-BY-SA','Steganalysis, steganography',0,0,1),
(2704,'2018-12-13','Intro to Scribus',2380,'Klaatu provides an overview of Scribus in part 1 of a mini-series about steganography','
Scribus is a page layout application. If you are familiar with common publishing industry tools, then Scribus will be very familiar to you, but if you\'re used to word processors or graphic applications, then Scribus will probably confuse you. In this episode, Klaatu talks about the workflow of page layout, and how to do some basic tasks in Scribus.\r\n
Fair warning: this episode is actually \"about\" steganography. The key you need is OGG.
',78,74,0,'CC-BY-SA','design, steganography, scribus, layout',0,0,1),
(2706,'2018-12-17','Why I love the IBM AS/400 computer systems',1714,'A short talk about how I came to love the IBM As/400 systems and why.','
This is a talk about my love for the IBM family of AS/400 computer systems.
\r\n
Although it’s a very hacker unfriendly system there is still much to admire and love.
\r\n
It’s completely different from anything else which makes it nice but also very likely to disappear in few years from now. To prevent that piece of computing history to vanish I started a small initiative called https://www.as400museum.org/. It’s just me, but it does show my intention with the system.
\r\n',369,0,1,'CC-BY-SA','as400, ibm, computing, midrange',0,0,1),
@@ -19036,16 +19156,16 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2714,'2018-12-27','Airplane stalls and Angle of Attack',995,'A primer on why airplanes quit flying','
stalls, a primer on why aircraft fly, and don’t fly
\r\n
YouTube video of stall with narration (35 seconds)
chord - an imaginary line from the front of the wing to the back
\r\n
relative wind - movement of air relative to the chord
\r\n
angle of attack - the angle of the chord of the wing to the relative wind
\r\n
stall - a condition where the air on the top of the wing is not flowing smoothly over the wing
\r\n
critical angle of attack - the angle that the wing becomes stalled
\r\n
fun - stalling and spinning and aircraft when its safe to do so
\r\n
scary - stalling and spinning and aircraft when you don’t want to
\r\n
\r\n
Things not mentioned
\r\n
This discussion pertained to subsonic speeds, super sonic flight introduces a whole other realm of issues.
\r\n
The wings of aircraft do not stall all at once. They are designed (usually) to stall from the wing root (where the wing is attached to the fuselage) towards the tips. This ensures good roll control at slow speed and into the stall. This stalling characteristic is achieved by designing twist in the wing (washout) allowing different parts of the wing to hit the critical angle of attack at different times.
\r\n
The most dangerous situation that you can find yourself in is a low altitude situation where one wing is stalled more than the other. The airplane then enters a spin. The dangerous part is the low altitude. Spins are fun, and the plane is still controllable, but you need altitude to recover. A wise man told me when turning low to the ground keep your nose down and speed up.
\r\n
Most light aircraft will shudder or buffet as you approach the critical angle of attack this happens because of the disturbed airflow hitting the aircraft’s fuselage or tail. In larger aircraft no (i.e. airliners) no feel is given naturally as the plane approaches a stalled condition so systems like stick shakers vibrate the control artificially as you approach the critical angle of attack as measured by the AoA sensors. DC-9 stick shaker, a big cell phone vibrator artificial stall warning is mandatory in fly-by-wire aircraft (i.e. Airbus, f-16) as well as pure hydraulic controls (i.e. Boeing 757)
\r\n
Author: Brian \r\nCreated: 2018-12-01 Sat 07:34 \r\nEmacs 25.3.1 (Org mode 8.2.10)
\r\n',326,0,0,'CC-BY-SA','aircraft,flight,stall',0,0,1),
(2760,'2019-03-01','What is VNF',445,'A topic from the Open Networking conference in Amsterdam','
',129,61,0,'CC-BY-SA','Virtual network function,VNF,network functions virtualization,NFV',0,0,1),
(2785,'2019-04-05','What is uCPE',399,'A short talk on telco networking standards','
',129,0,1,'CC-BY-SA','Network Function Virtualization,NFV,Universal customer premises equipment,uCPE',0,0,1),
-(2729,'2019-01-17','Bash Tips - 18',1898,'Arrays in Bash (part 3)','
Bash Tips - 18 (Extra auxiliary Bash tips)
\r\n
Arrays in Bash
\r\n
This is the third of a small group of shows on the subject of arrays in Bash. It is also the eighteenth show in the Bash Tips sub-series.
\r\n
In the last show we looked at ways of accessing elements with negative indices and how to concatenate arrays. We then launched into parameter expansion in the context of arrays.
\r\n
There are a few more parameter expansion operations to look at in this episode, then in the next episode we will look in more depth at the declare built in command and at some of the commands that assist with loading data into arrays.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
This is the third of a small group of shows on the subject of arrays in Bash. It is also the eighteenth show in the Bash Tips sub-series.
\r\n
In the last show we looked at ways of accessing elements with negative indices and how to concatenate arrays. We then launched into parameter expansion in the context of arrays.
\r\n
There are a few more parameter expansion operations to look at in this episode, then in the next episode we will look in more depth at the declare built in command and at some of the commands that assist with loading data into arrays.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array,parameter expansion',0,0,1),
(2724,'2019-01-10','Using a DIN Rail to mount a Raspberry Pi',549,'I created DIN rail fittings for attaching my RPi 3B+ and an SSD disk','
Overview
\r\n
A DIN Rail is a metal rail for mounting pieces of electrical equipment inside an equipment rack, for performing tasks in a building, in a machine, and so forth. It’s common to see DIN rails holding circuit breakers for example.
A number of people in the Maker Community have made use of these rails, and there are a number of freely available designs for stands that can be 3D printed on which you can mount these rails. There are also designs for mounts onto which devices like Raspberry Pis and disks can be fitted and attached to a rail.
\r\n
This show will recount my experiences with creating a compact mounting system for one of my Raspberry Pi systems. I had the help of my son and his girlfriend in 3D printing the parts for this project.
\r\n
Long notes
\r\n
I have provided detailed notes and pictures for this episode, and these can be viewed here.
\r\n',225,0,1,'CC-BY-SA','3D printing,DIN rail,Raspberry Pi',0,0,1),
-(2723,'2019-01-09','Using Elm in context of 4X game client',2671,'tuturto talks their decisions on structuring Elm application','
Original idea I had with my toy game project was to have Yesod render most of the user interface as static HTML and have as little client side scripting as possible. Later I realized that there would be parts with significant amount of client side code and it might be better if whole site was written in Elm.
\r\n
Couple goals I had in my mind when I started this:
\r\n
\r\n
easy to work with
\r\n
type safe
\r\n
extensible
\r\n
user authorization\r\n
\r\n
regular player
\r\n
administrator
\r\n
\r\n
\r\n
Backend is written in Haskell and front end in Elm. Communication between them is via REST interface and most of the data is in JSON. All JSON encoding / decoding is centralized (more or less), same with initiating requests to server.
\r\n
API Endpoints
\r\n
End points used for REST calls are defined in single data type that captures their name and parameters. These are used when initiating requests, meaning there’s smaller chance of typo slipping through.
GET Request is sent to ApiConstructionQueue endpoint and it has planetId as parameter. When server sends response, our program will parse content of it will be a list that is parsed with constructionDecoder and create “ApiMsgCompleted ConstructionsReceived” message with result of the parsing. Update function will process this and store list of constructions somewhere safe for further use.
\r\n
Update function
\r\n
Update function is in charge of reacting to messages (mouse clicks, page changes, responses from server). In a large program update function will quickly get big and unwieldy. Breaking it into smaller pieces (per page for example), will make maintenance easier. This way each page has their own message type and own update function to handle it. In addition there’s few extra ones (cleaning error display, processing API messages and reacting to page changes).
\r\n
Same way as API end points are encoded in a type, pages are too:
Because mapping needs to be bi-directional (Route used to define content of a href and string from a href used to define Route), there’s mapping to other direction too:
\r\n
routes : Parser (Route -> a) a\r\nroutes =\r\n oneOf\r\n [ map HomeR top\r\n , map ProfileR (s "profile")\r\n , map ResearchR (s "research")\r\n , map StarSystemsR (s "starsystem")\r\n , map StarSystemR (s "starsystem" </> starSystemId)\r\n , map PlanetR (s "starsystem" </> starSystemId </> planetId)\r\n , map BasesR (s "base")\r\n , map FleetR (s "fleet")\r\n , map DesignerR (s "designer")\r\n , map ConstructionR (s "construction")\r\n , map MessagesR (s "message")\r\n , map AdminR (s "admin")\r\n , map LogoutR (s "logout")\r\n]
\r\n
Result of parsing is Maybe Route, meaning that failure will return Nothing. Detecting and handling this is responsibility of the calling code, usually I just default to HomeR.
\r\n
Breadcrumbs
\r\n
Borrowing from Yesod, client uses recursive function to define breadcrumb path. This is hierarchical view of current location in the application, allowing user to quickly navigate backwards where they came.
\r\n
Breadcrumb path consists of segments that are tuple of (String, Maybe Route). String tells text to display and Route is possible parent route of the segment. This allows hierarchical definition: “Home / Star systems / Sol / Earth”. Because route has only (for example) PlanetId, we need to pass Model too, so that the data retrieved from server can be used to figure out what name such a planet has.
\r\n
{-| Build complete breadcrumb path and wrap it in enclosing HTML\r\n-}\r\nbreadcrumbPath : Model -> Html Msg\r\n\r\n{-| Recursively build list of breadcrumbs from segments\r\nLast one is plain text, while parents of it are links\r\n-}\r\nbreadcrumb : Model -> Bool -> Route -> List (Html Msg)\r\n\r\n{-| Get segment of given route in form of ( String, Maybe Route )\r\nString denotes text describing the segment, Maybe Route is possible parent\r\n-}\r\nsegment : Model -> Route -> ( String, Maybe Route )
\r\n',364,0,0,'CC-BY-SA','elm',0,0,1),
+(2723,'2019-01-09','Using Elm in context of 4X game client',2671,'Tuula talks their decisions on structuring Elm application','
Original idea I had with my toy game project was to have Yesod render most of the user interface as static HTML and have as little client side scripting as possible. Later I realized that there would be parts with significant amount of client side code and it might be better if whole site was written in Elm.
\r\n
Couple goals I had in my mind when I started this:
\r\n
\r\n
easy to work with
\r\n
type safe
\r\n
extensible
\r\n
user authorization\r\n
\r\n
regular player
\r\n
administrator
\r\n
\r\n
\r\n
Backend is written in Haskell and front end in Elm. Communication between them is via REST interface and most of the data is in JSON. All JSON encoding / decoding is centralized (more or less), same with initiating requests to server.
\r\n
API Endpoints
\r\n
End points used for REST calls are defined in single data type that captures their name and parameters. These are used when initiating requests, meaning there’s smaller chance of typo slipping through.
GET Request is sent to ApiConstructionQueue endpoint and it has planetId as parameter. When server sends response, our program will parse content of it will be a list that is parsed with constructionDecoder and create “ApiMsgCompleted ConstructionsReceived” message with result of the parsing. Update function will process this and store list of constructions somewhere safe for further use.
\r\n
Update function
\r\n
Update function is in charge of reacting to messages (mouse clicks, page changes, responses from server). In a large program update function will quickly get big and unwieldy. Breaking it into smaller pieces (per page for example), will make maintenance easier. This way each page has their own message type and own update function to handle it. In addition there’s few extra ones (cleaning error display, processing API messages and reacting to page changes).
\r\n
Same way as API end points are encoded in a type, pages are too:
Because mapping needs to be bi-directional (Route used to define content of a href and string from a href used to define Route), there’s mapping to other direction too:
\r\n
routes : Parser (Route -> a) a\r\nroutes =\r\n oneOf\r\n [ map HomeR top\r\n , map ProfileR (s "profile")\r\n , map ResearchR (s "research")\r\n , map StarSystemsR (s "starsystem")\r\n , map StarSystemR (s "starsystem" </> starSystemId)\r\n , map PlanetR (s "starsystem" </> starSystemId </> planetId)\r\n , map BasesR (s "base")\r\n , map FleetR (s "fleet")\r\n , map DesignerR (s "designer")\r\n , map ConstructionR (s "construction")\r\n , map MessagesR (s "message")\r\n , map AdminR (s "admin")\r\n , map LogoutR (s "logout")\r\n]
\r\n
Result of parsing is Maybe Route, meaning that failure will return Nothing. Detecting and handling this is responsibility of the calling code, usually I just default to HomeR.
\r\n
Breadcrumbs
\r\n
Borrowing from Yesod, client uses recursive function to define breadcrumb path. This is hierarchical view of current location in the application, allowing user to quickly navigate backwards where they came.
\r\n
Breadcrumb path consists of segments that are tuple of (String, Maybe Route). String tells text to display and Route is possible parent route of the segment. This allows hierarchical definition: “Home / Star systems / Sol / Earth”. Because route has only (for example) PlanetId, we need to pass Model too, so that the data retrieved from server can be used to figure out what name such a planet has.
\r\n
{-| Build complete breadcrumb path and wrap it in enclosing HTML\r\n-}\r\nbreadcrumbPath : Model -> Html Msg\r\n\r\n{-| Recursively build list of breadcrumbs from segments\r\nLast one is plain text, while parents of it are links\r\n-}\r\nbreadcrumb : Model -> Bool -> Route -> List (Html Msg)\r\n\r\n{-| Get segment of given route in form of ( String, Maybe Route )\r\nString denotes text describing the segment, Maybe Route is possible parent\r\n-}\r\nsegment : Model -> Route -> ( String, Maybe Route )
\r\n',364,0,0,'CC-BY-SA','elm',0,0,1),
(2803,'2019-05-01','Update on my Raspi 3 B OpenMedia Vault and Next Cloud instances',449,'A short podcast on how my little home servers are working or not','
I use a Toshiba 4TB non-powered drive external usb 3 drive.
\r\n',129,0,1,'CC-BY-SA','Raspberry Pi,NextCloud,openmediavault',0,0,1),
(2716,'2018-12-31','Really Simple YouTube',441,'Thaj explains how he makes YouTube come to him using RSS feeds','
Here are the two links I mentioned that let you pull RSS feeds out of YouTube
\r\n',270,0,0,'CC-BY-SA','RSS, YouTube, PeerTube, TInyTinyRSS, Internet Video',0,0,1),
-(2739,'2019-01-31','Bash Tips - 19',1553,'Arrays in Bash (part 4)','
Arrays in Bash (Supplemental auxiliary Bash tips)
\r\n
This is the fourth and last of a small group of shows on the subject of arrays in Bash. It is also the nineteenth show in the Bash Tips sub-series.
\r\n
In the last show we continued with the subject of parameter expansion in the context of arrays. There are other aspects of this that could be looked at, but we’ll leave it for the moment and may revisit it in the future.
\r\n
In this episode we will look in more depth at the declare (typeset) built in command and at some commands that are related (readonly and local), We will also look at the commands that assist with loading data into arrays: mapfile (readarray) and read.
\r\n
Long notes
\r\n
As usual I have provided detailed notes and examples for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,declare,typeset,local,readonly,read,mapfile,readarray',0,0,1),
+(2739,'2019-01-31','Bash Tips - 19',1553,'Arrays in Bash (part 4)','
Arrays in Bash (Supplemental auxiliary Bash tips)
\r\n
This is the fourth and last of a small group of shows on the subject of arrays in Bash. It is also the nineteenth show in the Bash Tips sub-series.
\r\n
In the last show we continued with the subject of parameter expansion in the context of arrays. There are other aspects of this that could be looked at, but we’ll leave it for the moment and may revisit it in the future.
\r\n
In this episode we will look in more depth at the declare (typeset) built in command and at some commands that are related (readonly and local), We will also look at the commands that assist with loading data into arrays: mapfile (readarray) and read.
\r\n
Long notes
\r\n
As usual I have provided detailed notes and examples for this episode, and these can be viewed here.
Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to address mobile device security. As with most of the research and articles I’ve written in the past, these are geared toward standard users in a business setting and are meant to be a jumping off point for further research and to be a foundation for cyber security 101 level training classes. If you like what I do, and want to have me come speak to your team, feel free to email me.
\r\n
As an information security researcher, I have noticed a trend in what potential clients lately have been interested in: cell phones. Almost everyone I have consulted for in the area of private investigations make this area their main priority. This makes sense as users have started to transition to using mobile devices more and more. Not only do cell phones represent the main conduit to the internet for a huge chunk of people, but many use them for work also. Many companies have smartly presented policies against this, but there are still many organizations that allow bring-your-own-device style implementations. In the following podcast I will try to define the threats, defense and considerations in very broad strokes.
\r\n
Cell phones differ from a standard hacking target in a few ways. For the most part, many of the same vectors are still valid. Remote code execution however is more rare, but not out of the question. I’m going to attempt to present these different vectors in an ascending list of what is most likely to be used as an attack, in my humble (and possibly ignorant) opinion.
\r\n
1. Passive Surveillance
\r\n
This vector is one many in the hacking world will already be familiar with and it is a major concern for mobile devices as well. Attackers can monitor an access point where the mobile device is connected and collect packets in all the usual ways. Open public WiFi is a treasure trove and tons of data that’s being sent in the clear can be collected, analyzed and leveraged by attackers.
\r\n
Defense here is a bit more complicated for the general user, but shouldn’t be too intrusive for most:
\r\n\r\n
Use a VPN on your mobile devices.
\r\n
Switch to a DNS provider that provides secure DNSSEC.
\r\n
Implement proper encryption on access points.
\r\n\r\n
2. Spyware
\r\n
Many commercial spyware applications are readily available on both of the main app stores. The challenges for attackers lie in either gaining physical access to the unlocked device to install the spyware, or tricking the user into installing it themselves. Most often the target’s spouse or close contact does this. Some of these apps can be disguised to look like innocuous applications as a feature, but with devices that are rooted/jailbroken, they can be completely hidden from the user. I found a few surveys that state the average smart phone user has about 30 apps installed. I don’t think it’s unreasonable to suspect the average person wouldn’t notice a second calculator or calendar app. These apps feature the full gamut of what you’d expect from a spyware app.
\r\n
Defense against spyware is pretty simple:
\r\n\r\n
Don’t allow unsupervised access to your device.
\r\n
Use a strong passcode or biometric lock.
\r\n
Remove unused applications and be aware of new apps that may pop up.
\r\n
Don’t root or jailbreak your device.
\r\n\r\n
3. Social Engineering
\r\n
The tried and true vector that has always worked and will continue to work is social engineering. It doesn’t matter what kind of device a target is using if you can get them to click a malicious link, open a malicious attachment, or disclose their password to the attackers. With a user’s password you can conduct a vast amount of surveillance through their Google or Apple account. Not to mention leverage their password into all their other accounts as most users still use the same password for everything. We can also callback to the previous section on spyware by mentioning that many users are already familiar with enabling the installation of 3rd party applications and can be tricked into installing a cleverly disguised spyware application.
\r\n
Basic OPSEC recommendations are applicable here:
\r\n\r\n
Don’t click strange or unsolicited links or attachments on your devices.
\r\n
Never disclose your password to anyone through a text message or voice call.
\r\n
Don’t install 3rd party applications. I’ll extend this to say not to install any shady or questionable apps, even ones hosted by the app stores. There have been instances of vetted apps being malicious.
\r\n\r\n
4. IMSI catchers/Femtocells
\r\n
I refer to these as DIY Stingrays. Stingrays are devices used by law enforcement to track and surveil cell phone traffic. These devices emulate a cell tower or boost cell phone signals when used in a legitimate way. Mobile phones are designed to prefer using stations that are the closest and strongest. Any technically proficient attacker can DIY one of these devices for not a lot of money. When an attacker deploys one of these devices, the target’s phone usually has no idea that the device isn’t an official cell tower and happily connects and passes traffic through it. The rogue stations can then be configured to pass the traffic on to an authentic tower and the user will have no idea. These rogue towers can not only collect identifying information about the mobile device that can be used to track or mark a target, they can also monitor voice calls, data, and SMS, as well as perform man-in-the-middle attacks. Often they can disable the native encryption of the target’s phone as well.
\r\n
Defense against this vector is a bit more complicated:
\r\n\r\n
As before, use a VPN.
\r\n
Use Signal or other encrypted communication apps.
\r\n
Avoid disclosing sensitive information during voice calls.
\r\n
There is software that has been developed to detect and notify the user when a rogue station has been detected, but this is not going to be super helpful for standard users. There are also maps online of known cell towers and it is possible to use software to identify your connected tower.
\r\n\r\n
5. Exploits
\r\n
Speaking very generally, this attack vector is for the most part less of a concern (depending on your particular threat level), but we all know that the chance of this happening in the wild is probably remote for most people. The technical implementations of exploits such as Rowhammer, Stagefright, and Blueborne are well outside the scope of this particular talk, but we would be incorrect to not mention them and what can be done to protect against them. And we should also pay special attention to more and more exploits being developed to attack mobile devices as attackers have started putting a lot of attention in this area. Even though many of these vulnerabilities are being patched, we all know many users are still using old versions of Android and iOS, and many devices are simply outside the support period offered by the manufacturers and will never be updated past a certain point. Couple that with the general idea that mobile devices (or any device running a non Windows based OS) are “safer” because less exploits exist for them is currently a very poor assumption. This will probably get worse as the cost of keeping up with new devices now being over $1000 and many users won’t be able to get devices that are constantly being patched.
\r\n
What we can do:
\r\n\r\n
Keep your mobile devices updated with most current OS updates and carrier settings. Also keep applications updated. I don’t know how many times I’ve noticed friends or family with devices that are ready to be updated, but the notifications go ignored.
\r\n
If it’s possible, replace devices when they are outside the support period.
\r\n
Be paranoid, if it applies to you. What this means is when you use any computer or device, always remember that zero day exploits can exist for years before being disclosed. You could follow ALL the best OPSEC practices, and you could still be vulnerable to exploits that haven’t been disclosed and/or patched. This might not matter if you’re just a general user, but if you work for the government or do intelligence work, act as if.
\r\n\r\n
Well, thank you for taking the time to listen to my basic introduction to cell phone cyber defense. I know most of the information I provided is only the tip of the iceberg and if current trends hold up, this will only get worse in the future. If you want to add to or correct any mistakes I may have made, like I stated in the introduction, feel free to email me and let’s have a conversation. I don’t claim to know all there is to know and love feedback and any opportunities to learn more or collaborate with others in the field.
\r\n
Thanks again, and have a great 2019!
\r\n',372,0,1,'CC-BY-SA','Mobile Device Security',0,0,1),
(2718,'2019-01-02','Genre In Storytelling',750,'Lostnbronx takes a look at the importance of genre in storytelling.','
Many people see genres as being largely interchangeable, but are they really? Why can some stories only be told in a particular genre? When are genre stories truly alike? And when are setting, character, and plot more important than genre? Lostnbronx takes a quick, rambling look at this complicated subject.
\r\n',107,105,0,'CC-BY-SA','stories,storytelling,genre,lostnbronx',1,0,1),
(2725,'2019-01-11','The Illumos Shutdown Command Explained',812,'A short pod cast about the Illumos shutdown command','
In response to JWP\'s episode 2697 and ClaudioM\'s comment, this show covers the shutdown command as it appeared in Sun Solaris and OpenSolaris, and currently appears in both Oracle Solaris and OpenIndiana.\r\n\r\n
\r\nThe quick version:\r\n
\r\n\r\n
\r\n
shutdown
\r\n
-i sets the destination init state (5 to shutdown, 6 to reboot, and so on; see man init for more)
\r\n
-y to answer \"yes\" to the safeguard prompt asking you whether you really want to shutdown
\r\n
-g to set how many seconds until shutdown. Default is 60.\r\n
\r\n
\r\n\r\n
In practise, I don\'t even use the shutdown command. I use poweroff, which does a shutdown and poweroff.
\r\n\r\n
\r\nBoth shutdown and poweroff require root permission. On OpenIndiana, you can either use sudo bash or pfexec bash to get a root prompt.\r\n
\r\n\r\n\r\n',78,0,0,'CC-BY-SA','sys admin,systems,unix,illumos',0,0,1),
-(2733,'2019-01-23','Writing Web Game in Haskell - News and Notifications',2837,'tuturto talks about the game they\'re writing in Haskell and convoluted news system they made.','
Intro
\r\n
News and notifications are used in the game to let the players know something noteworthy has happened. It could be discovery of a new planet or construction project finally finishing.
\r\n
All relevant information in the news is hyperlinked. If news mentions a planet, player can click the link and view current information of that planet.
\r\n
Server interface
\r\n
Server has three resources for news, although we’re concentrating only one here:
\r\n
/api/message ApiMessageR GET POST\r\n/api/message/#NewsId ApiMessageIdR DELETE\r\n/api/icon ApiMessageIcons GET
\r\n
First one is for retrieving all messages and posting a new one. Second one is for marking one read and third one is for retrieving all icons that players can attach to messages written by them.
\r\n
Database
\r\n
Database is defined in /config/models file. For news, there’s only one table:
\r\n
News json\r\n content Text\r\n factionId FactionId\r\n date Int\r\n dismissed Bool\r\nderiving Show Read Eq
\r\n
Content field contains the actual news article data as serialized JSON. This allows storing complex data, without having to have lots of columns or multiple tables.
\r\n
Domain objects
\r\n
There are many kinds of messages that players might see, but we’ll concentrate on one about discovering a new planet
\r\n
All different kinds of articles are of same type: NewsArticle. Each different kind of article has their own value constructor (PlanetFound in this particular case). And each of those value constructors has single parameter of a specific type that holds information particular to that certain article (PlanetFoundNews in this case). Adding a new article means adding a new value constructor and record to hold the data.
Similarly there’s two other functions for dealing with Entities (primary key, data - pair really) and list of Entities. Note that parseNewsEntities filters out all News that it didn’t manage to turn into NewsArticle. They have following signatures:
News articles aren’t much use if they stay on the server, we need to send them to clients too. We can’t have multiple declarations of same typeclass for any type, so we declare complete new type and copy data there before turning it into JSON and sending to client (this is one way of doing this).
\r\n
First step, define our types (concentrating on planet found news here):
IconMapper knows how to turn NewsArticleDto (in this case) to corresponding link to the icon. Notice how our ToDto instance includes IconMapper in addition to Key and NewsArticle:
IconMapper is a function that knows how to retrieve url to icon that matches the given parameter (for example NewsArticleDto in this case):
\r\n
newtype IconMapper a =\r\n IconMapper { runIconMapper :: a -> Text }
\r\n
One possible implementation that knows how to deal with NewsArticleDto. We have two levels of hierarchicy here, because UserNewsDto has special rules for figuring out which icon to use:
I wrote ToJSON and FromJSON instances by hand, because I wanted full control on how the resulting JSON looks like. It’s possible to configure how template Haskell names fields for example, but I think that writing these out couple of times is good practice and makes sure that I understand what’s going on behind the scenes if I use template Haskell later.
\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
+(2733,'2019-01-23','Writing Web Game in Haskell - News and Notifications',2837,'Tuula talks about the game they\'re writing in Haskell and convoluted news system they made.','
Intro
\r\n
News and notifications are used in the game to let the players know something noteworthy has happened. It could be discovery of a new planet or construction project finally finishing.
\r\n
All relevant information in the news is hyperlinked. If news mentions a planet, player can click the link and view current information of that planet.
\r\n
Server interface
\r\n
Server has three resources for news, although we’re concentrating only one here:
\r\n
/api/message ApiMessageR GET POST\r\n/api/message/#NewsId ApiMessageIdR DELETE\r\n/api/icon ApiMessageIcons GET
\r\n
First one is for retrieving all messages and posting a new one. Second one is for marking one read and third one is for retrieving all icons that players can attach to messages written by them.
\r\n
Database
\r\n
Database is defined in /config/models file. For news, there’s only one table:
\r\n
News json\r\n content Text\r\n factionId FactionId\r\n date Int\r\n dismissed Bool\r\nderiving Show Read Eq
\r\n
Content field contains the actual news article data as serialized JSON. This allows storing complex data, without having to have lots of columns or multiple tables.
\r\n
Domain objects
\r\n
There are many kinds of messages that players might see, but we’ll concentrate on one about discovering a new planet
\r\n
All different kinds of articles are of same type: NewsArticle. Each different kind of article has their own value constructor (PlanetFound in this particular case). And each of those value constructors has single parameter of a specific type that holds information particular to that certain article (PlanetFoundNews in this case). Adding a new article means adding a new value constructor and record to hold the data.
Similarly there’s two other functions for dealing with Entities (primary key, data - pair really) and list of Entities. Note that parseNewsEntities filters out all News that it didn’t manage to turn into NewsArticle. They have following signatures:
News articles aren’t much use if they stay on the server, we need to send them to clients too. We can’t have multiple declarations of same typeclass for any type, so we declare complete new type and copy data there before turning it into JSON and sending to client (this is one way of doing this).
\r\n
First step, define our types (concentrating on planet found news here):
IconMapper knows how to turn NewsArticleDto (in this case) to corresponding link to the icon. Notice how our ToDto instance includes IconMapper in addition to Key and NewsArticle:
IconMapper is a function that knows how to retrieve url to icon that matches the given parameter (for example NewsArticleDto in this case):
\r\n
newtype IconMapper a =\r\n IconMapper { runIconMapper :: a -> Text }
\r\n
One possible implementation that knows how to deal with NewsArticleDto. We have two levels of hierarchicy here, because UserNewsDto has special rules for figuring out which icon to use:
I wrote ToJSON and FromJSON instances by hand, because I wanted full control on how the resulting JSON looks like. It’s possible to configure how template Haskell names fields for example, but I think that writing these out couple of times is good practice and makes sure that I understand what’s going on behind the scenes if I use template Haskell later.
\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
(2726,'2019-01-14','Home Theater - Part 2 Software (High Level)',1249,'I go over a high level of my notes for the software on my Media box as it relates to TV/Movies/Music','
',36,0,0,'CC-BY-SA','kodi, deluge,Sonarr,Plex,Subsonic,SpiderOakONE,Zoneminder,Borg Backup,rclone,Redshift,Audacity',0,0,1),
(2727,'2019-01-15','Passwords',467,'How to do passwords better. ','
Introduction
\r\n
Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to record an episode on the importance of good passwords. This will be part one in a series of podcasts I’m going to call “Information Security for Everyone”. As with most of the content I create in the world of infosec, my goal is to present the information in a way that a majority of people can get value from it and anyone can play this for a friend, colleague or family member and make it easy for the non-hackers in our lives to understand.
\r\n
Passwords
\r\n
One of the first things most people think about when it comes to online safety is their password. We all know that passwords are to our online accounts what keys are for our locks. Would you use the same key for your house, your car, your office and your safety deposit box? Of course not. And if you did, what would happen if a bad guy could get a copy of just that one key? They’d have access to everything. With so much of our personal, confidential, financial and medical information accessible from our various online accounts, what can we do to make things as safe as possible?
\r\n
For me personally I employ and advise a three faceted approach:
\r\n\r\n
Complex passwords
\r\n
Unique passwords
\r\n
Two-factor authentication (where available)
\r\n\r\n
Clearly the solution is to use a unique password for each account and make them complicated enough that an attacker couldn’t guess it or crack it in an amount of time that would be actionable. One problem this presents to general users is the inconvenience and difficulty in remembering these passwords or storing them in a secure way. This leads into my first bit of advice:
\r\n
Password Managers
\r\n
My recommendation is to use a password manager. I’m going to make references to managers such as LastPass because that’s the one I’ve always used, but I’m not saying it’s the best or would be the best for you. There are many great options and I would rather people use the one that works the best for them and not merely the one I like best. Anyways. Applications like LastPass give you the ability to store all passwords in your encrypted “vault” and then request them through browser add-ons or standalone applications. They also have built in features that allow you to generate secure passwords at any length or complexity.
\r\n
When using a password manager, all you have to remember is your ONE master password. When you sign in, the manager can then decrypt all your saved passwords and let you use them. When I sign up for a website, I use LastPass to generate the longest and most complex password supported by the site and it gets stored in my vault safely for later use.
\r\n
There are various options online to choose from and I suggest you do some research and try a few different ones to see what is comfortable for you. One thing to consider when using a password manager is that the master password is your single point of failure and should be a long and complex password that you don’t use ANYWHERE else.
\r\n
If you’re wondering how to come up with a secure password that you can remember there are various strategies online, but I follow this:
\r\n
Take a poem, song lyrics or phrase that is easy for you to remember. For this example I’ll use the phrase:
\r\n
"The stars at night are big and bright. Deep in the heart of Texas."
\r\n
Then I take the first letters from each word and that gives me:
\r\n
TsanababdithoT.
\r\n
Then I swap out the vowels for some numbers/special characters. And that gives me:
\r\n
T5@n@b@bd1th0T
\r\n
I checked that password on Dashlane’s Password Strength Checker, and got the following results:
\r\n
It would take a computer about 204 million years to crack your password
\r\n
And that’s just an example of a very secure password that I thought up in just a few seconds that I probably won’t ever be able to forget it.
\r\n
2FA (two-factor authentication)
\r\n
Another very important recommendation I want to touch on in this episode is using two-step authentication. I use it for all accounts that offer it and it’s very easy to set-up and use. It works in tandem with an application on my mobile device called Google Authenticator(though there are others and like LastPass this is just the one I use) and it’s available for Android and iOS. After you install the app, you access the security settings for the account you want to protect and register it with your device.
\r\n
What it does is provide a “second” password when logging it that is only used one time. When you log in, the site will prompt for the two-step authentication code, you then open the Google Authenticator app and the code for the session will be listed. The codes are only available for a short time and are constantly changing. This makes someone gaining unauthorized access to your account VERY difficult.
\r\n
A few closing thoughts
\r\n
Some information security professionals see a password manager as insecure due to it being a single point of failure. I can understand this and would respond that although this might be true, having a complex master password and using the manager in conjunction with two-step authentication makes it a pretty safe and solid system. And even if there is a breach, none of my passwords are the same and changing them is incredibly fast and easy with a manager.
\r\n
Also, I usually don’t recommend keeping hard copies of passwords, but if you can guarantee the physical security of your password list, this in my opinion is preferable to using the same, insecure password for all your accounts.
\r\n
Please remember, if you’re like most people on the internet and you use an easy to crack password or the same password on all your sites, all it takes is one compromised account to give bad guys access to everything.
\r\n
I’m also including a list of links in the bottom of the show notes to everything I mentioned and also a link to the site Have I Been Pwned. This is a service that collects accounts that have been involved in hacks and lets anyone search for their email address and see if their information is already compromised. If it is, do this NOW:
\r\n\r\n
Setup a password manager with a strong master password.
\r\n
Change all your passwords using the built in password generator in your password manager and save them in your vault as you go.
\r\n
In the future when breaches happen, it’s incredibly easy to change your password and you’ll also rest easy knowing that the password obtained can’t get them into anything else.
\r\n\r\n
I know this will take a long time. But it’s worth it. Then, you only have to remember one master password and you will be exponentially safer online.
\r\n
I also linked SplashData’s “The Top 100 Worst Passwords of 2018”. PLEASE don’t use anything on this list.
\r\n
Well, thank you for taking the time to listen to my basic introduction to passwords. I hope this will help any non-hackers in your life and like I say in all my podcasts, I don’t claim to know all there is to know and love feedback and any opportunities to learn more or collaborate with others in the field. As with most of the research and articles I’ve written in the past, these are geared toward standard users in a business setting and are meant to be a jumping off point for further research and to be a foundation for cyber security 101 level training classes. If you like what I do, and want to have me come speak to your team, or just wanna chat, feel free to email me.
\r\n',372,74,0,'CC-BY-SA','Information Security for Everyone',0,0,1),
(2730,'2019-01-18','Resizing images for vcard on Android',688,'Automating the steps needed to get images formatted for VCard import into Android phones','
I have had problems importing vcards onto my Android phone. After a lot of troubleshooting, I tracked it down to embedded images in the card. The PHOTO;VALUE field to be precise.
\r\n\r\n
Some images worked and some didn\'t, and looking at the properties some that worked were larger than others that didn\'t. In the end I tracked down a post on stackoverflow that hinted that the aspect ratio was important. And sure enough it was.
\r\n\r\n
\r\n
starting with jelly bean (4.1), android now supports contact images that are 720x720. before, starting with ICS (4.0), android has supported contact images that are 256x256. and before that, contact photos had just a size of a thumbnail - 96x96.
I tried a 720x720 on a few phones but decided to settle on 256x256 for now.
\r\n\r\n\r\n
To do image manipulation, I tend to use the GraphicsMagick tools instead of the more popular ImageMagick suite. You should be able to achieve the same result in either.
\r\n\r\n\r\n
My requirements were:
\r\n
\r\n
The images should be scaled so that the maximum height/width shrinks to 256, maintaining the aspect ratio.
\r\n
The images should always be 256x256 in size.
\r\n
Scaled images should be padded and centered on a white background.
\r\n
All color profile information should be removed.
\r\n
\r\n\r\n\r\n
To use an example I took the following image and saved it as Linus_Torvalds.jpg
Step one is to use the -size 256x256 option which you would think would do the scaling, but in fact it only reduces the file to 366x509 which is not what I expected.
However it appears that the option is used when creating new files, and is also used by the processor to determine the intended target size. Which is why I left it in. So what we actually need is the -resize option.
So this has done a good job at scaling the image down. It\'s now scaled correctly so that the biggest edge is scaled down to 256. In this case it was the height but the width is now shorter than what we need. We do want to maintain the aspect ratio so that we don\'t distort the image but 184x256 is not 1:1 aspect ratio nor is it the needed dimensions of 256x256.
\r\n\r\n
The solution to this is to use the -extent command.
This gives us the correct size and a 1:1 aspect ratio, but the image is left justified. To fix this we need to use the -gravity command. That needs to be the first argument of the command. Finding the correct order of the commands took some trial and error.
You should now be able to add these images to vcards without any problem.
\r\n\r\n
Here is a one liner to create 96x96 256x256 and 720x720 thumbnails of all the jpg images in a directory.
\r\n\r\n
\r\n\r\n
for image in *jpg;do for size in 96x96 256x256 720x720; do gm convert -gravity center -size ${size} \"${image}\" -resize ${size} -extent ${size} +profile \"*\" \"thumbnail-${size}-${image}\";done;done
\r\n',30,0,1,'CC-BY-SA','GraphicsMagick, ImageMagick, VCard, Android, LinageOS',0,0,1),
@@ -19057,7 +19177,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2735,'2019-01-25','Soffritto',138,'A short episode on a common cookery technique','
Hello and a belated Happy New Year to you all in HPR land, Ken has recently made a call for more shows as the queue is a little light at the moment so I was pondering what to waffle on about.
\r\n
You may know from a couple of my previous shows that as well as being into tech and Linux I’m also a keen Cook, and try and prepare as much of the food we eat at home from scratch as possible.
\r\n
One of the keys to good dishes is a base of sweated vegetables such as onion, celery carrot and garlic which when cooked in olive oil, is called a Soffritto in Italian cookery. In other parts of the Mediterranean and Latin America where Europeans settled this base to dishes may include other vegetables such as peppers, tomatoes and mushrooms, and have other names such as mirepoix (/mɪərˈpwɑː/ meer-PWAH); but the idea is the same to give a base flavour to soups, sauces, risotto and stew type dishes.
\r\n
Although not called the same thing this is also replicated in Asian cookery where spices and other aromatics are included such as ginger, lemon grass, chillies, cumin and coriander seeds.
\r\n
While it is not obligatory to start dishes in such a way if you do use a base of flavours like this when cooking you will find that the finished dish has a more complex and deep flavour at the end, so if you don’t do this give it a try.
\r\n
A simple starter is to make a tomato sauce for pasta using a base of finely chopped onion, celery, carrot and garlic soften all the vegetables in a pan with some olive oil, add a tin of tomatoes or jar of passata (sieved tomatoes) reduce for 10-15 minutes until all the flavours combine and use as a sauce over pasta with grated cheese.
\r\n',338,93,0,'CC-BY-SA','Food, cookery, how to, food preparation',0,0,1),
(2736,'2019-01-28','Response to show 2720',1104,'Some suggestions on how to improve a Bash script','
When I see a Bash script these days I usually find myself looking for ways to rewrite it to make it fit in with what I have been learning while doing my Bash Tips sub-series. Either that or I find it’s got some better ideas than I’ve been using which I have to find out about.
\r\n
I also spend time going over my own old scripts (I was writing them in the 1990’s in some cases) and trying to incorporate newer Bash features.
\r\n
Suffice it to say that I spotted some areas for improvement in Ken’s script and thought this might be the way to share my thoughts about them. We’re low on shows as I write this, so that gave me more motivation to make a show rather than add a comment or send Ken an email.
\r\n
Apology: I’m still suffering from the aftermath of some flu-like illness so have had to edit coughing fits out of the audio at various points. If you detect any remnants then I’m sorry!
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
',225,42,1,'CC-BY-SA','Bash,ShellCheck',0,0,1),
(2737,'2019-01-29','My Pioneer RT-707 Reel-to-Reel Tape Deck',1381,'An intro to more of my legacy audio equipment.','
I\'ve had this Pioneer RT-707 reel-to-reel tape deck for something like 10 years, but only recently started using it with enthusiasm. In this episode I talk about the tape deck, about the technology, and about my memories of using this kind of audio tape as a kid. I demonstrate playback of one of my parents\' mix tapes, and I also used this machine to record the last few minutes of the podcast onto a reel to reel tape, which of course I then had to transfer back to digital before submitting the show.
\r\n\r\n
Click image below to see a photo album relating to the tape deck.
',238,0,0,'CC-BY-SA','audio, vintage audio, stereo components, audio tape, recording',0,0,1),
-(3046,'2020-04-06','HPR Community News for March 2020',4545,'HPR Volunteers talk about shows released and comments posted in March 2020','\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 23 comments in total.
Comment 1:\nWindigo on 2020-03-26:\n\"Minimal distros are the best\"
\n
hpr3034\n(2020-03-19) \"How to bridge Freenode IRC rooms to Matrix.org\"\nby Thaj Sara.
\n
\n
Comment 1:\nKlaatu on 2020-03-22:\n\"Did not know 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\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3046,'2020-04-06','HPR Community News for March 2020',4545,'HPR Volunteers talk about shows released and comments posted in March 2020','\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 23 comments in total.
Comment 1:\nWindigo on 2020-03-26:\n\"Minimal distros are the best\"
\n
hpr3034\n(2020-03-19) \"How to bridge Freenode IRC rooms to Matrix.org\"\nby Thaj Sara.
\n
\n
Comment 1:\nKlaatu on 2020-03-22:\n\"Did not know 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\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2745,'2019-02-08','My YouTube Subscriptions #1',1262,'Part one of my list of subscribed channels','
I am subscribed to a number of YouTube channels, and I am sharing them with you
\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2755,'2019-02-22','My YouTube Subscriptions #2',1329,'Part two of my list of subscribed channels','
I am subscribed to a number of YouTube channels, and I am sharing them with you
\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2765,'2019-03-08','My YouTube Subscriptions #3',1329,'Part three of my list of subscribed channels','
I am subscribed to a number of YouTube channels, and I am sharing them with you
\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
@@ -19069,7 +19189,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2744,'2019-02-07','Yet Another Rambling Drive Into Work',2022,'Yet another rambling attempt at making a show on the way into work','
I came across this show sitting in my digital recorder I recorded it back in November 2017 but never posted it, my thoughts on some of the things I mention in this show have since evolved, I’ll stick these changed thoughts at the end of these notes and may also stick in an extra recorded section at the end of the show.
Here are the changes since I recorded this show in November 2017, it is now October 2018.
\r\n
Think there was a £4,500 pound grant on new EV cars however it has been announced that this grant will in the near future will be cut to £3500.
\r\n
I think the Government and Nissan together had a £2000 contribution scheme when you traded in an old car for a 2nd hand leaf I think this is no longer available now that the leaf is more popular.
\r\n
Fuel costs have gone up and I may have miscalculated I think my true annual fuel bill is nearer to £2,000
\r\n
Nissan leaf road tax is free
\r\n
Because of supply and demand the depreciation situation has completely changed had I bought this leaf in November 2017 it would now be worth more today in October 2018. Only time will tell how it all pans out, things are changing rapidly.
\r\n
After further investigation it looks like battery degradation is less than I first thought and would likely still be in pretty good condition at 6 years old, particularly in a cooler country like here in the UK in Scotland.
With the increased popularity of the older 24 and 30Kw leafs Nissan may no longer be so keen to give you a no quibble test drive.
\r\n
I think it’s looking increasingly like I made the wrong decision.
\r\n',201,0,1,'CC-BY-SA','Podcast, Cars',0,0,1),
(2746,'2019-02-11','My software part 2',326,'More about the software I use regularly on Linux ','
Good day to all in HPR land, this is Tony Hughes coming to you from Blackpool in the UK again. This is a second instalment about some of the software I use on Linux Mint 19.1, on a regular basis. So without further ado lets get on with the show.
\r\n
\r\n
USB Image writer
\r\n
VirtualBox – Virtualisation software to virtualise x86 and AMD64 bit PC’s
\r\n
OBS – Open Broadcast software
\r\n
Brasero/XFburn – CD/DVD writing software
\r\n
GIMP – GNU Image manipulation Program
\r\n
\r\n
So that’s it for this episode. I’ll be back to talk about some of the utilities I use on Mint on another show. This is Tony Hughes signing off for now.
\r\n',338,0,0,'CC-BY-SA','Linux Mint 19.1,utilities',0,0,1),
(2747,'2019-02-12','checking oil',317,'checking your oil may not be so simple','
\r\n
a 914 shows up… \r\nit has a 911 engine… \r\ni check the oil… \r\nthe car lives…
\r\n
\r\n',329,0,1,'CC-BY-SA','automotive',0,0,1),
-(2748,'2019-02-13','Writing Web Game in Haskell - Special events',2645,'tuturto walks through implementation of special events in web based game','
Intro
\r\n
I was tasked to write kragii worms in the game and informed that they’re small (10cm / 4 inches) long worms that burrow in ground and are drawn to farming fields and people. They’re dangerous and might eat harvest or people.
\r\n
Special events build on top of the new system I explained in episode 2733. They are read from same API as regular news and need same ToJSON, FromJSON, ToDto and FromDto instances as regular news (for translating them data transfer objects and then into JSON for sending to client).
\r\n
Loading
\r\n
Starting from the API interface, the first real difference is when JSON stored into database is turned into NewsArticle. Two cases, where special news have available options added to them and regular news are left unchanged. These options tell player what choices they have when dealing with the situation and evaluated every time special event is loaded, because situation might have changed since special event got stored into database and available options might have changed.
\r\n
addOptions (key, article) = case article of\r\n Special news ->\r\n (key, Special $ availableOptions news)\r\n _ ->\r\n (key, article)\r\n\r\navailableOptions :: SpecialNews -> SpecialNews\r\navailableOptions x =\r\n case x of\r\n KragiiWorms event _ choice ->\r\n KragiiWorms event (eventOptions event) choice
\r\n
eventOptions is one of the events defined in SpecialEvent type class that specifies two functions every special event has to have. eventOptions lists what options the event has currently available and resolveEvent resolves the event according to choice user might have made (hence Maybe in it).
\r\n
Type class is parametrized with three types (imaginatively named to a, b and c). First is data type that holds information about special event (where it’s happening and to who for example), second one is one that tells all possible choices player has and third one lists various results that might occur when resolving the event. In this example they’re KragiiWormsEvent, KragiiWormsChoice and KragiiResults.
Definition of the SpecialEvent type class is shown below. Type signature of resolveEvent is gnarly because it’s reading and writing database.
\r\n
class SpecialEvent a b c | a -> b, a -> c where\r\n eventOptions :: a -> [UserOption b]\r\n resolveEvent :: ( PersistQueryRead backend, PersistQueryWrite backend\r\n , MonadIO m, BaseBackend backend ~ SqlBackend ) =>\r\n (Key News, a) -> Maybe b -> ReaderT backend m (Maybe EventRemoval, [c])
\r\n
One more piece we need is UserOption. This records options in a format that is useful in the client side. Each option player has are given title and explanation that are shown on UI.
\r\n
data UserOption a =\r\n UserOption { userOptionTitle :: Text\r\n , userOptionExplanation :: [Text]\r\n , userOptionChoice :: a\r\n }
\r\n
Current implementation of eventOptions doesn’t allow database access, but I’m planning on adding that at the point where I need it. Example doesn’t show all different options, as they all have same structure. Only first option in the list is shown:
\r\n
eventOptions _ = [ UserOption { userOptionTitle = "Avoid the worms"\r\n , userOptionExplanation = [ "Keep using fields, while avoiding the worms and hope they'll eventually leave."\r\n , "50 units of biologicals lost"\r\n , "25% chance of worms leaving"\r\n ]\r\n , userOptionChoice = EvadeWorms\r\n }\r\n , ...\r\n ]
\r\n
Making choice
\r\n
putApiMessageIdR handles updating news with HTTP PUT messages. First steps is to check that caller has autenticated and retrieve id of their faction. News article that is transferred in body as JSON is parsed and checked for type. Updating regular news articles isn’t supported and is signaled with HTTP 403 status code. One more check to perform is to check that news article being edited actually belong to the faction player is member of. If that’s not the case HTTP 404 message is returned.
\r\n
If we got this far, news article is updated with the content sent by client (that also contains possible choice made by user). There’s no check that type of news article doesn’t change or that the option selected doesn’t change (I need to add these at later point). In the end, list of all messages is returned back to the client.
runWriterT and runMaybeT are used as code being called uses monad transformers to add some extra handling. WriterT adds ability to record data (KragiiResult in this case) and MaybeT adds ability to stop computation early if one of the steps return Nothing value.
\r\n
Let’s walk through what happens when user has chosen to avoid kragii worms and keep working only part of the fields. First step is to load faction information. If faction couldn’t be found, we abort. Next amount of biological matter consumed and how much is left is calculated. Again, if calculation isn’t possible, we’ll abort. This step reaches into database and updates amount of biological matter stored by the faction (again, possibility to stop early). Final step is to check if kragii leave or not (again, chance of abort).
Loading faction has several step. Id is stored in the event is used to load planet. Planet might or might have an owner faction, depending on if it has been settled. This faction id is used to load faction data. Loading might fail if corresponding record has been removed from database and planet might not be settled at the given time. Any of these cases will result Nothing be returned and whole event resolution being aborted. I’m starting to really like that I don’t have to write separate if statements to take care of these special cases.
Amount of biological matter in store is stored in faction information. If it’s zero or less, Nothing is returned as there’s nothing to do really. In other cases, amount of biological matter left is calculated and result returned in form of ( cost, biological matter left ). I’m carrying around the cost, as it’s later needed for reporting how much matter was removed.
\r\n
calculateNewBio :: Monad m =>\r\n RawResource Biological -> Faction\r\n -> MaybeT (WriterT [KragiiResults] m) ((RawResource Biological), (RawResource Biological))\r\ncalculateNewBio cost faction = MaybeT $ do\r\n let currentBio = factionBiologicals faction\r\n return $ if currentBio > 0\r\n then Just $ ( cost\r\n , RawResource $ max 0 (currentBio - unRawResource cost))\r\n else Nothing
\r\n
destroyCrops updates database with new amount of biological matter in store for the faction and records amount of destruction in CropsDestroyed. tell requires that we have Writer at our disposal and makes recording information nice and easy.
Final step is to roll a percentile die against given odds and see what happens. In case of Success, we record that worms were removed and value of function will be Just RemoveOriginalEvent. If we didn’t beat the odds, WormsStillPresent gets recorded and value of function is Just KeepOriginalEvent. Return value will then be used later to mark special event handled.
Pieces are now in place, time to put things in motion. When handling special events for a faction, first step is to load all unhandled ones and then call handleSpecialEvent for each of them.
resolveEvent resolves event based on choice user maybe made (this is what we explored earlier in the episode). Depending on the result of resolveEvent, event gets marked to handled and dismissed. In any case, a news article spelling out what happend is created and saved.
Result article creation is abstracted by ResultReport type class. It has single function report that takes parameters: database key of the faction the event concerns of, current time, special event that was processed, choice that was made and list of records telling what happened during resolution. It will return News that is ready to be saved into database.
\r\n
class ResultsReport a b c | a -> b, a -> c where\r\nreport :: Key Faction -> Time -> a -> Maybe b -> [c] -> News
\r\n
\r\n
quite long and verbose instance
\r\n
essentially take event, choice and results and build a string explaining what actually happened
\r\n
<> is monoid operation for combining things, here used for text
\r\n
\r\n
Instance declaration is pretty long, because there’s many different cases to account for and by definition they’re all pretty verbose. I have included it in its entirity below, as it might be interesting to glance over and see different kinds of combinations that resolution might create.
\r\n
instance ResultsReport KragiiWormsEvent KragiiWormsChoice KragiiResults where\r\n report fId date event choice results =\r\n let\r\n content = KragiiNews { kragiiNewsPlanetId = kragiiWormsPlanetId event\r\n , kragiiNewsPlanetName = kragiiWormsPlanetName event\r\n , kragiiNewsSystemId = kragiiWormsSystemId event\r\n , kragiiNewsSystemName = kragiiWormsSystemName event\r\n , kragiiNewsExplanation = repText\r\n , kragiiNewsDate = timeCurrentTime date\r\n }\r\n in\r\n mkNews fId date $ KragiiResolution content\r\n where\r\n repText = header choice <> " " <> removed choice (WormsRemoved `elem` results) <> " " <> injury <> " " <> destruction <> " "\r\n\r\n header (Just EvadeWorms) = "Local farmers had chosen to work on their fields, while avoiding the kragii worms."\r\n header (Just AttackWorms) = "Local farmers had decided to attack the worms with chemicals and burning."\r\n header (Just TameWorms) = "Decision to try and tame the kragii had been taken."\r\n header Nothing = "No decision what to do about worms had been taken."\r\n\r\n removed (Just EvadeWorms) True = "After some time, there has been no new kragii sightings and it seems that the threat is now over."\r\n removed (Just AttackWorms) True = "Attacks seem to have worked and there has been no new kragii sightings."\r\n removed (Just TameWorms) True = "Kragii has been tamed and put into use of improving soil quality."\r\n removed Nothing True = "Despite farmers doing nothing at all about the situation, kragii worms disappeared eventually."\r\n removed (Just EvadeWorms) False = "Kragii are still present on the planet and hamper farming operations considerability."\r\n removed (Just AttackWorms) False = "Despite the best efforts of farmers, kragii threat is still present."\r\n removed (Just TameWorms) False = "Taming of the worms was much harder than anticipated and they remain wild."\r\n removed Nothing False = "While farmers were debating best course of action, kragii reigned free and destroyed crops."\r\n\r\n injury = if FarmersInjured `elem` results\r\n then "Some of the personnel involved in the event were seriously injured."\r\n else "There are no known reports of personnel injuries."\r\n\r\n totalDestroyed = mconcat $ map (x -> case x of\r\n CropsDestroyed n -> n\r\n _ -> mempty) results\r\n destruction = if totalDestroyed > RawResource 0\r\n then "In the end, " <> pack (show (unRawResource totalDestroyed)) <> " units of harvest was destroyed."\r\n else "Despite of all this, no harvest was destroyed."
\r\n
While there are still pieces left that need a bit work or are completely missing, the overall structure is in place. While this one took quite a bit of work to get working, I’m hoping that the next special event will be a lot easier to implement. Thanks for listening the episode.
\r\n
Easiest way to catch me nowdays is either via email or on fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
+(2748,'2019-02-13','Writing Web Game in Haskell - Special events',2645,'Tuula walks through implementation of special events in web based game','
Intro
\r\n
I was tasked to write kragii worms in the game and informed that they’re small (10cm / 4 inches) long worms that burrow in ground and are drawn to farming fields and people. They’re dangerous and might eat harvest or people.
\r\n
Special events build on top of the new system I explained in episode 2733. They are read from same API as regular news and need same ToJSON, FromJSON, ToDto and FromDto instances as regular news (for translating them data transfer objects and then into JSON for sending to client).
\r\n
Loading
\r\n
Starting from the API interface, the first real difference is when JSON stored into database is turned into NewsArticle. Two cases, where special news have available options added to them and regular news are left unchanged. These options tell player what choices they have when dealing with the situation and evaluated every time special event is loaded, because situation might have changed since special event got stored into database and available options might have changed.
\r\n
addOptions (key, article) = case article of\r\n Special news ->\r\n (key, Special $ availableOptions news)\r\n _ ->\r\n (key, article)\r\n\r\navailableOptions :: SpecialNews -> SpecialNews\r\navailableOptions x =\r\n case x of\r\n KragiiWorms event _ choice ->\r\n KragiiWorms event (eventOptions event) choice
\r\n
eventOptions is one of the events defined in SpecialEvent type class that specifies two functions every special event has to have. eventOptions lists what options the event has currently available and resolveEvent resolves the event according to choice user might have made (hence Maybe in it).
\r\n
Type class is parametrized with three types (imaginatively named to a, b and c). First is data type that holds information about special event (where it’s happening and to who for example), second one is one that tells all possible choices player has and third one lists various results that might occur when resolving the event. In this example they’re KragiiWormsEvent, KragiiWormsChoice and KragiiResults.
Definition of the SpecialEvent type class is shown below. Type signature of resolveEvent is gnarly because it’s reading and writing database.
\r\n
class SpecialEvent a b c | a -> b, a -> c where\r\n eventOptions :: a -> [UserOption b]\r\n resolveEvent :: ( PersistQueryRead backend, PersistQueryWrite backend\r\n , MonadIO m, BaseBackend backend ~ SqlBackend ) =>\r\n (Key News, a) -> Maybe b -> ReaderT backend m (Maybe EventRemoval, [c])
\r\n
One more piece we need is UserOption. This records options in a format that is useful in the client side. Each option player has are given title and explanation that are shown on UI.
\r\n
data UserOption a =\r\n UserOption { userOptionTitle :: Text\r\n , userOptionExplanation :: [Text]\r\n , userOptionChoice :: a\r\n }
\r\n
Current implementation of eventOptions doesn’t allow database access, but I’m planning on adding that at the point where I need it. Example doesn’t show all different options, as they all have same structure. Only first option in the list is shown:
\r\n
eventOptions _ = [ UserOption { userOptionTitle = "Avoid the worms"\r\n , userOptionExplanation = [ "Keep using fields, while avoiding the worms and hope they'll eventually leave."\r\n , "50 units of biologicals lost"\r\n , "25% chance of worms leaving"\r\n ]\r\n , userOptionChoice = EvadeWorms\r\n }\r\n , ...\r\n ]
\r\n
Making choice
\r\n
putApiMessageIdR handles updating news with HTTP PUT messages. First steps is to check that caller has autenticated and retrieve id of their faction. News article that is transferred in body as JSON is parsed and checked for type. Updating regular news articles isn’t supported and is signaled with HTTP 403 status code. One more check to perform is to check that news article being edited actually belong to the faction player is member of. If that’s not the case HTTP 404 message is returned.
\r\n
If we got this far, news article is updated with the content sent by client (that also contains possible choice made by user). There’s no check that type of news article doesn’t change or that the option selected doesn’t change (I need to add these at later point). In the end, list of all messages is returned back to the client.
runWriterT and runMaybeT are used as code being called uses monad transformers to add some extra handling. WriterT adds ability to record data (KragiiResult in this case) and MaybeT adds ability to stop computation early if one of the steps return Nothing value.
\r\n
Let’s walk through what happens when user has chosen to avoid kragii worms and keep working only part of the fields. First step is to load faction information. If faction couldn’t be found, we abort. Next amount of biological matter consumed and how much is left is calculated. Again, if calculation isn’t possible, we’ll abort. This step reaches into database and updates amount of biological matter stored by the faction (again, possibility to stop early). Final step is to check if kragii leave or not (again, chance of abort).
Loading faction has several step. Id is stored in the event is used to load planet. Planet might or might have an owner faction, depending on if it has been settled. This faction id is used to load faction data. Loading might fail if corresponding record has been removed from database and planet might not be settled at the given time. Any of these cases will result Nothing be returned and whole event resolution being aborted. I’m starting to really like that I don’t have to write separate if statements to take care of these special cases.
Amount of biological matter in store is stored in faction information. If it’s zero or less, Nothing is returned as there’s nothing to do really. In other cases, amount of biological matter left is calculated and result returned in form of ( cost, biological matter left ). I’m carrying around the cost, as it’s later needed for reporting how much matter was removed.
\r\n
calculateNewBio :: Monad m =>\r\n RawResource Biological -> Faction\r\n -> MaybeT (WriterT [KragiiResults] m) ((RawResource Biological), (RawResource Biological))\r\ncalculateNewBio cost faction = MaybeT $ do\r\n let currentBio = factionBiologicals faction\r\n return $ if currentBio > 0\r\n then Just $ ( cost\r\n , RawResource $ max 0 (currentBio - unRawResource cost))\r\n else Nothing
\r\n
destroyCrops updates database with new amount of biological matter in store for the faction and records amount of destruction in CropsDestroyed. tell requires that we have Writer at our disposal and makes recording information nice and easy.
Final step is to roll a percentile die against given odds and see what happens. In case of Success, we record that worms were removed and value of function will be Just RemoveOriginalEvent. If we didn’t beat the odds, WormsStillPresent gets recorded and value of function is Just KeepOriginalEvent. Return value will then be used later to mark special event handled.
Pieces are now in place, time to put things in motion. When handling special events for a faction, first step is to load all unhandled ones and then call handleSpecialEvent for each of them.
resolveEvent resolves event based on choice user maybe made (this is what we explored earlier in the episode). Depending on the result of resolveEvent, event gets marked to handled and dismissed. In any case, a news article spelling out what happend is created and saved.
Result article creation is abstracted by ResultReport type class. It has single function report that takes parameters: database key of the faction the event concerns of, current time, special event that was processed, choice that was made and list of records telling what happened during resolution. It will return News that is ready to be saved into database.
\r\n
class ResultsReport a b c | a -> b, a -> c where\r\nreport :: Key Faction -> Time -> a -> Maybe b -> [c] -> News
\r\n
\r\n
quite long and verbose instance
\r\n
essentially take event, choice and results and build a string explaining what actually happened
\r\n
<> is monoid operation for combining things, here used for text
\r\n
\r\n
Instance declaration is pretty long, because there’s many different cases to account for and by definition they’re all pretty verbose. I have included it in its entirity below, as it might be interesting to glance over and see different kinds of combinations that resolution might create.
\r\n
instance ResultsReport KragiiWormsEvent KragiiWormsChoice KragiiResults where\r\n report fId date event choice results =\r\n let\r\n content = KragiiNews { kragiiNewsPlanetId = kragiiWormsPlanetId event\r\n , kragiiNewsPlanetName = kragiiWormsPlanetName event\r\n , kragiiNewsSystemId = kragiiWormsSystemId event\r\n , kragiiNewsSystemName = kragiiWormsSystemName event\r\n , kragiiNewsExplanation = repText\r\n , kragiiNewsDate = timeCurrentTime date\r\n }\r\n in\r\n mkNews fId date $ KragiiResolution content\r\n where\r\n repText = header choice <> " " <> removed choice (WormsRemoved `elem` results) <> " " <> injury <> " " <> destruction <> " "\r\n\r\n header (Just EvadeWorms) = "Local farmers had chosen to work on their fields, while avoiding the kragii worms."\r\n header (Just AttackWorms) = "Local farmers had decided to attack the worms with chemicals and burning."\r\n header (Just TameWorms) = "Decision to try and tame the kragii had been taken."\r\n header Nothing = "No decision what to do about worms had been taken."\r\n\r\n removed (Just EvadeWorms) True = "After some time, there has been no new kragii sightings and it seems that the threat is now over."\r\n removed (Just AttackWorms) True = "Attacks seem to have worked and there has been no new kragii sightings."\r\n removed (Just TameWorms) True = "Kragii has been tamed and put into use of improving soil quality."\r\n removed Nothing True = "Despite farmers doing nothing at all about the situation, kragii worms disappeared eventually."\r\n removed (Just EvadeWorms) False = "Kragii are still present on the planet and hamper farming operations considerability."\r\n removed (Just AttackWorms) False = "Despite the best efforts of farmers, kragii threat is still present."\r\n removed (Just TameWorms) False = "Taming of the worms was much harder than anticipated and they remain wild."\r\n removed Nothing False = "While farmers were debating best course of action, kragii reigned free and destroyed crops."\r\n\r\n injury = if FarmersInjured `elem` results\r\n then "Some of the personnel involved in the event were seriously injured."\r\n else "There are no known reports of personnel injuries."\r\n\r\n totalDestroyed = mconcat $ map (x -> case x of\r\n CropsDestroyed n -> n\r\n _ -> mempty) results\r\n destruction = if totalDestroyed > RawResource 0\r\n then "In the end, " <> pack (show (unRawResource totalDestroyed)) <> " units of harvest was destroyed."\r\n else "Despite of all this, no harvest was destroyed."
\r\n
While there are still pieces left that need a bit work or are completely missing, the overall structure is in place. While this one took quite a bit of work to get working, I’m hoping that the next special event will be a lot easier to implement. Thanks for listening the episode.
\r\n
Easiest way to catch me nowdays is either via email or on fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
(2743,'2019-02-06','Character build in the d20 system',3949,'Klaatu and Lostnbronx build an RPG character in the d20 system of Starfinder','
Klaatu and Lostnbronx spend an hour building an RPG character at a leisurely, and hopefully informative, pace. While the build process here is technically specific to the sci-fi (or science fantasy, really) game Starfinder, the idea is to convey the generic process of stepping through a character build instruction, cross-referencing important rules, and generally learning how to build a character in an unfamiliar system.\r\n
',78,99,0,'CC-BY-SA','Starfinder,RPG,character,build',0,0,1),
(2749,'2019-02-14','Lostnbronx and Klaatu commentary from episode 2743',890,'Thoughts about RPG character building, modern RPG play style compared to the Old School, and more','
\r\nOut-takes from episode 2743. This is commentary about modern RPG play style, the character build process, Starfinder as a system, and more.\r\n
\r\n
\r\nDid you know that Lostnbronx and Klaatu have a gaming blog? We do! You should go subscribe to it at mixedsignals.ml
\r\n\r\n
The blog features commentary about gaming, tech, geek culture, a podcast or two, and lots more.
',78,0,0,'CC-BY-SA','rpg, game, gaming',0,0,1),
(2751,'2019-02-18','Battling with English - part 3',822,'Misunderstandings about English grammar, spelling, punctuation, etc.','
Battling with English - part 3
\r\n
Some word confusions
\r\n
In this episode, the third of this series, I’m looking at some words that are sometimes used in the wrong places, often being confused one with another. These words are often particularly difficult to differentiate by people for whom English is not their first language.
\r\n
Long notes
\r\n
As usual I have provided detailed notes and examples for this episode, and these can be viewed here.
',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,word misuse,English',0,0,1),
@@ -19077,16 +19197,16 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2752,'2019-02-19','XSV for fast CSV manipulations - Part 2',1359,'Part 2 of my introduction to the XSV tool','
XSV for fast CSV manipulations - Part 1: Basic Usage
xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:
\r\n\r\n
Simple tasks should be easy.
\r\n
Performance trade offs should be exposed in the CLI interface.
\r\n
Composition should not come at the expense of performance.
\r\n\r\n
We will be using the CSV file provided in the documentation.
\r\n
Commands covered in this episode
\r\n
\r\n
fixedlengths - Force a CSV file to have same-length records by either padding or truncating them.
\r\n
fmt - Reformat CSV data with different delimiters, record terminators or quoting rules. (Supports ASCII delimited data.)
\r\n
input - Read CSV data with exotic quoting/escaping rules.
\r\n
partition - Partition CSV data based on a column value.
\r\n
split - Split one CSV file into many CSV files of N chunks.
\r\n
sample - Randomly draw rows from CSV data using reservoir sampling (i.e., use memory proportional to the size of the sample).
\r\n
cat - Concatenate CSV files by row or by column.
\r\n
\r\n',300,0,0,'CC-BY-SA','csv,command-line,data',0,0,1),
(2759,'2019-02-28','Cleaning the Potentiometers on a Peavey Bandit 65',1244,'I disassemble and clean the pots on my Peavey Bandit 65 to fix static in the knobs.','
Since my daughter has been learning a bit of guitar in the last several months, I\'ve actually gotten my old electric guitar and amplifier back out again after many years in the closet. The amp is a Peavey Bandit 65, which was a an affordable solid-state workhorse kind of amp back in the mid-80s and I\'ve had it since it was new. In this episode I talk through the process of removing the brains of the amp and cleaning the potentiometers to try to get rid of some of the static that\'s happening when I turn the knobs. I also discover belatedly that the reason I was not getting any distortion when I turned the saturation up was that the amp was stuck on the clean channel — shows how long it\'s been since I used the amp, I kind of forgot how the thing works!
',238,0,0,'CC-BY-SA','Guitars, electronics, amplifiers, maintenance, repair',0,0,1),
(2753,'2019-02-20','Specific Settings In Storytelling',1027,'Lostnbronx looks at why you might choose specific settings for your tales.','
How does setting interact with plot or character? Why would you choose one type of setting over another? And how do certain specific settings become intrinsic aspects of the story itself?
\r\n
Lostnbronx takes a breezy, mostly incoherent stab at this rather complicated topic.
\r\n',107,105,0,'CC-BY-SA','stories, storytelling, setting, lostnbronx',0,0,1),
-(2758,'2019-02-27','Haskell - Data types and database actions',2566,'Brief summary of how to declare your own datatypes in Haskell and how to store data in database','
Intro
\r\n
I have been doing series about web programming in Haskell and realized that I might have skipped over some very basic details. Better later than never, I’ll go over some of them briefly (data types and database actions). Hopefully things will make more sense after this (like with my friend, whose last programming course was programming 101 and they said afterwards that now all that 3d and game programming is suddenly making sense).
\r\n
Data types
\r\n
Data here has nothing to do with databases (yet). This is how you can declare your own data types in Haskell. They’re declared with keyword data followed with type name, equals sign and one or more value constructors. Type name and value constructors have to start with uppercase letter.
\r\n
Simplest type is following:
\r\n
data Simple = One
\r\n
This declares a type called Simple that has single possible value: One.
\r\n
More interesting type is shown below. Colour has three possible values: Red, Green and Blue.
\r\n
data Colour =\r\n Red\r\n | Green\r\n | Blue
\r\n
It’s possible to have parameters in value constructor. Following is Payment type that could be used to indicate how payment was done. In case of Cash amount is stored. In case of IOU free text is recorded.
\r\n
data Payment =\r\n Cash Double\r\n | IOU Text
\r\n
Fictional usage of the Payment is shown below. Function paymentExplanation takes a Payment as parameter and returns Text describing the payment. In case of cash payment, brief explanation of how much was paid is returned. In case of IOU slip the function returns explanation stored in IOU value.
\r\n
paymentExplanation :: Payment -> Text part is type declaration. It states that paymentExplanation takes argument of type Payment and returns result as Text.
Parameters don’t have to be hard coded in the type definition. Parametrized types allows creating more general code. Maybe is very useful data type that is often used for data that might or might not be present. It can have two values: Nothing indicating that there isn’t value and Just a indicating that value is present.
\r\n
data Maybe a =\r\n Nothing\r\n | Just a
\r\n
a is type parameter that is filled in when declaring type. Below is a function that takes Maybe Payment as a parameter and if value of payment parameter is Just returns explanation of it (reusing the function we declared earlier). In case of Nothing"No payment to handle" is returned.
\r\n
invoice :: Maybe Payment -> Text\r\ninvoice payment =\r\n case payment of\r\n Just x ->\r\n paymentExplanation x\r\n Nothing ->\r\n "No payment to handle"
\r\n
Alternatively one can omit case expression as shown below and write different value constructors directly as parameters. In both cases, compiler will check that programmer has covered all cases and emit a warning if that’s not the case.
\r\n
invoice :: Maybe Payment -> Text\r\ninvoice (Just payment) =\r\n paymentExplanation payment\r\n\r\ninvoice Nothing =\r\n "No payment to handle"
\r\n
Having several parameters gets soon unwieldy, so lets introduce records. With them, fields have names that can be used when referring to them (either when creating or when accessing the data). Below is Person record with two fields. personName is of type Text and personAge of type Age (that we’ll define in the next step).
\r\n
data Person = Person\r\n { personName :: Text\r\n , personAge :: Age\r\n }
\r\n
To access data in a record, just use field as a function (there’s a bug, I’m turning 40, this month (today even, to be specific, didn’t realize this until I was about to upload the episode), but forgot such a minor detail when recording the episode):
\r\n
me = Person { personName = "Tuukka", personAge = 37 }\r\nmyAge = personAge me\r\nmyName = personName me
\r\n
New type is special type of record that can has only one field. It is often used to make sure one doesn’t mix similar data types (shoe size and age can both be Ints and thus mixed if programmer isn’t being careful). Compiler will optimize new types away during compilation, after checking that they’re being used correctly. This offers a tiny performance boost and makes sure one doesn’t accidentally mix different things that happen to look similar.
\r\n
newtype Age = { getAge :: Int }
\r\n
One can instruct compiler to derive some common functions for the data types. There are quite many of these, but the most common ones I’m using are Show (for turning data into text), Read (turning text into data) and Eq (comparing equality).
In case of Yesod and Persistent, database structure is defined in models file that usually located in config directory. It is read during compile time and used to generate data types that match the database. When the program starts up, it can check structure of the database and update it to match the models file, if migrations are turned on. While this is handy for development, I wouldn’t dare to use it for production data.
\r\n
Following definitions are lifted from the models file of the game I’m working.
\r\n
StarSystem\r\n name Text\r\n coordX Int\r\n coordY Int\r\n deriving Show Read Eq
\r\n
This defines a table star_system with columns id, name, coord_x, coord_y. All columns have NOT NULL constraint on them. It also defines record StarSystem with fields starSystemName, starSystemCoordX and starSystemCoordY.
\r\n
Star\r\n name Text\r\n starSystemId StarSystemId\r\n spectralType SpectralType\r\n luminosityClass LuminosityClass\r\n deriving Show Read Eq
\r\n
This works in the same way and defines table star and record Star. New here is column star_system_id that has foreign key constraint linking it to star_system table. Star record has field starStarSystemId (silly name, I know, but that’s how the generated names go), which has type Key StarSystem.
\r\n
spectral_type and luminosity_class columns in the database are textual (I think VARCHAR), but in the code they’re represented with SpectralType and LuminosityClass data types. In order this to work, we have to define them as normal data types and use derivePersistField that generates extra code needed to store them as text in database:
\r\n
data SpectralType = O | B | A | F | G | K | M | L | T\r\n deriving (Show, Read, Eq)\r\nderivePersistField "SpectralType"\r\n\r\ndata LuminosityClass = Iap | Ia | Iab | Ib | II | III | IV | V | VI | VII\r\n deriving (Show, Read, Eq)\r\nderivePersistField "LuminosityClass"
\r\n
Final piece in the example is Planet:
\r\n
Planet\r\n name Text\r\n position Int\r\n starSystemId StarSystemId\r\n ownerId FactionId Maybe\r\n gravity Double\r\n SystemPosition starSystemId position\r\n deriving Show Read Eq
\r\n
This introduces two new things: ownerId FactionId Maybe removes NOT NULL constraint for this column in the database, allowing us to omit storing a value there. It also changes type of planetOwnerId into Maybe (Key Faction). Thus, planet might or might not have an owner, but if it has, database ensures that the link between planet and faction (not shown here) is always valid.
\r\n
Second new thing is SystemPosition starSystemId position that creates unique index on columns star_system_id and position. Now only one planet can exists on any given position in a star system.
\r\n
Database isn’t any good, if we can’t insert any data into it. We can do that with a function shown below, that create a solar system with a single planet:
To use the function, we have to use runDB function that handles the database transaction:
\r\n
res <- runDB createSolarSystem
\r\n
There are various ways of loading data from database. For loading a list of them, selectList is used. Here we’re loading all planets that have gravity exactly 1.0 and ordering results by the primary key in ascending order:
Loading by primary key is done with get. It returns Maybe, because data might or might be present that match the primary key. Programmer then has to account both cases when handling the result:
\r\n
planet <- runDB $ get planetId
\r\n
Updating a specific row is done with update function (updateWhere is for multiple rows):
While persistent is relatively easy to use after you get used to it, it lacks ability to do joins. In such cases one can use library called Esqueleto, that is more powerful and has somewhat more complex API.
\r\n
Extra
\r\n
Because functions are values in Haskell, nothing prevents storing them in data types:
\r\n
data Handler =\r\n Simple (Int -> Boolean)\r\n | Complex (Int -> Int -> Int)
\r\n
Handler type has two possible values: Simple has a function that turns Int into Boolean (for example odd used to check if given number is odd) and Complex that takes two values of type Int and returns Int (basic arithmetic for example, adding and subtracting).
\r\n
Hopefully this helps you to follow along as I work on the game.
\r\n
Easiest way to catch me nowadays is either via email or on fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, database',0,0,1),
+(2758,'2019-02-27','Haskell - Data types and database actions',2566,'Brief summary of how to declare your own datatypes in Haskell and how to store data in database','
Intro
\r\n
I have been doing series about web programming in Haskell and realized that I might have skipped over some very basic details. Better later than never, I’ll go over some of them briefly (data types and database actions). Hopefully things will make more sense after this (like with my friend, whose last programming course was programming 101 and they said afterwards that now all that 3d and game programming is suddenly making sense).
\r\n
Data types
\r\n
Data here has nothing to do with databases (yet). This is how you can declare your own data types in Haskell. They’re declared with keyword data followed with type name, equals sign and one or more value constructors. Type name and value constructors have to start with uppercase letter.
\r\n
Simplest type is following:
\r\n
data Simple = One
\r\n
This declares a type called Simple that has single possible value: One.
\r\n
More interesting type is shown below. Colour has three possible values: Red, Green and Blue.
\r\n
data Colour =\r\n Red\r\n | Green\r\n | Blue
\r\n
It’s possible to have parameters in value constructor. Following is Payment type that could be used to indicate how payment was done. In case of Cash amount is stored. In case of IOU free text is recorded.
\r\n
data Payment =\r\n Cash Double\r\n | IOU Text
\r\n
Fictional usage of the Payment is shown below. Function paymentExplanation takes a Payment as parameter and returns Text describing the payment. In case of cash payment, brief explanation of how much was paid is returned. In case of IOU slip the function returns explanation stored in IOU value.
\r\n
paymentExplanation :: Payment -> Text part is type declaration. It states that paymentExplanation takes argument of type Payment and returns result as Text.
Parameters don’t have to be hard coded in the type definition. Parametrized types allows creating more general code. Maybe is very useful data type that is often used for data that might or might not be present. It can have two values: Nothing indicating that there isn’t value and Just a indicating that value is present.
\r\n
data Maybe a =\r\n Nothing\r\n | Just a
\r\n
a is type parameter that is filled in when declaring type. Below is a function that takes Maybe Payment as a parameter and if value of payment parameter is Just returns explanation of it (reusing the function we declared earlier). In case of Nothing"No payment to handle" is returned.
\r\n
invoice :: Maybe Payment -> Text\r\ninvoice payment =\r\n case payment of\r\n Just x ->\r\n paymentExplanation x\r\n Nothing ->\r\n "No payment to handle"
\r\n
Alternatively one can omit case expression as shown below and write different value constructors directly as parameters. In both cases, compiler will check that programmer has covered all cases and emit a warning if that’s not the case.
\r\n
invoice :: Maybe Payment -> Text\r\ninvoice (Just payment) =\r\n paymentExplanation payment\r\n\r\ninvoice Nothing =\r\n "No payment to handle"
\r\n
Having several parameters gets soon unwieldy, so lets introduce records. With them, fields have names that can be used when referring to them (either when creating or when accessing the data). Below is Person record with two fields. personName is of type Text and personAge of type Age (that we’ll define in the next step).
\r\n
data Person = Person\r\n { personName :: Text\r\n , personAge :: Age\r\n }
\r\n
To access data in a record, just use field as a function (there’s a bug, I’m turning 40, this month (today even, to be specific, didn’t realize this until I was about to upload the episode), but forgot such a minor detail when recording the episode):
\r\n
me = Person { personName = "Tuukka", personAge = 37 }\r\nmyAge = personAge me\r\nmyName = personName me
\r\n
New type is special type of record that can has only one field. It is often used to make sure one doesn’t mix similar data types (shoe size and age can both be Ints and thus mixed if programmer isn’t being careful). Compiler will optimize new types away during compilation, after checking that they’re being used correctly. This offers a tiny performance boost and makes sure one doesn’t accidentally mix different things that happen to look similar.
\r\n
newtype Age = { getAge :: Int }
\r\n
One can instruct compiler to derive some common functions for the data types. There are quite many of these, but the most common ones I’m using are Show (for turning data into text), Read (turning text into data) and Eq (comparing equality).
In case of Yesod and Persistent, database structure is defined in models file that usually located in config directory. It is read during compile time and used to generate data types that match the database. When the program starts up, it can check structure of the database and update it to match the models file, if migrations are turned on. While this is handy for development, I wouldn’t dare to use it for production data.
\r\n
Following definitions are lifted from the models file of the game I’m working.
\r\n
StarSystem\r\n name Text\r\n coordX Int\r\n coordY Int\r\n deriving Show Read Eq
\r\n
This defines a table star_system with columns id, name, coord_x, coord_y. All columns have NOT NULL constraint on them. It also defines record StarSystem with fields starSystemName, starSystemCoordX and starSystemCoordY.
\r\n
Star\r\n name Text\r\n starSystemId StarSystemId\r\n spectralType SpectralType\r\n luminosityClass LuminosityClass\r\n deriving Show Read Eq
\r\n
This works in the same way and defines table star and record Star. New here is column star_system_id that has foreign key constraint linking it to star_system table. Star record has field starStarSystemId (silly name, I know, but that’s how the generated names go), which has type Key StarSystem.
\r\n
spectral_type and luminosity_class columns in the database are textual (I think VARCHAR), but in the code they’re represented with SpectralType and LuminosityClass data types. In order this to work, we have to define them as normal data types and use derivePersistField that generates extra code needed to store them as text in database:
\r\n
data SpectralType = O | B | A | F | G | K | M | L | T\r\n deriving (Show, Read, Eq)\r\nderivePersistField "SpectralType"\r\n\r\ndata LuminosityClass = Iap | Ia | Iab | Ib | II | III | IV | V | VI | VII\r\n deriving (Show, Read, Eq)\r\nderivePersistField "LuminosityClass"
\r\n
Final piece in the example is Planet:
\r\n
Planet\r\n name Text\r\n position Int\r\n starSystemId StarSystemId\r\n ownerId FactionId Maybe\r\n gravity Double\r\n SystemPosition starSystemId position\r\n deriving Show Read Eq
\r\n
This introduces two new things: ownerId FactionId Maybe removes NOT NULL constraint for this column in the database, allowing us to omit storing a value there. It also changes type of planetOwnerId into Maybe (Key Faction). Thus, planet might or might not have an owner, but if it has, database ensures that the link between planet and faction (not shown here) is always valid.
\r\n
Second new thing is SystemPosition starSystemId position that creates unique index on columns star_system_id and position. Now only one planet can exists on any given position in a star system.
\r\n
Database isn’t any good, if we can’t insert any data into it. We can do that with a function shown below, that create a solar system with a single planet:
To use the function, we have to use runDB function that handles the database transaction:
\r\n
res <- runDB createSolarSystem
\r\n
There are various ways of loading data from database. For loading a list of them, selectList is used. Here we’re loading all planets that have gravity exactly 1.0 and ordering results by the primary key in ascending order:
Loading by primary key is done with get. It returns Maybe, because data might or might be present that match the primary key. Programmer then has to account both cases when handling the result:
\r\n
planet <- runDB $ get planetId
\r\n
Updating a specific row is done with update function (updateWhere is for multiple rows):
While persistent is relatively easy to use after you get used to it, it lacks ability to do joins. In such cases one can use library called Esqueleto, that is more powerful and has somewhat more complex API.
\r\n
Extra
\r\n
Because functions are values in Haskell, nothing prevents storing them in data types:
\r\n
data Handler =\r\n Simple (Int -> Boolean)\r\n | Complex (Int -> Int -> Int)
\r\n
Handler type has two possible values: Simple has a function that turns Int into Boolean (for example odd used to check if given number is odd) and Complex that takes two values of type Int and returns Int (basic arithmetic for example, adding and subtracting).
\r\n
Hopefully this helps you to follow along as I work on the game.
\r\n
Easiest way to catch me nowadays is either via email or on fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, database',0,0,1),
(2754,'2019-02-21','Craigslist Scam Catch',460,'Helped a client avoid being scammed on Craigslist and wanted to share some tips to HPR.','
Introduction
\r\n
Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to record on a personal experience I had recently helping a client catch a Craigslist Scam. This will be part two in my series I’m calling “Information Security for Everyone”. As with most of the content I publish in the world of INFOSEC, my goal is to present the information in a way that a majority of people can get value from and anyone can play this for a friend, colleague or family member and make it easy for the non-hackers in our lives to understand. This particular episode shows a powerful way social-engineering can be implemented to steal money from unsuspecting victims and I will break down a few main points and red flags to look out for at the end.
\r\n
A couple weeks ago I was sitting with a client when she asked me offhandedly if I’d ever sent a Moneygram before. I told her I had and ask curiously why she wanted to know. She explained that she was very excited to be adopting a puppy from online and she needed to send $350 USD to the service that ships pets across the country. This immediately caused my hacker-sense to start tingling so I probed a bit more about the transaction.
\r\n
I asked if she had spoken to the seller on the phone, and she said she hadn’t. I said that seemed weird, but she assured me that the seller said it had to do with her religion. I wasn’t aware of any religious prohibitions to speaking on the phone that also allowed using Craigslist, but okay. I told her that that seemed a bit fishy to me. She asserted that she thought it did too at first, but she knew it was legit because she wasn’t sending the money to the seller, it was being sent to a third party pet transportation company that the seller had had contact her. She even showed the website of the company on her cell phone, which to be blunt, to my eyes looked extremely janky. I asked her if we could sit down for a few minutes and take a look at a few details before she sends anyone any money. She reluctantly agreed and really wanted this puppy.
\r\n
The first thing I asked to look at was the emails back and forth from the seller. I checked Google and all other major social media sites for the sellers name. No matches. Couldn’t Google the sellers email address due to the Craigslist email relay system. This in and of itself might be okay, we all use pseudonyms online sometimes and Craigslist is a site you might not wanna use your real name. Fine.
\r\n
She then showed me the email thread with the shipping company.
\r\n
The first strange thing I noticed from the emails was the link to the pet shipping company. The name didn’t match the URL in the link. You’d think a business would be able to get their own name right. I also saw that if you Googled the name given by the shipper, it’s extremely similar to a legitimate pet shipping company and indeed that legit company comes up as the first site found due to Google “fixing” our query. When you go to the link in the email however, the site itself was terrible to my eyes, but not to my client who is not as seasoned as I am at catching scams. I also showed her that the “company” didn’t have any social media presence. At all. No Facebook, Twitter, anything. Also the email address that was contacting her was reallylongcompanyname@outlook.com
\r\n
She also told me she had spoken to the shippers on the phone and I asked if she still had their number. She did, but she told me she couldn’t ever get through when she called them and they’d always have to call her back. I asked for the number and called it on my phone. It was a Google Voice number! Not only that it was set to screening mode. She also told me when he did call her, he was rude and tried to get her to hurry up and send the money. I told her I was 100% confident this was a scam and I advised her to not go through with the deal.
\r\n
At this point she was extremely unhappy, but felt it was still a legitimate transaction because she had pictures sent to her of not only the puppy, but of the puppy in the shipping crate at the shipping company waiting for payment to be shipped. She explained that it’s not like it was a person trying to sell dogs or from a puppy mill. It was a lady giving it away for free and the money was for was the shipping. She just didn’t see why a scammer would go to the trouble of doing that and felt the pictures were authentic. I asked her to save all the images to her device and then showed her a site she could use to do reverse image searches. Before she did it, I asked her if she agreed that if this wasn’t a scam those pictures wouldn’t exist anywhere on the internet. She agreed and each of the pictures was found at least 9 other places online. Her heart sank and she didn’t have any further rebuttals to my concerns. She knew it was a scam and I just saved her from losing at least $350 USD. Not to mention that the scammer would have also asked for more money later for “shots” and “insurance”. Who knows how far they might have gotten.
\r\n
So here are the main red flags:
\r\n
\r\n
Seller wouldn’t talk on phone
\r\n
Seller name didn’t seem legitimate
\r\n
Name of shipping company didn’t match URL in email
\r\n
Googling company name shows close match with legitimate company
\r\n
Company website very poorly designed and implemented
\r\n
Company has no social media presence
\r\n
Email address of contact at company using generic email address and not a legit domain
\r\n
Contact at company could only call her and she was never able to make inbound calls
A few of the tricks used by the scammers in this scam to make it more successful:
\r\n
\r\n
Listed as adoption versus a sale to alleviate concern
\r\n
Handed off to “second party” to build legitimacy
\r\n
Use cute puppy pictures to appeal to emotion and overrule suspicion
\r\n
Counted on target not paying attention to detail
\r\n
Shipper established a sense of urgency
\r\n
\r\n
She was very thankful and I told her to be very careful when anyone from online ever asks her to send money. I told her in all likelihood this was probably one person the whole time, hence why the person adopting out the dog “couldn’t talk on the phone”. They were also probably not even in this country as we know many of these scams aren’t. She did say that the shippers English wasn’t good. I also told her to make she shares this experience with all her friends and family. I always feel the best way to handle someone getting caught in a scam is to be on their side and never shame them. We are all susceptible to scams and social engineering and the best way to proceed is to empower them to share what they’ve learned. I also sent her a link to an article on the BBB site about these very types of scams that I’ll also link below. She was shocked how similar her experience was to the ones explained on the article.
\r\n
Well, thank you for taking the time to listen to my experience helping a client avoid getting caught in the all too common Craigslist scam. I hope this will help any non-hackers in your life and like I say in all my podcasts, I don’t claim to know all there is to know and love feedback and any opportunities to learn more or collaborate with others in the field. As with most of the research and articles I’ve written in the past, these are geared toward standard users in a business setting and are meant to be a jumping off point for further research and to be a foundation for cyber security 101 level training classes. If you like what I do, and want to have me come speak to your team, or just wanna chat, feel free to email me.
\r\n',372,74,1,'CC-BY-SA','craigslist,scam,con,social engineering,puppy,dog,money,moneygram,infosec,cyber-security 101',0,0,1),
-(2756,'2019-02-25','Bash Tips - 20',1955,'Deleting arrays; positional and special parameters in Bash','
Tidying loose ends (Some collateral Bash tips)
\r\n
Deleting arrays
\r\n
I forgot to cover one thing on my list when doing the last show: I forgot to explain how to delete arrays and array elements. I’ll cover that topic in this episode.
\r\n
Positional and Special parameters
\r\n
I have also avoided talking much about the positional and special parameters in Bash: \'$1\', \'$2\', \'$#\' and the rest. I will cover (some of) these in this episode.
\r\n
Silly titles
\r\n
I stopped doing the weird episode titles by episode 14 because I thought the joke was getting tired. However, I think a few people missed them (and a certain HPR colleague was found vandalising my new titles as they were being posted ;-), so I have added them inside the notes on the older shows and am adding one here – as a homage to silliness.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,delete,positional parameters',0,0,1),
+(2756,'2019-02-25','Bash Tips - 20',1955,'Deleting arrays; positional and special parameters in Bash','
Tidying loose ends (Some collateral Bash tips)
\r\n
Deleting arrays
\r\n
I forgot to cover one thing on my list when doing the last show: I forgot to explain how to delete arrays and array elements. I’ll cover that topic in this episode.
\r\n
Positional and Special parameters
\r\n
I have also avoided talking much about the positional and special parameters in Bash: \'$1\', \'$2\', \'$#\' and the rest. I will cover (some of) these in this episode.
\r\n
Silly titles
\r\n
I stopped doing the weird episode titles by episode 14 because I thought the joke was getting tired. However, I think a few people missed them (and a certain HPR colleague was found vandalising my new titles as they were being posted ;-), so I have added them inside the notes on the older shows and am adding one here – as a homage to silliness.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,array,delete,positional parameters',0,0,1),
(2757,'2019-02-26','How to DM',2694,'Klaatu explains how to DM an RPG, and Lostnbronx demonstrates, step by step, how to build a dungeon','
Klaatu
\r\n
\r\nI\'ve gotten a lot of great feedback on the Interface Zero play-through and the episode about getting started with RPGs I did with Lostnbronx.\r\nPeople have told me that one of the biggest blockers to getting started is knowing what to do as GM.
\r\nNow, I\'ve read lots of rulebooks and GM guides, and it seems to me that most of them assume you\'ve either played an RPG before, and so you\'ve seen an example of a Game Master at play, or you\'ve seen one on Youtube or Twitch. It\'s a safe assumption, but it\'s easy to forget all of those great examples under pressure.\r\nSo in this episode, Lostnbronx and I are going to provide you with some clear and direct instructions on what exactly a GM does.\r\n
\r\nThe short version is this:
\r\n
\r\nTell the players where they are and what they see around them.\r\n
\r\nListen to the players when they tell you what they want to do.\r\n
\r\nTell the players the outcome, based on your privileged knowledge of the game world or on a roll of the dice, of their actions.\r\n
\r\n
\r\nYou loop over that sequence, and you\'re game mastering!\r\n
\r\nBut that makes for a short episode, and anyway, there are details about the process that we can talk about to make you feel more comfortable with the prospect of deciphering a game world with your friends.\r\n
\r\nTo that end, Lostnbronx and I have started a website dedicated to gaming! You should check it out, subscribe to our feed. We discuss everything game-related there, plus a little tech and all manner of topics of interest to geeks.\r\n
\r\n\r\n
Lostnbronx
\r\n
\r\nRight off the bat, it\'s important to understand that every GM is different. No two styles of running a game match completely, nor should they. And while there\'s no one correct way to run a game, there are plenty of ways to do it poorly. The GM wears many hats, but in my opinion, the most important job is to make sure that everyone has a good time. Your players are giving you an evening out of their lives. Next week they\'ll probably give you another. It\'s your job to make sure that time isn\'t wasted.\r\n
\r\nBy definition, games, even role-playing games, are a form of entertainment -- like reading a book, watching a movie, or enjoying the circus. When you go to that, the GM is the ringmaster, presenting the show; while the players are both the audience, and the main attraction. The GM controls the world, the people, the monsters, the history, even the weather. The GM controls everything, in fact...except for the player characters. A game master presents the situation, but it\'s the players who decide what to do with that information.\r\n
\r\nNow, this is all pretty vague, and describing RPG\'s is far less informative than playing them. Considering this is a podcast, I encourage you to go back and listen to Klaatu\'s aforementioned \"Interface Zero\" episodes. These are excellent examples of actual game play. If you\'re having a hard time imagining how RPG\'s are presented and experienced, you\'ll appreciate those shows.\r\n
\r\nNow then, almost all games are divided into genre types: sword and sorcery; space opera; spies; super-heroes; and pretty much everything else. And I mean everything! If there\'s a genre of fiction and storytelling that you enjoy, chances are there\'s a game or game setting for it somewhere. The most popular style of RPG\'s out there are fantasy. Think \"Lord of the Rings\". Think \"Harry Potter\". Think of anything, in fact, because all of it is possible.\r\n
\r\nA staple of the high fantasy genre of gaming is the dungeon. Now, that term has two meanings in this sort of game: first, the usual meaning, of what amounts to the basement of a castle, with jails, interrogation rooms, storage rooms, and more. The other meaning refers specifically to a type of adventuring environment. Both of these are usually found underground, but an adventuring dungeon may have nothing to do with any castle. It might be a lost crypt, a cave system, an abandoned gold mine, or the lair of some dreaded beast that\'s been terrorizing the countryside. In the dungeon might be enemies, monsters, and treasure protected by deadly traps. Magic abounds. There might be puzzles, dark secrets, or a kidnapped prince to rescue.\r\n
\r\nAs a new GM, you can start off any way you want, but in my experience, the best way to get used to how the game works, and how the whole process of providing an evening\'s entertainment to your friends or family works in this context, is to create a dungeon and run your players through it.\r\n
\r\nDungeons generally require set-up time; that is to say, you have to design it in advance. Now, Klaatu and I are currently working on ways to ease that burden, with the ultimate goal of eliminating the pre-work entirely. But for now, let\'s talk about the traditional way to approach all this. What follows is a step-by-step process, but understand, it\'s only one of an infinite possible number of them.\r\n
\r\nSTEP 01 -- CREATE THE COUNTRYSIDE\r\nSome GM\'s say creating the world is the first step. Some say creating the godly pantheons of the world is the first. Some say it\'s the history, or the fantasy races. They\'re not wrong, but trust me, when you\'re just starting out, none of that stuff matters. In this example, you\'ll be running the players through a dungeon. That dungeon is out in the country, within the middle of a large forest.\r\n
\r\nNow, it will make the beginning and end of the adventure easier if you have a small village nearby where the player characters all live. We\'ll call it Forestdale for the lack of anything better. In Forestdale, there\'s an inn or tavern. This is where people get together, tell tall tales, and become inspired to go adventuring, so let\'s give it a name as well: \"The Prancing Unicorn\". That\'s home base. Every player character knows this place, and everyone in it knows them.\r\n
\r\nOne of the stories being swapped at \"The Unicorn\" lately is about a tribe of dangerous creatures living in an underground lair somewhere within the forest. They are led by an evil wizard, or so the tales go. They have been attacking farmers and merchants who travel through the roads and foot paths of the woods in order to sell their goods in Forestdale. One of the merchants says he saw them travel down the Western path near the Old Bridge. Something must be done, but who would be brave or foolhardy enough to even try?\r\n
\r\nAnd that\'s all you need to create for the world right now. Remember, this stuff is new; no one needs large amounts of detail just yet, least of all you. You\'ll have enough to juggle.\r\n
\r\n\r\n\r\nSTEP 02 -- CREATE THE DUNGEON FLOOR PLAN\r\nOne of the rumors to be heard at \"The Prancing Unicorn\" is that there\'s an underground cave system or labyrinth somewhere in the forest. Some say it\'s a myth, others say their cousin\'s uncle\'s sister\'s best friend came across it once. Either way, its existence is shrouded in mystery, and people are said to go in, but not always come out.\r\n
\r\nThis is your first dungeon. You don\'t want to do more work than you need to. Let\'s make this dungeon a single level. Later, you can add a secret panel somewhere that can reveal a set of stairs down to a second level (and from there, a third, fourth, tenth, or more). Right now, it\'s one level, hidden below the forest. It\'s dark, it\'s dangerous. It\'s plenty.\r\n
\r\nPutting a dungeon together can be difficult, but it doesn\'t have to be. The traditional way to create one of these is to use graph or hex paper and draw out the floor map. Each square of the graph paper is equal to ten feet, or, say, three meters. You make note of all rooms, caves, doors, hallways, stairs up or down, floor traps, hidden doors, and anything else you want in there. Be sure to put a set of stone stairs that lead from the forest above, down to this dank and gloomy dungeon.\r\n
\r\nThere are no standard symbols for the different things on the map, despite what anyone might tell you, but for now, let\'s turn the paper landscape style, and at the top of the page, now held that way, outline one square of the graph paper with a pencil. Inside the square, draw three or four small lines at an angle. This will represent a set of stairs. Next to the stairs, write the letter \"U\". This is the way to get to the forest above. Granted, it\'s how the player characters will come down here to begin with, but once they are here, they have to go up to leave, hence the \"U\". If that\'s confusing, you can write, \"To The Forest Above\", next to this square, maybe with a little arrow. You can write anything you want, but this is how the player characters will get in and out of your dungeon.\r\n
\r\n\r\n
\r\nWe\'re going to draw the floor plan from the top of the page down. The entire dungeon map will be on this one side of the paper. In the corner, draw an arrow pointing up, and put a letter \"N\" there. That\'s North. We\'ll be using compass directions from now on. Granted that when underground, it\'s hard to get your bearings without a compass, but for this first dungeon, we won\'t worry about that. North, South, East, West. It makes life easy.\r\n
\r\nOn the bottom of the page, to the South, draw a box in the middle of the page that\'s ten by ten squares in size. This is where the dungeon tunnels all will be leading, and where we\'ll have the biggest fight of the adventure. We\'re setting that up now, so we always know where we\'re heading. Now go back to the stairs at the top of the page.\r\n
\r\nDraw a long line from the lower edge of the stairs going West. Stop the line a square or two from the edge of the paper. Now do the same thing going East. Next, move down one square, and draw another line parallel to both of these, going entirely from one side of the page to the other, East to West. You\'ve just created a place for the players to explore, so imagine it for a moment: they come down some broken, forgotten stairs. Let\'s say they travel at least a hundred feet down, tripping over tree roots and walking through cobwebs, until the stairs deposit them in the middle of a dark tunnel, ten feet wide. It stretches to either side, running East and West out of sight (you know that it goes hundreds of feet in both directions, but you\'ll let them discover that for themselves). They listen, and can hear nothing but the scurrying of unseen vermin. At least, they hope that\'s what it is. Not a bad start.\r\n
\r\n\r\n
\r\nAlong this hallway, you\'ll draw little rectangles, like black bars, on random squares along the Southern side of the tunnel. Not too many, just a few here and there, with generous space in between. These are heavy wooden doors. Some may be locked. That\'s your choice. If they are, put a little symbol near them. It could be as simple as the letter \"L\", so let\'s go with that. Now you know where the all doors are in this particular tunnel, and you know which of them will be a challenge for the player characters to open.\r\n
\r\nThis is just the first tunnel of a larger complex. This complex can be as big or as small as you\'d like. Let\'s say it\'s moderately sized. Before we draw more tunnels, let\'s draw the rooms behind those doors. This will tell us how much map space we\'ll have for further tunnels. Some GM\'s like to draw all the tunnels first, and then fit in the rooms. You can do it however way you want later on; right now, let\'s just use this method. Pick a door. Draw a box behind it, three or four squares in size. That\'s the room. Do the same behind the other doors. Make the rooms different shapes and sizes, but not too big. Let the big room at the bottom be the star. When you\'re done, you have a huge tunnel, with several mysterious doors, behind which are some good-sized rooms.\r\n
\r\nOn the part of the tunnel that ends on the West side, draw a connecting tunnel South for five squares, and then turn the direction back to the East. Draw this tunnel going that way for ten squares. Put a door or two along here, and draw some rooms for them. Turn the tunnel South again, and go five or six squares, and turn it East again for four squares. Draw a door and room. Maybe it\'s locked, maybe not. Continue with this meandering, jagged floor plan, wandering East and then West, but always moving South. Add occasional doors and rooms as you go, until your tunnel finally ends on the Western side of the large ten by ten square room at the bottom of the page. Draw a door to get in there.\r\n
\r\n\r\n
\r\nNow go back up to the long tunnel at the top, and repeat this whole process on the Eastern side, eventually bringing that part of the tunnel to the Eastern edge of the big room at the bottom. Put a door there.\r\n
\r\n\r\n
\r\nNow, number your rooms on the map, starting at at the top, and working your way down, until you\'ve marked each one. Room numbers are essential, because you\'ll be keeping track of each one.\r\n
\r\n\r\n
\r\nThe floor plan to your first dungeon is complete. Now you need to put interesting things in it.\r\n
\r\n\r\nSTEP 03 -- POPULATE YOUR DUNGEON\r\nOkay, on a separate piece of paper, list the rooms of your dungeon. Start at #1, and go down. Beside the room number, you put in a brief description, along with any monsters, treasure, or other points of interest. You\'ll be consulting this list throughout the game, so write down everything you need to know, in order to minimize the amount of time you\'ll inevitably have your nose in the rulebook while playing. Monster statistics, including their weapons, and and the damage they do, should all be on this list, though there are ways to simplify the process, once of which I\'ll go into in a moment.\r\n
\r\n\r\n
\r\nWhen putting creatures and things into your dungeon, the first thing to remember is to not overload it. Each room does not need a monster. Not every room needs treasure. It might be helpful to think in terms of what you\'d like to see in the dungeon as a whole. Remember the stories of evil creatures, and possibly a wizard, which you heard at \"The Dancing Unicorn\"? We\'ll use that as our springboard. This is a starting dungeon, not just for you, but also for the player characters. Starting dungeons mean low-level monsters, so let\'s go with goblins.\r\n
\r\nGoblins are generally quite impressed with magic, so we\'re going to assume a wizard of dubious character has bullied a small tribe of them into being his thugs. They\'ve been waylaying passing merchants and farmers, stealing their wares, and carrying off food (along with the occasional peasant worker, as goblins love the taste of human flesh). Stupid, but dreadful creatures, they have displayed a level of tactical organization that\'s not normal for them. This, of course, is because the wizard\'s in charge. Look up the statistics for goblins, and understand what they\'re like. For this adventure, we\'re not going to worry about goblin captains, or goblin chiefs, both of which are tougher than your average goblin. No, all the creatures for this adventure have the same statistics. Don\'t drive yourself crazy writing them down, over and over. Write them once at the bottom of the room description page, and every time the player characters run into a goblin, consult them.\r\n
\r\nLet\'s say there are a total of fifteen goblins in this dungeon. They won\'t all be together; the player characters will encounter a few of them here and there, in various rooms, or maybe ust wandering the tunnels. The rooms themselves will have the spoils of all their raids, including barrels of wine, hams and sides of beef; furs, and a few copper, silver, and gold coins. If there\'s wine in one of the rooms, maybe the goblins there are drunk, fighting at a penalty to hit and damage. And remember, not all rooms need things in them. Maybe this was once a temple, and there\'s just broken furniture, and rotting religious robes in some of the rooms. In one, there might also be a tapestry against the wall, depicting a miracle of whatever god this place was once dedicated to. What you might not tell the player characters up front is that the tapestry could fetch a fair amount of gold coins in the market back in Forestdale. Too big to carry while exploring the dungeon, such a thing could always be rolled up and fetched on their way out. Not all treasure is found in wooden chests.\r\n
\r\nThen again, a lot of it is, so why not put one in the big room to the South? Of course, you have to defeat the evil wizard and his goblin cohorts, wh are hanging out in there. As a rule of thumb, you might want to sprinkle half the goblins throughout the dungeon, leaving the other half here, for the final fight. Stealth matters. Approaching the big room noisily, and kicking open one of the doors, is not stealthy. The player characters might be able to catch the wizard and his minions off-guard, if they move quietly.\r\n
\r\nIn order to be a credible threat to the player characters, this wizard should be of a slightly higher level, say 2nd or 3rd. He\'ll have some aggressive spells, and he\'ll have his goblins handy. You\'ll roll up the wizard the same way the players rolled up their characters, only you\'ll make him more experienced, and with more spells at his command. Maybe he even has a magic item of some sort. Should the players defeat this guy, this magic item will be part of the treasure; until then, it\'s something the wizard will use against them. Don\'t make it too tough. Maybe don\'t make it tough at all: a +1 Ring of Protection, maybe. Or perhaps, a +1 dagger. That might not sound like much, but it\'s more than the player character\'s have when they start.\r\n
\r\nNot enough excitement, maybe? Just add in a couple of giant rats in one of the rooms. Maybe some large spiders in another. Don\'t forget to put their statistics down in the room description. Judging how tough or easy a dungeon needs to be comes with experience. My suggestion is to err on the side of toughness, to put more challenges in there than maybe you feel comfortable with. If the player characters are looking depleted and injured, you can say the room is empty, instead of filled with spiders. Also, it doesn\'t hurt at all to remind the players now and then that it\'s okay to retreat. They can always come back another day when they\'re rested, and have made plans based on the knowledge they gained the first time around. It sets up a grudge match...the heroes vs. the evil wizard and his goblin hoard. You, as the GM, just repopulate the goblins, move them around a bit, so they\'re not all in the same rooms as before (though the big room should still be for the final fight), and //voila//! You\'ve just provided your players with two night\'s worth of entertainment, for the effort of only one.\r\n
\r\nAnd there you have it: a stocked dungeon that dovetails into the local lore of the countryside, ready for your players to explore.\r\n
\r\n\r\n\r\nSTEP 04 -- ROLLING UP CHARACTERS\r\nSome GM\'s will want a whole night just for this process. Others will just have the players arrive at the game with their characters ready to go, especially if they are experienced with the game. I won\'t go over the character creation process here, because each game is different, and some are VERY different. I mention this now, though, because the players need characters, and creating them comes before the adventure starts. If the game is as new to them as it is to you, take that whole night to help them create their characters. It\'s fun all on its own, and it allow\'s everyone to be familiar with the other characters -- something vital to party survival.\r\n
\r\nI\'m not going to go into detail about the process of rolling up characters, because, like you, Klaatu and I have dedicated an evening just to this process. In a previous episode in this mini-series, the two of us created a character from the ground up, so you can hear what\'s involved, and how you might want to approach the process with your own players.\r\n
\r\n
Klaatu
\r\n
\r\nIf designing your own custom dungeon seems intimidating to you, there is another way. And it\'s a time-honoured, legitimate way to play, and it\'s quite often the way I play: you go find an adventure that someone else has already written.\r\n
\r\nAn adventure is the scenario you and your players experience when you sit down at the table to play. It\'s arguably the *game* (the rulebooks are the game engine, or the mechanics). Wizards of the Coast, Paizo, Catalyst, Kobold Press, Frog God, and many others publish adventures (sometimes called \"modules\", \"scenarios\", or \"adventure paths\") written by professional game designers. Published adventures provide the story framework for your game.\r\n
\r\nNot all systems publish adventures, though, or you may choose not to use one. If that\'s the case, spend some time developing a story. Writing a good game is part science, part craft, and part magic, but if you and your players are up to the challenge, then running blindly through a story that\'s mostly being created spontaneously on the spot can be a lot of fun. If that sounds overwhelming, though, get a published adventure!\r\n
\r\nQuick tip: Free, small, or introductory adventures are often available from https://drivethrurpg.com, https://dmsguild.com, and https://www.opengamingstore.com\r\n
\r\nMany adventures have text blocks that provide you with introductory text for each part of the game, they explain clearly what the goal of the players is during that segment, and give you guidance on what players will find in the area and how those discoveries lead to the next plot point.\r\n
\r\nBroadly speaking, there are two types of published adventures: there are \"one-shots\" and there are \"modules\" or \"adventure paths\".\r\n
\r\nA one-shot adventure is analogous to a quest in a video game: it\'s a single, clearly-defined task with a very obvious and immediate result; for example, goblins are terrorizing the hapless citizens of the local village, so go to their cave and clear it out: if you do, you\'ll relieve the villagers of the horrors, and you get to keep any gold or weapons you find.\r\n
\r\nThe advantage is that it\'s designed to be a quick, one-time game session, so it\'s perfect for playing with friends you only see once in a while, or with someone who\'s never played before and just isn\'t sure if it\'s something they want to commit to. Don\'t be fooled by the page count of these small adventures: it may only be 5 to 10 pages long, sometimes less, but you\'ll be surprised at how long players can spend exploring a boundless world existing only in their imagination.\r\n
\r\nAdventure paths or modules or campaigns are bigger stories with\r\nloftier goals. You can think of them as lots of little one-shots\r\nstrung together so that once players accomplish all the tasks and\r\nsolve all the mysteries over the course of 200 pages, they have a\r\nfinal showdown with some Big Bad, and win themselves a place in the\r\nlegends of the game world. It\'s an epic poem instead of a short\r\nstory. It feels grander, it feels important. The losses along the way\r\nare more profound, and the victories sweeter. These campaigns take\r\nmonths to play through and usually expect a gaming group to meet\r\nweekly or fortnightly or at least monthtly to work their way through\r\nthe tale.\r\n
\r\nI should mention one more kind of book you might stumble across, and\r\nthose are source books. I mention this because I\'ve had friends go and\r\nbuy books more or less blindly, and then they bring them back home\r\ndisappointed that instead of a book of lore about dark elves, they\r\nbought an adventure set in the underdark. Or the other way round: they\r\nwanted an adventure and ended up with a rule book.\r\n
\r\nThis happens with the bigger systems that produce a lot of media, like\r\n{D&D, Shadowrun, Pathfinder, Warhammer}, so get clarity on what you\'re\r\nbuying before you make a purchase. If you come across a cool ShadowRun\r\nbook called RUN FASTER expecting a campaign to run with your friends,\r\nyou\'ll be surprised to find that you\'ve purchased a source book full\r\nof metatypes, expanded rules, and alternate character creation\r\nmethods: sort of a Shadowrun Core Rulebook part 2. Same goes for, say,\r\nVolo\'s Guide with D&D, or Ultimate Campaign in Pathfinder. It can be\r\noverwhelming and they\'re not aways labelled clearly (or if they are,\r\nthe label gets lost in the word cloud of RPG jargon that you\'re not\r\nused to yet), so do a little research first.\r\n
\r\nI\'ve played through dungeons that a GM created over his lunch break, and I\'ve played through adventures written by clever game designers, and I can confidently say that they\'re both great ways to RPG. But as a GM, if you feel overwhelmed by the idea of designing a dungeon, a published adventure is a great way to start. Aside from reading a chapter ahead before each game night, all the prep work is done for you, and there\'s very little thinking required.\r\n
\r\nAnother part of being GM is deciding when a die roll is necessary. Die rolls represent the chance of success or failure when a specific action is taken, but the confusing thing is: if you think hard enough about anything in the world you can find a chance of success or failure. As a GM, it\'s up to you to decide what\'s \"important\" enough for a roll. Strictly speaking, that\'s determined by the rules. The rules told you what requires a roll, and you\'re expected to know the rules well enough to make the call.\r\n
\r\nIn practise, however, you have a lot of stuff to track in you head, and remembering what requires a die roll, or deciding to request a die roll even though it may not be strictly required, can feel overwhelming for a new GM.\r\n
\r\nGood news: Players intuitively know when to roll dice. A player knows their character\'s skills (because they built the character and wrote it down on their character sheet), so sometimes the actions they choose to take are chosen because it falls within a category of a skill they happen to have. A thief probably wouldn\'t ever think to *look* for hidden door if the thief were a fighter (who would more likely think to pound on the wall rather than to slyly look for a hidden door). So if your player reaches for dice, let them roll because they\'re probably right.\r\n
\r\nI\'m sure it\'s possible to take it too far, but people like to roll dice. It\'s part of the fun of an RPG, the uncertainty of subjecting yourself to the whims of fate. So when in doubt, either make your players roll dice, or roll dice yourself. I use dice rolls to help me decide everything from NPC reactions to weather conditions. It\'s usually safe to default to rolling.\r\n
\r\nWorst case scenario is that die are only picked up for fights and a literal interpretation of skills: and that works because those are the rules as written.\r\n
Klaatu
\r\n
\r\nPlayers drive the story. In video game or movie terminology, they control the \"camera\". When players are exploring or investigating, let them ask questions or take actions (\"I look in the closet\"), and answer them as you see fit (\"You open the closest and see an array of fine garments.\")\r\n
\r\n\"I\'ll move the clothes aside and examine the walls, and the floor. I\'m looking for trap doors or hidden compartments, or anything suspicious.\"\r\n
\r\nAnd so on. Players can choose to investigate and explore for as much as they want. That\'s the beauty of a pen-and-paper RPG: the world is infinite. That said, you\'re the GM and you owe it to your players to keep the game moving. You don\'t to let your players spend 3 real hours searching a room that, in the end, has no bearing upon the plot whatsoever. That can be a delicate matter, because the nature of the game means that you know things that the other players don\'t, meaning much of the puzzle for players is what they don\'t know.\r\n
\r\nUsually I let players explore a space on their own until I feel that they\'ve explored the obvious parts of it, and then I remind them where the exits are, or I remind them how many other rooms there are to explore, or some subtle clue to say, without saying, that they\'ve secured an area.\r\n
\r\nIf players are especially suspicious of something, though, you certainly have the power to generate a subplot, and often times you should do that. It\'s fun for you and rewarding to players. For instance, if a player is convinced that there\'s a secret panel in a closet and spends a lot of time investigating, then you might decide that there IS a secret panel in the closet, and then roll on a random table to determine what could possible inside that compartment. Or you could leave the compartment empty, thereby creating a story hook to return to later...what used to be in that compartment? who took it, and why? What were the implications?\r\n
\r\nKeeping the gaming moving is an inexact, unscientific process, but usually it comes pretty naturally. When you start to get bored of the players exploring, you can bet that they\'re probably getting bored too, and that\'s when you know to urge them forward. If all else fails, you can always have something lure them from one space to another: a mysterious sound, an oncoming threat, or a supernatural or divine instinct.\r\n
\r\n',78,95,0,'CC-BY-SA','rpg,dm,gm,game master,dungeon master,dnd',0,0,1),
(2762,'2019-03-05','What You Really Are',996,'Lostnbronx looks back at his early gaming days.','
I got into Dungeons & Dragons back in the 1970s. This is my memory of that time and that gaming group, and especially, of the guy who taught me how to play.
',107,95,0,'CC-BY-SA','gaming, D&D, lostnbronx',0,0,1),
(2763,'2019-03-06','Deepgeek explains SPF records',849,'Confused about SPF? Klaatu was. Here\'s Deepgeek\'s explanation.','
\r\nKlaatu reads a phlog (gopher) post by Deepgeek explaining the practical uses of SPF records.\r\n
',78,99,0,'CC-BY-SA','email,spf,mx,postfix,smtp',0,0,1),
(2770,'2019-03-15','Navigating the maze of RPG books',1873,'There are so many kinds of RPG books out there, where do you start? Klaatu tells all!','
\r\nTaxonomy of RPG-related books:\r\n
\r\n\r\n\r\n
\r\nRulebooks tell you how to play the game.\r\n
\r\n
\r\nOptional books of rules add modular components to the base game. They add nuance to specific actions (for example, a book might add rules on owning and managing a castle in a fantasy world, or it might add rules on hacking in a sci fi game; these are things you can do without rules in the game, but if you want added stakes, then these books are ones you would want to obtain).\r\n
\r\n
\r\nAdventures (formerly called \"modules\") provide game plots and locations, in the event that you have no interest in designing your own.\r\n
\r\n
\r\nSource books or \"settings\" provide additional information on the setting of a game, sometimes even providing an alternate game universe with additional rules.\r\n
\r\n
\r\nExtra media, like novels, comics, movies, and video games, provide more information (sometimes in canon, sometimes not) about the game universe in which you are playing. Rarely do these have impact on the rules of the game, but they may provide a common language and shared experience for the players.\r\n
\r\n\r\n\r\n
\r\nThe only essential purchase is the rulebook. Everything else can be generated by gamers. Purchasing additional material is optional, and can either be seen as a great way to support a company providing your entertainment, or as an insidious plot by greedy corporations to rope you into a perpetual cycle of capitalism. However, RPG is a pretty healthy (and often open) system, so free and open content abounds.\r\n
\r\n\r\n\r\n',78,95,0,'CC-BY-SA','book,rpg,game',0,0,1),
(2782,'2019-04-02','Never stop gaming',1277,'Ways to feed the gaming impulse, even when you can\'t game','
',78,95,0,'CC-BY-SA','rpg,dm,gm,game master,dungeon master,dnd',0,0,1),
(2795,'2019-04-19','Dead Earth',2210,'A review of a 20-year old, GNU Free Documentation Licensed, RPG about post-apocalyptic turmoil','
',78,95,0,'CC-BY-SA','RPG,Tabletop Game,Dead Earth',0,0,1),
-(2768,'2019-03-13','Writing Web Game in Haskell - Planetary statuses',1122,'tuturto describes system for recording planetary statuses in their game','
Intro
\r\n
In episode hpr2748 Writing Web Game in Haskell - Special events, I talked about how to add special events in the game. One drawback with the system presented there was that the kragii worms might attack planet that already had kragii worms present. This time we’ll look into how to prevent this. As a nice bonus, we also come up with system that can be used to record when a planet has particularly good harvest season.
\r\n
Data types and Database
\r\n
We need a way to represent different kinds of statuses that a planet might have. These will include things like on going kragii attack or a particularly good harvest season. And since these are will be stored in database, we are also going to use derivePersistField to generate code needed for that.
We could have recorded statuses as strings, but declaring a separate data type means that compiler can catch typos for us. It also makes code easier to read as PlanetaryStatus is much more informative than String or Text.
\r\n
For database, we use following definition shown below in models file. It creates database table planet_status and respective Haskell data type PlanetStatus. There will be one row in database for each status that a planet has. I could have stored all statuses in a list and store that in database, effectively having one row for any planet. Now there’s one row for any planet + status combination. Choice wasn’t really based on any deep analysis, but merely a gut feeling that this feels like a good idea.
\r\n
PlanetStatus json\r\n planetId PlanetId\r\n status PlanetaryStatus\r\n expiration Int Maybe\r\n deriving Show Read Eq
\r\n
expiration column doesn’t have NOT NULL constraint like all other columns in the table. This is reflected in PlanetStatus record where data type of planetStatusExpiration is Maybe Int instead of Int. So some statuses will have expiration time, while others might not. I originally chose to represent time as Int instead of own data type, but I have been recently wondering if that was really a good decision.
\r\n
Kragii attack, redux
\r\n
Code that does actual database query looks pretty scary on a first glance and it’s rather long. First part of the code is there to query database and join several tables into the query. Second part of the code deals with counting and grouping data and eventually returning [Entity Planet] data that contains all planets that match the criteria.
\r\n
-- | Load planets that are kragii attack candidates\r\nkragiiTargetPlanets :: (MonadIO m, BackendCompatible SqlBackend backend\r\n , PersistQueryRead backend, PersistUniqueRead backend) =>\r\n Int -> Int -> Key Faction -> ReaderT backend m [Entity Planet]\r\nkragiiTargetPlanets pop farms fId = do\r\n planets <- E.select $\r\n E.from $ (planet `E.LeftOuterJoin` population `E.LeftOuterJoin` building `E.LeftOuterJoin` status) -> do\r\n E.on (status E.?. PlanetStatusPlanetId E.==. E.just (planet E.^. PlanetId)\r\n E.&&. status E.?. PlanetStatusStatus E.==. E.val (Just KragiiAttack))\r\n E.on (building E.?. BuildingPlanetId E.==. E.just (planet E.^. PlanetId))\r\n E.on (population E.?. PlanetPopulationPlanetId E.==. E.just (planet E.^. PlanetId))\r\n E.where_ (planet E.^. PlanetOwnerId E.==. E.val (Just fId)\r\n E.&&. building E.?. BuildingType E.==. E.val (Just Farm)\r\n E.&&. E.isNothing (status E.?. PlanetStatusStatus))\r\n E.orderBy [ E.asc (planet E.^. PlanetId) ]\r\n return (planet, population, building)\r\n let grouped = groupBy ((a, _, _) (b, _, _) -> entityKey a == entityKey b) planets\r\n let counted = catMaybes $ fmap farmAndPopCount grouped\r\n let filtered = filter ((_, p, f) ->\r\n p >= pop\r\n || f >= farms) counted\r\n let mapped = fmap ((ent, _, _) -> ent) filtered\r\n return mapped
\r\n
In any case, when we’re querying for possible kragii attack candidates, the query selects all planets that are owned by a given faction and have population of at least 10 (left outer join to planet_population table), have at least 5 farming complex (left outer join to building table) and don’t have on going kragii attack (left outer join to planet_status table). This is encapsulated in kragiiTargetPlanets 10 5 function in the kragiiAttack function shown below.
\r\n
Rest of the code deals with selecting a random planet from candidates, inserting a new planet_status row to record that kragii are attacking the planet and creating special event so player is informed about the situation and can react accordingly.
\r\n
kragiiAttack date faction = do\r\n planets <- kragiiTargetPlanets 10 5 $ entityKey faction\r\n if length planets == 0\r\n then return Nothing\r\n else do\r\n n <- liftIO $ randomRIO (0, length planets - 1)\r\n let planet = maybeGet n planets\r\n let statusRec = PlanetStatus <$> fmap entityKey planet\r\n <*> Just KragiiAttack\r\n <*> Just Nothing\r\n _ <- mapM insert statusRec\r\n starSystem <- mapM (getEntity . planetStarSystemId . entityVal) planet\r\n let event = join $ kragiiWormsEvent <$> planet <*> join starSystem <*> Just date\r\n mapM insert event
\r\n
Second piece to the puzzle is status removal. In can happen manually or automatically when the prerecorded date has passed. Former method is useful for special events and latter for kind of seasonal things (good harvest for example).
\r\n
For example, in case of removing kragii attack status, code below serves as an example. The interesting part is deleteWhere that does actual database activity and removes all KragiiAttack statuses from given planet.
\r\n
removeNews event odds = MaybeT $ do\r\n res <- liftIO $ roll odds\r\n case res of\r\n Success -> do\r\n _ <- lift $ deleteWhere [ PlanetStatusPlanetId ==. kragiiWormsPlanetId event\r\n , PlanetStatusStatus ==. KragiiAttack\r\n ]\r\n _ <- tell [ WormsRemoved ]\r\n return $ Just RemoveOriginalEvent\r\n Failure -> do\r\n _ <- tell [ WormsStillPresent ]\r\n return $ Just KeepOriginalEvent
\r\n
Removal of expired statuses is done based on the date, by using <=. operator to compare expiration column to given date.
\r\n
_ <- deleteWhere [ PlanetStatusExpiration <=. Just date]
\r\n
Other uses and further plans
\r\n
Like mentioned before, planet statuses can be used for variety of things. One such application is recording particularly good (or poor) harvest season. When such thing occurs, new planet_status record is inserted into database with expiration to set some suitable point in future. System will then automatically remove the status after that date is reached.
\r\n
In the meantime, every time food production is calculated, we have to check for possible statuses that might affect it and take them into account (as form of small bonus or malus).
\r\n
While this system is for planet statuses only, similar systems can be build for other uses (like statuses that affect a single ship or whole star system).
\r\n
Easiest way to catch me nowadays is either via email or on fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
+(2768,'2019-03-13','Writing Web Game in Haskell - Planetary statuses',1122,'Tuula describes system for recording planetary statuses in their game','
Intro
\r\n
In episode hpr2748 Writing Web Game in Haskell - Special events, I talked about how to add special events in the game. One drawback with the system presented there was that the kragii worms might attack planet that already had kragii worms present. This time we’ll look into how to prevent this. As a nice bonus, we also come up with system that can be used to record when a planet has particularly good harvest season.
\r\n
Data types and Database
\r\n
We need a way to represent different kinds of statuses that a planet might have. These will include things like on going kragii attack or a particularly good harvest season. And since these are will be stored in database, we are also going to use derivePersistField to generate code needed for that.
We could have recorded statuses as strings, but declaring a separate data type means that compiler can catch typos for us. It also makes code easier to read as PlanetaryStatus is much more informative than String or Text.
\r\n
For database, we use following definition shown below in models file. It creates database table planet_status and respective Haskell data type PlanetStatus. There will be one row in database for each status that a planet has. I could have stored all statuses in a list and store that in database, effectively having one row for any planet. Now there’s one row for any planet + status combination. Choice wasn’t really based on any deep analysis, but merely a gut feeling that this feels like a good idea.
\r\n
PlanetStatus json\r\n planetId PlanetId\r\n status PlanetaryStatus\r\n expiration Int Maybe\r\n deriving Show Read Eq
\r\n
expiration column doesn’t have NOT NULL constraint like all other columns in the table. This is reflected in PlanetStatus record where data type of planetStatusExpiration is Maybe Int instead of Int. So some statuses will have expiration time, while others might not. I originally chose to represent time as Int instead of own data type, but I have been recently wondering if that was really a good decision.
\r\n
Kragii attack, redux
\r\n
Code that does actual database query looks pretty scary on a first glance and it’s rather long. First part of the code is there to query database and join several tables into the query. Second part of the code deals with counting and grouping data and eventually returning [Entity Planet] data that contains all planets that match the criteria.
\r\n
-- | Load planets that are kragii attack candidates\r\nkragiiTargetPlanets :: (MonadIO m, BackendCompatible SqlBackend backend\r\n , PersistQueryRead backend, PersistUniqueRead backend) =>\r\n Int -> Int -> Key Faction -> ReaderT backend m [Entity Planet]\r\nkragiiTargetPlanets pop farms fId = do\r\n planets <- E.select $\r\n E.from $ (planet `E.LeftOuterJoin` population `E.LeftOuterJoin` building `E.LeftOuterJoin` status) -> do\r\n E.on (status E.?. PlanetStatusPlanetId E.==. E.just (planet E.^. PlanetId)\r\n E.&&. status E.?. PlanetStatusStatus E.==. E.val (Just KragiiAttack))\r\n E.on (building E.?. BuildingPlanetId E.==. E.just (planet E.^. PlanetId))\r\n E.on (population E.?. PlanetPopulationPlanetId E.==. E.just (planet E.^. PlanetId))\r\n E.where_ (planet E.^. PlanetOwnerId E.==. E.val (Just fId)\r\n E.&&. building E.?. BuildingType E.==. E.val (Just Farm)\r\n E.&&. E.isNothing (status E.?. PlanetStatusStatus))\r\n E.orderBy [ E.asc (planet E.^. PlanetId) ]\r\n return (planet, population, building)\r\n let grouped = groupBy ((a, _, _) (b, _, _) -> entityKey a == entityKey b) planets\r\n let counted = catMaybes $ fmap farmAndPopCount grouped\r\n let filtered = filter ((_, p, f) ->\r\n p >= pop\r\n || f >= farms) counted\r\n let mapped = fmap ((ent, _, _) -> ent) filtered\r\n return mapped
\r\n
In any case, when we’re querying for possible kragii attack candidates, the query selects all planets that are owned by a given faction and have population of at least 10 (left outer join to planet_population table), have at least 5 farming complex (left outer join to building table) and don’t have on going kragii attack (left outer join to planet_status table). This is encapsulated in kragiiTargetPlanets 10 5 function in the kragiiAttack function shown below.
\r\n
Rest of the code deals with selecting a random planet from candidates, inserting a new planet_status row to record that kragii are attacking the planet and creating special event so player is informed about the situation and can react accordingly.
\r\n
kragiiAttack date faction = do\r\n planets <- kragiiTargetPlanets 10 5 $ entityKey faction\r\n if length planets == 0\r\n then return Nothing\r\n else do\r\n n <- liftIO $ randomRIO (0, length planets - 1)\r\n let planet = maybeGet n planets\r\n let statusRec = PlanetStatus <$> fmap entityKey planet\r\n <*> Just KragiiAttack\r\n <*> Just Nothing\r\n _ <- mapM insert statusRec\r\n starSystem <- mapM (getEntity . planetStarSystemId . entityVal) planet\r\n let event = join $ kragiiWormsEvent <$> planet <*> join starSystem <*> Just date\r\n mapM insert event
\r\n
Second piece to the puzzle is status removal. In can happen manually or automatically when the prerecorded date has passed. Former method is useful for special events and latter for kind of seasonal things (good harvest for example).
\r\n
For example, in case of removing kragii attack status, code below serves as an example. The interesting part is deleteWhere that does actual database activity and removes all KragiiAttack statuses from given planet.
\r\n
removeNews event odds = MaybeT $ do\r\n res <- liftIO $ roll odds\r\n case res of\r\n Success -> do\r\n _ <- lift $ deleteWhere [ PlanetStatusPlanetId ==. kragiiWormsPlanetId event\r\n , PlanetStatusStatus ==. KragiiAttack\r\n ]\r\n _ <- tell [ WormsRemoved ]\r\n return $ Just RemoveOriginalEvent\r\n Failure -> do\r\n _ <- tell [ WormsStillPresent ]\r\n return $ Just KeepOriginalEvent
\r\n
Removal of expired statuses is done based on the date, by using <=. operator to compare expiration column to given date.
\r\n
_ <- deleteWhere [ PlanetStatusExpiration <=. Just date]
\r\n
Other uses and further plans
\r\n
Like mentioned before, planet statuses can be used for variety of things. One such application is recording particularly good (or poor) harvest season. When such thing occurs, new planet_status record is inserted into database with expiration to set some suitable point in future. System will then automatically remove the status after that date is reached.
\r\n
In the meantime, every time food production is calculated, we have to check for possible statuses that might affect it and take them into account (as form of small bonus or malus).
\r\n
While this system is for planet statuses only, similar systems can be build for other uses (like statuses that affect a single ship or whole star system).
\r\n
Easiest way to catch me nowadays is either via email or on fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
(2764,'2019-03-07','Personal password algorithms',2444,'Is it possible to generate a unique password for every site? Klaatu tries.','
\r\nHere is a bash script to generate an org-mode word list matrix.\r\nIt requires at least one file ending in .list to be used as a source of words or strings.\r\n
\r\n\r\n
\r\n#!/bin/bash\r\n\r\nif [ -z $1 ]; then\r\n DEST=matrix.org\r\nelse\r\n DEST=$1\r\nfi\r\n\r\ncat >> \"${DEST}\" <<EOF\r\n| | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | ? |\r\n|-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|\r\nEOF\r\n\r\nVERT=(a b c d e f g h i j k l m n o p q r s t u v w x y z ?)\r\n\r\ncat *list > tmp || exit\r\n\r\nBIG=`wc -l tmp | cut -f1 -d\' \'`\r\n\r\nc=\"0\"\r\n\r\nwhile [ \"$c\" -lt \"27\" ]; do\r\n # horizontal row across\r\n n=\"0\"\r\n v=`echo ${VERT[$c]}`\r\n printf \"| $v |\" >> \"${DEST}\"\r\n while [ \"$n\" -lt \"27\" ]; do\r\n i=`echo $((1 + RANDOM % $BIG))`\r\n w=`awk \"FNR==$i\" tmp`\r\n #reduce chance of empty cell\r\n if [[ -z $w ]]; then\r\n i=`echo $((1 + RANDOM % $BIG))`\r\n w=`awk \"FNR==$i\" tmp`\r\n echo \"blank cell found\"\r\n fi\r\n printf \"$w | \" >> \"${DEST}\"\r\n n=$[$n+1]\r\n done\r\n echo \" \" >> \"${DEST}\"\r\n c=$[$c+1]\r\ndone\r\n\r\n/usr/bin/rm tmp\r\n
\r\n\r\n
\r\nWhen you open the resulting file (matrix.org by default) in emacs, use the fill-paragraph (m-x fill-paragraph) function to align the cells into a pretty table.\r\n
\r\n\r\n
\r\nInvent your own key, and generate some test passwords.\r\nDo this 6 or 8 times, and then try to reverse the key using the passwords and the table.\r\nIf the logic to reverse the key is too simple, then try using values relying on the metadata, rather than data, of the table (for instance, the number of letters in the first word in the table starting with the same letter as the site name, or whatever).\r\n
\r\n\r\n
\r\nDo you have analogue methods of generating passwords?\r\nPost ideas to either the comments or, better yet, as an HPR episode!\r\n
\r\n',78,99,0,'CC-BY-SA','password,security,algorithm,puzzle,cipher',0,0,1),
(2766,'2019-03-11','Disk enumeration on Linux',1443,'Klaatu reviews the various commands used to enumerate drives on Linux','
\r\nThe old way:\r\n
\r\n\r\n
\r\n$ ls /dev/sd*\r\n
\r\n\r\n
\r\nAnother old way:\r\n
\r\n\r\n
\r\n$ fdisk --list\r\n
\r\n\r\n
\r\nAn old way to see what you just plugged in:\r\n
\r\n\r\n
\r\n$ sudo dmesg | tail\r\n
\r\n\r\n
\r\nSome new tricks:\r\n
\r\n
\r\n$ lsblk\r\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\r\nsda 8:0 0 2.7T 0 disk \r\n├─sda1 8:1 0 23.3G 0 part \r\n└─sda2 8:2 0 2.7T 0 part \r\nsdb 8:16 0 3.9G 0 disk \r\nsdc 8:32 0 111.8G 0 disk \r\n├─sdc1 8:33 0 100M 0 part /boot/efi\r\n└─sdc2 8:34 0 111.7G 0 part /\r\nsdd 8:48 0 1.8T 0 disk \r\n├─sdd1 8:49 0 120G 0 part /var\r\n├─sdd2 8:50 0 120G 0 part /tmp\r\n├─sdd3 8:51 0 60G 0 part /opt\r\n└─sdd4 8:52 0 1.5T 0 part /home\r\nsde 8:64 0 298.1G 0 disk \r\n├─sde1 8:65 0 500M 0 part \r\n├─sde2 8:66 0 296.8G 0 part \r\n└─sde3 8:67 0 826M 0 part \r\nsdf 8:80 0 931.5G 0 disk \r\n└─sdf1 8:81 0 931.5G 0 part \r\nsdg 8:96 1 7.5G 0 disk \r\n└─sdg1 8:97 1 7.5G 0 part \r\n
\r\n',78,0,0,'CC-BY-SA','fdisk,dmesg,lsblk,udisks',0,0,1),
(2767,'2019-03-12','Djvu and other paperless document formats',1935,'A tutorial on how to read and generate djvu files','
\r\nDjVu is a digital document format with advanced compression technology. \r\nDjVu allows for the distribution of very high resolution images of scanned documents, digital documents, and photographs. \r\nDjVu viewers are available for the web browser (search for djvujs in Firefox for an extension), the desktop ( Evince, Okular an BSD/Linux, and djview on BSD/Linux/Windows/Mac), and mobile devices.\r\n
\r\n\r\n
\r\nThe toolchain for encoding and decoding DjVu is \r\ndjvulibre\r\n
\r\n
\r\ndjvu.js is a Javascript library useful for online viewing.\r\n
\r\n\r\n
\r\ndjvu.org contains sample documents and specification documents.
\r\n\r\n
Creating a djvu file
\r\n\r\n
\r\nThe tool you use to convert something to the .djvu format depends on your requirements. If you\'re converting a basic, black-and-white document, then cjb2 (part of the djvulibre distribution) works:\r\n
\r\nThere\'s more you can do with DjVu, but this has been an overview of how I use it.\r\n
\r\n',78,0,0,'CC-BY-SA','pdf, ebook, bloat, djvu',0,0,1),
@@ -19098,55 +19218,55 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2776,'2019-03-25','Sub-Plots In Storytelling',1093,'Lostnbronx looks at the importance of tightly-structured subplots in storytelling.','
What makes for strong subplots? Why can some subplots be chopped out of a tale without harming it? Why can some be chopped out, and it actually makes the tale stronger? Is this modular approach the best way to bring in subplots, or is there another method that might be better?
\r\n
Story construction is a complicated topic; Lostnbronx tries (and largely fails) to make sense of this small part of it.
\r\n',107,105,0,'CC-BY-SA','stories, storytelling, sub-plots, lostnbronx',0,0,1),
(2777,'2019-03-26','The quest for the perfect laptop.',1867,'Knightwise is out looking for a new laptop and describes what he is looking for and why.','
Looking for a new laptop.
\r\n
Candidates
\r\n
\r\n
HP Envy x360
\r\n
Lenovo X280
\r\n
Lenovo X380
\r\n
Lenovo X380 Yoga
\r\n
Lenovo X1
\r\n
Lenovo X1 Yoga
\r\n
\r\n',111,0,0,'CC-BY-SA','computer, hardware, geek, buy',0,0,1),
(2786,'2019-04-08','My YouTube Channels',423,'A short show about some of my YouTube channels inspired by Ahuka','
Hallo HPR listeners this is Tony Hughes again coming from Blackpool in the UK.
\r\n
Recently Ahuka started a series on the YouTube channels that he subscribes to and this seems like a good topic to share some of my favourite YouTube channels. This time I’ll share some of the tech and Linux based channels I watch.
Explaining Computers – Exactly what it says on the tin, they review new computer hardware and computer related tech, including single board Computers such as the Raspberry Pi and Pine 64. https://www.youtube.com/user/explainingcomputers
Free Audacity Tutorials – Very handy for those of us that regularly record and edit audio with Audacity, for learning more about how to do various things with this software. https://www.youtube.com/user/FreeAudacityTutorial/videos
\r\n
\r\n
And finally for this episode
\r\n
\r\n
Linus Tech Tips – Another Computer review show all about tips and tricks relating to all stuff geeky. Be aware that this show is heavily sponsored although Linus does seem to be very fair with both praise and criticism for what he is reviewing. https://www.youtube.com/user/LinusTechTips/videos
\r\n
\r\n',338,106,0,'CC-BY-SA','Linux, Computers, YouTube, Gaming, Electronics, Audacity',0,0,1),
-(2778,'2019-03-27','Functor and applicative in Haskell',1841,'Brief introduction on functor and applicative patterns in Haskell and where they can be used','
Two common patterns that I seem to run all the time while working on my 4x space game are functor and applicative. This episode explains them briefly.
\r\n
Functor
\r\n
Functor is a way to apply function over a structure we don’t want to alter. Type of the structure stays same, but values inside of it can change. One of the most common one is list, but there are many others.
\r\n
Functor type class is defined below. There’s one function fmap that takes two parameters: a function from a to b and structure f a. Result will be structure f b.
\r\n
class Functor f where\r\n fmap :: (a -> b) -> f a -> f b
\r\n
This is fairly abstract, so couple example might help. First we define a little helper function that raises it’s argument to 2nd power (in the episode I talk about doubling the value, my mistake there).
\r\n
-- | this really raises x to 2nd power and doesn't double it\r\ndouble x = x * x
\r\n
Given a list of Int we can raise them to power of two by using fmap:
Since function being applied to structure is type of (a -> b), we can change type of the value inside of the structure. Below is example of turning list of Int to list of Text.
This pattern isn’t limited to list and there are many others. You can even define your own ones, if you’re so inclined. The pattern stays the same. One function, fmap, that takes function of type (a -> b) and structure f a and turns it into structure of f b. Details how this is actually done depend on the specific functor.
\r\n
Other common functor is Maybe that is often used in cases where data might or might not be present. Maybe a has two possible values Just a indicating that value a is present and Nothing indicating that there is no value present. When fmap is used in this context, Just a will turn to Just b and Nothing will stay as Nothing.
\r\n
> fmap (x -> x * x) $ Just 2\r\nJust 4\r\n> fmap (x -> x * x) Nothing\r\nNothing
\r\n
Either a b is sometimes used for value that can be correct or an error. It has two value constructors Right b indicates that value is correct, Left a indicates an error case. a and b don’t have to be of same type (and usually aren’t). For example, if we have Either Text Int, then we have value where error case is Text and correct value is Int.
\r\n
> fmap double $ Right 5\r\nRight 25\r\n> fmap double $ Left "distance calculation failed because of flux-capacitor malfunction"\r\nLeft "distance calculation failed because of flux-capacitor malfunction"
\r\n
Functors can be placed inside of functors. The only difference is that you have to reach through multiple layers. Simplest way of doing that is to compose multiple fmap functions together like in the example below. Pay attention to in which order nested functors are defined as Maybe [Int] and [Maybe Int] are different things. Former is for case where list of Int might or might not be present. Latter is for case where there’s always list, but single element inside of the list might or might not be present.
\r\n
> (fmap . fmap) double (Just [1, 2, 3, 4])\r\nJust [1, 4, 9, 16]\r\n> (fmap . fmap) double Nothing :: Maybe Int\r\nNothing\r\n> (fmap . fmap) double [Just 1, Just 2, Nothing, Just 3]\r\n[Just 1, Just 4, Nothing, Just 9]
\r\n
There’s also infix operator, that does exactly same thing as fmap, called <$>. The choice which one to use is often either personal or depends on the surrounding code (because Haskell doesn’t use parenthesis in function application, so sometimes it’s easier to use fmap and sometimes <$>).
While functor works fine when function applied has only one parameter, we need applicative in cases of multiparameter functions. Calling fmap (+) [1, 2] will produce list of functions waiting for second parameter. While it would be possible to handle these cases manually, we like to abstract it to more general solution.
\r\n
class Functor f => Applicative f where\r\n pure :: a -> f a\r\n (<*>) :: f (a -> b) -> f a -> f b
\r\n
Applicative is similar to functor. The big difference is that function being applied is now embedded inside of same type of structure. While functor has (a -> b), applicative has f (a -> b).
\r\n
Below is an example of using list applicative to calculate all possible ways of summing two lists of Int.
Maybe Int works with the same pattern. First we use <$> to get started, this results Maybe containing a function that is waiting for second parameter. Then we use <*> to apply the second parameter so we get the result.
\r\n
> (+) <$> Just 2 <*> Just 5\r\nJust 7\r\n> (+) <$> Just 2 <*> Nothing\r\nNothing
\r\n
As long as there’s only Just a in play, result is Just, but as soon as there’s even single Nothing the end result will be nothing.
\r\n
If you have questions or comments, I would be delighted to hear about them. You can catch me on fediverse, where I’m tuturto@mastodon.social. Even better, you could record your own HPR episode.
\r\n
Ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, functor, applicative',0,0,1),
+(2778,'2019-03-27','Functor and applicative in Haskell',1841,'Brief introduction on functor and applicative patterns in Haskell and where they can be used','
Two common patterns that I seem to run all the time while working on my 4x space game are functor and applicative. This episode explains them briefly.
\r\n
Functor
\r\n
Functor is a way to apply function over a structure we don’t want to alter. Type of the structure stays same, but values inside of it can change. One of the most common one is list, but there are many others.
\r\n
Functor type class is defined below. There’s one function fmap that takes two parameters: a function from a to b and structure f a. Result will be structure f b.
\r\n
class Functor f where\r\n fmap :: (a -> b) -> f a -> f b
\r\n
This is fairly abstract, so couple example might help. First we define a little helper function that raises it’s argument to 2nd power (in the episode I talk about doubling the value, my mistake there).
\r\n
-- | this really raises x to 2nd power and doesn't double it\r\ndouble x = x * x
\r\n
Given a list of Int we can raise them to power of two by using fmap:
Since function being applied to structure is type of (a -> b), we can change type of the value inside of the structure. Below is example of turning list of Int to list of Text.
This pattern isn’t limited to list and there are many others. You can even define your own ones, if you’re so inclined. The pattern stays the same. One function, fmap, that takes function of type (a -> b) and structure f a and turns it into structure of f b. Details how this is actually done depend on the specific functor.
\r\n
Other common functor is Maybe that is often used in cases where data might or might not be present. Maybe a has two possible values Just a indicating that value a is present and Nothing indicating that there is no value present. When fmap is used in this context, Just a will turn to Just b and Nothing will stay as Nothing.
\r\n
> fmap (x -> x * x) $ Just 2\r\nJust 4\r\n> fmap (x -> x * x) Nothing\r\nNothing
\r\n
Either a b is sometimes used for value that can be correct or an error. It has two value constructors Right b indicates that value is correct, Left a indicates an error case. a and b don’t have to be of same type (and usually aren’t). For example, if we have Either Text Int, then we have value where error case is Text and correct value is Int.
\r\n
> fmap double $ Right 5\r\nRight 25\r\n> fmap double $ Left "distance calculation failed because of flux-capacitor malfunction"\r\nLeft "distance calculation failed because of flux-capacitor malfunction"
\r\n
Functors can be placed inside of functors. The only difference is that you have to reach through multiple layers. Simplest way of doing that is to compose multiple fmap functions together like in the example below. Pay attention to in which order nested functors are defined as Maybe [Int] and [Maybe Int] are different things. Former is for case where list of Int might or might not be present. Latter is for case where there’s always list, but single element inside of the list might or might not be present.
\r\n
> (fmap . fmap) double (Just [1, 2, 3, 4])\r\nJust [1, 4, 9, 16]\r\n> (fmap . fmap) double Nothing :: Maybe Int\r\nNothing\r\n> (fmap . fmap) double [Just 1, Just 2, Nothing, Just 3]\r\n[Just 1, Just 4, Nothing, Just 9]
\r\n
There’s also infix operator, that does exactly same thing as fmap, called <$>. The choice which one to use is often either personal or depends on the surrounding code (because Haskell doesn’t use parenthesis in function application, so sometimes it’s easier to use fmap and sometimes <$>).
While functor works fine when function applied has only one parameter, we need applicative in cases of multiparameter functions. Calling fmap (+) [1, 2] will produce list of functions waiting for second parameter. While it would be possible to handle these cases manually, we like to abstract it to more general solution.
\r\n
class Functor f => Applicative f where\r\n pure :: a -> f a\r\n (<*>) :: f (a -> b) -> f a -> f b
\r\n
Applicative is similar to functor. The big difference is that function being applied is now embedded inside of same type of structure. While functor has (a -> b), applicative has f (a -> b).
\r\n
Below is an example of using list applicative to calculate all possible ways of summing two lists of Int.
Maybe Int works with the same pattern. First we use <$> to get started, this results Maybe containing a function that is waiting for second parameter. Then we use <*> to apply the second parameter so we get the result.
\r\n
> (+) <$> Just 2 <*> Just 5\r\nJust 7\r\n> (+) <$> Just 2 <*> Nothing\r\nNothing
\r\n
As long as there’s only Just a in play, result is Just, but as soon as there’s even single Nothing the end result will be nothing.
\r\n
If you have questions or comments, I would be delighted to hear about them. You can catch me on fediverse, where I’m Tuula@mastodon.social. Even better, you could record your own HPR episode.
\r\n
Ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, functor, applicative',0,0,1),
(2779,'2019-03-28','HTTP, IPFS, and torrents',711,'Replacing the web with new, decentralized protocols','
Some ramblings about how we might replace HTTP with more robust, decentralized protocols.
',374,0,0,'CC-BY-SA','HTTP, IPFS, torrents',0,0,1),
(2780,'2019-03-29','My SBC Nextcloud Install Pt. 1 - Hardware',1375,'How I built my self-enclosed Nextcloud server using a single board computer and a RAID enclosure','
I explain the build process for my home Nextcloud server using a single board computer and a 4 bay RAID enclosure. This is part 1 of a 3 part series.
HDDs \r\nThe 4TB HDDs were ones I already had but you can use any ones, just make sure they are the same brand/model/size/etc to minimize any complications.
\r\n
\r\n
minnix at uymail dot com for help, questions, or just general chatter
\r\n',375,0,0,'CC-BY-SA','nextcloud,single board computer,home server,sbc,arm',0,0,1),
(2783,'2019-04-03','The Windows \"Shutdown.exe\" Command Explained',923,'A rundown of the Windows \"shutdown.exe\" command.','
Shutdown.exe
\r\n
\r\n
Introduced in Windows 2000 as a way to shutdown the PC via the command prompt.
\r\n
Included in all versions since Windows 2000 all the way to Windows 10 and Windows Server 2019.
\r\n
ReactOS, the open source binary-compatible clone of Windows, also includes the shutdown.exe command and the commands are the same.
\r\n
Located in %windir%\\System32. The variable %windir% is usually c:\\windows. In ReactOS, the variable is usually c:\\reactos (failed to mention this in the recording).\r\n
\r\n',152,0,0,'CC-BY-SA','shutdown, windows, commandprompt, cmd',0,0,1),
-(2805,'2019-05-03','My 50th Show',1064,'This is a review of the other 49 shows I\'ve posted in the last 3 years','
Hallo this is again Tony Hughes for HPR. This is an auspicious show for me as it’s my 50th show that I have recorded and released on HPR in my own right. However prior to my 1st show in my own right I did guest on 2 shows.
\r\n
The first of these was:
\r\n
\r\n
hpr0844 :: The Flying Handbag hosted by HPR Volunteers \r\nReleased: 2011-10-26
\r\n
\r\n
Which was a show that was recorded at Barcamp Blackpool in 2011, when a group of us got together to record a podcast, the hilarious thing was that the only place we could find to record was a stairwell which happened to be next to the toilets, definitely not family friendly but if you want a laugh have a listen.
\r\n
The next show I appeared on was an interview I did with Ken Fallon at my first OggCamp in the same year.
\r\n
\r\n
hpr0863 :: Tony Hughes Free Cycle hosted by Ken Fallon \r\nReleased: 2011-11-22.
\r\n
\r\n
Ken was as usual trying to recruit new hosts and interviewed me with the hope that I would become one. Well I did but it took another 5 years before I finally recorded my first show in my own right.
\r\n
First just to say the idea for this show comes from hpr2700 in which Ken created a script to automate the bot voice reading a list of every show that has been released on HPR, so to celebrate my 50th Show I thought I would list my shows but with me running through them and do a brief summary of the show where appropriate.
\r\n\r\n
hpr2051 :: My Linux Journey \r\nReleased on 2016-06-13 \r\nin this episode I talked about my journey in computing and starting to use Linux
\r\n
hpr2056 :: Interview with a young hacker \r\nReleased on 2016-06-20 \r\nThis was my first of several interviews with @All_about_Code at my local Raspberry Jam
\r\n
hpr2065 :: Whats in My Bag \r\nReleased on 2016-07-01 \r\nLooking at this show so tells me I have to redo this show as my bag is very different these days
\r\n
hpr2076 :: What Magazines I read Part 1 \r\nReleased on 2016-07-18 \r\njust what the title said, I talked about the magazines I was reading at that point in time.
\r\n
hpr2087 :: Magazines I read Part 2 \r\nReleased on 2016-08-02 \r\nThis was a follow up of the last show
\r\n
hpr2097 :: New Toys \r\nReleased on 2016-08-16 \r\nI talked about my hardware journey over the last 30 odd years and talked about the i7 system I had just bought 2nd hand
\r\n
hpr2101 :: What’s on my podcatcher \r\nReleased on 2016-08-22 \r\nA show about the podcasts I listen to.
\r\n
hpr2144 :: An Interview with All About Code at Manchester BarCamp \r\nReleased on 2016-10-20 \r\na follow up interview with Josh
\r\n
hpr2151 :: BarCamp Manchester part 2 \r\nReleased on 2016-10-31 \r\nAn interview with Claire, the organiser of BarCamp Manchester.
\r\n
hpr2157 :: BarCamp Manchester part 3 \r\nReleased on 2016-11-08 \r\nThis was an interview with Alan O’Donohoe who had started the Raspberry Jam movement
\r\n
hpr2257 :: Watt OS \r\nReleased on 2017-03-28 \r\nAcer Aspire One Netbook – Review
\r\n
hpr2265 :: WattOS on Lenovo X61s \r\nReleased on 2017 \r\nLenovo X61s – Review
\r\n
hpr2271 :: Raspberry Pi Zero W \r\nReleased on 2017-04-17 \r\nReview Episode on the then New Pi Zero W
\r\n
hpr2280 :: Lenovo X61s Part 2 \r\nReleased on 2017-04-28 \r\nFollow up review after a SSD upgrade and using Linux Lite
\r\n
hpr2286 :: Surviving a Stroke \r\nReleased on 2017-05-08 \r\nA very personal episode about my surviving a Stroke in February 2017
\r\n
hpr2295 :: MX Linux \r\nReleased on 2017-05-19 \r\nA review episode using this OS on a Lenovo X230i after a hardware boot issue with Linux Mint and an SSD
\r\n
hpr2331 :: Liverpool Makefest 2017 Show 1 \r\nReleased on 2017-07-10 \r\nThe first of a number of interview shows from the 2017 Liverpool Makefest
\r\n
hpr2336 :: Liverpool Makefest 2017 Show 2 \r\nReleased on 2017-07-17
\r\n
hpr2341 :: Liverpool Makefest 2017 Show 3 \r\nReleased on 2017-07-24
\r\n
hpr2346 :: Liverpool Makefest 2017 Show 4 \r\nReleased on 2017-07-31
\r\n
hpr2352 :: Liverpool Makefest 2017 Show 5 \r\nReleased on 2017-08-08
\r\n
hpr2362 :: Raspbian X86 on Lenovo x61s \r\nReleased on 2017-08-22 \r\nReview of Raspbian X86 on a Lenovo X61s
\r\n
hpr2366 :: Making Bramble Jelly \r\nReleased on 2017-08-28 \r\nJust what it says on the tin I talk about making Bramble jelly,
\r\n
hpr2374 :: How to Make Sauerkraut \r\nReleased on 2017-09-07 \r\nAnother food show on how to make Sauerkraut
\r\n
hpr2380 :: Raspbian X86 on P4 Tower \r\nReleased on 2017-09-15 \r\nFollow up this time running Raspbian X86 on an old P4 Tower
\r\n
hpr2405 :: Nokia 6 Review \r\nReleased on 2017-10-20 \r\nI reviewed my new phone
\r\n
hpr2432 :: Living with the Nokia 6 – an update to HPR 2405 \r\nReleased on 2017-11-28 \r\nFollow up update show having lived with the phone for a couple of months.
\r\n
hpr2442 :: The sound of Woodbrooke Quaker Study centre in the Spring \r\nReleased on 2017-12-12 \r\nThis was a soundscape recording I made at Woodbrooke Quaker Study Centre in Birmingham UK while I was there in April 2017.
\r\n
hpr2579 :: Ubuntu 18.04 Mate \r\nReleased on 2018-06-21 \r\nA review of the recently released Ubuntu 18.04 Mate
\r\n
hpr2590 :: Blowing a PC Power Supply \r\nReleased on 2018-07-06 \r\nA show about how not to blow your PC power supply
\r\n
hpr2595 :: New laptop bargain? \r\nReleased on 2018-07-13 \r\nA review on my recently purchased secondhand Toshiba Z30 laptop
\r\n
hpr2601 :: Liverpool Makerfest 2018 \r\nReleased on 2018-07-23 \r\nChris Dell
\r\n
hpr2606 :: Liverpool Makefest 2018 - interview with Dan Lynch \r\nReleased on 2018-07-30 \r\nA podcast Legend
\r\n
hpr2612 :: Liverpool Makefest 2018 - interview with Joe aka Concrete Dog \r\nReleased on 2018-08-07 \r\nAbout Rocketry
\r\n
hpr2616 :: Liverpool Makefest 2018 - interview with Josh - A.K.A - All About Code \r\nReleased on 2018-08-13. \r\nThis is another short interview recorded at Liverpool Makefest, with Josh talking about EduBlocks.
\r\n
hpr2621 :: Liverpool Makefest 2018 - Chan’nel Thomas a.k.a little pink maker \r\nReleased on 2018-08-20 \r\nI talk to Chan’nel Thomas aka little pink maker.
\r\n
hpr2626 :: Liverpool Makefest 2018 - interviews with Helen and Chris \r\nReleased on 2018-08-27 \r\nIn this episode I talk to Helen from Manchester Hackspace and Chris from Wirral Code Club
\r\n
hpr2632 :: Liverpool Makefest 2018 - interviews with Robert and Carl \r\nReleased on 2018-09-04 \r\nIn this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University
\r\n
hpr2636 :: Liverpool Makefest 2018 - interviews with Noel from JMU FabLab \r\nReleased on 2018-09-10
\r\n
hpr2641 :: Liverpool Makefest 2018 - interview with Rachel from the MicroBit Foundation \r\nReleased on 2018-09-17
\r\n
hpr2646 :: Liverpool Makefest 2018 - Interview with Steve and Gerrard from the Liverpool Astronomical society. \r\nReleased on 2018-09-24
\r\n
hpr2652 :: Liverpool Makefest 2018 - Interview with Caroline and John \r\nReleased on 2018-10-02 under a CC-BY-SA license. \r\nThis was the final interview from Makefest 2018 in Liverpool. In this interview I interview one of the founder members of Makefest, Caroline Keep, and the Head Teacher of the school where she works, John Carling.
\r\n
hpr2663 :: Short review on a 2.5 inch SSD/HDD caddy \r\nReleased on 2018-10-17 \r\nQuick hardware review
\r\n
hpr2702 :: Audacity set up and response to episode 2658 \r\nReleased on 2018-12-11 \r\nI post my response to show 2658 by Dave and Al
\r\n
hpr2735 :: Soffritto \r\nReleased on 2019-01-25 \r\nAnother food show
\r\n
hpr2738 :: My Applications \r\nReleased on 2019-01-30 \r\nThis and my 47th episode were about the applications I use in Linux
\r\n
hpr2746 :: My software part 2 \r\nReleased on 2019-02-11
\r\n
hpr2772 :: My applications and software part 3 \r\nA short show about the software I use in Linux Mint
\r\n
hpr2786 :: My YouTube Channels \r\nA short show about some of my YouTube channels inspired by Ahuka
\r\n',338,0,0,'CC-BY-SA','HPR, Linacityux, podcasting, Audacity',0,0,1),
+(2805,'2019-05-03','My 50th Show',1064,'This is a review of the other 49 shows I\'ve posted in the last 3 years','
Hallo this is again Tony Hughes for HPR. This is an auspicious show for me as it’s my 50th show that I have recorded and released on HPR in my own right. However prior to my 1st show in my own right I did guest on 2 shows.
\r\n
The first of these was:
\r\n
\r\n
hpr0844 :: The Flying Handbag hosted by HPR Volunteers \r\nReleased: 2011-10-26
\r\n
\r\n
Which was a show that was recorded at Barcamp Blackpool in 2011, when a group of us got together to record a podcast, the hilarious thing was that the only place we could find to record was a stairwell which happened to be next to the toilets, definitely not family friendly but if you want a laugh have a listen.
\r\n
The next show I appeared on was an interview I did with Ken Fallon at my first OggCamp in the same year.
\r\n
\r\n
hpr0863 :: Tony Hughes Free Cycle hosted by Ken Fallon \r\nReleased: 2011-11-22.
\r\n
\r\n
Ken was as usual trying to recruit new hosts and interviewed me with the hope that I would become one. Well I did but it took another 5 years before I finally recorded my first show in my own right.
\r\n
First just to say the idea for this show comes from hpr2700 in which Ken created a script to automate the bot voice reading a list of every show that has been released on HPR, so to celebrate my 50th Show I thought I would list my shows but with me running through them and do a brief summary of the show where appropriate.
\r\n\r\n
hpr2051 :: My Linux Journey \r\nReleased on 2016-06-13 \r\nin this episode I talked about my journey in computing and starting to use Linux
\r\n
hpr2056 :: Interview with a young hacker \r\nReleased on 2016-06-20 \r\nThis was my first of several interviews with @All_about_Code at my local Raspberry Jam
\r\n
hpr2065 :: Whats in My Bag \r\nReleased on 2016-07-01 \r\nLooking at this show so tells me I have to redo this show as my bag is very different these days
\r\n
hpr2076 :: What Magazines I read Part 1 \r\nReleased on 2016-07-18 \r\njust what the title said, I talked about the magazines I was reading at that point in time.
\r\n
hpr2087 :: Magazines I read Part 2 \r\nReleased on 2016-08-02 \r\nThis was a follow up of the last show
\r\n
hpr2097 :: New Toys \r\nReleased on 2016-08-16 \r\nI talked about my hardware journey over the last 30 odd years and talked about the i7 system I had just bought 2nd hand
\r\n
hpr2101 :: What’s on my podcatcher \r\nReleased on 2016-08-22 \r\nA show about the podcasts I listen to.
\r\n
hpr2144 :: An Interview with All About Code at Manchester BarCamp \r\nReleased on 2016-10-20 \r\na follow up interview with Josh
\r\n
hpr2151 :: BarCamp Manchester part 2 \r\nReleased on 2016-10-31 \r\nAn interview with Claire, the organiser of BarCamp Manchester.
\r\n
hpr2157 :: BarCamp Manchester part 3 \r\nReleased on 2016-11-08 \r\nThis was an interview with Alan O’Donohoe who had started the Raspberry Jam movement
\r\n
hpr2257 :: Watt OS \r\nReleased on 2017-03-28 \r\nAcer Aspire One Netbook – Review
\r\n
hpr2265 :: WattOS on Lenovo X61s \r\nReleased on 2017 \r\nLenovo X61s – Review
\r\n
hpr2271 :: Raspberry Pi Zero W \r\nReleased on 2017-04-17 \r\nReview Episode on the then New Pi Zero W
\r\n
hpr2280 :: Lenovo X61s Part 2 \r\nReleased on 2017-04-28 \r\nFollow up review after a SSD upgrade and using Linux Lite
\r\n
hpr2286 :: Surviving a Stroke \r\nReleased on 2017-05-08 \r\nA very personal episode about my surviving a Stroke in February 2017
\r\n
hpr2295 :: MX Linux \r\nReleased on 2017-05-19 \r\nA review episode using this OS on a Lenovo X230i after a hardware boot issue with Linux Mint and an SSD
\r\n
hpr2331 :: Liverpool Makefest 2017 Show 1 \r\nReleased on 2017-07-10 \r\nThe first of a number of interview shows from the 2017 Liverpool Makefest
\r\n
hpr2336 :: Liverpool Makefest 2017 Show 2 \r\nReleased on 2017-07-17
\r\n
hpr2341 :: Liverpool Makefest 2017 Show 3 \r\nReleased on 2017-07-24
\r\n
hpr2346 :: Liverpool Makefest 2017 Show 4 \r\nReleased on 2017-07-31
\r\n
hpr2352 :: Liverpool Makefest 2017 Show 5 \r\nReleased on 2017-08-08
\r\n
hpr2362 :: Raspbian X86 on Lenovo x61s \r\nReleased on 2017-08-22 \r\nReview of Raspbian X86 on a Lenovo X61s
\r\n
hpr2366 :: Making Bramble Jelly \r\nReleased on 2017-08-28 \r\nJust what it says on the tin I talk about making Bramble jelly,
\r\n
hpr2374 :: How to Make Sauerkraut \r\nReleased on 2017-09-07 \r\nAnother food show on how to make Sauerkraut
\r\n
hpr2380 :: Raspbian X86 on P4 Tower \r\nReleased on 2017-09-15 \r\nFollow up this time running Raspbian X86 on an old P4 Tower
\r\n
hpr2405 :: Nokia 6 Review \r\nReleased on 2017-10-20 \r\nI reviewed my new phone
\r\n
hpr2432 :: Living with the Nokia 6 – an update to HPR 2405 \r\nReleased on 2017-11-28 \r\nFollow up update show having lived with the phone for a couple of months.
\r\n
hpr2442 :: The sound of Woodbrooke Quaker Study centre in the Spring \r\nReleased on 2017-12-12 \r\nThis was a soundscape recording I made at Woodbrooke Quaker Study Centre in Birmingham UK while I was there in April 2017.
\r\n
hpr2579 :: Ubuntu 18.04 Mate \r\nReleased on 2018-06-21 \r\nA review of the recently released Ubuntu 18.04 Mate
\r\n
hpr2590 :: Blowing a PC Power Supply \r\nReleased on 2018-07-06 \r\nA show about how not to blow your PC power supply
\r\n
hpr2595 :: New laptop bargain? \r\nReleased on 2018-07-13 \r\nA review on my recently purchased secondhand Toshiba Z30 laptop
\r\n
hpr2601 :: Liverpool Makerfest 2018 \r\nReleased on 2018-07-23 \r\nChris Dell
\r\n
hpr2606 :: Liverpool Makefest 2018 - interview with Dan Lynch \r\nReleased on 2018-07-30 \r\nA podcast Legend
\r\n
hpr2612 :: Liverpool Makefest 2018 - interview with Joe aka Concrete Dog \r\nReleased on 2018-08-07 \r\nAbout Rocketry
\r\n
hpr2616 :: Liverpool Makefest 2018 - interview with Josh - A.K.A - All About Code \r\nReleased on 2018-08-13. \r\nThis is another short interview recorded at Liverpool Makefest, with Josh talking about EduBlocks.
\r\n
hpr2621 :: Liverpool Makefest 2018 - Chan’nel Thomas a.k.a little pink maker \r\nReleased on 2018-08-20 \r\nI talk to Chan’nel Thomas aka little pink maker.
\r\n
hpr2626 :: Liverpool Makefest 2018 - interviews with Helen and Chris \r\nReleased on 2018-08-27 \r\nIn this episode I talk to Helen from Manchester Hackspace and Chris from Wirral Code Club
\r\n
hpr2632 :: Liverpool Makefest 2018 - interviews with Robert and Carl \r\nReleased on 2018-09-04 \r\nIn this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University
\r\n
hpr2636 :: Liverpool Makefest 2018 - interviews with Noel from JMU FabLab \r\nReleased on 2018-09-10
\r\n
hpr2641 :: Liverpool Makefest 2018 - interview with Rachel from the MicroBit Foundation \r\nReleased on 2018-09-17
\r\n
hpr2646 :: Liverpool Makefest 2018 - Interview with Steve and Gerrard from the Liverpool Astronomical society. \r\nReleased on 2018-09-24
\r\n
hpr2652 :: Liverpool Makefest 2018 - Interview with Caroline and John \r\nReleased on 2018-10-02 under a CC-BY-SA license. \r\nThis was the final interview from Makefest 2018 in Liverpool. In this interview I interview one of the founder members of Makefest, Caroline Keep, and the Head Teacher of the school where she works, John Carling.
\r\n
hpr2663 :: Short review on a 2.5 inch SSD/HDD caddy \r\nReleased on 2018-10-17 \r\nQuick hardware review
\r\n
hpr2702 :: Audacity set up and response to episode 2658 \r\nReleased on 2018-12-11 \r\nI post my response to show 2658 by Dave and Al
\r\n
hpr2735 :: Soffritto \r\nReleased on 2019-01-25 \r\nAnother food show
\r\n
hpr2738 :: My Applications \r\nReleased on 2019-01-30 \r\nThis and my 47th episode were about the applications I use in Linux
\r\n
hpr2746 :: My software part 2 \r\nReleased on 2019-02-11
\r\n
hpr2772 :: My applications and software part 3 \r\nA short show about the software I use in Linux Mint
\r\n
hpr2786 :: My YouTube Channels \r\nA short show about some of my YouTube channels inspired by Ahuka
\r\n',338,0,0,'CC-BY-SA','HPR, Linacityux, podcasting, Audacity',0,0,1),
(2784,'2019-04-04','The Yamaha Disklavier',1440,'I talk about the Yamaha Disklavier DKC500RW that\'s in my office at work','
In this episode I talk about the Yamaha Disklavier DKC500RW that\'s in my office at work. This is a very high-tech player piano and one of the coolest pieces of music gear I\'ve ever seen.
\r\n\r\n
Photo Album (click image)
\r\n\r\n
\r\n\r\n
Links
\r\n\r\n
\r\n
Website showing how to determine which model disklavier you have: Yamahaden
\r\n
DisklavierTM World: This is a privately operated, Public Service (non-profit) webpage. 10,781 piano-music files in \'FIL\' (e-SEQ) & MIDI format & Software for the Yamaha Disklavier. PUBLIC-DOMAIN / \'Live\' MIDI-Performances / FREE Sequences
',238,0,1,'CC-BY-SA','Music, Piano, Keyboard, Musical Instruments, Player Pianos, Recording Devices',0,0,1),
(2810,'2019-05-10','Wi-Fi on Android',462,'Ken fixes an Android Firewalled Wi-Fi connection that reports no Internet and won’t connect','
Background
\r\n
\r\nYou\'re running a firewall on your work and home networks right, so of course you\'re running one on your Smart Phone. Given this device holds more information about you than you probably know yourself, it would be only prudent to make sure that you are protecting what gets in but also what gets out.\r\n
\r\n
\r\nI run AFWall+ which is available from the F-Droid app store. It runs fine on LineageOS.\r\n
\r\n
\r\nI then set it on the children\'s phone so that no application is allowed to use mobile data, and then only applications that need Internet get Internet Access. This works well as it\'s a normal use case for mobile applications to have intermittent access to the Internet.\r\n
\r\n
\r\nI see no reason why the Linux Kernel should need unfettered access to the Internet, so it\'s not allowed out. One issue you may come across is that even though you know that there is a Connection your phone doesn\'t, and so it will display the Wi-Fi Connected, no Internet message. \r\n
\r\n\r\n\r\n... this means that the device is unable to receive a response from GCM (Google Cloud Messaging, the framework that handles push notifications). This traffic is sent through ports 5228, 5229, and 5230. If the AP is blocking or interfering with traffic on those ports, push notifications won\'t work ... \r\n\r\n
\r\nI do indeed see blocked attempts by Google Play Services on my own phone, but not on the other phones that have no google services installed. The only entry I see in the logs is an ICMP attempt to \"Comcast Cable Communications, Inc\". If you know more please record a show for Hacker Public Radio about it.\r\n
\r\n\r\n
Giving Access
\r\n
\r\nNormally you will get a message saying that the Wi-Fi has no Internet access. \r\n
\r\n
\r\n\r\n
\r\n
\r\nIf you tap the message a popup will allow you to stay connected and will let you remember the choice.\r\n
\r\n
\r\n\r\n
\r\n
\r\nIn some cases the router helpfully resets the connection before you can reply to the message meaning it goes into a loop continually popping up the message but not reacting to it.\r\n
\r\n
\r\nIn this case we can use Termux a Android Terminal emulator, to drop to a shell and fix the problem.\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\nI used su to get root access but you could also change to the user wifi.\r\n
\r\n
\r\nThe file you need to edit is /data/misc/wifi/wpa_supplicant.conf. It\'s probably best to edit this file with the wifi off.\r\n
\r\nI ended up copying the file to the sdcard, and editing it there. I then copied it back as su and used chown wifi:wifi /data/misc/wifi/wpa_supplicant.conf to fix the permissions.\r\n
\r\n\r\n
\r\nOnce that\'s done you can reboot the phone and connect to the network without a problem. You should also consider putting up an Open Wireless access point yourself.\r\n
\r\n',30,0,1,'CC-BY-SA','Android, fdroid, lineageos, AFWall+, Wi-Fi, wpa_supplicant.conf, termux',0,0,1),
(2787,'2019-04-09','NodeJS Part 1',613,'I don\'t know Javascript do ?','
\r\n',36,0,0,'CC-BY-SA','NodeJS,puppeteer,programming,Javascript',0,0,1),
(2796,'2019-04-22','IRS,Credit Freezes and Junk Mail Ohh My!',746,'IRS Credit Freezes and Junk Mail','
\r\n',36,0,0,'CC-BY-SA','IRS,Credit Freeze,Junk Mail,hacking',0,0,1),
-(2788,'2019-04-10','Looping in Haskell',2848,'tuturto describes some loop-like constructs in Haskell','
Haskell is functional language where data is immutable. This means that regular for-loops don’t really exist. Looping however is very common pattern in programs in general. Here are some patterns how to do that in Haskell.
\r\n
Recursion
\r\n
Calculating Fibonacci numbers is common example (sort of like hello world in Haskell). There’s many different implementations at https://wiki.haskell.org/The_Fibonacci_sequence if you’re interested on having a look.
When called with 0 result is 0. When called with 1 result is 1. For all other cases, fibs is called with values n-1 and n-1 and the results are summed together. This works fine when n is small, but calculation gets slow really quickly with bigger values.
\r\n
Another way is to define list of all Fibonacci numbers recursively:
Here a list is constructed. First element is 0, second element is 1 and rest of the list is obtained by summing the list with its tail (everything but the first element of the list). Definition is recursive and defines all Fibonacci numbers. However, Haskell doesn’t evaluate whole list, but only as much of it as is required.
\r\n
Common pattern of processing elements in a list, producing a new list:
Two cases, when called with an empty list [], result is empty list. For all other cases, list is taken apart (x:xs), x contains first element of the list and xs is rest of the list. Body of the function creates a new list where head is x + 1 and tail is addOne xs. This processes whole list of Integer by adding one to each value. It also reverses the list.
\r\n
Second common pattern is processing a list and reducing it to a single value:
\r\n
sumAll :: Integer -> [Integer] -> Integer\r\nsumAll n [] = n\r\nsumAll n (x:xs) = sumAll (n + x) xs
\r\n
If given list is empty (the terminal case), result is n. Second case again takes list apart (x:xs), adds x and n together and recursive call sumAll with tail of the list.
\r\n
This common pattern is discarding some elements of a list:
\r\n
evenOnly :: [Integer] -> [Integer]\r\nevenOnly [] = []\r\nevenOnly (x:xs) = \r\n if even x\r\n then x : evenOnly xs\r\n else evenOnly xs
\r\n
Again, result of empty list is just empty list. In all other cases we first check if x is even. If so, new list is constructed where head is x and tail is evenOnly xs. If x isn’t even, it’s discarded and evenOnly is called recursively with tail of the list.
\r\n
More tools
\r\n
Writing recursion by hand gets tedious and sometimes confusing (if you listened to the show, you probably noticed how I got confused and had to check that evenOnly actually works as I thought it would). For that reason, there are tools that abstract these common patterns and given them names.
\r\n
First is map. It applies given function to each element of a list, thus producing a new list:
Second is fold. There is good article at https://wiki.haskell.org/Foldr_Foldl_Foldl%27 that talks about differences between different folds.
\r\n
The basic idea behind each fold is the same, they take a function and initial value and then apply them to first element of list, producing a value. This value is then applied with the function to the second element of the list and so on, until whole list has been reduced to a single value. Calculating a sum of list is so common operation that there’s specific function for that: sum.
scan is similar to fold, except for returning only the final value, it also returns intermediate ones. Here it’s easier to observe how scanr and scanl differ from each other:
Last of the trifecta is filter that is used to select some of the elements in a list based on a supplied function.
\r\n
> filter odd [1..10]\r\n[1, 3, 5, 7, 9]\r\n> filter even [1..]\r\n[2, 4, 6, 8, 10, 12, 14, 16...]\r\n> take 5 $ filter even [1..] \r\n[2, 4, 6, 8, 10]
\r\n
Even more tools
\r\n
There are even more tools at our disposal. Prelude is basic library of Haskell and browsing online documentation at https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html might yield interesting information.
\r\n
For example, constructing some lists:
\r\n
\r\n
iterate :: (a -> a) -> a -> [a] For list where function is applied repeatedly.
\r\n
repeat :: a -> [a] for a list that contains infinite amount of a.
\r\n
replicate :: Int -> a -> [a] For a list that contains finite amount of a.
\r\n
cycle :: [a] -> [a] For a infinite list that repeats same list over and over again.
\r\n
\r\n
Finding tools
\r\n
It’s all about knowing the right tools and finding them when needed. Luckily, you don’t have to memorize big stack of notes, but can turn to https://hoogle.haskell.org/ which is Haskell API search engine. It can search based on name or type signature. I often use it to find out if somebody has already written a function that I’m thinking of writing myself.
\r\n
If you want to send questions or comments, I can be reached with email or at fediverse where I’m tuturto@mastodon.social. This episode is direct result of feedback that I got from previous one. If there’s Haskell topic you would love to hear more, drop me line or even better, research it by yourself and make a cool Hacker Public Radio episode.
\r\n',364,107,0,'CC-BY-SA','haskell, programming',0,0,1),
+(2788,'2019-04-10','Looping in Haskell',2848,'Tuula describes some loop-like constructs in Haskell','
Haskell is functional language where data is immutable. This means that regular for-loops don’t really exist. Looping however is very common pattern in programs in general. Here are some patterns how to do that in Haskell.
\r\n
Recursion
\r\n
Calculating Fibonacci numbers is common example (sort of like hello world in Haskell). There’s many different implementations at https://wiki.haskell.org/The_Fibonacci_sequence if you’re interested on having a look.
When called with 0 result is 0. When called with 1 result is 1. For all other cases, fibs is called with values n-1 and n-1 and the results are summed together. This works fine when n is small, but calculation gets slow really quickly with bigger values.
\r\n
Another way is to define list of all Fibonacci numbers recursively:
Here a list is constructed. First element is 0, second element is 1 and rest of the list is obtained by summing the list with its tail (everything but the first element of the list). Definition is recursive and defines all Fibonacci numbers. However, Haskell doesn’t evaluate whole list, but only as much of it as is required.
\r\n
Common pattern of processing elements in a list, producing a new list:
Two cases, when called with an empty list [], result is empty list. For all other cases, list is taken apart (x:xs), x contains first element of the list and xs is rest of the list. Body of the function creates a new list where head is x + 1 and tail is addOne xs. This processes whole list of Integer by adding one to each value. It also reverses the list.
\r\n
Second common pattern is processing a list and reducing it to a single value:
\r\n
sumAll :: Integer -> [Integer] -> Integer\r\nsumAll n [] = n\r\nsumAll n (x:xs) = sumAll (n + x) xs
\r\n
If given list is empty (the terminal case), result is n. Second case again takes list apart (x:xs), adds x and n together and recursive call sumAll with tail of the list.
\r\n
This common pattern is discarding some elements of a list:
\r\n
evenOnly :: [Integer] -> [Integer]\r\nevenOnly [] = []\r\nevenOnly (x:xs) = \r\n if even x\r\n then x : evenOnly xs\r\n else evenOnly xs
\r\n
Again, result of empty list is just empty list. In all other cases we first check if x is even. If so, new list is constructed where head is x and tail is evenOnly xs. If x isn’t even, it’s discarded and evenOnly is called recursively with tail of the list.
\r\n
More tools
\r\n
Writing recursion by hand gets tedious and sometimes confusing (if you listened to the show, you probably noticed how I got confused and had to check that evenOnly actually works as I thought it would). For that reason, there are tools that abstract these common patterns and given them names.
\r\n
First is map. It applies given function to each element of a list, thus producing a new list:
Second is fold. There is good article at https://wiki.haskell.org/Foldr_Foldl_Foldl%27 that talks about differences between different folds.
\r\n
The basic idea behind each fold is the same, they take a function and initial value and then apply them to first element of list, producing a value. This value is then applied with the function to the second element of the list and so on, until whole list has been reduced to a single value. Calculating a sum of list is so common operation that there’s specific function for that: sum.
scan is similar to fold, except for returning only the final value, it also returns intermediate ones. Here it’s easier to observe how scanr and scanl differ from each other:
Last of the trifecta is filter that is used to select some of the elements in a list based on a supplied function.
\r\n
> filter odd [1..10]\r\n[1, 3, 5, 7, 9]\r\n> filter even [1..]\r\n[2, 4, 6, 8, 10, 12, 14, 16...]\r\n> take 5 $ filter even [1..] \r\n[2, 4, 6, 8, 10]
\r\n
Even more tools
\r\n
There are even more tools at our disposal. Prelude is basic library of Haskell and browsing online documentation at https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html might yield interesting information.
\r\n
For example, constructing some lists:
\r\n
\r\n
iterate :: (a -> a) -> a -> [a] For list where function is applied repeatedly.
\r\n
repeat :: a -> [a] for a list that contains infinite amount of a.
\r\n
replicate :: Int -> a -> [a] For a list that contains finite amount of a.
\r\n
cycle :: [a] -> [a] For a infinite list that repeats same list over and over again.
\r\n
\r\n
Finding tools
\r\n
It’s all about knowing the right tools and finding them when needed. Luckily, you don’t have to memorize big stack of notes, but can turn to https://hoogle.haskell.org/ which is Haskell API search engine. It can search based on name or type signature. I often use it to find out if somebody has already written a function that I’m thinking of writing myself.
\r\n
If you want to send questions or comments, I can be reached with email or at fediverse where I’m Tuula@mastodon.social. This episode is direct result of feedback that I got from previous one. If there’s Haskell topic you would love to hear more, drop me line or even better, research it by yourself and make a cool Hacker Public Radio episode.
\r\n',364,107,0,'CC-BY-SA','haskell, programming',0,0,1),
(2789,'2019-04-11','Pacing In Storytelling',998,'Lostnbronx takes a stab at explaining why the pace of your story matters.','
Some stories, that are otherwise cookie-cutter in form, possessing familiar situations and clichéd characters, seem to nonetheless stand out. Other tales that might have great ideas, intriguing plots, and vivid characters, seem to hit the ground with a thud. The determining value here may lie with the pacing of the story.
\r\n
How does pacing (that is, timing) affect your story? Why does it matter? Can you make improvements in the pace by moving things around? What’s the best approach for creating it to begin with?
\r\n
Lostnbronx meanders for a while, often losing his way, and rarely making a coherent point regarding this complicated topic.
',107,105,0,'CC-0','stories, storytelling, pacing, lostnbronx',0,0,1),
-(2791,'2019-04-15','LUKS like truecrypt',1523,'Klaatu demonstrates how to use LVM and cryptsetup to create and use portable encrypted filesystems','
\r\nCreate an empty file of a predetermined size:\r\n
\r\n\r\n',78,74,0,'CC-BY-SA','encryption',0,0,1);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (2793,'2019-04-17','bash coproc: the future (2009) is here',1276,'clacke discovers bash\'s coproc keyword and explains some toy examples','
If you want the full manuscript, that’s at gitlab: hpr2793_bash_coproc_manuscript.adoc. It’s almost a transcript, but I added spontaneous commentary while reading the examples, so that’s not in the manuscript.
\r\n
Episode errata:
\r\n
\r\n
Command substitution with $() is perfectly valid according to POSIX, and is accepted both by dash and by bash --posix. It’s not to be considered a bashism.
\r\n
I fumbled the pronunciation of the printf format string in one place and said "parenthesis" instead of "percentage sign".
\r\n
I tried to say "space" every time there’s a space, but I know I forgot it in a few places. But you probably need to look at the show notes to really make sense of the commands anyway.
For a description of a hack for creating bidirectional anonymous pipes in bash, see my Fediverse post on this, and I owe you a show.
\r\n
A coprocess in bash is a subshell to which you have access to two file descriptors: Its stdin and its stdout.
\r\n
The two file descriptors will be put in a bash array. To learn more about arrays, check out Dave’s series within the bash series, a whopping five-part quadrology including hpr2709, hpr2719, hpr2729, hpr2739 and hpr2756.
\r\n
You create a coprocess using the coproc keyword, brand spanking new since bash 4 from 2009. I am filing issues to pygments and GNU src-highlite to support it.
\r\n
There are two ways to call coproc. The first way is to give coproc a simple command.
Here grep and cat wait forever for more input, so we have to kill them to continue our lesson.
\r\n
But we know that GREP will only return one line, so we can just read that one line. And when we are done feeding it lines, we can close our side of its stdin, and it will notice this and exit gracefully.
\r\n
I’m glad I stumbled over that {YOURVARIABLE}>&- syntax for having a dereferenced variable as the left FD of a redirection. Originally I used an ugly eval.
\r\n
Example #7:
\r\n
$ coproc GREP (grep --line-buffered pub); printf '%s\\n' hacker public radio >&${GREP[1]}; head -n1 <&${GREP[0]}; exec {GREP[1]}>&-\r\n[1] 25706\r\npublic\r\n[1]+ Done coproc GREP ( grep --color=auto --line-buffered pub )
\r\n
There we go! Not the most brilliant example, but it shows all the relevant moving parts, and we covered a couple of caveats.
\r\n
Now go out and play with this and come back with an example on how this is actually useful in the real world, and submit a show!
\r\n\r\n',311,42,0,'CC-BY-SA','bash, coproc, subshell',0,0,1),
-(2797,'2019-04-23','Writing Web Game in Haskell - Simulation at high level',1547,'tuturto gives overview of simulation in their 4x game','
So far we have been concentrating on separate pieces of the game. Now it’s time to put some of them together as a simulation.
\n
Overview of simulation
\n
Simulation is done in discrete steps. Each step is roughly 1 earth month (completely arbitrary decision). Shorter than that and there might not be enough happening during turns to keep things interesting. Much longer than that and player might not have enough control on how to react things.
\n
In any case, current time is stored in database in table time. There should be only one row in that table at any given time. And that row has only one value, current time. Time is stored as integer as I didn’t want to deal with problems that you get when adding fractions to a float time after time. So current time (March 2019) would be 2019.3 in game terms and stored as 20193 in database.
\n
Main processing is done in function called processTurn that is shown below. It advances time for one decimal month, removes all expired statuses as explained in episode 2768 and then loads all factions.
\n
After that, various steps of the simulation are carried out for all loaded factions. These include handling special events as explained in episode 2748 and doing observations and report writing in manner described episode 2703.
\n
processTurn :: (BaseBackend backend ~ SqlBackend,\n BackendCompatible SqlBackend backend, PersistUniqueRead backend,\n PersistQueryWrite backend,\n PersistQueryRead backend, PersistStoreWrite backend, MonadIO m) =>\n ReaderT backend m Time\nprocessTurn = do\n newTime <- advanceTime\n _ <- removeExpiredStatuses newTime\n factions <- selectList [] [ Asc FactionId ]\n _ <- mapM (handleFactionEvents newTime) factions\n mapM_ handleFactionFood factions\n mapM_ (handleFactionConstruction newTime) factions\n _ <- mapM (addSpecialEvents newTime) factions\n -- Doing observations should always be done last to ensure players have\n -- recent reports of property they have full control, ie. planets.\n -- Otherwise it's possible that they'll receive reports that are one\n -- turn out of sync.\n mapM_ (handleFactionObservations newTime) factions\n return newTime
\n
More mapping
\n
Remember map and fmap that are used to run a function to each element in a list or general structure? mapM works in a similar way, but is used in monadic context. In processTurn function, we’re dealing with input and output and have IO monad present to allow us to do that (MonadIO m part of the type signature).
\n
If you step back a bit and squint a bit, then map :: (a -> b) -> [a] -> [b] and fmap :: (a -> b) -> f a -> f b and mapM :: Monad m => (a -> m b) -> t a -> m (t b) look pretty similar. Each take a function, structure and produce a new structure which values were created by running the given function for each element of the original structure.
\n
The difference is that map works only for lists, fmap works for functors (that were covered in episode 2778) and mapM works for structures in monadic context.
\n
Best way to contact me nowadays is either by email or through fediverse where I’m tuturto@mastodon.social.
\n',364,107,0,'CC-BY-SA','haskell, persistent',0,0,1),
+(2791,'2019-04-15','LUKS like truecrypt',1523,'Klaatu demonstrates how to use LVM and cryptsetup to create and use portable encrypted filesystems','
\r\nCreate an empty file of a predetermined size:\r\n
\r\n\r\n',78,74,0,'CC-BY-SA','encryption',0,0,1),
+(2793,'2019-04-17','bash coproc: the future (2009) is here',1276,'clacke discovers bash\'s coproc keyword and explains some toy examples','
If you want the full manuscript, that’s at gitlab: hpr2793_bash_coproc_manuscript.adoc. It’s almost a transcript, but I added spontaneous commentary while reading the examples, so that’s not in the manuscript.
\r\n
Episode errata:
\r\n
\r\n
Command substitution with $() is perfectly valid according to POSIX, and is accepted both by dash and by bash --posix. It’s not to be considered a bashism.
\r\n
I fumbled the pronunciation of the printf format string in one place and said "parenthesis" instead of "percentage sign".
\r\n
I tried to say "space" every time there’s a space, but I know I forgot it in a few places. But you probably need to look at the show notes to really make sense of the commands anyway.
For a description of a hack for creating bidirectional anonymous pipes in bash, see my Fediverse post on this, and I owe you a show.
\r\n
A coprocess in bash is a subshell to which you have access to two file descriptors: Its stdin and its stdout.
\r\n
The two file descriptors will be put in a bash array. To learn more about arrays, check out Dave’s series within the bash series, a whopping five-part quadrology including hpr2709, hpr2719, hpr2729, hpr2739 and hpr2756.
\r\n
You create a coprocess using the coproc keyword, brand spanking new since bash 4 from 2009. I am filing issues to pygments and GNU src-highlite to support it.
\r\n
There are two ways to call coproc. The first way is to give coproc a simple command.
Here grep and cat wait forever for more input, so we have to kill them to continue our lesson.
\r\n
But we know that GREP will only return one line, so we can just read that one line. And when we are done feeding it lines, we can close our side of its stdin, and it will notice this and exit gracefully.
\r\n
I’m glad I stumbled over that {YOURVARIABLE}>&- syntax for having a dereferenced variable as the left FD of a redirection. Originally I used an ugly eval.
\r\n
Example #7:
\r\n
$ coproc GREP (grep --line-buffered pub); printf '%s\\n' hacker public radio >&${GREP[1]}; head -n1 <&${GREP[0]}; exec {GREP[1]}>&-\r\n[1] 25706\r\npublic\r\n[1]+ Done coproc GREP ( grep --color=auto --line-buffered pub )
\r\n
There we go! Not the most brilliant example, but it shows all the relevant moving parts, and we covered a couple of caveats.
\r\n
Now go out and play with this and come back with an example on how this is actually useful in the real world, and submit a show!
\r\n\r\n',311,42,0,'CC-BY-SA','bash, coproc, subshell',0,0,1),
+(2797,'2019-04-23','Writing Web Game in Haskell - Simulation at high level',1547,'Tuula gives overview of simulation in their 4x game','
So far we have been concentrating on separate pieces of the game. Now it’s time to put some of them together as a simulation.
\n
Overview of simulation
\n
Simulation is done in discrete steps. Each step is roughly 1 earth month (completely arbitrary decision). Shorter than that and there might not be enough happening during turns to keep things interesting. Much longer than that and player might not have enough control on how to react things.
\n
In any case, current time is stored in database in table time. There should be only one row in that table at any given time. And that row has only one value, current time. Time is stored as integer as I didn’t want to deal with problems that you get when adding fractions to a float time after time. So current time (March 2019) would be 2019.3 in game terms and stored as 20193 in database.
\n
Main processing is done in function called processTurn that is shown below. It advances time for one decimal month, removes all expired statuses as explained in episode 2768 and then loads all factions.
\n
After that, various steps of the simulation are carried out for all loaded factions. These include handling special events as explained in episode 2748 and doing observations and report writing in manner described episode 2703.
\n
processTurn :: (BaseBackend backend ~ SqlBackend,\n BackendCompatible SqlBackend backend, PersistUniqueRead backend,\n PersistQueryWrite backend,\n PersistQueryRead backend, PersistStoreWrite backend, MonadIO m) =>\n ReaderT backend m Time\nprocessTurn = do\n newTime <- advanceTime\n _ <- removeExpiredStatuses newTime\n factions <- selectList [] [ Asc FactionId ]\n _ <- mapM (handleFactionEvents newTime) factions\n mapM_ handleFactionFood factions\n mapM_ (handleFactionConstruction newTime) factions\n _ <- mapM (addSpecialEvents newTime) factions\n -- Doing observations should always be done last to ensure players have\n -- recent reports of property they have full control, ie. planets.\n -- Otherwise it's possible that they'll receive reports that are one\n -- turn out of sync.\n mapM_ (handleFactionObservations newTime) factions\n return newTime
\n
More mapping
\n
Remember map and fmap that are used to run a function to each element in a list or general structure? mapM works in a similar way, but is used in monadic context. In processTurn function, we’re dealing with input and output and have IO monad present to allow us to do that (MonadIO m part of the type signature).
\n
If you step back a bit and squint a bit, then map :: (a -> b) -> [a] -> [b] and fmap :: (a -> b) -> f a -> f b and mapM :: Monad m => (a -> m b) -> t a -> m (t b) look pretty similar. Each take a function, structure and produce a new structure which values were created by running the given function for each element of the original structure.
\n
The difference is that map works only for lists, fmap works for functors (that were covered in episode 2778) and mapM works for structures in monadic context.
\n
Best way to contact me nowadays is either by email or through fediverse where I’m Tuula@mastodon.social.
\n',364,107,0,'CC-BY-SA','haskell, persistent',0,0,1),
(2798,'2019-04-24','Should Podcasters be Pirates ?',725,'Knightwise waxes nostalgically on the early days of podcasting and wonders if we all sold out?','
In a car rant I think back to the early days of podcasting and how the ambience and vision of podcasting was far from the mainstream media approach from today. Have we all sold out ?
\r\n',111,0,1,'CC-BY-SA','podcast,pirate radio,decentralisation',0,0,1),
(2802,'2019-04-30','Mid-life (?) assessment',991,'It seems life goes faster and faster and then turns around and goes slower and slower','
At 40, I’m at the middle of the mean life expectancy in most parts of the world. What’s happened so far, and where do I go from here?
\r\n
I look at my life’s past in increasingly smaller chunks of years, and then at my life’s future in increasingly larger chunks of years, and speculate about those 80 years — or perhaps many more? — of expected lifetime.
\r\n',311,0,0,'CC-BY-SA','life, kids, work, medicine, future',0,0,1),
(2792,'2019-04-16','Playing around with text to speech synthesis on Linux',1203,'Playing around with different text to speech programs to see what is possible.','
Below the script I used to generate a bunch of wav files with different text to speech applications.
\r\n
#!/bin/bash\r\n\r\nstring="This is HPR episode 2792 entitled \\"Playing around with text to speech synthesis on Linux\\" and is part of the series \\"Sound Scapes\\". It is hosted by Yeroon Bahten and is about 20 minutes long and carries a clean flag."\r\necho "${string}" > text.txt\r\n\r\nespeak -w espeak.wav "${string}" \r\nespeak -w espeak-ng-v-mb-us1.wav -v mb-us1 "${string}"\r\nespeak -w espeak-ng-v-mb-us2.wav -v mb-us2 "${string}"\r\nespeak -w espeak-ng-v-mb-us3.wav -v mb-us3 "${string}"\r\nespeak-ng "${string}"\r\nespeak-ng -v en-gb "${string}"\r\nespeak-ng -w espeak-ng-en-gb-scotland.wav -v en-gb-scotland "${string}"\r\nespeak-ng -w espeak-ng-en-us.wav -v en-us "${string}"\r\n\r\nflite -o flite-voice-cmu_us_slt.wav -voice cmu_us_slt "${string}"\r\n\r\necho "${string}"| festival --language english --tts # same as next line\r\necho "${string}"| text2wave --language british_english --tts -o festival_british_english.wav\r\ntext2wave -o festival_british_english.wav text.txt\r\n\r\nfor voice in don_diphone kal_diphone ked_diphone rab_diphone\r\ndo\r\n text2wave -o festival_voice_${voice}.wav -eval "(voice_${voice} )" text.txt\r\ndone\r\n\r\n# Gnustep say, recorded with audio recorder.\r\nsay "${string}"\r\n\r\ntext2wave -o festival_voice_cmu_us_slt_arctic_hts.wav -eval "(voice_cmu_us_slt_arctic_hts )" text.txt\r\n\r\n# merlin https://github.com/CSTR-Edinburgh/merlin\r\n\r\n# marytts: https://github.com/marytts
\r\n',369,101,0,'CC-BY-SA','speech synthesis linux',0,0,1),
(2794,'2019-04-18','Interview with Martin Wimpress',2412,'In this episode, Yannick talks with Martin Wimpress about the Ubuntu MATE project','
Ubuntu, MATE.
\r\n
Two words which, taken separately, refer to great products.
\r\n
On one side, Ubuntu, one of the most popular, if not the most popular, linux distribution.
\r\n
On the other side, the MATE desktop environment, also very popular.
\r\n
One person took those two elements and combined them together to make Ubuntu MATE. That person is Martin Wimpress, and he joined me on the 21st of March to talk about the past, present, and future of the project.
\r\n',370,78,0,'CC-BY-SA','ubuntu, mate, ubuntu mate, martin wimpress, raspberry pi, desktop environment, linux',0,0,1),
-(2808,'2019-05-08','Haskell function types',1469,'tuturto gives overview of function types in Haskell','
Haskell is statically typed language, meaning that during compilation, programs are checked for type correctness. This means that you won’t accidentally mix for example text and numbers. Haskell does type inference. The compiler will try and figure out what kind of types would make your program to be valid in terms of types. Programmer could completely omit types, but it’s often helpful to write type signatures for at least top level definitions. These will be helpful for both the programmers and compilers.
\r\n
concrete types
\r\n
Simplest case is where types are spelled out definitely. Function add below takes two Integer parameters and produces Integer value. Note that types are written in upper case.
\r\n
add :: Integer -> Integer -> Integer
\r\n
It’s possible to not use concrete types. In following example a (note the lower case) can be anything. So function takes two values of a, a Boolea and produces a. This is useful technique for writing very general functions.
\r\n
choose :: a -> a -> Boolean -> a
\r\n
ad hoc polymorphism
\r\n
In previous example, we wouldn’t be able to do much at all with a as we don’t know its type. Sometimes we need to know a bit more about type, without specifically declaring its type. For those cases type constraints are useful.
\r\n
add :: (Num a) => a -> a -> a
\r\n
This version of add again takes two parameters, both being type a and produces value a. But (Num a) => part in the signature constraints a to be instance of Num. This type class (I’ll talk about these some other time) defines that each instance of it will have set of functions: +, -, *, negate, abs, signum and fromInteger. So now our add function can use those functions, regardless of what specific type a is.
\r\n
parametrized functions
\r\n
Types used in function signature can be parametrized. If we wanted a function that returns a first element of any list, we could have following signature: first :: [a] -> Maybe a
\r\n
first takes single parameter, list of a and returns Maybe a. Maybe is a type that is used to signify a value that might or might not be present and has following definition:
\r\n
data Maybe a =\r\n Nothing\r\n | Just a
\r\n
So our function would return Nothing when given an empty list and Just a when given a list of at least one element.
\r\n
using functions
\r\n
Function application in Haskell doesn’t require parentheses around arguments. Calling our add function is just add 1 2. If one of the values is result of another function call, we need to tell which parameters belong to which function. Using $ is one option: add 1 $ add 2 3, another option is to use parentheses: add 1 (add 2 3).
\r\n
When function is called with less parameters than it expect, instead of run time error you’ll going to receive a function. In following example addLots 5 will produce same value as add 1000 5:
Functions have type (that’s what the signature is for after all) and functions can be used as values. You can return function from another function or you can pass in a function as a parameter.
\r\n
Common example is filter, which has following signature: filter :: (a -> Bool) -> [a] -> [a]
\r\n
It takes two parameters, first one is function that has type a -> Bool and second one is list of a. Return value is list of a. You can produce a list of odd numbers between 1 and 10 with filter odd [1..10].
\r\n
anonymous functions
\r\n
Sometimes you need a function to pass in as a parameter, but the function is so small that you don’t want to give it a name. For those cases, anonymous function are good. If you wanted to produce a list of odd numbers that are greater that 5 in range from 1 10, you could write it as: filter (\\x -> odd x && x > 5) [1..10]. If you squint hard enough \\ looks almost like a lowercase greek letter λ.
\r\n
Easiest way to catch me is either email or fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
-(2799,'2019-04-25','building an arduino programmer',1212,'turn an arduino nano into a programmer','\r\n
intro
\r\n\r\n
1.1 brian in ohio
\r\n
1.2 out from under my rock
\r\n\r\n
motivation
\r\n\r\n
2.1 ken fallon bootloader episode
\r\n
\r\n
hpr 2660
\r\n
burned many bootloaders
\r\n
used usbtiny programmer
\r\n
putting together a programmer would be a good learning experience
\r\n
\r\n
2.2 still use arduino
\r\n
\r\n
easy to check out a new piece of hardware
\r\n
boards are cheap and easy to find
\r\n
boards are robust
\r\n
\r\n
2.3 need to run an arduino board at lower frequency
\r\n
\r\n
developing a data logger
\r\n
write code in c using the avr open source tool chain
\r\n
prototype on arduino board
\r\n
\r\n\r\n
needed supplies
\r\n\r\n
3.1 arduino ide
\r\n
\r\n
get from your distro’s repository
\r\n
slackbuilds i used the version that repackages the binaries, the little a arduino
use it to test the programmer outside of the arduino environment
\r\n
part of the gnu avr toolchain
\r\n
\r\n
3.3 arduino nano clone - un assembled
\r\n
\r\n
\r\n
look for the boards that have the unpoplated icsp header
\r\n
make sure its a nano and not a pro-mini
\r\n
\r\n
3.4 3 leds 3mm or smaller
\r\n
\r\n
\r\n
optional but are useful, especially the heartbeat led
\r\n
\r\n
3.5 3 resistors 200 ohm - small
\r\n
\r\n
if you install the led’s
\r\n
\r\n
3.6 1 5-10 uF electrolytic capacitor
\r\n
3.7 3-4 inch long jumper wire
\r\n
3.8 2x3 female header
\r\n
\r\n
3.9 some way to cut wire
\r\n
3.10 soldering supplies
\r\n\r\n
howto
\r\n\r\n
4.1 upload arduino isp sketch to nano
\r\n
File→Examples→11.ArduinoISP→ArduinoISP
\r\n
\r\n
i modified the sketch changing where the led’s are placed
\r\n
i put the led’s at digital 9, 7, and 5 for spacing
\r\n
#define RESET 10 // Use pin 10 to reset the target rather than SS\r\n#define LED_HB 9 // No change define LED_ERR 7 // changed define\r\n#LED_PMODE 5 // changed
\r\n
upload the sketch
\r\n
\r\n
4.2 solder on led’s
\r\n
\r\n
\r\n
solder the anode leg to the apropriate digital pin on the board
\r\n
add a resistor to the cathode leg of the led (usually the shorter leg)
\r\n
solder the resistor attached to the cathode to ground pin of the board
\r\n
i started with pin 9
\r\n
you can test each led before moving on to the next led
\r\n
my soldering ended up messy but it gets the job done
\r\n
\r\n
\r\n
4.3 modify sketch and test leds
\r\n
\r\n
you can modify the sketch
\r\n
change the heartbeat pin to whatever led you just soldered
\r\n
upload the modified sketch
\r\n
the led you just soldered should pulse
\r\n
\r\n
4.4 clip jumper wire and attach
\r\n
\r\n
\r\n
pin 10
\r\n
used the hole on the end of the board as strain relief
\r\n
\r\n
4.5 add capacitor
\r\n
\r\n
watch polarity
\r\n
no more auto reset
\r\n
if you want to program with arduino ide, you need to push the reset button
\r\n
\r\n
4.6 2x3 header
\r\n
MISO -|o o|-+Vcc\r\n SCK -|o o|-MOSI\r\n Do not attach-Reset-|o o|-Gnd\r\n -----
\r\n
\r\n
\r\n
remove reset connecter south-west connector
\r\n
solder the remaining 5 pins
\r\n
the header is soldered on the bottom of the board
\r\n
\r\n
\r\n\r\n
how to use
\r\n\r\n
5.1 plug usb cable into programmer and your computer
\r\n
5.2 start the arduino ide
\r\n
5.3 plug programmer onto target board remember to plug the wire into the reset pin of the target
\r\n
5.4 in the tools folder of the ide make sure your usb port is selected
\r\n
Tools→Port"/dev/ttyUSBx"→/dev/ttyUSBx
\r\n
5.5 and that in the programmer section you select arduino as isp not arduinoisp
\r\n
Tools→Programmer→Arduino as ISP
\r\n
5.6 at this point you can burn a bootloader as Ken described
\r\n
5.7 upload a program
\r\n
5.7.1 bring up the blink example sketch
\r\n
5.7.2 under tools make sure your target board type is selected
\r\n
Tools→Boards
\r\n
5.7.3 under the sketch menu you’ll see upload using a programmer
\r\n
Sketch→Upload Using Programer
\r\n
5.7.4 when you select that the blink sketch will be compiled and uploaded
7.2 when you upload this way you overwrite bootloader
\r\n
7.3 arduino ide boards.txt has some fuse errors
\r\n
7.4 avrdude version 6.2 will not work
\r\n
7.5 baud rate using avrdude command line
\r\n
7.6 capacitor is non-optional, but makes uploading to that board non-trivial
\r\n\r\n
conclusion
\r\n\r\n
8.1 upload via icsp vs usb serial
\r\n
8.2 do you need a bootloader?
\r\n
8.3 challenge to max out any 8bit microcontroller
\r\n
\r\n
if you need to do one or two things use a microcontroller i.e. arduino
\r\n
if you need to do many things use a linux single board computer i.e. raspberry pi
\r\n
\r\n',326,91,0,'CC-BY-SA','Arduino,ArduinoISP',0,0,1),
+(2808,'2019-05-08','Haskell function types',1469,'Tuula gives overview of function types in Haskell','
Haskell is statically typed language, meaning that during compilation, programs are checked for type correctness. This means that you won’t accidentally mix for example text and numbers. Haskell does type inference. The compiler will try and figure out what kind of types would make your program to be valid in terms of types. Programmer could completely omit types, but it’s often helpful to write type signatures for at least top level definitions. These will be helpful for both the programmers and compilers.
\r\n
concrete types
\r\n
Simplest case is where types are spelled out definitely. Function add below takes two Integer parameters and produces Integer value. Note that types are written in upper case.
\r\n
add :: Integer -> Integer -> Integer
\r\n
It’s possible to not use concrete types. In following example a (note the lower case) can be anything. So function takes two values of a, a Boolea and produces a. This is useful technique for writing very general functions.
\r\n
choose :: a -> a -> Boolean -> a
\r\n
ad hoc polymorphism
\r\n
In previous example, we wouldn’t be able to do much at all with a as we don’t know its type. Sometimes we need to know a bit more about type, without specifically declaring its type. For those cases type constraints are useful.
\r\n
add :: (Num a) => a -> a -> a
\r\n
This version of add again takes two parameters, both being type a and produces value a. But (Num a) => part in the signature constraints a to be instance of Num. This type class (I’ll talk about these some other time) defines that each instance of it will have set of functions: +, -, *, negate, abs, signum and fromInteger. So now our add function can use those functions, regardless of what specific type a is.
\r\n
parametrized functions
\r\n
Types used in function signature can be parametrized. If we wanted a function that returns a first element of any list, we could have following signature: first :: [a] -> Maybe a
\r\n
first takes single parameter, list of a and returns Maybe a. Maybe is a type that is used to signify a value that might or might not be present and has following definition:
\r\n
data Maybe a =\r\n Nothing\r\n | Just a
\r\n
So our function would return Nothing when given an empty list and Just a when given a list of at least one element.
\r\n
using functions
\r\n
Function application in Haskell doesn’t require parentheses around arguments. Calling our add function is just add 1 2. If one of the values is result of another function call, we need to tell which parameters belong to which function. Using $ is one option: add 1 $ add 2 3, another option is to use parentheses: add 1 (add 2 3).
\r\n
When function is called with less parameters than it expect, instead of run time error you’ll going to receive a function. In following example addLots 5 will produce same value as add 1000 5:
Functions have type (that’s what the signature is for after all) and functions can be used as values. You can return function from another function or you can pass in a function as a parameter.
\r\n
Common example is filter, which has following signature: filter :: (a -> Bool) -> [a] -> [a]
\r\n
It takes two parameters, first one is function that has type a -> Bool and second one is list of a. Return value is list of a. You can produce a list of odd numbers between 1 and 10 with filter odd [1..10].
\r\n
anonymous functions
\r\n
Sometimes you need a function to pass in as a parameter, but the function is so small that you don’t want to give it a name. For those cases, anonymous function are good. If you wanted to produce a list of odd numbers that are greater that 5 in range from 1 10, you could write it as: filter (\\x -> odd x && x > 5) [1..10]. If you squint hard enough \\ looks almost like a lowercase greek letter λ.
\r\n
Easiest way to catch me is either email or fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1);
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (2799,'2019-04-25','building an arduino programmer',1212,'turn an arduino nano into a programmer','\r\n
intro
\r\n\r\n
1.1 brian in ohio
\r\n
1.2 out from under my rock
\r\n\r\n
motivation
\r\n\r\n
2.1 ken fallon bootloader episode
\r\n
\r\n
hpr 2660
\r\n
burned many bootloaders
\r\n
used usbtiny programmer
\r\n
putting together a programmer would be a good learning experience
\r\n
\r\n
2.2 still use arduino
\r\n
\r\n
easy to check out a new piece of hardware
\r\n
boards are cheap and easy to find
\r\n
boards are robust
\r\n
\r\n
2.3 need to run an arduino board at lower frequency
\r\n
\r\n
developing a data logger
\r\n
write code in c using the avr open source tool chain
\r\n
prototype on arduino board
\r\n
\r\n\r\n
needed supplies
\r\n\r\n
3.1 arduino ide
\r\n
\r\n
get from your distro’s repository
\r\n
slackbuilds i used the version that repackages the binaries, the little a arduino
use it to test the programmer outside of the arduino environment
\r\n
part of the gnu avr toolchain
\r\n
\r\n
3.3 arduino nano clone - un assembled
\r\n
\r\n
\r\n
look for the boards that have the unpoplated icsp header
\r\n
make sure its a nano and not a pro-mini
\r\n
\r\n
3.4 3 leds 3mm or smaller
\r\n
\r\n
\r\n
optional but are useful, especially the heartbeat led
\r\n
\r\n
3.5 3 resistors 200 ohm - small
\r\n
\r\n
if you install the led’s
\r\n
\r\n
3.6 1 5-10 uF electrolytic capacitor
\r\n
3.7 3-4 inch long jumper wire
\r\n
3.8 2x3 female header
\r\n
\r\n
3.9 some way to cut wire
\r\n
3.10 soldering supplies
\r\n\r\n
howto
\r\n\r\n
4.1 upload arduino isp sketch to nano
\r\n
File→Examples→11.ArduinoISP→ArduinoISP
\r\n
\r\n
i modified the sketch changing where the led’s are placed
\r\n
i put the led’s at digital 9, 7, and 5 for spacing
\r\n
#define RESET 10 // Use pin 10 to reset the target rather than SS\r\n#define LED_HB 9 // No change define LED_ERR 7 // changed define\r\n#LED_PMODE 5 // changed
\r\n
upload the sketch
\r\n
\r\n
4.2 solder on led’s
\r\n
\r\n
\r\n
solder the anode leg to the apropriate digital pin on the board
\r\n
add a resistor to the cathode leg of the led (usually the shorter leg)
\r\n
solder the resistor attached to the cathode to ground pin of the board
\r\n
i started with pin 9
\r\n
you can test each led before moving on to the next led
\r\n
my soldering ended up messy but it gets the job done
\r\n
\r\n
\r\n
4.3 modify sketch and test leds
\r\n
\r\n
you can modify the sketch
\r\n
change the heartbeat pin to whatever led you just soldered
\r\n
upload the modified sketch
\r\n
the led you just soldered should pulse
\r\n
\r\n
4.4 clip jumper wire and attach
\r\n
\r\n
\r\n
pin 10
\r\n
used the hole on the end of the board as strain relief
\r\n
\r\n
4.5 add capacitor
\r\n
\r\n
watch polarity
\r\n
no more auto reset
\r\n
if you want to program with arduino ide, you need to push the reset button
\r\n
\r\n
4.6 2x3 header
\r\n
MISO -|o o|-+Vcc\r\n SCK -|o o|-MOSI\r\n Do not attach-Reset-|o o|-Gnd\r\n -----
\r\n
\r\n
\r\n
remove reset connecter south-west connector
\r\n
solder the remaining 5 pins
\r\n
the header is soldered on the bottom of the board
\r\n
\r\n
\r\n\r\n
how to use
\r\n\r\n
5.1 plug usb cable into programmer and your computer
\r\n
5.2 start the arduino ide
\r\n
5.3 plug programmer onto target board remember to plug the wire into the reset pin of the target
\r\n
5.4 in the tools folder of the ide make sure your usb port is selected
\r\n
Tools→Port"/dev/ttyUSBx"→/dev/ttyUSBx
\r\n
5.5 and that in the programmer section you select arduino as isp not arduinoisp
\r\n
Tools→Programmer→Arduino as ISP
\r\n
5.6 at this point you can burn a bootloader as Ken described
\r\n
5.7 upload a program
\r\n
5.7.1 bring up the blink example sketch
\r\n
5.7.2 under tools make sure your target board type is selected
\r\n
Tools→Boards
\r\n
5.7.3 under the sketch menu you’ll see upload using a programmer
\r\n
Sketch→Upload Using Programer
\r\n
5.7.4 when you select that the blink sketch will be compiled and uploaded
\r\n',235,0,0,'CC-BY-SA','Guitar, DIY',0,0,1),
(2804,'2019-05-02','Awk Part 13: Fix-Width Field Processing',381,'In this episode, I discuss how to deal with fix-width field text files using Awk','
Basic usage
\r\n
Use the FIELDWIDTHS = "n1 n2 n3 ..." annotation in the BEGIN section of an awk command to specify the widths of the fields.
\r\n
For instance, the following file has widths of 20, 10, and 12 characters.
\r\n
NAME STATE TELEPHONE\r\nJohn Smith WA 418-311-4111\r\nMary Hartford CA 319-219-4341\r\nEvan Nolan IL 219-532-5301\r\nBoris Ratinski NC 201-553-5555\r\n
\r\n
Below is an example of processing such a file:
\r\n
BEGIN { FIELDWIDTHS = "20 10 12" }\r\nNR > 1 {\r\n name = $1\r\n state = $2\r\n phone = $3\r\n sub(/ +$/, "", name)\r\n sub(/ +$/, "", state)\r\n sub(/ +$/, "", phone)\r\n printf("%s lives in %s. The phone number is %s.\\n", name, state, phone)\r\n}\r\n
\r\n',300,94,1,'CC-BY-SA','bash,linux,cli,command-line,awk',0,0,1),
(2807,'2019-05-07','Are bash local variables local?',661,'A lesson on dynamic scope vs lexical scope','
In hpr2739, Dave talked briefly about local variables. But what are they?
\r\n
In most modern languages, especially in compiled languages, "local" means that the value of a variable cannot be directly known, by looking up the name, outside the bounds of that function, but that’s not how it works in bash.
\r\n
Languages like C and Python have lexical scope. Lexical scope means local variables are local in the text. The names are local.
\r\n
If I’m writing code that is textually located outside the function, I cannot even describe how to access the variables within the function, because myvariable in my function is not the same variable, not the same place, as myvariable in your function.
\r\n
Languages like Bash and Elisp have dynamic scope. That means local variables are local in time. The names are global.
\r\n
What happens when you declare a variable local in bash is that the existing value of that variable is stowed away, to be brought back when your function exits.
\r\n
#!/usr/bin/env bash\r\nfunction sayscope() {\r\n echo The scope is $whatsmyscope\r\n}\r\n\r\nfunction globalscope() {\r\n whatsmyscope=global\r\n}\r\n\r\nfunction dynamicscope() {\r\n whatsmyscope=dynamic\r\n}\r\n\r\nfunction localscope() {\r\n local whatsmyscope=local\r\n sayscope\r\n dynamicscope\r\n sayscope\r\n}\r\n\r\nglobalscope\r\nsayscope\r\nlocalscope\r\nsayscope
\r\n
The scope is global\r\nThe scope is local\r\nThe scope is dynamic\r\nThe scope is global
\r\n
Perl has both, and it calls them local (dynamic scope, like bash) and my (lexical scope):
\r\n
#!/usr/bin/env perl\r\nuse v5.10;\r\n\r\nsub sayscope {\r\n say "Dynamic scope is $whatsmyscope";\r\n}\r\n\r\nsub globalscope {\r\n $whatsmyscope="global";\r\n}\r\n\r\nsub dynamicscope {\r\n $whatsmyscope="dynamic";\r\n}\r\n\r\nsub lexicalscope {\r\n my $whatsmyscope="lexical";\r\n say "Lexical scope is $whatsmyscope";\r\n sayscope;\r\n}\r\n\r\nsub localscope {\r\n local $whatsmyscope="local";\r\n sayscope;\r\n dynamicscope;\r\n sayscope;\r\n lexicalscope;\r\n}\r\n\r\nglobalscope;\r\nsayscope;\r\nlocalscope;\r\nsayscope;
\r\n
Dynamic scope is global\r\nDynamic scope is local\r\nDynamic scope is dynamic\r\nLexical scope is lexical\r\nDynamic scope is dynamic\r\nDynamic scope is global
\r\n
You almost never want to use local in Perl, it’s mostly there for historical reasons — lexical scope is a Perl 5 feature. https://perl.plover.com/local.html covers well the remaining few and narrow exceptions where local might be useful.
\r\n
As dynamic scope has some valid use, it’s available in some otherwise lexically scoped languages. For example, Common LISP has the special form, and several Schemes and Racket have parameter objects:
To dig fully into the history and flora of dynamic and lexical scope merits another episode.
\r\n\r\n\r\n',311,42,0,'CC-BY-SA','bash, perl, scope, dynamic scope, lexical scope',0,0,1),
(2822,'2019-05-28','What\'s in the Box! Part 1',1265,'NYbill opens a mystery box he found in the mail box.','
NYbill opens a mystery box that arrived in the mail.
',235,103,0,'CC-BY-SA','DIY, Soldering, Guitar, electronics',0,0,1),
-(2823,'2019-05-29','Gentoo and why I use it',748,'I talk about what Gentoo is, and why I love it so much.','
Thanks to norrist for suggesting I do this episode!
\r\n',374,0,0,'CC-BY-SA','Gentoo',0,0,1),
-(2824,'2019-05-30','Gnu Awk - Part 15',1916,'Redirection of input and output - part 2','
Introduction
\r\n
This is the fifteenth episode of the “Learning Awk” series which is being produced by b-yeezi and myself.
\r\n
This is the second of a pair of episodes looking at redirection in Awk scripts.
\r\n
In this episode I will spend some time looking at the getline command used for explicit input (as opposed to the usual implicit sort), often with redirection. The getline command is a complex subject which I will cover only relatively briefly. You are directed to the getline section of the GNU Awk User’s Guide for the full details.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk, redirection',0,0,1),
+(2823,'2019-05-29','Gentoo and why I use it',748,'I talk about what Gentoo is, and why I love it so much.','
Thanks to norrist for suggesting I do this episode!
\r\n',374,0,0,'CC-BY-SA','Gentoo',0,0,1),
+(2824,'2019-05-30','Gnu Awk - Part 15',1916,'Redirection of input and output - part 2','
Introduction
\r\n
This is the fifteenth episode of the “Learning Awk” series which is being produced by b-yeezi and myself.
\r\n
This is the second of a pair of episodes looking at redirection in Awk scripts.
\r\n
In this episode I will spend some time looking at the getline command used for explicit input (as opposed to the usual implicit sort), often with redirection. The getline command is a complex subject which I will cover only relatively briefly. You are directed to the getline section of the GNU Awk User’s Guide for the full details.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk, redirection',0,0,1),
(2809,'2019-05-09','The Blue Oak Model License and Its One Big Gotcha',1268,'Introducing and examining a new and elegant permissive software license.','
The Blue Oak Model License 1.0.0 was just released this month. In this episode I read the license, explain where it sits in among other software licenses, and enumerate some of the problems it purports to solve.
\r\n
I’m no legal expert, so take all of this as sort of a rough introduction to the license.
\r\n
Overall, if you are looking at permissive (vs copyleft) licenses, I would strongly suggest you consider this license! It’s concise, robust, it was developed by credible people, and gives your users future-proof safety from a number of common legal traps.
\r\n
However: just note that it has a feature, some would say bug, that might be a big deciding factor in whether you feel comfortable with it (listen for details)
\r\n
Nevertheless, I believe this license, or at least its style of language, will soon become extremely common.
Deprecation Notice: MIT and BSD — the blog post I mention in the recording, by Blue Oak council member, developer and IP lawyer Kyle Mitchell. He explains some problems he sees with the MIT and BSD licenses and how the BOML addresses them.
\r\n
Discussion on Hacker News — This was a pretty good discussion. Kyle Mitchell also chimed in here to respond to some criticisms and tire-kicking of this license (you can recognize him by his handle kemitchell).
\r\n
\r\n
Not mentioned in the recording: One thing that caused me a bit of confusion at first was the term “attribution”. Kyle and the Blue Oak folks use this term mainly to talk about license terms, not authorship or credit. So for them an attribution requirement is a requirement to include the license terms with any distributed copies, not a requirement to give authorship credit to people.
\r\n
If you want to use this license as a starting point for your own “bespoke” license, you can! As I mention in the recording, I created my own variant of the Blue Oak license for one of my own projects. My main change was a strong requirement for downstream users to give credit to upstream contributors—not just when redistributing source code, but in all published software, books and websites created with the software!
\r\n
\r\n
The Local Yarn License 1.0.0 — This is the license as it currently sits in an experimental branch in my project’s Fossil repository
Of course, when you make your own changes, you had better think hard about them, and if possible, get the advice of an Actual Lawyer who can discuss your particular situation.
\r\n',376,0,0,'CC-BY-SA','legal, licensing',0,0,1),
(2812,'2019-05-14','Is 5G mobile data a danger to your health?',484,'Apply Betteridge’s Law of Headlines to find out the answer','
The anti-5G campaign has been cooking for many years now, and at the epicenter of it all are two men, Lennart Hardell and Rainer Nyberg. It’s a Swedish-Finnish phenomenon that is now really making the rounds and spreading internationally, as actual commercial deployment of 5G networks draws nearer.
\r\n
As a Swede, I apologize. These two do not represent the Swedish or Finnish cancer or radiation research community, and our media have given them far more space in the public discourse than their work merits.
\r\n
They are heavily quoted in networks of pseudoscience, including anti-vaccine sites, right-wing "alternative facts" sites and Strålskyddsstiftelsen ("Swedish Radiation Protection Foundation"), a private foundation created in 2012 with a deceptive name meant to invoke authority, which has had to be corrected on multiple occasions by the actual Swedish Radiation Safety Authority, Strålskyddsmyndigheten.
\r\n
Strålskyddsstiftelsen received the 2013 "Misleader of the Year" award from the main Swedish scientific skeptics\' society, Vetenskap och Folkbildning ("Science and Public Education") for "[their fearmongering propaganda and biased reporting on the health effects of mobile telephony use and wireless networks]".
These networks are part of a feedback loop where they get media attention, politicians pick up on their claims and use them to invoke the precautionary principle and get precautionary regulation in place, or judges rule based on the claims, which then gets quoted by these entities as evidence that they were right all along.
\r\n
They make it very hard to find factual information on whether millimeter-wavelength radiation actually has any different effect from the centimeter-wavelength radiation that we have been using for over two decades without any documented harmful effects, because wherever you look you just find these sites claiming that we have definitely had adverse health effects for the last two decades and the new frequency bands will definitely be far worse.
\r\n
When you dig deeper into the claims on these sites you find a handful of cherry-picked articles, leading back to the two men mentioned at the top, to studies with flawed methodology like self-reported surveys on mobile telephony use among cancer patients, or to the pseudoscience/media/politics/law feedback loop. And it’s all about centimeter waves, which simply have shown no conclusive sign of increasing brain cancers or any other adverse health effect related to the radiation. For every positive report made you can find one that reports brain cancer fell as we introduced mobile phones. There is a massive body of data, and if the signal were there, we would have seen it by now.
\r\n
I’m no cancer researcher, but neither is Rainer Nyberg, he’s a retired professor in pedagogy. He’s a concerned citizen. https://en.wikipedia.org/wiki/Lennart_Hardell is an actual oncologist and professor who has studied carcinogens, but his research results on the wireless/cancer connection have been dismissed as "non-informative", "post hoc", "barely statistically significant" and "flawed" by his peers. There is nothing there.
\r\n
We know that high-voltage 16.7 Hz fields increase the risk for leukemia in train drivers, but we don’t know why. I am open to the possibility that 20-50 GHz waves have different consequences from 2 GHz waves, but I’d have to hear it from a credible source.
\r\n
Straight up DNA mutation is out the window, and that’s one of the centerpoints of these campaigns. This is still frequencies below visual light, it’s not ionizing radiation. No plausible mechanism has been suggested, and there is no clear data on any adverse effects.
\r\n
We use millimeter waves for the full body scans in US airports. Surely the effects of those have been studied? The top search results go to truthaboutcancer and infowars and similar names I won’t even bother to click. I don’t want to read another article about how all cancer research after 1950 has been wrong, we should all just eat chalk to balance our acidity, and cancer is a fungus.
\r\n
Apart from the pseudoscience sites I found one paper on the first search results page, concluding that X-ray backscatter scanners have well-known risks, but radiation levels are far below safety standards, both for passengers and for security staff, and also below the background radiation exposure while flying, and millimeter-wave scanners, while an "alarmingly small amount of information about its potential health effects" is available, "The established health effects associated with non-ionizing radiation are limited to thermal effects" and "these scanners operate at outputs well below those required to produce tissue heating", that is, we currently don’t know of a way millimeter waves might be harmful: https://www.sciencedirect.com/science/article/pii/S1687850714000168 (https://doi.org/10.1016/j.jrras.2014.02.005)
\r\n
For a guide on how to spot pseudoscience and how to read scientific papers, see ahuka’s excellent hpr2695: Problems with Studies.
',311,0,0,'CC-BY-SA','5g, health, radiation, pseudoscience',0,0,1),
-(2818,'2019-05-22','Writing Web Game in Haskell - Science, part 1',2606,'tuturto explains types and data they used to model science in their Haskell game','
Background
\r\n
This is rather large topic, so I split it in two episodes. Next one should follow in two weeks if everything goes as planned. First part is about modeling research, while second part concentrates on how things change over time.
\r\n
There’s three types of research: engineering, natural sciences and social sciences. Research costs points that are produced by various buildings.
\r\n
Implementation
\r\n
There’s three database tables, which are defined below:
\r\n
CurrentResearch\r\n type Technology\r\n progress Int\r\n factionId FactionId\r\n\r\nAvailableResearch\r\n type Technology\r\n category TopResearchCategory\r\n factionId FactionId\r\n\r\nCompletedResearch\r\n type Technology\r\n level Int\r\n factionId FactionId\r\n date Int
\r\n
Data types
\r\n
Technology is enumeration of all possible technologies. Knowing these enable player to build specific buildings and space ships, enact various laws and so on. In the end this will be (hopefully) large list of technologies.
ResearchCategory is more fine grained division of research. Each of the categories is further divided into sub-categories. Only EngineeringSubField is shown below, but other two are similarly divided.
ResearchScore is measure of how big some research is. It has type parameter a that is used to further quantify what kind of ResearchScore we’re talking about.
\r\n
newtype ResearchScore a = ResearchScore { unResearchScore :: Int }\r\n deriving (Show, Read, Eq, Ord, Num)
\r\n
TotalResearchScore is record of three different types of researches. I’m not sure if I should keep it as a record of three fields or if I should change it so that only one of those values can be present at any given time.
Finally there’s Research, which is a record that uses many of the types introduced earlier. It describes what Technology is unlocked upon completion, what’s the cost is and if there are any technologies that have to have been researched before this research can start. The tier of research isn’t currently used for anything, but I have vague plans what to do about it in the future.
Putting all this together, we can define a list of Research. Since finding an entry from this list based on research type of it is such a common operation, we also define another data structure for this specific purpose. Map in other programming languages is often known as dictionary, associative array or hash map. It stores key-value - pairs. In our case Technology is used as key and Research as value. We define it based on the list previously defined:
Next time we’ll look into how to actually use all these types and data that were defined.
\r\n',364,107,0,'CC-BY-SA','Haskell',0,0,1),
+(2818,'2019-05-22','Writing Web Game in Haskell - Science, part 1',2606,'Tuula explains types and data they used to model science in their Haskell game','
Background
\r\n
This is rather large topic, so I split it in two episodes. Next one should follow in two weeks if everything goes as planned. First part is about modeling research, while second part concentrates on how things change over time.
\r\n
There’s three types of research: engineering, natural sciences and social sciences. Research costs points that are produced by various buildings.
\r\n
Implementation
\r\n
There’s three database tables, which are defined below:
\r\n
CurrentResearch\r\n type Technology\r\n progress Int\r\n factionId FactionId\r\n\r\nAvailableResearch\r\n type Technology\r\n category TopResearchCategory\r\n factionId FactionId\r\n\r\nCompletedResearch\r\n type Technology\r\n level Int\r\n factionId FactionId\r\n date Int
\r\n
Data types
\r\n
Technology is enumeration of all possible technologies. Knowing these enable player to build specific buildings and space ships, enact various laws and so on. In the end this will be (hopefully) large list of technologies.
ResearchCategory is more fine grained division of research. Each of the categories is further divided into sub-categories. Only EngineeringSubField is shown below, but other two are similarly divided.
ResearchScore is measure of how big some research is. It has type parameter a that is used to further quantify what kind of ResearchScore we’re talking about.
\r\n
newtype ResearchScore a = ResearchScore { unResearchScore :: Int }\r\n deriving (Show, Read, Eq, Ord, Num)
\r\n
TotalResearchScore is record of three different types of researches. I’m not sure if I should keep it as a record of three fields or if I should change it so that only one of those values can be present at any given time.
Finally there’s Research, which is a record that uses many of the types introduced earlier. It describes what Technology is unlocked upon completion, what’s the cost is and if there are any technologies that have to have been researched before this research can start. The tier of research isn’t currently used for anything, but I have vague plans what to do about it in the future.
Putting all this together, we can define a list of Research. Since finding an entry from this list based on research type of it is such a common operation, we also define another data structure for this specific purpose. Map in other programming languages is often known as dictionary, associative array or hash map. It stores key-value - pairs. In our case Technology is used as key and Research as value. We define it based on the list previously defined:
Next time we’ll look into how to actually use all these types and data that were defined.
\r\n',364,107,0,'CC-BY-SA','Haskell',0,0,1),
(2811,'2019-05-13','Interview with Alan Pope',5387,'In this episode, Yannick talks with Alan Pope about snaps, snapcraft and all things related','
A few years ago, when you wanted to install a package on your Linux system, you had to grab the source code, and the nightmare began. But nowadays, this is over. You have deb files, and snaps, and flatpacks, and many other package formats available. On this episode, I was joined by Alan Pope, from Canonical, to talk about one of them in particular : snaps.
',370,78,0,'CC-BY-SA','ubuntu, snap, snapcraft, flatpack, linux, appimage, alan pope, popey',0,0,1),
-(3066,'2020-05-04','HPR Community News for April 2020',2508,'Dave talks about shows released and comments posted in April 2020','\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 24 comments in total.
\n
Past shows
\n
There are 4 comments on\n3 previous shows:
\n
\n
hpr3027\n(2020-03-10) \"What is quantum computing and why should we care?\"\nby mightbemike.
\n
\n
\n
\nComment 1:\nMongo on 2020-04-04:\n\"very interesting talk\"
Comment 6:\nMike Ray on 2020-04-23:\n\"Re: Why listen?\"
Comment 7:\ncrvs on 2020-04-30:\n\"Re: Why listen?\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nDave Morriss, Windigo
\n
Over the period tags and/or summaries have been added to 17 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3086,'2020-06-01','HPR Community News for May 2020',3253,'Dave and Ken talk about shows released and comments posted in May 2020','\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.
Comment 1:\nDanNixon on 2020-05-29:\n\"Groove based tape format\"
Comment 2:\nMrX on 2020-05-31:\n\"Re Groove based tape format\"
\n
hpr3084\n(2020-05-28) \"AudioBookClub 18 - Star Trek: The Continuing Mission\"\nby Thaj Sara.
\n
\n
Comment 1:\nAhuka on 2020-05-28:\n\"Missing Fifty\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 9 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3066,'2020-05-04','HPR Community News for April 2020',2508,'Dave talks about shows released and comments posted in April 2020','\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 24 comments in total.
\n
Past shows
\n
There are 4 comments on\n3 previous shows:
\n
\n
hpr3027\n(2020-03-10) \"What is quantum computing and why should we care?\"\nby mightbemike.
\n
\n
\n
\nComment 1:\nMongo on 2020-04-04:\n\"very interesting talk\"
Comment 6:\nMike Ray on 2020-04-23:\n\"Re: Why listen?\"
Comment 7:\ncrvs on 2020-04-30:\n\"Re: Why listen?\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nDave Morriss, Windigo
\n
Over the period tags and/or summaries have been added to 17 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3086,'2020-06-01','HPR Community News for May 2020',3253,'Dave and Ken talk about shows released and comments posted in May 2020','\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.
Comment 1:\nDanNixon on 2020-05-29:\n\"Groove based tape format\"
Comment 2:\nMrX on 2020-05-31:\n\"Re Groove based tape format\"
\n
hpr3084\n(2020-05-28) \"AudioBookClub 18 - Star Trek: The Continuing Mission\"\nby Thaj Sara.
\n
\n
Comment 1:\nAhuka on 2020-05-28:\n\"Missing Fifty\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 9 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2813,'2019-05-15','Should we dump the linux Desktop.',1229,'Knightwise wonders if we should let go of the linux desktop environments and focus on cross-platform','
Knightwise wonders if we should let go of the linux desktop environments and focus on cross-platform applications instead. Please bring your torches and pitchforks.
',111,0,1,'CC-BY-SA','linux, desktop, rant',0,0,1),
(2814,'2019-05-16','Spectre and Meltdown and OpenBSD and our future',1251,'A discussion about CPU\'s and our future with them, where are we going?','
I discuss the entire Spectre and Meltdown issues and where we might go post an Intel world. My objective is to encourage others to leave Speculative processing backed by management engine based chips. SCATTER HUMANS!!! WE MUST LEAVE!!!!
\r\n',377,0,0,'CC-BY-SA','SCATTER HUMANS!!!',0,0,1),
(2815,'2019-05-17','Copy pasta',2300,'Copying and pasting on Linux: X selections, xsel, clipboard managers, GPM, screen, and more','
\r\nYou can copy and paste on Linux the same way you do on any other OS: Ctrl+C to copy and Ctrl+V to paste (or use the Edit menu, or a right-click menu).\r\n
\r\n\r\n
\r\nHowever, Linux doesn\'t limit you to just that.\r\nThe primary GUI environment of Linux (at the time of this recording) is X, and the Inter-Client Communication Conventions Manual defines three X Selection states: Primary, Secondary, and Clipboard.\r\nThe Secondary is rarely (if ever?) used, so I don\'t cover it here.\r\n
\r\n\r\n
Primary
\r\n\r\n
\r\nThe primary X Selection is anything literally selected at any given moment.\r\nIf you highlight a word in Firefox with your mouse, for instance, then it becomes the Primary Selection, and it is owned by Firefox.\r\nIf you press the Middle Mouse Button in any application, then that application asks the owner (Firefox, in this example) for the data contained in the Primary Selection.\r\nFirefox sends the data to that application so that it can paste it for you.\r\n
\r\n\r\n
\r\nA Primary selection remains the Primary Selection until it is overwritten by a new Primary Selection.\r\nIn other words, text needn\'t be highlighted to be retained in the Primary Selection slot.\r\n
\r\n\r\n\r\n
Clipboard
\r\n\r\n
\r\nThe Clipboard Selection is data that has explicitly been sent to the clipboard by a copy action.\r\nThis is usually a right-click > Copy or a selection of Edit > Copy.\r\nWhen another application is told to paste from the clipboard, it pastes data from the Clipboard Selection.\r\n
\r\n\r\n
Both
\r\n\r\n
\r\nYou can (and often do) have both a Primary Selection and a Clipboard selection.\r\nIf you press Ctrl+V, you get the contents of the Clipboard Selection.\r\nIf you press the middle mouse button, then you get the contents of the Primary Selection.\r\n
\r\n\r\n
xsel
\r\n\r\n
\r\nThe xsel command allows you to retrieve the contents of an X Selection.\r\n
\r\n\r\nClipboard managers such as Klipper, CopyQ, Parcellite, and so on, provide a history for your clipboard.\r\nThey track the latest 10 (or so) items you have copied or selected.\r\nThey can be a little confusing, because they do tend to blur the line between the Primary Selection and the Clipboard Selection, but now that you know the technical difference, it shouldn\'t confuse you to see them both listed by a clipboard manager designed to conflate them.\r\n\r\n\r\n
GPM
\r\n\r\n
\r\nGPM is a daemon allowing you to use your mouse without a GUI.\r\nAmong its features, it permits you to select text in a text console (TTY) and then paste it with the middle mouse button.\r\n
\r\n\r\n
GNU Screen and Tmux
\r\n\r\n
\r\nScreen and tmux are "window managers for text consoles".\r\nI don\'t tend to use tmux as often as I should, having learnt GNU Screen long ago, so I\'m not familiar with the process of copying and pasting with tmux.\r\nFor Screen, you can copy text in this way:\r\n
\r\n\r\n\r\n
\r\nPress Ctrl+A to get out of insert mode.\r\n
\r\n
\r\nPress left-square_bracket to enter copy-mode\r\n
\r\n
\r\nMove your text to the position you want to start selecting and press Enter or Return\r\n
\r\n
\r\nArrow to the position at which you want to end your selection and press Enter or Return again\r\n
\r\n\r\n\r\n
\r\nTo paste your selection:\r\n
\r\n\r\n\r\n
\r\nPress Ctrl+A to get out of insert mode.\r\n
\r\n
\r\nPress right-square_bracket to paste\r\n
\r\n\r\n\r\n\r\n\r\n',78,0,0,'CC-BY-SA','copy,paste,xsel',0,0,1),
-(2816,'2019-05-20','Gnu Awk - Part 14',1357,'Redirection of input and output - part 1','
Introduction
\r\n
This is the fourteenth episode of the “Learning Awk” series which is being produced by b-yeezi and myself.
\r\n
In this episode and the next I want to start looking at redirection within Awk programs. I had originally intended to cover the subject in one episode, but there is just too much.
\r\n
So, in the first episode I will be starting with output redirection and then in the next episode will spend some time looking at the getline command used for explicit input, often with redirection.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk,redirection',0,0,1),
+(2816,'2019-05-20','Gnu Awk - Part 14',1357,'Redirection of input and output - part 1','
Introduction
\r\n
This is the fourteenth episode of the “Learning Awk” series which is being produced by b-yeezi and myself.
\r\n
In this episode and the next I want to start looking at redirection within Awk programs. I had originally intended to cover the subject in one episode, but there is just too much.
\r\n
So, in the first episode I will be starting with output redirection and then in the next episode will spend some time looking at the getline command used for explicit input, often with redirection.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk,redirection',0,0,1),
(2830,'2019-06-07','2018-2019 New Years Eve show part 1',12194,'The HPR community comes together to say happy new year and chat','
Hacker Public Radio New Years Show episode 1
\r\n
Welcome to the 7th Annual Hacker Public Radio show. It is December the 31st 2018 and the time is 10 hundred hours UTC.
\r\n
\r\n
Ken introduces the New year show, gives some history and thanks Kevin Wisher and HonkeyMagoo for organising this.
\r\n\r\n',159,121,1,'CC-BY-SA','hpr nye, new years eve, community',0,0,1),
(2817,'2019-05-21','Are you successful? Click to find out more!',281,'The answer may surprise you!','
It’s pretty short, less than 4 minutes, but I think it’s important.
\r\n
Who defines whether you are successful, or whether your project is successful, and does it matter?
',311,0,0,'CC-BY-SA','success, self-care',0,0,1),
-(2828,'2019-06-05','Writing Web Game in Haskell - Science, part 2',2734,'tuturto continues their explanation on simulating science in a game written in Haskell','
Intro
\r\n
Last time we looked how to model technology and research. This time we’ll do some actual research. I’m skipping over some of the details as the episode is long enough as it is. Hopefully it’s still possible to follow with the show notes.
\r\n
Main concepts that I’m mentioning: Technology allows usage of specific buildings, ship components and such. Research unlock technologies and may have antecedents that has to be completed before the research can be started. Research cost is measure of how expensive a research is in terms of research points, which are produced by different buildings.
\r\n
Earlier I modeled tech tree as Map that had Technology as keys and Research as values. I realized that this is suboptimal and will replace it at some point in the future.
\r\n
Server API
\r\n
There’s three resources that client can connect to. First one is for retrieving list of available research, second one for manipulating current research and last one for retrieving info on how much research points is being produced.
\r\n
/api/research/available ApiAvailableResearchR GET\r\n/api/research/current ApiCurrentResearchR GET POST DELETE\r\n/api/research/production ApiResearchProductionR GET
\r\n
Simulation
\r\n
Simulation of research is done by handleFactionResearch, which does simulation for one faction for a given date. After calculating current research point production and retrieving list of current research, function calculates progress of current researches. Unfinished ones are written back to database, while completed are moved into completed_research table. Final step is updating what research will be available in the next turn.
\r\n
handleFactionResearch date faction = do\r\n production <- totalProduction $ entityKey faction\r\n current <- selectList [ CurrentResearchFactionId ==. entityKey faction ] []\r\n let updated = updateProgress production <$> current\r\n _ <- updateUnfinished updated\r\n _ <- handleCompleted date updated $ entityKey faction\r\n _ <- updateAvailableResearch $ entityKey faction\r\n return ()
\r\n
Research point production
\r\n
Research points are produced by buildings. So first step is to load all planets owned by the faction and buildings on those planets. Applying researchOutput function to each building yields a list of TotalResearchScore, which is then summed up by mconcat. We can use mconcat as TotalResearchScore is a monoid (I talked about these couple episodes ago).
researchOutput function below uses pattern matching. Instead of writing one function definition and case expression inside of it, we’re writing multiple definitions. Each of them matches building of different type. First example is definition that is used for ResearchComplex, while second one is for ParticleAccelerator. Final case uses underscore to match anything and indicate that we’re not even interested on the particular value being matched. mempty is again from our monoid definition. It is empty or unit value of monoid, which in case of TotalResearchScore is zero points in all research categories.
Moving research forward is more complex looking function. There’s bunch of filtering and case expressions going on, but the idea is hopefully clear after a bit of explanation.
\r\n
updateProgress takes two parameters, total production of research points and current research that is being modified. This assumes that there are only one of each categories of research going on at any given time. If there were more, we would have to divide research points between them by some logic. Function calculates effect of research points on current research and produces a new current research that is the end result.
\r\n
Perhaps the most interesting part is use of lenses. For example, line entityValL . currentResearchProgressL +~ engResearch $ curr means that curr (which is Entity CurrentResearch) is used as starting point. First we reach to data part of Entity and then we focus on currentResearchProgress and add engResearch to it. This results a completely new Entity CurrentResearch being constructed, which is otherwise identical with the original, but the currentResearchProgress has been modified. Without lenses we would have to do this destructuring and restructuring manually.
Writing unfinished research back to database is short function. First we find ones that hasn’t been finished by filtering with (not . researchReady . entityVal) and then we apply replace to write them back one by one.
Handling finished research starts by finding out which ones were actually completed by filtering with (researchReady . entityVal) and their research type with currentResearchType . entityVal. Rest of the function is all about database actions: creating entries into completed_research and adding news entries for each completed research, then removing entries from current_research and available_research.
Figuring out what researches will be available for the next turn takes several steps. I won’t be covering random numbers in detail, they’re interesting enough for an episode on their own. It’s enough to know that g <- liftIO getStdGen gets us a new random number generator that is seeded by current time.
\r\n
updateAvailableResearch starts by loading available research and current research for the faction and initializing a new random number generator. g can be used multiple times, but it’ll always return same sequence of numbers. Here it doesn’t matter, but in some cases it might. getR is helper function I wrote that uses random number generator to pick n entries from a given list. n in our case is hard coded to 3, but later on I’ll add possibility for player to research technologies that raise this limit. newAvailableResearch (we’ll look into its implementation closer just in a bit) produces a list of available research for specific research category. These lists are combined with <> operator and written into database with rewriteAvailableResearch.
\r\n
updateAvailableResearch fId = do\r\n available <- selectList [ AvailableResearchFactionId ==. fId ] []\r\n completed <- selectList [ CompletedResearchFactionId ==. fId ] []\r\n g <- liftIO getStdGen\r\n let maxAvailable = ResearchLimit 3\r\n -- reusing same g should not have adverse effect here\r\n let engCand = getR g (unResearchLimit maxAvailable) $ newAvailableResearch isEngineering maxAvailable available completed\r\n let natCand = getR g (unResearchLimit maxAvailable) $ newAvailableResearch isNaturalScience maxAvailable available completed\r\n let socCand = getR g (unResearchLimit maxAvailable) $ newAvailableResearch isSocialScience maxAvailable available completed\r\n rewriteAvailableResearch fId $ engCand <> natCand <> socCand
\r\n
newAvailableResearch is in charge of figuring out what, if any, new research should be available in the next turn. In case where amount of currently available research is same or greater than research limit, empty list is returned, otherwise function calculates candidates and returns them. Logic for that is following:
\r\n
\r\n
candidates are research of specific category of those that has been unlock and unresearched
\r\n
unlocked and unresearched are unlocked ones that are in list of known technology
\r\n
unlocked research are ones with antecedents available in tech tree
\r\n
known technology are ones in list of completed research
\r\n
\r\n
and complete definition of the function is shown below:
Final step of the simulation of research is to update database with new available research. mkUniq is helper function that removes duplicate elements from a list. It’s used in rewriteAvailableResearch function to make a list that contains all unique top research categories (engineering, natural sciences and social sciences). If the resulting list isn’t empty, we’ll use it to remove all available research for those top categories and insert new available research.
Now everything is ready for next round of simulation.
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
-(2838,'2019-06-19','Why Haskell?',1900,'tuturto tries to answer Beeza\'s question on why would someone want to use Haskell','
I’ve been writing software for over 30 years but I find the syntax of Haskell anything but intuitive - in fact less so than any other programming language I have looked at. Thanks to your excellent show notes I can make sense of it but I have to say I would not like to have to develop a project using this language.
\r\n
\r\n
\r\n
Obviously I am missing the point as nobody would design a language with the intention of its being difficult to use. Perhaps you could produce another episode addressing the question “Why Haskell?”
\r\n
\r\n
In this episode, I’m trying to answer to that from my point of view.
\r\n',364,107,0,'CC-BY-SA','haskell, response',0,0,1),
+(2828,'2019-06-05','Writing Web Game in Haskell - Science, part 2',2734,'Tuula continues their explanation on simulating science in a game written in Haskell','
Intro
\r\n
Last time we looked how to model technology and research. This time we’ll do some actual research. I’m skipping over some of the details as the episode is long enough as it is. Hopefully it’s still possible to follow with the show notes.
\r\n
Main concepts that I’m mentioning: Technology allows usage of specific buildings, ship components and such. Research unlock technologies and may have antecedents that has to be completed before the research can be started. Research cost is measure of how expensive a research is in terms of research points, which are produced by different buildings.
\r\n
Earlier I modeled tech tree as Map that had Technology as keys and Research as values. I realized that this is suboptimal and will replace it at some point in the future.
\r\n
Server API
\r\n
There’s three resources that client can connect to. First one is for retrieving list of available research, second one for manipulating current research and last one for retrieving info on how much research points is being produced.
\r\n
/api/research/available ApiAvailableResearchR GET\r\n/api/research/current ApiCurrentResearchR GET POST DELETE\r\n/api/research/production ApiResearchProductionR GET
\r\n
Simulation
\r\n
Simulation of research is done by handleFactionResearch, which does simulation for one faction for a given date. After calculating current research point production and retrieving list of current research, function calculates progress of current researches. Unfinished ones are written back to database, while completed are moved into completed_research table. Final step is updating what research will be available in the next turn.
\r\n
handleFactionResearch date faction = do\r\n production <- totalProduction $ entityKey faction\r\n current <- selectList [ CurrentResearchFactionId ==. entityKey faction ] []\r\n let updated = updateProgress production <$> current\r\n _ <- updateUnfinished updated\r\n _ <- handleCompleted date updated $ entityKey faction\r\n _ <- updateAvailableResearch $ entityKey faction\r\n return ()
\r\n
Research point production
\r\n
Research points are produced by buildings. So first step is to load all planets owned by the faction and buildings on those planets. Applying researchOutput function to each building yields a list of TotalResearchScore, which is then summed up by mconcat. We can use mconcat as TotalResearchScore is a monoid (I talked about these couple episodes ago).
researchOutput function below uses pattern matching. Instead of writing one function definition and case expression inside of it, we’re writing multiple definitions. Each of them matches building of different type. First example is definition that is used for ResearchComplex, while second one is for ParticleAccelerator. Final case uses underscore to match anything and indicate that we’re not even interested on the particular value being matched. mempty is again from our monoid definition. It is empty or unit value of monoid, which in case of TotalResearchScore is zero points in all research categories.
Moving research forward is more complex looking function. There’s bunch of filtering and case expressions going on, but the idea is hopefully clear after a bit of explanation.
\r\n
updateProgress takes two parameters, total production of research points and current research that is being modified. This assumes that there are only one of each categories of research going on at any given time. If there were more, we would have to divide research points between them by some logic. Function calculates effect of research points on current research and produces a new current research that is the end result.
\r\n
Perhaps the most interesting part is use of lenses. For example, line entityValL . currentResearchProgressL +~ engResearch $ curr means that curr (which is Entity CurrentResearch) is used as starting point. First we reach to data part of Entity and then we focus on currentResearchProgress and add engResearch to it. This results a completely new Entity CurrentResearch being constructed, which is otherwise identical with the original, but the currentResearchProgress has been modified. Without lenses we would have to do this destructuring and restructuring manually.
Writing unfinished research back to database is short function. First we find ones that hasn’t been finished by filtering with (not . researchReady . entityVal) and then we apply replace to write them back one by one.
Handling finished research starts by finding out which ones were actually completed by filtering with (researchReady . entityVal) and their research type with currentResearchType . entityVal. Rest of the function is all about database actions: creating entries into completed_research and adding news entries for each completed research, then removing entries from current_research and available_research.
Figuring out what researches will be available for the next turn takes several steps. I won’t be covering random numbers in detail, they’re interesting enough for an episode on their own. It’s enough to know that g <- liftIO getStdGen gets us a new random number generator that is seeded by current time.
\r\n
updateAvailableResearch starts by loading available research and current research for the faction and initializing a new random number generator. g can be used multiple times, but it’ll always return same sequence of numbers. Here it doesn’t matter, but in some cases it might. getR is helper function I wrote that uses random number generator to pick n entries from a given list. n in our case is hard coded to 3, but later on I’ll add possibility for player to research technologies that raise this limit. newAvailableResearch (we’ll look into its implementation closer just in a bit) produces a list of available research for specific research category. These lists are combined with <> operator and written into database with rewriteAvailableResearch.
\r\n
updateAvailableResearch fId = do\r\n available <- selectList [ AvailableResearchFactionId ==. fId ] []\r\n completed <- selectList [ CompletedResearchFactionId ==. fId ] []\r\n g <- liftIO getStdGen\r\n let maxAvailable = ResearchLimit 3\r\n -- reusing same g should not have adverse effect here\r\n let engCand = getR g (unResearchLimit maxAvailable) $ newAvailableResearch isEngineering maxAvailable available completed\r\n let natCand = getR g (unResearchLimit maxAvailable) $ newAvailableResearch isNaturalScience maxAvailable available completed\r\n let socCand = getR g (unResearchLimit maxAvailable) $ newAvailableResearch isSocialScience maxAvailable available completed\r\n rewriteAvailableResearch fId $ engCand <> natCand <> socCand
\r\n
newAvailableResearch is in charge of figuring out what, if any, new research should be available in the next turn. In case where amount of currently available research is same or greater than research limit, empty list is returned, otherwise function calculates candidates and returns them. Logic for that is following:
\r\n
\r\n
candidates are research of specific category of those that has been unlock and unresearched
\r\n
unlocked and unresearched are unlocked ones that are in list of known technology
\r\n
unlocked research are ones with antecedents available in tech tree
\r\n
known technology are ones in list of completed research
\r\n
\r\n
and complete definition of the function is shown below:
Final step of the simulation of research is to update database with new available research. mkUniq is helper function that removes duplicate elements from a list. It’s used in rewriteAvailableResearch function to make a list that contains all unique top research categories (engineering, natural sciences and social sciences). If the resulting list isn’t empty, we’ll use it to remove all available research for those top categories and insert new available research.
Now everything is ready for next round of simulation.
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
+(2838,'2019-06-19','Why Haskell?',1900,'Tuula tries to answer Beeza\'s question on why would someone want to use Haskell','
I’ve been writing software for over 30 years but I find the syntax of Haskell anything but intuitive - in fact less so than any other programming language I have looked at. Thanks to your excellent show notes I can make sense of it but I have to say I would not like to have to develop a project using this language.
\r\n
\r\n
\r\n
Obviously I am missing the point as nobody would design a language with the intention of its being difficult to use. Perhaps you could produce another episode addressing the question “Why Haskell?”
\r\n
\r\n
In this episode, I’m trying to answer to that from my point of view.
\r\n',364,107,0,'CC-BY-SA','haskell, response',0,0,1),
(2835,'2019-06-14','2018-2019 New Years Eve show part 2',9088,'The HPR community comes together to say happy new year and chat','
Hacker Public Radio New Years Show episode 2
\r\n
\r\n
Claudio talks about doing IT for a school
\r\n
Pinebook discussion - complaints about keyboard, speakers, trackpad \r\nhttps://www.pine64.org
\r\n',159,121,0,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2840,'2019-06-21','2018-2019 New Years Eve show part 3',7293,'The HPR community comes together to say happy new year and chat','
Hacker Public Radio New Years Show episode 3
\r\n
Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019
\r\n',159,121,0,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2845,'2019-06-28','2018-2019 New Years Eve show part 4',10265,'The HPR community comes together to say happy new year and chat','
Hacker Public Radio New Years Show episode 4
\r\n
Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019
\r\n',159,121,1,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2825,'2019-05-31','More text to speech trials',286,'A supplementary show to Jeroens episode 2792','
\r\nI found two addional options. The first is mimic\r\n
\r\n
\r\n# dnf info mimic\r\nSummary : Mycroft\'s TTS engine\r\nURL : https://mimic.mycroft.ai/\r\nLicense : BSD\r\nDescription : Mimic is a fast, lightweight Text-to-speech engine developed by Mycroft A.I.\r\n : and VocalID, based on Carnegie Mellon University’s FLITE software. Mimic takes\r\n : in text and reads it out loud to create a high quality voice. Mimic\'s\r\n : low-latency, small resource footprint, and good quality voices set it apart\r\n : from other open source text-to-speech projects.\r\n
\r\n\r\n
\r\nAnd the second is gTTS which is a interface to the google TTS api.\r\n
\r\n',30,0,0,'CC-BY-SA','gTTS, Mimic, tts',0,0,1),
-(2848,'2019-07-03','Random numbers in Haskell',1957,'tuturto talks how to generate random numbers (and other values) in Haskell','
There’s lots of random and similar sounding words in this episode. I hope you can still follow what I’m trying to explain, but I’m aware that it might be hard.
\r\n
Haskell functions are pure, meaning that they will always produce same values for same set of arguments. This might sound hard when you want to generate random numbers, but it turns out that the solution isn’t too tricky.
\r\n
First part to the puzzle is type class RandomGen:
\r\n
class RandomGen g where\r\n next :: g -> (Int, g)\r\n genRange :: g -> (Int, Int)\r\n split :: g -> (g, g)
\r\n
next produces tuple, where first element is random Int and second element is new random generator. genRange returns tuple defining minimum and maximum values this generator will return. split produces tuple with two new random generators.
\r\n
Using RandomGen to produce random values of specific type or for specific range requires a bit of arithmetic. It’s easier to use Random that defines functions for that specific task:
\r\n
class Random a where\r\n randomR :: RandomGen g => (a, a) -> g -> (a, g)\r\n random :: RandomGen g => g -> (a, g)\r\n randomRs :: RandomGen g => (a, a) -> g -> [a]\r\n randoms :: RandomGen g => g -> [a]\r\n randomRIO :: (a, a) -> IO a\r\n randomIO :: IO a
\r\n
\r\n
randomR, when given range and random generator, produces tuple with random number and new generator
\r\n
random, is similar but doesn’t take range. Instead it will use minimum and maximum specific to that data type
\r\n
randomRs, takes range and produces infinite list of random values within that range
\r\n
randoms, simply produces infinite list of random values using range that is specific to datatype
\r\n
randomRIO and randomIO are effectful versions that don’t need random generator, but use some default one
\r\n
\r\n
In short, RandomGen is source of randomness and Random is datatype specific way of generating random values using random generator RandomGen.
\r\n
Final part of the puzzle is where to get RandomGen? One could initialize one manually, but then it wouldn’t be random. However, there’s function getStdGen that will seed RandomGen using OS default random number generator, current time or some other method. Since it has signature of getStdGen :: IO StdGen, one can only call it in IO monad.
\r\n
Functions that operate with IO can only be called from other IO functions. They can call pure functions, but pure functions can’t call them. So there’s two options: have the code that needs random numbers in effectful function or get RandomGen in effectful function and pass it to pure function.
\r\n
Example
\r\n
import System.Random\r\nimport Data.List\r\n\r\n-- | get n unique entries from given list in random order\r\n-- | if n > length of list, all items of the list will be returned\r\ngetR :: RandomGen g => g -> Int -> [a] -> [a]\r\ngetR g n xs =\r\n fmap (xs !!) ids\r\n where\r\n ids = take (min n $ length xs) $ nub $ randomRs (0, length xs - 1) g\r\n\r\n-- | Returns 4 unique numbers between 1 and 10 (inclusive)\r\ntest :: IO [Int]\r\ntest = do\r\n g <- getStdGen\r\n return $ getR g 4 [1..10]
\r\n
In closing
\r\n
Pseudo randomness doesn’t require IO, only seeding the generator does. Simple computation that don’t require many calls to random are easy enough. If you need lots of random values, MonadRandom is better suited. It takes care of carrying implicit RandomGen along while your computation progresses.
\r\n
Best way to catch me nowadays is either email or fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, random numbers',0,0,1),
+(2848,'2019-07-03','Random numbers in Haskell',1957,'Tuula talks how to generate random numbers (and other values) in Haskell','
There’s lots of random and similar sounding words in this episode. I hope you can still follow what I’m trying to explain, but I’m aware that it might be hard.
\r\n
Haskell functions are pure, meaning that they will always produce same values for same set of arguments. This might sound hard when you want to generate random numbers, but it turns out that the solution isn’t too tricky.
\r\n
First part to the puzzle is type class RandomGen:
\r\n
class RandomGen g where\r\n next :: g -> (Int, g)\r\n genRange :: g -> (Int, Int)\r\n split :: g -> (g, g)
\r\n
next produces tuple, where first element is random Int and second element is new random generator. genRange returns tuple defining minimum and maximum values this generator will return. split produces tuple with two new random generators.
\r\n
Using RandomGen to produce random values of specific type or for specific range requires a bit of arithmetic. It’s easier to use Random that defines functions for that specific task:
\r\n
class Random a where\r\n randomR :: RandomGen g => (a, a) -> g -> (a, g)\r\n random :: RandomGen g => g -> (a, g)\r\n randomRs :: RandomGen g => (a, a) -> g -> [a]\r\n randoms :: RandomGen g => g -> [a]\r\n randomRIO :: (a, a) -> IO a\r\n randomIO :: IO a
\r\n
\r\n
randomR, when given range and random generator, produces tuple with random number and new generator
\r\n
random, is similar but doesn’t take range. Instead it will use minimum and maximum specific to that data type
\r\n
randomRs, takes range and produces infinite list of random values within that range
\r\n
randoms, simply produces infinite list of random values using range that is specific to datatype
\r\n
randomRIO and randomIO are effectful versions that don’t need random generator, but use some default one
\r\n
\r\n
In short, RandomGen is source of randomness and Random is datatype specific way of generating random values using random generator RandomGen.
\r\n
Final part of the puzzle is where to get RandomGen? One could initialize one manually, but then it wouldn’t be random. However, there’s function getStdGen that will seed RandomGen using OS default random number generator, current time or some other method. Since it has signature of getStdGen :: IO StdGen, one can only call it in IO monad.
\r\n
Functions that operate with IO can only be called from other IO functions. They can call pure functions, but pure functions can’t call them. So there’s two options: have the code that needs random numbers in effectful function or get RandomGen in effectful function and pass it to pure function.
\r\n
Example
\r\n
import System.Random\r\nimport Data.List\r\n\r\n-- | get n unique entries from given list in random order\r\n-- | if n > length of list, all items of the list will be returned\r\ngetR :: RandomGen g => g -> Int -> [a] -> [a]\r\ngetR g n xs =\r\n fmap (xs !!) ids\r\n where\r\n ids = take (min n $ length xs) $ nub $ randomRs (0, length xs - 1) g\r\n\r\n-- | Returns 4 unique numbers between 1 and 10 (inclusive)\r\ntest :: IO [Int]\r\ntest = do\r\n g <- getStdGen\r\n return $ getR g 4 [1..10]
\r\n
In closing
\r\n
Pseudo randomness doesn’t require IO, only seeding the generator does. Simple computation that don’t require many calls to random are easy enough. If you need lots of random values, MonadRandom is better suited. It takes care of carrying implicit RandomGen along while your computation progresses.
\r\n
Best way to catch me nowadays is either email or fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, random numbers',0,0,1),
(2820,'2019-05-24','29 - CERT Home Security Tips',1337,'What CERT recommends to mitigate security and privacy threats to your home network.','
The Computer Emergency Readiness Team of the US Department of Homeland Security issues a security bulletin, ST15-002, which has tips for home network security. In this episode we review these tips and why they make sense.
\r\n',198,74,0,'CC-BY-SA','Home Networks, Security',0,0,1),
(2821,'2019-05-27','Interviewing some exhibitors at the 2019 vcfe.org event',2784,'I interviewed some of the exhibitors at the recent vcfe.org event in Munich, Germany.','
I visited the vcfe.org event in Munich, Germany.
\r\n
Below you will find some urls for the projects that I came across.
If you like these things, the next exhibition will be in September in Berlin (you can find more info on vcfb.de).
\r\n
Regards, Jeroen Baten
',369,78,0,'CC-BY-SA','vcfe, vintage, computers, exhibition, munich, germany',0,0,1),
-(3111,'2020-07-06','HPR Community News for June 2020',3596,'Dave struggles to keep Ken on track as they talk about shows and comments in June 2020','\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 23 comments in total.
\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
Error feedback from show notes
\n
Most of the shows we process require us to make some level of modifications to get them posted. This ranges from fixing tags to a complete rewrite of the shownotes, or verifying whether intros were actually added or not.
\n
Each modification that we make means that it requires more human intervention and prevents us from being able to completely automate the upload process. In addition there is a non trivial amount of time needed to \"fix\" these issues. This can range from a few minutes to an hour or more per show, and with 260 shows a year this mounts up.
\n
We normally don\'t contact hosts about these issues as it is usually quicker to fix the issues than composing emails, and waiting for the reply that may never come. For the most part our experience has been that hosts are more than willing to fix these issues if they are aware of them.
\n
As part of the ongoing steps toward automation, would hosts be open to the idea of getting a processing report once we have posted the show? This would list all the issues the test tools found and the steps that we needed to take to rectify them.
\n
Making changes to shows after upload
\n
Sometimes an error or omission in notes for an HPR episode isn\'t noticed until the show is posted to the site. In recent times a few hosts have sent in their changes by way of comments. This is not ideal:
\n\n
There\'s a limit on how much text a comment can hold
\n
The comment form has a nasty habit of stripping backslashes, so code corrections can be messed up
\n
We don\'t put comments on the show\'s page on archive.org, so such corrections will not be seen by people reading the notes there
\n\n
The HPR admins would prefer changes to be sent in the form of emails to admin at hackerpublicradio.org. They will then be applied to the show notes and the archive.org version updated in step.
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3131,'2020-08-03','HPR Community News for July 2020',7227,'Warning Ken and Dave discuss some disturbing agricultural practices. Listener discretion is advised.','\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 33 comments in total.
\n
Past shows
\n
There are 5 comments on\n3 previous shows:
\n
\n
hpr2774\n(2019-03-21) \"CJDNS and Yggdrasil\"\nby aldenp.
\n
\n
\n
\nComment 6:\nSam on 2020-07-19:\n\"hpr2774 :: CJDNS and Yggdrasil\"
\n
hpr3097\n(2020-06-16) \"Linux Inlaws S01E07 The Big Blue Button\"\nby monochromec.
\n
\n
\n
\nComment 1:\nan anonymous listener on 2020-07-02:\n\"free software licensing\"
\n
\nComment 2:\nAhuka on 2020-07-02:\n\"Good interview\"
Comment 1:\nJan on 2020-07-30:\n\"Zen_Floater2 asked for Comments on \"Explicit or not\"\"
Comment 2:\nbrian-in-ohio on 2020-07-31:\n\"supreme court ruling\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nWindigo, Daniel Persson
\n
Over the period tags and/or summaries have been added to 81 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3111,'2020-07-06','HPR Community News for June 2020',3596,'Dave struggles to keep Ken on track as they talk about shows and comments in June 2020','\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 23 comments in total.
\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
Error feedback from show notes
\n
Most of the shows we process require us to make some level of modifications to get them posted. This ranges from fixing tags to a complete rewrite of the shownotes, or verifying whether intros were actually added or not.
\n
Each modification that we make means that it requires more human intervention and prevents us from being able to completely automate the upload process. In addition there is a non trivial amount of time needed to \"fix\" these issues. This can range from a few minutes to an hour or more per show, and with 260 shows a year this mounts up.
\n
We normally don\'t contact hosts about these issues as it is usually quicker to fix the issues than composing emails, and waiting for the reply that may never come. For the most part our experience has been that hosts are more than willing to fix these issues if they are aware of them.
\n
As part of the ongoing steps toward automation, would hosts be open to the idea of getting a processing report once we have posted the show? This would list all the issues the test tools found and the steps that we needed to take to rectify them.
\n
Making changes to shows after upload
\n
Sometimes an error or omission in notes for an HPR episode isn\'t noticed until the show is posted to the site. In recent times a few hosts have sent in their changes by way of comments. This is not ideal:
\n\n
There\'s a limit on how much text a comment can hold
\n
The comment form has a nasty habit of stripping backslashes, so code corrections can be messed up
\n
We don\'t put comments on the show\'s page on archive.org, so such corrections will not be seen by people reading the notes there
\n\n
The HPR admins would prefer changes to be sent in the form of emails to admin at hackerpublicradio.org. They will then be applied to the show notes and the archive.org version updated in step.
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3131,'2020-08-03','HPR Community News for July 2020',7227,'Warning Ken and Dave discuss some disturbing agricultural practices. Listener discretion is advised.','\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 33 comments in total.
\n
Past shows
\n
There are 5 comments on\n3 previous shows:
\n
\n
hpr2774\n(2019-03-21) \"CJDNS and Yggdrasil\"\nby aldenp.
\n
\n
\n
\nComment 6:\nSam on 2020-07-19:\n\"hpr2774 :: CJDNS and Yggdrasil\"
\n
hpr3097\n(2020-06-16) \"Linux Inlaws S01E07 The Big Blue Button\"\nby monochromec.
\n
\n
\n
\nComment 1:\nan anonymous listener on 2020-07-02:\n\"free software licensing\"
\n
\nComment 2:\nAhuka on 2020-07-02:\n\"Good interview\"
Comment 1:\nJan on 2020-07-30:\n\"Zen_Floater2 asked for Comments on \"Explicit or not\"\"
Comment 2:\nbrian-in-ohio on 2020-07-31:\n\"supreme court ruling\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nWindigo, Daniel Persson
\n
Over the period tags and/or summaries have been added to 81 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2819,'2019-05-23','Reply to Knightwise - podcasts',493,'I provide a slightly different view on podcasts to that recently given by Knightwise.','
Knightwise, in HPR 2798, made the argument that podcasts are better if they are done by \"pirates\", i.e. not by corporations, but by individuals with something to say. While I see some merit in this view, I think the more significant feature of podcasts is that it gets us away from \"broadcasting\" (shows aimed at the lowest common denominator) and towards \"narrowcasting\", an environment where small niche interests can find an audience and thrive since podcasting does not require a lot of resources. But I do appreciate the chance to hear some radio programs that I would not otherwise be able to listen to when they are offered as podcasts.
',198,75,0,'CC-BY-SA','podcasts, narrowcasting, broadcasting',0,0,1),
(2849,'2019-07-04','2018-2019 New Years Eve show part 5',7759,'The HPR community comes together to say happy new year and chat','
Hacker Public Radio New Years Show episode 5
\r\n
Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019
\r\n\r\n\r\n',159,121,1,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2850,'2019-07-05','NIST Cybersecurity Framework',1702,'What NIST suggests as a framework to improve security at the Enterprise level','
The National Institute of Standards and Technology of the US Government issued the NIST Cybersecurity Framework, which has recommendations for private companies and mandates for U.S. Government agencies. For people who work in information security in an Enterprise environment, this framework may be of interest, so we will take a walk through it.
',198,74,0,'CC-BY-SA','Enterprise, Security',0,0,1),
@@ -19159,11 +19279,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2831,'2019-06-10','Interview with Robbie Ferguson',2347,'In this episode, Yannick talks with Robbie Ferguson about the Nagios Enterprise Monitoring System','
When it comes to monitoring your network, and the machines on it, you have a lot of options. But, let’s face it : none of those are easy to implement, and configuring a monitoring tool, whether it’s an open-source or a proprietary one, is often complex and time consuming.
\r\n
Well, someone took that matter into their own hands, and made NEMS. What is NEMS, how can it help us, and what infrastructure does it require? Those are a few of the questions I asked Robbie Ferguson, the maintainer of NEMS, who joined me on Easter week-end for a little chat.
\r\n',370,78,0,'CC-BY-SA','nagios,network,monitoring,opensource,single board computer,sbc,raspberrypi,odroid',0,0,1),
(2837,'2019-06-18','parallax live desktops in android',1040,'Parallax_Wallpaper, mouse gigglers, system d Youtube background play and more ! ','
\r\n',36,0,1,'CC-BY-SA','youtube downloader,systemd,linux,autohotkey',0,0,1),
(2829,'2019-06-06','Discussion around fair use clips on HPR',1391,'A request for comments on not publishing clips with known fair use samples','
Request for comments
\r\n
Hi All,
\r\n
Under safe harbor provisions, we as volunteers are usually insulated from any copyright issues that may arise in the shows. \"We do not vet, edit, moderate or in any way censor any of the shows on the network, we trust you to do that.\"
\r\n
This we got by accident because \"This is a long standing tradition arising from the fact that HPR is a community of peers who believe that any host has as much right to submit shows as any other.\"
\r\n
In the show notes associated with hpr2829 on 2019-06-06, the host included the following text \"For all included materials: If anyone feels they have right to any material in this show please let me know and I will comply.\"
\"Never include content, for example music, in your show that you do not have permission to redistribute. Try to avoid using any content in your show that can not be redistributed under a Creative Commons Attribution-ShareAlike 3.0 Unported license. If you are redistributing under another Creative Commons License or by arranged permission please make note of the restrictions when you upload your show. We can then signal that, so that others who redistribute HPR content can filter your show out.\"
\r\n
As it was clear that they were not in compliance, I contacted the host. The host has been very helpful and has already removed some of the content but commented \"There are still 2 audio clips included. I claim I can use them on the basis off fair use principles.\"
\r\n
While the host may be correct, if they are not, then it is me and not the host that will be held responsible for posting it. I do not want that responsibility.
\r\n
Under the current HPR rules I am allowed to reject this submission.
\r\n
Before I do, I would appreciate as much feedback as possible on this topic so that we can gauge the opinions of the HPR Community as a whole.
\r\n
Regards,
\r\n
Ken.
\r\n\r\n
The discussion thread remains open and is open to all by joining the Maillist.
',109,0,0,'CC-BY-SA','HPR, Policy Change, Legal, DMCA, TWAT, Fair Use, PacketSniffers, Copyright',0,0,1),
-(2827,'2019-06-04','Unscripted ramblings from my garage about my first CTF event',832,'I briefly discss a CTF event I was invited to and what I plan to bring with me.','
Unscripted ramblings about an upcoming CTF event.
\r\n
Hak5 items mentioned (hak5.org):
\r\n
\r\n
WiFi Pineapple
\r\n
Bash Bunny (erroneously referred to as a ‘rabbit’)
\r\n',241,0,0,'CC-BY-SA','ctf, hacking, security, infosec, events, conventions, gear',0,0,1),
+(2827,'2019-06-04','Unscripted ramblings from my garage about my first CTF event',832,'I briefly discss a CTF event I was invited to and what I plan to bring with me.','
Unscripted ramblings about an upcoming CTF event.
\r\n
Hak5 items mentioned (hak5.org):
\r\n
\r\n
WiFi Pineapple
\r\n
Bash Bunny (erroneously referred to as a ‘rabbit’)
\r\n\r\n',369,78,0,'CC-BY-SA','loadays, ryan caligiuri, steve harvey',0,0,1),
(2834,'2019-06-13','My favorite desktop and android applications',1757,'Moving right along with shows from the requests list, I combine two program lists.','
Desktop:
\r\n
\r\n
xfce4-terminal
\r\n
globaltime (orage)
\r\n
xfce4 notes
\r\n
thunar
\r\n
firefox
\r\n
Emacs
\r\n
claws-mail
\r\n
weechat
\r\n
mupdf
\r\n
gtk-redshift
\r\n
asunder
\r\n
keepassx
\r\n
lucky backup
\r\n
virtualbox/kvm
\r\n
xlog
\r\n
gpredict
\r\n
arduino ide
\r\n
tor browser bundle
\r\n
ledger wallet
\r\n
xmame
\r\n
freedoom
\r\n
rRootage
\r\n
dia
\r\n
fbreader
\r\n
gnumeric/libreoffice
\r\n
mandelbulber2
\r\n
gqrx
\r\n
transmission
\r\n
xastir
\r\n
youtube-dl gui
\r\n
zenmap
\r\n
mpv
\r\n
\r\n
Android
\r\n
\r\n
LineageOS
\r\n
built in phone
\r\n
signal
\r\n
built in fm radio
\r\n
built in camera
\r\n
2048
\r\n
acrylic paint
\r\n
amsatdroid free
\r\n
antennapod
\r\n
aprsdroid
\r\n
audiofx
\r\n
barcode scanner
\r\n
binaural beats
\r\n
blockinger
\r\n
blowtorch
\r\n
built in calendar
\r\n
call recorder
\r\n
chroma doze
\r\n
built in clock
\r\n
cloudlibrary
\r\n
built in contacts
\r\n
danmaku death
\r\n
echolink
\r\n
equate
\r\n
f-droid
\r\n
fbreader
\r\n
fennec f-droid
\r\n
red cross first aid
\r\n
flashlight
\r\n
freegal music
\r\n
gadgetbridge
\r\n
built in gallery
\r\n
ghost commander
\r\n
gobandroid
\r\n
hoopla
\r\n
iz2uuf morse code trainer
\r\n
libby
\r\n
lightning
\r\n
mobilinkd tnc
\r\n
mupdf
\r\n
netguard
\r\n
o’reilly
\r\n
orbot, orfox
\r\n
osmand~
\r\n
red cross pet first aid
\r\n
plumble
\r\n
propel graviton
\r\n
radiodroid (radio-browser.info)
\r\n
recorder
\r\n
roblox
\r\n
rpn
\r\n
sealnote
\r\n
sim card
\r\n
simple world clock
\r\n
space trader
\r\n
spotify
\r\n
suntimes, suntimes alarms
\r\n
survival manual
\r\n
termux
\r\n
timber
\r\n
tsumego pro
\r\n
ttrss-reader
\r\n
unifi
\r\n
vlc
\r\n
webtube
\r\n
weechat-android
\r\n
wifianalyzer
\r\n
wikipedia
\r\n
yalp store
\r\n
yorecast
\r\n
\r\n',241,0,0,'CC-BY-SA','programs, linux, android, apps, applications, lists, favorites',0,0,1),
(2841,'2019-06-24','How I got into Linux (and then some...)',1864,'A response to the request for \"how i got into linux\" and a little of my history with Linux/BSD','
Basically what it says on the tin. Most distros I mention can be easily searched for. I meander through a discussion of how I got into Linux and where I am with it now.
',241,29,0,'CC-BY-SA','linux, intro, story, discourse, bsd',0,0,1),
-(2858,'2019-07-17','Vehicle designer for a space game',1404,'tuturto talks about modeling vehicle designer for their space game','
This episode is about modeling vehicle designer that can be used to design all kinds of vehicles available in the game. It relates to episode about performing research.
\r\n
Major parts
\r\n
Two major parts about vehicle designer are components and chassis.
\r\n
Components are modular pieces of vehicle that are assembled on chassis. They can, among other things, be things lie star sails, astrolabe navigators or long range sensor. Each component is defined by two values ComponentId and ComponentLevel. If you know these two values, you’ll be able to find out details of the component. ComponentId tells what component it is and ComponentLevel the general knowledge of it. When component is first discovered as a result of research, it’s just a prototype and as a such doesn’t function particularly well. Further research refines it and factories are able to produce higher quality components.
Two particularly interesting fields are componentSlot and componentType. componentSlot has type of ComponentSlot and defines what kind of slot the component occupies in chassis. As there are limited amount of slots in each chassis, designer needs to make compromises on what components to install. componentType has type of ComponentPower, which defines what component does in general. It could be sensor or provide supplies for the vehicle for example.
\r\n
Technology requirements are defined by function: componentRequirements :: ComponentId -> Maybe Technology. It defines which technology unlock a given component. Part of the definition is show below. Each and every ComponentId has to be handled.
\r\n
componentRequirements ShipLongRangeSensors = Just HighSensitivitySensors\r\ncomponentRequirements ShipBridge = Nothing\r\ncomponentRequirements VehicleWheeledMotiveSystem = Nothing\r\ncomponentRequirements VehicleHoverMotiveSystem = Just HoverCrafts\r\n...
\r\n
Second major part of the designer are chassis. They’re stored in database, as I wanted a bit more flexible system than hardcoding as I did with components. Following piece of configuration is used to define database table and generated data for Haskell code. Most of the fields are probably easy enough to guess. type with type of ChassisType defines if this particular chassis is for example a land vehicle or a space ship. Various slot fields on other hand define amount of particular slots that the chassis offers.
Not all chassis are equal and some (probably pretty much every one of them) have some sort of requirements that has to be fulfilled when designing a vehicle. For example, space ships require a bridge for captain and star sails. Bawley, smallest of the working ships has room for two star sails, but requires only one of them to be installed in order to be a valid design. Flyboat on the other hand is smaller ship built for speed and always requires two set of sails.
\r\n
This data is stored in required_component table and represented as RequiredComponent data. Both are generated from the definition show below:
With all that data, we can now design a vehicle. Process is roughly the following:
\r\n
\r\n
based on completed research, get a list of chassis that are available
\r\n
select chassis from the list
\r\n
based on the selected chassis and completed research, get a list of components that are available
\r\n
select components to install
\r\n
remember to check that maximum tonnage isn’t exceeded and that there’s enough slots and requirements are met
\r\n
fill in name
\r\n
save into database
\r\n
\r\n
Completed design is saved in two different tables. First one design holds info like name of the design, faction that design belongs to and used chassis. planned_component holds info about which components are planned to be installed and in what quantity.
\r\n
Design json\r\n name Text\r\n ownerId FactionId\r\n chassisId ChassisId\r\n deriving Show Read Eq
As a little teaser, below is an screenshot of what the vehicle designer currently looks like.
\r\n
\r\n
Finally
\r\n
Thanks for interest. If you have questions or comments, best way to reach me nowadays is either by email or in fediverse, where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
+(2858,'2019-07-17','Vehicle designer for a space game',1404,'Tuula talks about modeling vehicle designer for their space game','
This episode is about modeling vehicle designer that can be used to design all kinds of vehicles available in the game. It relates to episode about performing research.
\r\n
Major parts
\r\n
Two major parts about vehicle designer are components and chassis.
\r\n
Components are modular pieces of vehicle that are assembled on chassis. They can, among other things, be things lie star sails, astrolabe navigators or long range sensor. Each component is defined by two values ComponentId and ComponentLevel. If you know these two values, you’ll be able to find out details of the component. ComponentId tells what component it is and ComponentLevel the general knowledge of it. When component is first discovered as a result of research, it’s just a prototype and as a such doesn’t function particularly well. Further research refines it and factories are able to produce higher quality components.
Two particularly interesting fields are componentSlot and componentType. componentSlot has type of ComponentSlot and defines what kind of slot the component occupies in chassis. As there are limited amount of slots in each chassis, designer needs to make compromises on what components to install. componentType has type of ComponentPower, which defines what component does in general. It could be sensor or provide supplies for the vehicle for example.
\r\n
Technology requirements are defined by function: componentRequirements :: ComponentId -> Maybe Technology. It defines which technology unlock a given component. Part of the definition is show below. Each and every ComponentId has to be handled.
\r\n
componentRequirements ShipLongRangeSensors = Just HighSensitivitySensors\r\ncomponentRequirements ShipBridge = Nothing\r\ncomponentRequirements VehicleWheeledMotiveSystem = Nothing\r\ncomponentRequirements VehicleHoverMotiveSystem = Just HoverCrafts\r\n...
\r\n
Second major part of the designer are chassis. They’re stored in database, as I wanted a bit more flexible system than hardcoding as I did with components. Following piece of configuration is used to define database table and generated data for Haskell code. Most of the fields are probably easy enough to guess. type with type of ChassisType defines if this particular chassis is for example a land vehicle or a space ship. Various slot fields on other hand define amount of particular slots that the chassis offers.
Not all chassis are equal and some (probably pretty much every one of them) have some sort of requirements that has to be fulfilled when designing a vehicle. For example, space ships require a bridge for captain and star sails. Bawley, smallest of the working ships has room for two star sails, but requires only one of them to be installed in order to be a valid design. Flyboat on the other hand is smaller ship built for speed and always requires two set of sails.
\r\n
This data is stored in required_component table and represented as RequiredComponent data. Both are generated from the definition show below:
With all that data, we can now design a vehicle. Process is roughly the following:
\r\n
\r\n
based on completed research, get a list of chassis that are available
\r\n
select chassis from the list
\r\n
based on the selected chassis and completed research, get a list of components that are available
\r\n
select components to install
\r\n
remember to check that maximum tonnage isn’t exceeded and that there’s enough slots and requirements are met
\r\n
fill in name
\r\n
save into database
\r\n
\r\n
Completed design is saved in two different tables. First one design holds info like name of the design, faction that design belongs to and used chassis. planned_component holds info about which components are planned to be installed and in what quantity.
\r\n
Design json\r\n name Text\r\n ownerId FactionId\r\n chassisId ChassisId\r\n deriving Show Read Eq
As a little teaser, below is an screenshot of what the vehicle designer currently looks like.
\r\n
\r\n
Finally
\r\n
Thanks for interest. If you have questions or comments, best way to reach me nowadays is either by email or in fediverse, where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
(2859,'2019-07-18','2018-2019 New Years Eve show part 7',10714,'The HPR community comes together to say happy new year and chat','
Hacker Public Radio New Years Show episode 7
\r\n
Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019
\r\n',159,121,1,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2842,'2019-06-25','What\'s in my Bag an update to hpr2065',225,'This is a short update show on what I carry in my Geek Bag','
Hello HPR land, this is Tony Hughes again coming to you from Blackpool in the UK.
\r\n
During my last episode, which was my 50th for HPR, I realized that my ‘Bag’ has changed considerably since recording my episode hpr2065 about it back in July 2016. So this is an update on what I currently carry in my ‘Geek’ Bag when out and about.
\r\n
I have several laptops which are used for different things at different times so may or may not be in the bag/bags depending on what I am doing. This is the list:
\r\n
\r\n
Lenovo X230i
\r\n
Toshiba z30
\r\n
Dells E6220 x 2, E7250, E7440 and E6540
\r\n
\r\n
Recently I have moved more to Dell laptops and the Dell E7440 is a great compromise of portability and usability with its 14" 1080p screen, but if I want light and long battery life the Toshiba z30 is a fantastic little PC with all day battery life and a great 13.3" screen.
\r\n
But all the others have their place in the bag, for demonstrating Linux Distros at events or at my LUG.
\r\n
So the next thing that makes it into the bag is my ZoomH2 recorder that goes with me for recording interviews at events I attend, with the intention of producing HPR shows.
\r\n
I also have some tools, the first is a little set of a screwdriver and small driver bits made by Draper this is handy for laptop tear downs as it has all the necessary bit heads needed to work on electronics. I also carry a small set of pliers and a wire cutter in the bag.
\r\n
I also carry a 10000mA battery pack for charging my mobile phone if needed while out and about. In conjunction with this a I carry several micro USB charging cables and a USB C cable for the increasing number of USB C devices around these days.
\r\n
In the bag are also a couple of 128Gb SSD’s as spares for quick swap outs, if I don’t want to wipe a drive but wish to test a new OS, or for those times the only solution to helping someone rescue an older laptop is to stick an SSD into it.
\r\n
I generally carry my 1Tb portable USB3 HDD around with me as I store a large number of current Linux ISO files for burning to a flash drive to create boot discs. With that it goes without saying that I have a few spare flash drives in the bag for just this use. I also usually carry a few SD cards for creating Raspberry Pi images if needed.
\r\n
Other items include a USB WiFi card as a backup if I have a WiFi malfunction, or I’m working on a machine without its own WiFi card.
\r\n
Well that’s about it for what I’m currently carrying in my bag, but before I go a bit of sad news. Many of you have heard me talk of my latest bargains from the Computer Auction I have frequented since 2006. Well sadly NO MORE, Northern Realisations after 20 years of trading have closed their doors for the last time, so I need to find another source of cheap PC equipment. As they say: All good things come to an end.
\r\n
Well that’s it for this episode, this is Tony Hughes signing off for Hacker Public Radio.
\r\n',338,0,0,'CC-BY-SA','Linux, PC\'s, Laptops, Geek Bag',0,0,1),
(2847,'2019-07-02','earbuds',902,'My trials with earbuds and custom setups','
operat0r discusses his trials with earbuds and custom setups.
',36,0,0,'CC-BY-SA','earbuds,hacking,music,diy',0,0,1),
@@ -19171,13 +19291,13 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2861,'2019-07-22','Safety Razors',870,'I go over some of my thoughts on Safety Razors Etc','
\r\n',36,0,0,'CC-BY-SA','shaving,safety,razor,health,grooming',0,0,1),
(2886,'2019-08-26','INFOSECOND',1136,'Thoughts around IT and Information Security','
\r\nIn todays show, operat0r shares his personal thoughts around information security and getting into the field. He also talks about ways to get support from your local community.\r\n
',36,0,1,'CC-BY-SA','information security,careers',0,0,1),
(2853,'2019-07-10','Feeding the beast',424,'How the swedes are killing their hardcash and feeding the beast','
',309,0,0,'CC-BY-SA','bankid, swish, cash, payment, digitalization, sweden',0,0,1),
-(2839,'2019-06-20','Sample episode of the Distrohoppers Digest podcast',2231,'We bring you the first episode of the new Creative Commons show the Distrohoppers Digest','
\r\nThis is a sample episode of the new Creative Commons tech podcast. It\'s brought to us by Moss and our own Tony Hughes. From the blurb:\r\n
\r\n\r\n\r\nWe are two Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.\r\n\r\n\r\n
',30,0,0,'CC-BY-NC-SA','Distrohoppers Digest, mintCast, linux, bsd',0,0,1),
+(2839,'2019-06-20','Sample episode of the Distrohoppers Digest podcast',2231,'We bring you the first episode of the new Creative Commons show the Distrohoppers Digest','
\r\nThis is a sample episode of the new Creative Commons tech podcast. It\'s brought to us by Moss and our own Tony Hughes. From the blurb:\r\n
\r\n\r\n\r\nWe are two Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.\r\n\r\n\r\n
',30,0,0,'CC-BY-NC-SA','Distrohoppers Digest, mintCast, linux, bsd',0,0,1),
(2844,'2019-06-27','The Sony TC-222-A Portable Reel-To-Reel Tape Recorder',1868,'I talk about my latest thrift-store gadget, a 1969 Sony portable reel-to-reel tape recorder','
In this episode I talk about my new 1969 Sony TC-222-A portable reel-to-reel tape recorder. I found it about 3 weeks ago at Hand-Up Thrift store in Lafayette Louisiana for $5. It was in partially working condition, without a power cord, and in need of some work. I cleaned the contact points, overhauled the fast-forward idler wheel, lubricated both of the tape shafts, replaced the belts, hacked an old electric razor cord to work as a power cord, and tightened up the record linkage. One thing I still can\'t get working is recording using the microphone.
\r\n\r\n
I spend about half of this episode talking about trying to make a super-long recording fit on a 5-inch reel and playing at 4.8 cm/second. I use Kimiko Ishizaka\'s wonderful Open Goldberg Variations and Open Well-Tempered Clavier as the music. To do this, I speeded up all of the tracks to play at 4x speed, for which I use the following script to loop through all mp3s in the current directory and subject them to the appropriate sox command:
\r\n\r\n
\r\n#!/bin/bash\r\n\r\nfor i in *.mp3; do\r\n# speed em up 4x\r\n infile=$(basename $i)\r\n stem=$(basename \"$i\" .mp3)\r\n outfile=\"$stem\"_4x.mp3\r\n sox $infile $outfile speed 4.0\r\n sleep .1\r\ndone\r\n
\r\n\r\n
It worked! Well. The script and sox command worked. Recording the 4x-speed audio at 19 cm/second and then playing back at 4.8 cm/second also mostly worked, I just had a very poor-quality tape so it sounded pretty bad. The speed was just about right, though. In fact when I compared pitch against my piano, it was EXACTLY right. I may try again with a better tape. (BTW I said my tape was \"old new stock,\" but obviously I meant \"new old stock.\")
Vintage Electronics, my source for replacement belts, replacement lamps for my Marantz receiver, etc.
\r\n
',238,0,0,'CC-BY-SA','Music,Recording,Audio,Tape,Reel-To-Reel,Open-Reel,Recording Devices,Tape Speeds,Bash Scripting',0,0,1),
-(2843,'2019-06-26','Afrikan Tähti (or Star of Africa)',678,'tuturto talks about one of the most important Finnish board game ever','
For more information about the game and history behind it, have a look at the following links:
\r\n',364,95,0,'CC-BY-SA','finnish, childhood favourite',0,0,1),
+(2843,'2019-06-26','Afrikan Tähti (or Star of Africa)',678,'Tuula talks about one of the most important Finnish board game ever','
For more information about the game and history behind it, have a look at the following links:
\r\n',364,95,0,'CC-BY-SA','finnish, childhood favourite',0,0,1),
(2851,'2019-07-08','An introduction to the work of fire fighters',1847,'A small introduction into the work of fire fighters ','
Some general basic knowledge of fire fighting. Also an invitation to ask questions in the comments.
',369,0,0,'CC-BY-SA','fire fighting, fire brigade',0,0,1),
-(2868,'2019-07-31','Custom data with Persistent',1202,'tuturto explains how to serialize custom data with Persistent','
Podcast episode is about two things, serializing custom data with Persistent and IsString typeclass.
\r\n
I’m using Persistent in conjunction with Yesod (web framework). Process in short is that data is defined in /config/models file that is used in compile time to generate data type definitions for Haskell. Same information is used to create schema for the database when Yesod application starts. It can even do simple migrations if schema changes, but I wouldn’t recommend using that in production.
\r\n
Persistent maps information between database and program written in Haskell. There’s pre-existing mappings for things like text and various kinds of numbers. In case one wants to use custom data type, compiler can automatically generate needed mapping. This automatic generation works well with enumerations and very complex data.
\r\n
For example, following piece defines enumeration BuildingType that is mapped in varchar field in database. Enumeration is thus stored as text.
For newtypes, automatic deriving works too, but generates (in my opinion) extra information that isn’t needed. This extra information causes data saved as text. For those cases, manual mapping can be used.
\r\n
Our example is for StarDate, which is just glorified Int. I’m using newtype to make StarDate distinct from any other Int, even when it behaves just like Int.
One more trick, that doesn’t directly relate to Persistent is IsString type class. Instead of having to specify all the time what type text literal is, one can let compiler to deduce it from usage.
\r\n
For example, if I had a newtype like:
\r\n
newtype PlanetName = PlanetName { unPlanetName :: Text }
\r\n
I can turn on OverloadedStrings pragma and create IsString instance:
Now I can write: placeName = "Earth" instead of placeName = PlanetName "Earth" and compiler can deduce correct type based on how the placeName is used.
\r\n
Thanks for listening, if you have any questions or comments, you can reach me via email or in the fediverse, where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','haskell, persistent, database',0,0,1),
+(2868,'2019-07-31','Custom data with Persistent',1202,'Tuula explains how to serialize custom data with Persistent','
Podcast episode is about two things, serializing custom data with Persistent and IsString typeclass.
\r\n
I’m using Persistent in conjunction with Yesod (web framework). Process in short is that data is defined in /config/models file that is used in compile time to generate data type definitions for Haskell. Same information is used to create schema for the database when Yesod application starts. It can even do simple migrations if schema changes, but I wouldn’t recommend using that in production.
\r\n
Persistent maps information between database and program written in Haskell. There’s pre-existing mappings for things like text and various kinds of numbers. In case one wants to use custom data type, compiler can automatically generate needed mapping. This automatic generation works well with enumerations and very complex data.
\r\n
For example, following piece defines enumeration BuildingType that is mapped in varchar field in database. Enumeration is thus stored as text.
For newtypes, automatic deriving works too, but generates (in my opinion) extra information that isn’t needed. This extra information causes data saved as text. For those cases, manual mapping can be used.
\r\n
Our example is for StarDate, which is just glorified Int. I’m using newtype to make StarDate distinct from any other Int, even when it behaves just like Int.
One more trick, that doesn’t directly relate to Persistent is IsString type class. Instead of having to specify all the time what type text literal is, one can let compiler to deduce it from usage.
\r\n
For example, if I had a newtype like:
\r\n
newtype PlanetName = PlanetName { unPlanetName :: Text }
\r\n
I can turn on OverloadedStrings pragma and create IsString instance:
Now I can write: placeName = "Earth" instead of placeName = PlanetName "Earth" and compiler can deduce correct type based on how the placeName is used.
\r\n
Thanks for listening, if you have any questions or comments, you can reach me via email or in the fediverse, where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','haskell, persistent, database',0,0,1),
(2890,'2019-08-30','Penguicon 2019 Report',843,'Penguicon 2019 took place on May 3-5, 2018 in Southfield, Michigan','
Penguicon 2019 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I tell you about my own personal experience at Penguicon this year.
\r\n',198,96,0,'CC-BY-SA','Penguicon, Open Source, Convention',0,0,1),
-(2852,'2019-07-09','Gnu Awk - Part 16',2564,'Winding up the Gnu Awk series','
Introduction
\r\n
This is the sixteenth and final episode of the \'Learning Awk\' series which is being produced by b-yeezi (BY) and Dave Morriss (DM).
\r\n
We are using this as an opportunity to have a round-table discussion about the series, about Awk, and where we recommend the listeners should go from here. Including this one we have produced 16 episodes covering the features most likely to be used in pipelines on the command line or in simple shell and awk scripts.
\r\n
Note that although the HPR site will list this episode as having a single host, in fact it has two! Plans are afoot to enhance the HPR database so we can eventually indicate this properly.
\r\n
Topics Discussed
\r\n
\r\n
The series\r\n
\r\n
Started in 2016 (first show released 2016-07-13)
\r\n
Finishing in 2019
\r\n
16 episodes in total
\r\n
\r\n
\r\n
\r\n
Why are we finishing the series?\r\n
\r\n
We have probably reached the limit of what is useful on the command line or in shell scripts or even in manageable-sized Awk scripts
\r\n
Awk shows its limitations as we go on and doesn’t compare well with more modern text processing languages
\r\n
\r\n
\r\n
\r\n
Our personal experiences with Awk\r\n
\r\n
BY:\r\n
\r\n
Started with sed and awk when first moving to Linux in 2011
\r\n
(ongoing) Exploring and cleaning client data
\r\n
(ongoing) Personal scripts when adding python or other tool would be overkill
\r\n
\r\n
DM:\r\n
\r\n
Working with VAX/VMS in the 1980’s. No very good text processing features built-in, so Gnu Awk (and sed) was a great way to handle the data we were using to generate accounts for new students each year. Could easily spot bad records, do some data validation (for example impossible dates of birth).
\r\n
Later in the late 1980’s and early 1990’s more Unix systems came on the scene running HP-UX, Ultrix, SunOS, Solaris, OSF/1, True64 Unix, and awk was very much used there.
\r\n
Later still we moved to Linux; initially Fedora but later RHEL, and of course awk figured in the list of tools there as well.
\r\n
\r\n
\r\n
\r\n
\r\n
What have we left out? Why?\r\n
\r\n
User-defined functions are pretty clunky and hard to use
\r\n
Multi-dimensional arrays: other languages do this better
\r\n
Internationalization: assumes you’re writing big awk programs
\r\n
The gawk debugger: quite clever but probably overkill for this series
\r\n
Extensions written in C and C++: some come with gawk and look quite good, but this subject is out of scope
\r\n
\r\n
\r\n
\r\n
What to use as an alternative to Awk?\r\n
\r\n
DM moved from gawk to Perl (version 4) in the 1980’s and later to Perl version 5. This might have engendered an awky, Bashy mindset that’s hard to shake off. Not the recommended place to start these days.
\r\n
BY moved from gawk to Python and R for large projects. For interactive Bashy exploration, moved to XSV, q, and csv-kit for most use cases.
\r\n
These tools have built-in convenience features, like accounting for headers, data types, and file encodings
\r\n
\r\n
\r\n
\r\n
What’s next?\r\n
\r\n
It is planned to turn the notes for this series into a combined document which will be available on the HPR site and on archive.org. There is no timescale for this at the moment
\r\n',225,94,1,'CC-BY-SA','Gnu Awk, advanced features',0,0,1),
+(2852,'2019-07-09','Gnu Awk - Part 16',2564,'Winding up the Gnu Awk series','
Introduction
\r\n
This is the sixteenth and final episode of the \'Learning Awk\' series which is being produced by b-yeezi (BY) and Dave Morriss (DM).
\r\n
We are using this as an opportunity to have a round-table discussion about the series, about Awk, and where we recommend the listeners should go from here. Including this one we have produced 16 episodes covering the features most likely to be used in pipelines on the command line or in simple shell and awk scripts.
\r\n
Note that although the HPR site will list this episode as having a single host, in fact it has two! Plans are afoot to enhance the HPR database so we can eventually indicate this properly.
\r\n
Topics Discussed
\r\n
\r\n
The series\r\n
\r\n
Started in 2016 (first show released 2016-07-13)
\r\n
Finishing in 2019
\r\n
16 episodes in total
\r\n
\r\n
\r\n
\r\n
Why are we finishing the series?\r\n
\r\n
We have probably reached the limit of what is useful on the command line or in shell scripts or even in manageable-sized Awk scripts
\r\n
Awk shows its limitations as we go on and doesn’t compare well with more modern text processing languages
\r\n
\r\n
\r\n
\r\n
Our personal experiences with Awk\r\n
\r\n
BY:\r\n
\r\n
Started with sed and awk when first moving to Linux in 2011
\r\n
(ongoing) Exploring and cleaning client data
\r\n
(ongoing) Personal scripts when adding python or other tool would be overkill
\r\n
\r\n
DM:\r\n
\r\n
Working with VAX/VMS in the 1980’s. No very good text processing features built-in, so Gnu Awk (and sed) was a great way to handle the data we were using to generate accounts for new students each year. Could easily spot bad records, do some data validation (for example impossible dates of birth).
\r\n
Later in the late 1980’s and early 1990’s more Unix systems came on the scene running HP-UX, Ultrix, SunOS, Solaris, OSF/1, True64 Unix, and awk was very much used there.
\r\n
Later still we moved to Linux; initially Fedora but later RHEL, and of course awk figured in the list of tools there as well.
\r\n
\r\n
\r\n
\r\n
\r\n
What have we left out? Why?\r\n
\r\n
User-defined functions are pretty clunky and hard to use
\r\n
Multi-dimensional arrays: other languages do this better
\r\n
Internationalization: assumes you’re writing big awk programs
\r\n
The gawk debugger: quite clever but probably overkill for this series
\r\n
Extensions written in C and C++: some come with gawk and look quite good, but this subject is out of scope
\r\n
\r\n
\r\n
\r\n
What to use as an alternative to Awk?\r\n
\r\n
DM moved from gawk to Perl (version 4) in the 1980’s and later to Perl version 5. This might have engendered an awky, Bashy mindset that’s hard to shake off. Not the recommended place to start these days.
\r\n
BY moved from gawk to Python and R for large projects. For interactive Bashy exploration, moved to XSV, q, and csv-kit for most use cases.
\r\n
These tools have built-in convenience features, like accounting for headers, data types, and file encodings
\r\n
\r\n
\r\n
\r\n
What’s next?\r\n
\r\n
It is planned to turn the notes for this series into a combined document which will be available on the HPR site and on archive.org. There is no timescale for this at the moment
\r\n',225,94,1,'CC-BY-SA','Gnu Awk, advanced features',0,0,1),
(2854,'2019-07-11','Telling myself something In The Morning',374,'There was a need for some software, so I wrote some','
',243,25,0,'CC-BY-SA','python, programming',0,0,1),
(2857,'2019-07-16','Creating CounterParty Collectible Tokens for the Bitcorn Game',995,'How to create Bitcorn collectibles: tokens issued on Bitcoin blockchain, used in Bitcorn Farms game','
Bitcorn is an idle farming game created with and played using Bitcoin tokens using the CounterParty protocol. I’ll walk you through how it all works, how to get started and what all that means.
\r\n
In this episode we’ll walk through the basics of creating and submitting a Bitcorn collectible card to be included in the game, along with setting up a wallet so you can buy and sell them.
\r\n',379,110,0,'CC-BY-SA','bitcorn, bitcoin, collectibles',0,0,1),
(2862,'2019-07-23','Art vs. Commerce In Storytelling',830,'Lostnbronx examines stories as both art and products.','
In this final episode of \"Random Elements of Storytelling\", Lostnbronx looks at the question of art vs. commerce.
\r\n
When is a story a product? When is it a work of passion? Can it be both? In a era of interactive storytelling, what is the difference between a story teller and an audience? And where do art, commerce, creativity, and consumption intersect?
\r\n
Lostnbronx wanders over hill and dale, and likely fails to adequately explain anything at all.
\r\n',107,105,0,'CC-BY-SA','stories, storytelling, art, commerce, lostnbronx',0,0,1),
@@ -19190,13 +19310,13 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2864,'2019-07-25','One weird trick to add a --help option to your awk scripts',1213,'Klaatu demonstrates two ways to add a --help message to your awk scripts','
\r\nThe first method is in Awk itself.\r\n
\r\n\r\n
\r\n#!/usr/bin/awk -f\r\n#\r\n# USAGE EXAMPLE:\r\n# echo the input of some var\r\n# $ foo -v var=8\r\n#\r\n\r\nBEGIN {\r\n if (length(var) == 0) {\r\n printf \"%s %s\\n\", ENVIRON[\"_\"], \"is a proof-of-concept help message\";\r\n printf \"%s\\n\", \"Usage:\";\r\n printf \"%s\\n\", \"------\";\r\n printf \"%s %s %s\\n\", \"$\", ENVIRON[\"_\"], \"-v var=NUM\";\r\n printf \"%s\\n\", \"substitute NUM with the number you want echoed\";\r\n exit\r\n }\r\n else {\r\n printf \"%s %s\\n\", \"You have entered \", var;\r\n }\r\n}\r\n
\r\n\r\n
\r\nThe disadvantage to this is that it only provides a help message if no option is provided. If you actually type --help, then you get Awk\'s help message, which is not useful in this context.\r\n
\r\n\r\n
\r\nThe shell script wrapper method uses the shell to parse options, which are then passed to an embedded Awk script:\r\n
\r\nThe disadvantage here is only that you\'re not just writing an Awk script, you\'re writing a shell script with embedded Awk. I can\'t think of a reason not to do it this way (even though in the script that served as the inspiration for this episode, I don\'t use this method).\r\n
\r\n\r\n',78,94,0,'CC-BY-SA','awk,option,help,arg',0,0,1),
(2866,'2019-07-29','Intro to Bitcoin for techies',1915,'Survey of Bitcoin: blockchains, blocks, transactions, miners, PoW, hashing, addresses, wallets','
This is a broad introduction to Bitcoin from a technical perspective. We do not talk about finance or economics, and we don’t compare distributed ledger technologies. We’re not addressing exchanges, layer 2 technologies, mainstream adoption, etc.
\r\n
We’re also going to avoid going deep into forks, fungibility, mining or the math of Bitcoin.
\r\n
In this episode we introduce these fundamental Bitcoin topics:
\r\n
\r\n
What is Bitcoin?
\r\n
Blockchains and blocks
\r\n
What are transactions?
\r\n
What are miners and what do they do?
\r\n
Proof of Work in Bitcoin - SHA256 hashing
\r\n
Bitcoin consensus mechanism
\r\n
How do wallets work?
\r\n
Brief discussion about various types of wallets and wallet security
\r\n
\r\n
I hope this is accessible and informative and look forward to doing more in the future.
',379,110,0,'CC-BY-SA','bitcoin, blockchain, cryptocurrency',0,0,1),
(2873,'2019-08-07','Death Angel - Card game',1045,'Short description of Death Angel card game','
\r\n',364,95,0,'CC-BY-SA','cardgame',0,0,1),
-(2878,'2019-08-14','Type classes in Haskell',1168,'tuturto explains what type classes are and how to use them','
Background
\r\n
Type classes are Haskell’s way of doing ad hoc polymorphics or overloading. They are used to defined set of functions that can operate more than one specific type of data.
\r\n
Equality
\r\n
In Haskell there’s no default equality, it has to be defined.
\r\n
There’s two parts to the puzzle. First is type class Eq that comes with the standard library and defines function signatures for equality and non-equality comparisons. There’s type parameter a in the definition, which is filled by user when they define instance of Eq for their data. In that instance definition, a is filled with concrete type.
\r\n
class Eq a where\r\n (==) :: a -> a -> Bool\r\n (/=) :: a -> a -> Bool\r\n\r\n x /= y = not (x == y)
\r\n
Definition above can be read as “class Eq a that has two functions with following signatures and implementations”. In other words, given two a, this function determines are they equal or not (thus Bool as return type). /= is defined in terms of ==, so it’s enough to define one and you get other one for free. But you can still define both if you’re so included (maybe some optimization case).
\r\n
If we define our own Size type, like below, we can compare sizes:
\r\n
data Size = Small | Medium | Large\r\n deriving (Show, Read)\r\n\r\ninstance Eq Size where\r\n Small == Small = True\r\n Medium == Medium = True\r\n Large == Large = True\r\n _ == _ = False
\r\n
And here’s couple example comparisons.
\r\n
> Small == Small\r\nTrue\r\n> Large /= Large\r\nFalse
\r\n
Writing these by hand is both tedious and error prone, so we usually use automatic derivation for them. Note how the second line now reads deriving (Show, Read, Eq).
\r\n
data Size = Small | Medium | Large\r\n deriving (Show, Read, Eq)
\r\n
Hierarchy between type classes
\r\n
There can be hierarchy between type classes, meaning one requires presence of another. Common example is Ord, which is used to order data.
\r\n
class Eq a => Ord a where\r\n compare :: a -> a -> Ordering\r\n (<) :: a -> a -> Bool\r\n (>=) :: a -> a -> Bool\r\n (>) :: a -> a -> Bool\r\n (<=) :: a -> a -> Bool\r\n max :: a -> a -> a\r\n min :: a -> a -> a
\r\n
This definition can be read as “class Ord a, where a has instance of Eq, with pile of functions as follows”. Ord has default implementation for quite many of these, in terms of others, so it’s enough to implement either compare or <=.
\r\n
For our Size, instance of Ord could be defined as:
\r\n
instance Ord Size where\r\n Small <= _ = True\r\n Medium <= Small = False\r\n Medium <= _ = True\r\n Large <= Large = True\r\n Large <= _ = False
\r\n
Writing generic code
\r\n
There’s lots and lots of type classes in standard library:
\r\n
\r\n
Num for numeric operations
\r\n
Integral for integer numbers
\r\n
Floating for floating numbers
\r\n
Show for turning data into strings
\r\n
Read for turning strings to data
\r\n
Enum for sequentially ordered types (these can be enumerated)
\r\n
Bounded for things with upper and lower bound
\r\n
and so on…
\r\n
\r\n
Type classes allow you to write really generic code. Following is contrived example using Ord and Show:
\r\n
check :: (Ord a, Show a) => a -> a -> String\r\ncheck a b =\r\n case compare a b of\r\n LT ->\r\n show a ++ " is smaller than " ++ show b\r\n GT ->\r\n show a ++ " is greater than " ++ show b\r\n EQ ->\r\n show a ++ " and " ++ show b ++ " are equal"
\r\n
Check takes two parameters that are same type and that type has to have Ord and Show instances. Ord is for ordering and Show is for turning data into string (handy for displaying it). The end result is string telling result of comparison. Below is some examples of usage. Note how our function can handle different types of data: Size, Int and [Int].
\r\n
> check Medium Small\r\n"Medium is greater than Small"\r\n> check Small Large\r\n"Small is smaller than Large"\r\n> check 7 3\r\n"7 is greater than 3"\r\n> check [1, 2] [1, 1, 1]\r\n"[1, 2] is greater than [1, 1, 1]"
\r\n
There are many extensions to type classes that add more behaviour. These aren’t part of standard Haskell, but can be enabled with a pragma definition or compiler flag. They can be somewhat more complicated to use, have special cases that need careful consideration, but offer interesting options.
\r\n
In closing
\r\n
Thank you for listening. Question, comments and feedback welcome. Best way to catch me nowadays is either by email or in fediverse, where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','type class',0,0,1),
-(2883,'2019-08-21','Pass the pigs',318,'tuturto talks about their childhood game pass the pigs','
\r\n',364,95,0,'CC-BY-SA','dice game',0,0,1),
+(2878,'2019-08-14','Type classes in Haskell',1168,'Tuula explains what type classes are and how to use them','
Background
\r\n
Type classes are Haskell’s way of doing ad hoc polymorphics or overloading. They are used to defined set of functions that can operate more than one specific type of data.
\r\n
Equality
\r\n
In Haskell there’s no default equality, it has to be defined.
\r\n
There’s two parts to the puzzle. First is type class Eq that comes with the standard library and defines function signatures for equality and non-equality comparisons. There’s type parameter a in the definition, which is filled by user when they define instance of Eq for their data. In that instance definition, a is filled with concrete type.
\r\n
class Eq a where\r\n (==) :: a -> a -> Bool\r\n (/=) :: a -> a -> Bool\r\n\r\n x /= y = not (x == y)
\r\n
Definition above can be read as “class Eq a that has two functions with following signatures and implementations”. In other words, given two a, this function determines are they equal or not (thus Bool as return type). /= is defined in terms of ==, so it’s enough to define one and you get other one for free. But you can still define both if you’re so included (maybe some optimization case).
\r\n
If we define our own Size type, like below, we can compare sizes:
\r\n
data Size = Small | Medium | Large\r\n deriving (Show, Read)\r\n\r\ninstance Eq Size where\r\n Small == Small = True\r\n Medium == Medium = True\r\n Large == Large = True\r\n _ == _ = False
\r\n
And here’s couple example comparisons.
\r\n
> Small == Small\r\nTrue\r\n> Large /= Large\r\nFalse
\r\n
Writing these by hand is both tedious and error prone, so we usually use automatic derivation for them. Note how the second line now reads deriving (Show, Read, Eq).
\r\n
data Size = Small | Medium | Large\r\n deriving (Show, Read, Eq)
\r\n
Hierarchy between type classes
\r\n
There can be hierarchy between type classes, meaning one requires presence of another. Common example is Ord, which is used to order data.
\r\n
class Eq a => Ord a where\r\n compare :: a -> a -> Ordering\r\n (<) :: a -> a -> Bool\r\n (>=) :: a -> a -> Bool\r\n (>) :: a -> a -> Bool\r\n (<=) :: a -> a -> Bool\r\n max :: a -> a -> a\r\n min :: a -> a -> a
\r\n
This definition can be read as “class Ord a, where a has instance of Eq, with pile of functions as follows”. Ord has default implementation for quite many of these, in terms of others, so it’s enough to implement either compare or <=.
\r\n
For our Size, instance of Ord could be defined as:
\r\n
instance Ord Size where\r\n Small <= _ = True\r\n Medium <= Small = False\r\n Medium <= _ = True\r\n Large <= Large = True\r\n Large <= _ = False
\r\n
Writing generic code
\r\n
There’s lots and lots of type classes in standard library:
\r\n
\r\n
Num for numeric operations
\r\n
Integral for integer numbers
\r\n
Floating for floating numbers
\r\n
Show for turning data into strings
\r\n
Read for turning strings to data
\r\n
Enum for sequentially ordered types (these can be enumerated)
\r\n
Bounded for things with upper and lower bound
\r\n
and so on…
\r\n
\r\n
Type classes allow you to write really generic code. Following is contrived example using Ord and Show:
\r\n
check :: (Ord a, Show a) => a -> a -> String\r\ncheck a b =\r\n case compare a b of\r\n LT ->\r\n show a ++ " is smaller than " ++ show b\r\n GT ->\r\n show a ++ " is greater than " ++ show b\r\n EQ ->\r\n show a ++ " and " ++ show b ++ " are equal"
\r\n
Check takes two parameters that are same type and that type has to have Ord and Show instances. Ord is for ordering and Show is for turning data into string (handy for displaying it). The end result is string telling result of comparison. Below is some examples of usage. Note how our function can handle different types of data: Size, Int and [Int].
\r\n
> check Medium Small\r\n"Medium is greater than Small"\r\n> check Small Large\r\n"Small is smaller than Large"\r\n> check 7 3\r\n"7 is greater than 3"\r\n> check [1, 2] [1, 1, 1]\r\n"[1, 2] is greater than [1, 1, 1]"
\r\n
There are many extensions to type classes that add more behaviour. These aren’t part of standard Haskell, but can be enabled with a pragma definition or compiler flag. They can be somewhat more complicated to use, have special cases that need careful consideration, but offer interesting options.
\r\n
In closing
\r\n
Thank you for listening. Question, comments and feedback welcome. Best way to catch me nowadays is either by email or in fediverse, where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','type class',0,0,1),
+(2883,'2019-08-21','Pass the pigs',318,'Tuula talks about their childhood game pass the pigs','
\r\n',364,95,0,'CC-BY-SA','dice game',0,0,1),
(2950,'2019-11-22','NotPetya and Maersk: An Object Lesson',861,'Looking at an object lesson for proper IT management processes and the cost of failure','
We previously looked at the NIST Security Framework, which lays out how organizations should manage their network security. That may have seemed a bit dry, so let’s look at this case study to put some flesh on those dry bones. Failing to manage your security risks properly can have significant consequences.
\r\n',198,74,0,'CC-BY-SA','IT Management, Security',0,0,1),
-(2898,'2019-09-11','Modeling people in space game',1315,'tuturto talks how they approach modeling people in space game','
People are what makes dynasty simulators interesting and this episode will be about them. There isn’t much code this time, mainly just how data is organized. Topic is long and split over several episodes.
\r\n
Some people in game are controlled by computer, while some are controlled by player. There’s no difference on what each can do in game, computer is basically just filling in for players when there aren’t enough players.
\r\n
There’s plenty of data about people, spread over several entities and database tables. Main one is Person, which stores name, gender, sex, date of birth and some stats (and then some more).
\r\n
There are lots of various ways of naming people and I chose to model three for the starters:
The higher the rank, more complicated names you tend to have (for some reason). Later on I’ll try and see if I can add more varied names, like matronyms and patronyms.
\r\n
Sex and gender I’m modeling with simple system of two enumerations, sex can be Female, Male or Intersex, while gender has values Man, Woman, Agender and Nonbinary. System is coarse, but should be enough to get started with the game. Later on, this can be expanded to more nuanced system.
\r\n
Traits are defining features of people. These include things like brave, coward, ambitious, content, honest and such. Values are binary, character either is brave or not. And character can’t be brave and coward at the same time.
\r\n
Relations are modeled as PersonRelation and thus stored in person_relation table:
\r\n
Relation json\r\n originatorId PersonId\r\n targetId PersonId\r\n type RelationType\r\n visibility RelationVisibility\r\n deriving Show Read Eq
\r\n
I find this corner of the puzzle particular interesting. This models who is parent or child, who is friend or rival. Interconnected web created by relations isn’t completely visible to players (or any other person in game). Relations have visibility, modeled as RelationVisibility, which tells how visible it is. Public ones are known by everyone, family relations are limited to small group of people and secret relations are only known by those who are in the fold. One aspect of the game is acquiring this information.
\r\n
Intel is modeled as HumanIntelligence and stored in human_intelligence table:
Essentially it just lists which character has what information about certain other character. So when displaying information to players, this table has to be referenced in order to know how much to reveal to them.
\r\n
Different types of intels are listed as PersonIntel:
Person related data is sent back to client in PersonReport record (I’m not copying it here as it’s relatively large). We can have a look on how one field is processed.
\r\n
For example, in case of traits. PersonReport has field personReportTraits :: !(Maybe [TraitReport]). Exclamation mark in the beginning of type instructs Haskell that this value should be computed immediately when record is created and not left for later. I’m doing this as I know for sure that it’ll always be used and there’s no advantage on delaying computation for the time when it might be needed.
\r\n
Report creating (high level):
\r\n
personReportTraits = if Traits `elem` targetIntel\r\n then Just $ traitReport <$> targetTraits\r\n else Nothing
\r\n
That first checks that Traits level of intel is available and then creates list of trait reports (one for each trait person has). These have things like trait name, description, trait type and how long the trait is valid. Having separate name and description fields makes it easier to work on client side as I don’t have to come up with descriptions there anymore. I can just use what the server sends to me and be happy.
\r\n
Comments, questions and feedback are welcome. Best way to catch me nowadays is email or fediverse where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','modelling,data',0,0,1),
+(2898,'2019-09-11','Modeling people in space game',1315,'Tuula talks how they approach modeling people in space game','
People are what makes dynasty simulators interesting and this episode will be about them. There isn’t much code this time, mainly just how data is organized. Topic is long and split over several episodes.
\r\n
Some people in game are controlled by computer, while some are controlled by player. There’s no difference on what each can do in game, computer is basically just filling in for players when there aren’t enough players.
\r\n
There’s plenty of data about people, spread over several entities and database tables. Main one is Person, which stores name, gender, sex, date of birth and some stats (and then some more).
\r\n
There are lots of various ways of naming people and I chose to model three for the starters:
The higher the rank, more complicated names you tend to have (for some reason). Later on I’ll try and see if I can add more varied names, like matronyms and patronyms.
\r\n
Sex and gender I’m modeling with simple system of two enumerations, sex can be Female, Male or Intersex, while gender has values Man, Woman, Agender and Nonbinary. System is coarse, but should be enough to get started with the game. Later on, this can be expanded to more nuanced system.
\r\n
Traits are defining features of people. These include things like brave, coward, ambitious, content, honest and such. Values are binary, character either is brave or not. And character can’t be brave and coward at the same time.
\r\n
Relations are modeled as PersonRelation and thus stored in person_relation table:
\r\n
Relation json\r\n originatorId PersonId\r\n targetId PersonId\r\n type RelationType\r\n visibility RelationVisibility\r\n deriving Show Read Eq
\r\n
I find this corner of the puzzle particular interesting. This models who is parent or child, who is friend or rival. Interconnected web created by relations isn’t completely visible to players (or any other person in game). Relations have visibility, modeled as RelationVisibility, which tells how visible it is. Public ones are known by everyone, family relations are limited to small group of people and secret relations are only known by those who are in the fold. One aspect of the game is acquiring this information.
\r\n
Intel is modeled as HumanIntelligence and stored in human_intelligence table:
Essentially it just lists which character has what information about certain other character. So when displaying information to players, this table has to be referenced in order to know how much to reveal to them.
\r\n
Different types of intels are listed as PersonIntel:
Person related data is sent back to client in PersonReport record (I’m not copying it here as it’s relatively large). We can have a look on how one field is processed.
\r\n
For example, in case of traits. PersonReport has field personReportTraits :: !(Maybe [TraitReport]). Exclamation mark in the beginning of type instructs Haskell that this value should be computed immediately when record is created and not left for later. I’m doing this as I know for sure that it’ll always be used and there’s no advantage on delaying computation for the time when it might be needed.
\r\n
Report creating (high level):
\r\n
personReportTraits = if Traits `elem` targetIntel\r\n then Just $ traitReport <$> targetTraits\r\n else Nothing
\r\n
That first checks that Traits level of intel is available and then creates list of trait reports (one for each trait person has). These have things like trait name, description, trait type and how long the trait is valid. Having separate name and description fields makes it easier to work on client side as I don’t have to come up with descriptions there anymore. I can just use what the server sends to me and be happy.
\r\n
Comments, questions and feedback are welcome. Best way to catch me nowadays is email or fediverse where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','modelling,data',0,0,1),
(2867,'2019-07-30','The Kenwood TS940S Automatic Tuning Unit',784,'I cover the Automatic Tuning unit on my Kenwood TS940S, re comment from HPR2668','
In this episode I let you hear the operation of my Kenwood TS940S automatic tuning unit. It had been a while since I’d last transmitted and I was a bit nervous that it might not even work – apparently it still does.
\r\n',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
(2865,'2019-07-26','The YouTube channels I really like',857,'Just some random thoughts on some random youtube channels','
\r\n',369,0,0,'CC-BY-SA','apollo,agc,youtube',0,0,1),
-(2888,'2019-08-28','Pattern matching in Haskell',1236,'tuturto talks about one of their favourite features in Haskell','
Pattern matching is one of those features of Haskell that immediately got me interested as it reduces amount of branching inside of functions I write. Basic idea is that if value constructors are for making data, pattern matching is for taking it apart.
\r\n
First example is a function that takes a Bool and returns a respective String:
\r\n
boolToString :: Bool -> String\r\nboolToString n =\r\n if n\r\n then "True"\r\n else "False"
\r\n
Nothing too fancy, just an if expression inside a function. We can move that if out of there though and define exactly same functionality, but with patterns:
There’s one definition for boolToString, but two different patterns used.
\r\n
Second example is bit more complex, this time we have Maybe Int that is being turned into String. Maybe has two value constructors Nothing and Just a. We have two cases for Just, specific one for when it’s Just 1 and more general one Just n that takes care of rest of the cases.
\r\n
isBig :: Maybe Int -> String\r\nisBig Nothing =\r\n "Not at all"\r\n\r\nisBig (Just 1) =\r\n "Just perfect"\r\n\r\nisBig (Just n) =\r\n if n < 10\r\n then "Just slightly"\r\n else "Definitely is"
\r\n
Some example usage:
\r\n
> isBig Nothing\r\n"Not at all"\r\n> isBig $ Just 0\r\n"Just perfect"\r\n> isBig $ Just 50\r\n"Definitely is"
\r\n
Pattern matching isn’t limited to algebraic datatypes that we have been working with so far. We can do same things with records. Below is an function used to calculate total fee when cost and customer are known. Each customer can have their own discount percentage, but in addition we’re giving 10% discount to VIP customers:
\r\n
data Customer = Customer\r\n { customerName :: String\r\n , customerDiscountPct :: Double\r\n , vipCustomer :: Bool\r\n }\r\n\r\ntotalFee :: Double -> Customer -> Double\r\ntotalFee bill cust@(Customer { vipCustomer = True }) =\r\n bill * 0.9 * customerDiscountPct cust\r\n\r\ntotalFee bill cust =\r\n bill * customerDiscountPct cust
\r\n
There’s two cases of totalFee function. First one is for when passed in Customer has vipCustomer field True. Second one takes care of general case. In the first case we’re using @ to bind Customer as a whole to cust name.
\r\n
Lists can be matched too. The basic idea is exactly the same:
\r\n
\r\n
(x:xs) matches a list with at least one item, x is first item, xs is rest of the items (might be an empty list)
\r\n
(x:y:_) matches two first items in a list of at least two items, x is first, y is second, _ is rest
\r\n
[] matches empty list
\r\n
(x:[]) matches list of exactly one item
\r\n
\r\n
Underscore _ matches to everything without binding value to a name. This is useful when you don’t care about exact value, so you don’t want to give it a name. One could give it a name, but compiler will issue a warning if there are unused values in the code.
\r\n
Next example is recursively counting amount if items in a list using pattern matching:
Last trick in our sleeve for now is case expression. This allows us to do pattern matching inside of a function. Otherwise it works in the same way. Our fibonacci function could be defined as:
\r\n
fibonacci :: Int -> Int\r\nfibonacci n =\r\n case n of\r\n 0 ->\r\n 0\r\n\r\n 1 ->\r\n 1\r\n\r\n n ->\r\n fibonacci (n - 1) + fibonacci (n - 2)
\r\n
Questions, comments and feedback are welcome. Best way to catch me nowadays is either email or in fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','pattern matching',0,0,1),
+(2888,'2019-08-28','Pattern matching in Haskell',1236,'Tuula talks about one of their favourite features in Haskell','
Pattern matching is one of those features of Haskell that immediately got me interested as it reduces amount of branching inside of functions I write. Basic idea is that if value constructors are for making data, pattern matching is for taking it apart.
\r\n
First example is a function that takes a Bool and returns a respective String:
\r\n
boolToString :: Bool -> String\r\nboolToString n =\r\n if n\r\n then "True"\r\n else "False"
\r\n
Nothing too fancy, just an if expression inside a function. We can move that if out of there though and define exactly same functionality, but with patterns:
There’s one definition for boolToString, but two different patterns used.
\r\n
Second example is bit more complex, this time we have Maybe Int that is being turned into String. Maybe has two value constructors Nothing and Just a. We have two cases for Just, specific one for when it’s Just 1 and more general one Just n that takes care of rest of the cases.
\r\n
isBig :: Maybe Int -> String\r\nisBig Nothing =\r\n "Not at all"\r\n\r\nisBig (Just 1) =\r\n "Just perfect"\r\n\r\nisBig (Just n) =\r\n if n < 10\r\n then "Just slightly"\r\n else "Definitely is"
\r\n
Some example usage:
\r\n
> isBig Nothing\r\n"Not at all"\r\n> isBig $ Just 0\r\n"Just perfect"\r\n> isBig $ Just 50\r\n"Definitely is"
\r\n
Pattern matching isn’t limited to algebraic datatypes that we have been working with so far. We can do same things with records. Below is an function used to calculate total fee when cost and customer are known. Each customer can have their own discount percentage, but in addition we’re giving 10% discount to VIP customers:
\r\n
data Customer = Customer\r\n { customerName :: String\r\n , customerDiscountPct :: Double\r\n , vipCustomer :: Bool\r\n }\r\n\r\ntotalFee :: Double -> Customer -> Double\r\ntotalFee bill cust@(Customer { vipCustomer = True }) =\r\n bill * 0.9 * customerDiscountPct cust\r\n\r\ntotalFee bill cust =\r\n bill * customerDiscountPct cust
\r\n
There’s two cases of totalFee function. First one is for when passed in Customer has vipCustomer field True. Second one takes care of general case. In the first case we’re using @ to bind Customer as a whole to cust name.
\r\n
Lists can be matched too. The basic idea is exactly the same:
\r\n
\r\n
(x:xs) matches a list with at least one item, x is first item, xs is rest of the items (might be an empty list)
\r\n
(x:y:_) matches two first items in a list of at least two items, x is first, y is second, _ is rest
\r\n
[] matches empty list
\r\n
(x:[]) matches list of exactly one item
\r\n
\r\n
Underscore _ matches to everything without binding value to a name. This is useful when you don’t care about exact value, so you don’t want to give it a name. One could give it a name, but compiler will issue a warning if there are unused values in the code.
\r\n
Next example is recursively counting amount if items in a list using pattern matching:
Last trick in our sleeve for now is case expression. This allows us to do pattern matching inside of a function. Otherwise it works in the same way. Our fibonacci function could be defined as:
\r\n
fibonacci :: Int -> Int\r\nfibonacci n =\r\n case n of\r\n 0 ->\r\n 0\r\n\r\n 1 ->\r\n 1\r\n\r\n n ->\r\n fibonacci (n - 1) + fibonacci (n - 2)
\r\n
Questions, comments and feedback are welcome. Best way to catch me nowadays is either email or in fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','pattern matching',0,0,1),
(2869,'2019-08-01','building a bike, following in John Kulp\'s footsteps',694,'turning a couple of old bikes into a long wheel base recumbent','
\r\n',326,115,0,'CC-BY-SA','bicycle, recumbent, recycle',0,0,1),
(2872,'2019-08-06','Shoe Lace Tips',472,'In this episode I give some shoe lace tips','
\r\n',201,0,1,'CC-BY-SA','hacks, tips',0,0,1),
(2874,'2019-08-08','Repair of G.E. Variable Speed Cassette Recorder',1228,'I talk about repairing a 1997 handheld cassette recorder and demonstrate its use.','
I found a pretty cool little handheld cassette recorder at Salvation Army Thrift Store for 99 cents yesterday. It was non-functioning. I was able to get it working again by 1. cleaning corrosion from battery compartment; 2. replacing the nasty gooey belt; 3. repairing the battery compartment, which had a broken-off spring for one of the battery\'s negative connections. The most interesting feature of the device is that it has a variable-speed knob for playback at higher speed. I demonstrate this in the podcast.
\r\n\r\n\r\n',238,0,0,'CC-BY-SA','Recording, Audio, Tape, Cassette, Recording Devices, Tape Speeds, Electronics, Repair',0,0,1),
@@ -19205,11 +19325,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2877,'2019-08-13','Using Zenity with Pdmenu',1358,'Zenity is a rather cool program that will display GTK+ dialogs from a script','
Overview
\r\n
I use pdmenu a lot to help me do work on my main desktop PC. I did an HPR show on pdmenu on 13 December 2017 and the author Joey Hess responded in show 2459.
\r\n
In the intervening time I have also integrated Zenity into my menus. This is a GUI tool which generates a number of different pop-up windows known as dialogs, which can display information, or into which information can be typed. The capabilities provided by pdmenu are a little too basic to enable me to do what I need to do.
\r\n
I thought it might be of interest to show some examples of how I use this tool with pdmenu.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','zenity,Bash scripting,pdmenu,GTK+',0,0,1),
(2879,'2019-08-15','Describing how I listen to podcasts PART 1',1877,'This episode badly covers the console audio player moc.','
In this series I cover how I listen to podcasts and how the process has change over the years. This episode badly covers the console audio player moc.
\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Ncurses',0,0,1),
(2884,'2019-08-22','TASCAM Porta 02 MiniStudio 4-Track Cassette Recorder Demonstration',4636,'I demonstrate the use of a vintage home studio device','
I discuss and demonstrate the latest retro gadget I found at the flea market last weekend, a TASCAM Porta 02 MiniStudio 4-Track Cassette Recorder. It was in a bin full of junk—filthy, lacking its power supply, and I got it for only $5. I hacked a power supply, disassembled it completely, washed everything thoroughly, and put it back together. It worked perfectly with the exception of the pause button. This has been one of the most fun projects I can remember, especially because my daughter is into it too, and she\'s learning how to make multi-track recordings. I always wanted a 4-track when I was in high school but never had one. Now I do!
\r\n',238,0,0,'CC-BY-SA','Multi-Track Recording, Recording Devices, Home Recording Studios, Cassette Tapes, Vintage Recording ',0,0,1),
-(2881,'2019-08-19','Automatically split album into tracks in Audacity',250,'Inspired by a Jon Kulp show, Ken splits a large recording based on silence between tracks','
Tidy up the audio to the point where you are happy with it, but do not truncate silence.
\r\n
Find the first break in the audio and check how long it is. In my case it was 4 seconds.
\r\n
Select the entire track and select Analyze>Silence Finder
\r\n
Change Maximum duration of silence to just under the length of the break. In my case I set it to 3 seconds
\r\n
This will then create a series of labels on a new Label track
\r\n
Edit the names of each as desired.
\r\n
Select File > Export > Export Multiple
\r\n
Select Split Files based on Labels
\r\n
Name files using Label/Track Name
\r\n
',30,0,1,'CC-BY-SA','Audacity, hpr1771, Detect Silence, Split Track, Label',0,0,1),
-(3156,'2020-09-07','HPR Community News for August 2020',4202,'HPR Volunteers talk about shows released and comments posted in August 2020','\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 23 comments in total.
Comment 1:\nb-yeezi on 2020-08-20:\n\"I deal with this all the time\"
\n
hpr3148\n(2020-08-26) \"Why Open Source matters (to me)\"\nby Paul Quirk.
\n
\n
Comment 1:\nZen_Floater2 on 2020-08-29:\n\"Vic 20\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nWindigo, Dave Morriss
\n
Over the period tags and/or summaries have been added to 12 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3176,'2020-10-05','HPR Community News for September 2020',4187,'HPR Volunteers talk about shows released and comments posted in September 2020','\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 15 comments in total.
\n
Past shows
\n
There are 2 comments on\n2 previous shows:
\n
\n
hpr3138\n(2020-08-12) \"Linux Inlaws S01E12: Reminiscing in FLOSS Weekly\"\nby monochromec.
Comment 1:\nReto on 2020-09-24:\n\"Sansa MP3 Players\"
Comment 2:\nDave Morriss on 2020-09-27:\n\"Rockbox and Sansa players\"
Comment 3:\nKevin O'Brien on 2020-09-27:\n\"My Rockbox/Sansa experience\"
Comment 4:\nDave Morriss on 2020-09-29:\n\"No more Sansa Clip Plus\"
\n
hpr3167\n(2020-09-22) \"A ramble with the Pentland Squires (part 1)\"\nby Dave Morriss.
\n
\n
Comment 1:\nAaron on 2020-09-27:\n\"Nice conversation, thanks for sharing it\"
Comment 2:\nZen_Floater2 on 2020-09-27:\n\"Squirrels love local chit-chat\"
Comment 3:\nDave Morriss on 2020-09-29:\n\"Thanks for the feedback\"
\n
hpr3168\n(2020-09-23) \"FreeBSD Jails and iocage\"\nby norrist.
\n
\n
Comment 1:\n0xf10e on 2020-09-27:\n\"Why an additional disk/zpool?\"
Comment 2:\nnorrist on 2020-09-28:\n\"2nd disk for iocage\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 7 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(2881,'2019-08-19','Automatically split album into tracks in Audacity',250,'Inspired by a Jon Kulp show, Ken splits a large recording based on silence between tracks','
Tidy up the audio to the point where you are happy with it, but do not truncate silence.
\r\n
Find the first break in the audio and check how long it is. In my case it was 4 seconds.
\r\n
Select the entire track and select Analyze>Silence Finder
\r\n
Change Maximum duration of silence to just under the length of the break. In my case I set it to 3 seconds
\r\n
This will then create a series of labels on a new Label track
\r\n
Edit the names of each as desired.
\r\n
Select File > Export > Export Multiple
\r\n
Select Split Files based on Labels
\r\n
Name files using Label/Track Name
\r\n
',30,0,1,'CC-BY-SA','Audacity, hpr1771, Detect Silence, Split Track, Label',0,0,1),
+(3156,'2020-09-07','HPR Community News for August 2020',4202,'HPR Volunteers talk about shows released and comments posted in August 2020','\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 23 comments in total.
Comment 1:\nb-yeezi on 2020-08-20:\n\"I deal with this all the time\"
\n
hpr3148\n(2020-08-26) \"Why Open Source matters (to me)\"\nby Paul Quirk.
\n
\n
Comment 1:\nZen_Floater2 on 2020-08-29:\n\"Vic 20\"
\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
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nWindigo, Dave Morriss
\n
Over the period tags and/or summaries have been added to 12 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3176,'2020-10-05','HPR Community News for September 2020',4187,'HPR Volunteers talk about shows released and comments posted in September 2020','\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 15 comments in total.
\n
Past shows
\n
There are 2 comments on\n2 previous shows:
\n
\n
hpr3138\n(2020-08-12) \"Linux Inlaws S01E12: Reminiscing in FLOSS Weekly\"\nby monochromec.
Comment 1:\nReto on 2020-09-24:\n\"Sansa MP3 Players\"
Comment 2:\nDave Morriss on 2020-09-27:\n\"Rockbox and Sansa players\"
Comment 3:\nKevin O'Brien on 2020-09-27:\n\"My Rockbox/Sansa experience\"
Comment 4:\nDave Morriss on 2020-09-29:\n\"No more Sansa Clip Plus\"
\n
hpr3167\n(2020-09-22) \"A ramble with the Pentland Squires (part 1)\"\nby Dave Morriss.
\n
\n
Comment 1:\nAaron on 2020-09-27:\n\"Nice conversation, thanks for sharing it\"
Comment 2:\nZen_Floater2 on 2020-09-27:\n\"Squirrels love local chit-chat\"
Comment 3:\nDave Morriss on 2020-09-29:\n\"Thanks for the feedback\"
\n
hpr3168\n(2020-09-23) \"FreeBSD Jails and iocage\"\nby norrist.
\n
\n
Comment 1:\n0xf10e on 2020-09-27:\n\"Why an additional disk/zpool?\"
Comment 2:\nnorrist on 2020-09-28:\n\"2nd disk for iocage\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 7 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2889,'2019-08-29','Describing how I listen to podcasts PART 2',1052,'In this episode I cover the hardware I\'ve used over the years to listen to podcasts.','
Short Summary
\r\n
In this series I cover how I listen to podcasts and how the process has change over the years. In this episode I cover the hardware I’ve used over the years to listen to podcasts.
The cordless headphones I use are analogue cordless headphones they operate in the UHF 860 MHz RF spectrum and use Frequency modulation
\r\n
(Picture 01) shows a pair of JVC cordless headphones, these were my first pair of cordless headphones, from memory they were reasonably comfortable and lasted a reasonably long time, they eventually gave way when the strap along the top completely split if you look carefully you can see evidence of this in the picture.
\r\n
I think my 2nd set pair of cordless headphones were made by Phillips, unfortunately I don’t have a picture of these. The headphones were too big and kept falling from my head.
\r\n
(Picture 02) shows a pair of Sony headphones that I can’t even remember owning! I’ve lost count of how many cordless headphones I’ve owned over the years, these were also too big and regularly fell off my head, there are probably other pairs which I have forgotten about. It took a lot of trial an error to find a pair that would fit properly.
\r\n
I think my 3rd set of cordless headphones were a cheap pair from Liddles, unfortunately I don’t have a picture of these again these were also too big.
\r\n
(Picture 03) Shows my current set of cordless headphones, unfortunately my camera refused to work while taking this picture so you’ll not be able to identify the manufacturer which is a great pity as they are absolutely great also the lighting in here is very bad so you won’t be able to make out the writing printed on them :)
\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Command Line, PDA, hardware',0,0,1),
-(2908,'2019-09-25','Modeling opinions in space game',2104,'tuturto talks about modeling opinions','
We continue with people, this time focusing on opinions. This episode has somewhat more code than previous one, so following along with the shownotes might be a good idea. I’m trying to minimize amount of code I read out aloud.
\r\n
Intro
\r\n
One person’s opinion of another is expressed as OpinionScore that ranges from -100 to 100.
\r\n
Computing the score is based on intelligence player has available to them. Internally we have ReportResult that tracks score, reasons for the score and confidence level about the results. It’s defined as:
We’re going to be adding up these results quite a bit, so we define SemiGroup and Monoid instances for it. When two results are combined, scores are added together, lists of reasons are concatenated and the lowest confidence level is used. This is written as:
Current system compares two lists of traits. For example, two brave characters like each other slightly better than if one of them would be coward. Comparison is done by traitPairOpinion function, which definition I’m omitting as it’s rather long and not too interesting. It’s signature is: traitPairOpinion :: TraitType -> TraitType -> Maybe (OpinionScore, OpinionReason). So, given two traits, tells how that pair affects to opinion and reasoning for it.
\r\n
In order to have nicer format for out data, we introduce a helper function:
\r\n
traitPairScore :: TraitType -> TraitType -> (OpinionScore, [OpinionReason])\r\ntraitPairScore a b =\r\n case traitPairOpinion a b of\r\n Nothing ->\r\n mempty\r\n\r\n Just (s, r) ->\r\n (s, [r])
\r\n
This is because (OpinionScore, OpinionReason) isn’t monoid, but (OpinionScore, [OpinionReason]) is, which means we can combine them with <>.
\r\n
Actual score calculation based on traits, we do it like this:
The interesting part is mconcat $ traitPairScore <$> originatorTraits <*> targetTraits. Function traitPairScore expects two TraitType values as parameters, but we’re calling it with two lists of such values. First step is to use <$> and list of values, which produces a list of partially applied functions. Second step is to use <*> to call each and every of those functions with values from second list. Result is a list of results that were obtained by calling traitPairScore with every combination of elements from two lists. Final step is to take this list of ReportResult values and combine them to single result with mconcat.
\r\n
Finally, based on available intel, ReportResult of correct level is created.
\r\n
Opinion based on relations
\r\n
Score based on relations is similar, but a bit convoluted (or rather, a lot more).
\r\n
Intel here has two dimensions. One of them is relationship visibility (is it public, family relation or secret relation), another is level of detail: BaseOpinionIntel, ReasonsForOpinions and DetailedOpinions.
Code has to take into account of what level of intel we have about opinions and on what detail: oIntel. On the other hand, visibilities is unique relation visibilities that exists in relations in this particular case and score is computed based on relations.
\r\n
Function relReport creates final report. It takes into account on what level of intel we have, by doing: matching = safeHead $ reverse $ sort $ filter (\\x -> opinionIntelVisibility x == visibility) intel. This finds highest level intel we have about this particular relationship visibility. Based on the highest level of available intel ReportResult is created with correct confidence level. Ie. if there’s no specific intel, we get FeelingLevel report. If there’s intel about why particular person has certain opinion, we get ReasonsLevel report. Whole definition of function is below:
To pull all this together, we combine results of these two functions. Based on given information, it’ll compute traitsRep and relationsRep. These two are combined with <> as explained earlier in episode:
Reports are based on intel and this might lead into incorrect results. In case of player’s own avatar, they have full intel (ie. they know all relations, all traits and so on.) Therefore opinion about some other person is based wholly on what we know about them.
\r\n
But in case of gauging somebody else’s opinion about us or person A’s opinion of person B, when A or B isn’t us, there’s chance of misjudging things. We might not know everything about them, or we might know more about A than B knows about them. In short, opinion shown for player, is just best effort guess.
\r\n
In closing
\r\n
Questions, comments and feedback is welcome. Even better is if you record your own HPR episode. Best way to reach me nowadays is by email or in fediverse, where I’m tuturto@mastodon.social.
\r\n
ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, game development',0,0,1),
+(2908,'2019-09-25','Modeling opinions in space game',2104,'Tuula talks about modeling opinions','
We continue with people, this time focusing on opinions. This episode has somewhat more code than previous one, so following along with the shownotes might be a good idea. I’m trying to minimize amount of code I read out aloud.
\r\n
Intro
\r\n
One person’s opinion of another is expressed as OpinionScore that ranges from -100 to 100.
\r\n
Computing the score is based on intelligence player has available to them. Internally we have ReportResult that tracks score, reasons for the score and confidence level about the results. It’s defined as:
We’re going to be adding up these results quite a bit, so we define SemiGroup and Monoid instances for it. When two results are combined, scores are added together, lists of reasons are concatenated and the lowest confidence level is used. This is written as:
Current system compares two lists of traits. For example, two brave characters like each other slightly better than if one of them would be coward. Comparison is done by traitPairOpinion function, which definition I’m omitting as it’s rather long and not too interesting. It’s signature is: traitPairOpinion :: TraitType -> TraitType -> Maybe (OpinionScore, OpinionReason). So, given two traits, tells how that pair affects to opinion and reasoning for it.
\r\n
In order to have nicer format for out data, we introduce a helper function:
\r\n
traitPairScore :: TraitType -> TraitType -> (OpinionScore, [OpinionReason])\r\ntraitPairScore a b =\r\n case traitPairOpinion a b of\r\n Nothing ->\r\n mempty\r\n\r\n Just (s, r) ->\r\n (s, [r])
\r\n
This is because (OpinionScore, OpinionReason) isn’t monoid, but (OpinionScore, [OpinionReason]) is, which means we can combine them with <>.
\r\n
Actual score calculation based on traits, we do it like this:
The interesting part is mconcat $ traitPairScore <$> originatorTraits <*> targetTraits. Function traitPairScore expects two TraitType values as parameters, but we’re calling it with two lists of such values. First step is to use <$> and list of values, which produces a list of partially applied functions. Second step is to use <*> to call each and every of those functions with values from second list. Result is a list of results that were obtained by calling traitPairScore with every combination of elements from two lists. Final step is to take this list of ReportResult values and combine them to single result with mconcat.
\r\n
Finally, based on available intel, ReportResult of correct level is created.
\r\n
Opinion based on relations
\r\n
Score based on relations is similar, but a bit convoluted (or rather, a lot more).
\r\n
Intel here has two dimensions. One of them is relationship visibility (is it public, family relation or secret relation), another is level of detail: BaseOpinionIntel, ReasonsForOpinions and DetailedOpinions.
Code has to take into account of what level of intel we have about opinions and on what detail: oIntel. On the other hand, visibilities is unique relation visibilities that exists in relations in this particular case and score is computed based on relations.
\r\n
Function relReport creates final report. It takes into account on what level of intel we have, by doing: matching = safeHead $ reverse $ sort $ filter (\\x -> opinionIntelVisibility x == visibility) intel. This finds highest level intel we have about this particular relationship visibility. Based on the highest level of available intel ReportResult is created with correct confidence level. Ie. if there’s no specific intel, we get FeelingLevel report. If there’s intel about why particular person has certain opinion, we get ReasonsLevel report. Whole definition of function is below:
To pull all this together, we combine results of these two functions. Based on given information, it’ll compute traitsRep and relationsRep. These two are combined with <> as explained earlier in episode:
Reports are based on intel and this might lead into incorrect results. In case of player’s own avatar, they have full intel (ie. they know all relations, all traits and so on.) Therefore opinion about some other person is based wholly on what we know about them.
\r\n
But in case of gauging somebody else’s opinion about us or person A’s opinion of person B, when A or B isn’t us, there’s chance of misjudging things. We might not know everything about them, or we might know more about A than B knows about them. In short, opinion shown for player, is just best effort guess.
\r\n
In closing
\r\n
Questions, comments and feedback is welcome. Even better is if you record your own HPR episode. Best way to reach me nowadays is by email or in fediverse, where I’m Tuula@mastodon.social.
\r\n
ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, game development',0,0,1),
(2903,'2019-09-18','What is PMEM',453,'Persistent memory (PMEM), also known as storage-class memory','
What is persistent memory?
\r\n
In brief, PMEM is next generation memory technology whose data transfer speed is as good as DRAM (50-300 ns, 100 times faster than SSDs) and unlike DRAM, it can even retain the data after reboots.
\r\n
In detail persistent memory (PMEM) is a solid-state high-performance byte-addressable memory device that resides on the memory bus. Being on the memory bus allows PMEM to have DRAM-like access to data, which means that it has nearly the same speed and latency of DRAM and the nonvolatility of NAND flash. NVDIMM (nonvolatile dual in-line memory module) and Intel 3D XPoint DIMMs (also known as Optane DC persistent memory modules) are two examples of persistent memory technologies.
\r\n
Persistent memory, such as Intel® Optane™ DC Persistent Memory, provides a future-proofed solution. Installed alongside traditional RAM, PMEM has many of the advantages of DRAM, including low latency access. But it comes in greater capacities. Intel® Optane™ DC, for example, will be available in 128GB, 256GB and 512GB sizes.
\r\n
Persistent Memory Benefits
\r\n
Persistent memory in the data center allows applications to run without incurring the latency penalty of going out to storage.
\r\n
The main advantages of persistent memory include:
\r\n
\r\n
Provides access latencies less than those of flash SSDs.
\r\n
Increases throughput more than flash storage.
\r\n
Cheaper than DRAM.
\r\n
PMEM is cacheable. This is a huge advantage over PCIe interconnect, which cannot be cached in the CPU.
\r\n
Real-time access to data; allows ultrafast access to large datasets.
\r\n
Data persists in memory after power interruption, like flash.
\r\n
Persistent Memory Use Cases\r\n
\r\n
Fraud detection
\r\n
Cyberthreat analysis
\r\n
Web-scale personalization
\r\n
Financial trading
\r\n
Internet of Things (IoT)
\r\n
\r\n
\r\n
Non \\\r\n Volatile /- Non-volatile: you plug it off and on again, and the Information is still there\r\n\r\n Double \\\r\n In-line | DIMM: This the HW format\r\n Memory |\r\n Module /
\r\n
Persistent Memory Vs. NVRAM
\r\n
Nonvolatile random-access memory (NVRAM) is random-access memory that retains its information even if there is no power. If power is lost before the data is written to disk, you don’t lose the data because it can be recovered from NVRAM. NVRAM uses battery backup to keep data persistent. During this time it can flash the data out to a flash device that is attached directly. In most cases, NVRAM resides on the PCIe bus.
\r\n
PMEM or NVDIMM-N can also be backed up by battery. It resides only on the memory bus.
\r\n
Where PMEM is going
\r\n
It’s no wonder that this sort of ‘in-memory’ computing has exploded in recent years. According to Gartner, 75 percent of cloud-native application development will use in-memory/PMEM computing by 2019, and by 2021, at least 25 percent of large and global organisations will adopt platforms using in-memory technologies.
\r\n
Drawbacks of PMEM
\r\n
\r\n
PMEM is a local store.
\r\n
Host failures can result in loss of availability.
\r\n
In the case of catastrophic errors you may lose all data and must take manual steps to reformat the PMEM.
\r\n',129,0,0,'CC-BY-SA','Pmem, intel, memory, storage',0,0,1),
(2882,'2019-08-20','ONICS Part 1: Basic Commands',1364,'In this episode I review some basic commands for manipulating packet captures','
Background
\r\n
\r\n
It\'s been about 6 years since I talked about my project ONICS in HPR 1350
\r\n
ONICS stands for Open Network Inpection Command Suite
\r\n
I created ONICS as because I thought it would be neat to have a suite of tools that could manipulate packets on the command line in a way similar to how tools lik sed, awk, grep, cut, and so forth manipulate text.
\r\n
\r\n
Installing
\r\n
\r\n
Not currently maintained in any package distributions
\r\n
Maintainers who are interested in doing so are welcome
\r\n
Install by source
\r\n
\r\n
$ git clone https://gitlab.com/catlib/catlib\r\n $ cd catlib\r\n $ make\r\n $ cd ..\r\n $ git clone https://gitlab.com/onics/onics\r\n $ cd onics\r\n $ ./configure\r\n $ make\r\n $ make test\r\n $ sudo make install\r\n $ make veryclean\r\n
\r\n
\r\n
Can always uninstall cleanly from the source directory
\r\n
\r\n
$ make uninstall\r\n
\r\n
\r\n
Alternate to installation is to stop at \'make test\' and then add to \'onics/bin\' and \'onics/scripts\' to your path.
\r\n
\r\n
Documentation
\r\n
\r\n
Manpages are available in onics/doc directory if you aren\'t installing locally. They are quite extensive.
\r\n
If installed locally, starting with:
\r\n
\r\n
$ man onics\r\n
\r\n
XPKT Format
\r\n
\r\n
PCAP format is outdated and not very extensible
\r\n
\r\n
I want to be able to annotate with interface IDs, flow IDs, packet numbers, classification info, header offsets, etc...
\r\n
\r\n
First and foremost, the file header prevents just cating files together.
\r\n
\r\n
it makes merging live streams more difficult
\r\n
pcapng improves things but still has global file header
\r\n
\r\n
\r\n
First Programs
\r\n
\r\n
Let\'s first capture in the traditional way
\r\n
\r\n
$ sudo tcpdump -i eth0 -c 5 -w file1.pcap\r\n
\r\n
\r\n
First program is to capture packets from the wire:
XPKT is a versatile, extensible, self-contained packet trace format
\r\n
ONICS\' most basic tools are pktin, pktout, pc2xpkt and xpkt2pc
\r\n
We\'ve demonstrated how the ONICS design supports leveraging the power of the UNIX command line for packets
\r\n
This is only the VERY beginning. ONICS has over 20 binaries and 30 scripts for manipulating packets.
\r\n
\r\n',259,61,0,'CC-BY-SA','networking, command-line, tools',0,0,1),
(2887,'2019-08-27','Stardrifter RPG Playtest Part 01',2202,'Lostnbronx and friends playtest a new, original RPG system.','
\r\nThis episode begins a limited series covering the first playtest of a new role-playing game, based upon my Stardrifter series of books and short stories. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.\r\n
\r\n
\r\nThis series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.\r\n
\r\n
\r\nIn this first episode, as well as the next, we we go over the rules of the game, and discuss them in some detail.\r\n
\r\n
\r\nSpecial thanks to my playtesters: Klaatu, Thaj, Mark (who was playing Brinn), and Brian!\r\n
\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
@@ -19229,25 +19349,25 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2932,'2019-10-29','Stardrifter RPG Playtest Part 10',3255,'Lostnbronx and friends playtest a new, original RPG system.','
This episode is Part 10 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.
\r\n
This series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.
\r\n
It’s not unusual for a game master to have two sets of maps for an adventure: one is for the players, which only has the sort of information on it that their characters might reasonably have access to; the other is NOT for the players, as it shows all the special information they shouldn’t know about (at least, not all at once). This is where you’d make note of secret doors, hidden objects or enemies, and/or, as in the case of this playtest, the physical condition of the ship as it stands at the moment.
\r\n
\r\nPlayer Map
\r\n
\r\nGame Master Map
\r\n
Additionally, here’s a zip file containing the adventure, the maps, the floor plan descriptions, some miscellaneous non-player characters, and the Stardrifter RPG rules in EPUB format. Again, these are no longer the LATEST version of the rules, but they are what we used for these episodes.
In this final part of the mini-series, the players provide their hard-working game designer with some valuable feedback, observations, and general opinions!
\r\n
Special thanks to my playtesters in this episode: Thaj, Mark (who was playing Brinn), and X1101!
\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2896,'2019-09-09','Orange PI Zero LTS version',737,'A general overview of the Orange PI Zero LTS','
\r\n',129,0,0,'CC-BY-SA','Raspberry PI, OrangePI, Armbian, Hobby Computing, VNC',0,0,1),
(2901,'2019-09-16','Describing how I listen to podcasts PART 3',835,'In this episode I cover the 1st add-on board I purchased for one of my raspberry pi\'s','
In this series I cover how I listen to podcasts and how the process has changed over the years. In this episode I cover the 1st add-on board I purchased for one of my raspberry pi’s I then go on to explain what I do with it.
Command used to install the software & libraries to use the Piface Digital IO board, command from companies website:
\r\n
\r\n
sudo apt-get install python{,3}-pifacedigitalio
\r\n
\r\nPicture 1, shows the Piface Digital IO board installed on top of my raspberry pi
\r\n
\r\nPicture 2, shows the extension board I built. The extension board increases the number of available LED’s and switches. The board is attached via a ribbon cable with the ends of the wire inserted into the green and orange screw down chocolate blocks attached to the Piface Digital IO board.
The board I built which attaches to the Piface Digital board has a total of 8 LED’s. I use the 8 LED’s to display a number in binary format. In binary each LED has only two values either on or off, with 1 LED you can count to 1 with two LED’s you can count to 3. This may seem confusing if you’ve never dealt with binary before. Starting from the right each subsequent LED represents double the value of the previous one so the 1st LED has a value of 1 the 2nd LED has a value of 2, the third LED has a value of 4 and so on. See below
\r\n
LED Number 8 7 6 5 4 3 2 1\r\nLED VALUES 128, 64, 32, 16, 8, 4, 2, 1
\r\n
LED on represents 1, LED off represents 0
\r\n
[Example 1] 0 0 0 0 0 0 0 1 [Represented value 1] \r\n1st LED on value = 1
\r\n
[Example 2] 0 0 0 0 0 0 1 1 [Represented value 3] \r\n1st and 2nd LED on, LED VALUE 1 + 2 = 3
\r\n
[Examples 3] 0 0 0 0 1 0 1 0 [Represented value 10] \r\n2nd and 4th LED on, LED VALUE 2 + 8 = 10
\r\n
With practice it gets easy to convert from binary to decimal, at my work we still have a very old computer which contains a front panel with LED’s and binary switches. To load the computer instructions must be loaded in binary using flip switches and LED’s with practice it becomes second nature.
\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Command Line, hardware, electronics, Raspberry Pi',0,0,1),
-(2918,'2019-10-09','Selecting random item from weighted list',1604,'How to selected random item from weighted list using Haskell','
Intro
\r\n
We’re going to have a look how to select random item from weighted list. There isn’t that much code this time, but it certainly took many tries to get it working and looking nice.
\r\n
Analogy
\r\n
Imagine stack of building blocks of different heights stacked on top of each other. Height of the each block is chance of how often it will be selected. Selection is done by chopping a stick so that its length at maximum is height of the stack. Place stick next to the stack and select the block that stick reaches at.
\r\n
Explanation of algorithm
\r\n
We have list of items and associated weight, defined as Frequency a = Frequency Int a.
\r\n
Total is sum of all the weights and we select a random number n between 1 and total.
\r\n
pick function has signature of [Frequency a] -> n -> Maybe a. Empty list will result Nothing. When picking item, if n is equal or less than weight of the first item, return that item. Otherwise, drop the first item, subtract weight of that first item from n and try again. Eventually we either arrive to item which weight is greater than n or to empty list.
\r\n
Quick detour on random number generators
\r\n
Haskell functions are pure, meaning that with same input, you are guaranteed to get the same output (safe for some specific cases). Which makes concept of random numbers at first glance to be impossible. This is solved by passing in a random number generator, which can supply you a random value a new random number generator. Using this new random number generator to generate a value yields you a yet another value and yet another random number generator.
\r\n
Passing these random number generators around in code gets tedious, but there’s different solution: MonadRandom. Using it will thread along generators automatically behind the scenes, ensuring that you always have access to a fresh generator. There’s several functions that can be used to generate random values, but we’re using this one: getRandomR :: Random a => (a, a) -> m a. Given a lower and upper bound, it will return you a random value wrapped in context that carries that new random number generator.
\r\n
In the end, we need to take our computation (that can be complex and use multiple calls to random number generator) and turn that m a into a. This is done with runRand :: RandomGen g => Rand g a -> g -> (a, g). We give it our computation and a RandomGen g that can generate random values and receive (a, g) where a is our result and g new random number generator. In cases where we aren’t going to use the new generator, we can use evalRand :: RandomGen g => Rand g a -> g -> a, which discards it and returns just a.
\r\n
Actual implementation with explanation
\r\n
First, Frequency for expressing weight of individual item. It’s parametrized, so can be used with any data.
\r\n
data Frequency a = Frequency Int a\r\n deriving (Show, Read, Eq)
\r\n
Next, determining which item to choose, based on stack and measuring stick. In case a value outside of valid range has been selected, we end up with Nothing, otherwise with Just a. First case is for empty list (either we called this originally with empty list or picked number that is greater than total sum of weights), second one either picks the first item of list or recursive calls itself removing first item.
\r\n
pick :: [Frequency a] -> Int -> Maybe a\r\npick [] _ = Nothing\r\n\r\npick (Frequency x item:xs) i\r\n | i <= x = Just item\r\n | otherwise = pick xs (i - x)
\r\n
Finally, function for calculating total of weights and choosing random number. We’re using that Rand g (Maybe a) I explained earlier. First case is for empty list again and latter case for list with at least one item.
\r\n
choose :: RandomGen g => [Frequency a] -> Rand g (Maybe a)\r\nchoose [] =\r\n return Nothing\r\n\r\nchoose items = do\r\n let total = sum $ fmap (\\(Frequency x _) -> x) items\r\n n <- getRandomR (1, total)\r\n return $ pick items n
\r\n
Notice how we can get random number by n <- getRandomR (1, total), without talking about generators. MonadRandom is handling generators and making sure that there’s always a fresh generator available and new generator is stored ready to be used.
\r\n
And that’s all the code this time (I told the amount of code is small this time).
\r\n
In closing
\r\n
This probably sounds a lot more complicated than it actually is. I arrived to the result after quite many detours, but the end result looks pretty nice.
\r\n
Next time we’re going to have a look where to use our choose function.
\r\n
In the meantime, questions, comments and feedback are welcomed. Best way to reach me is email or fediverse where I’m tuturto@mastodon.social. Or even better, record your own Hacker Public Radio episode.
\r\n',364,107,0,'CC-BY-SA','haskell, random, monad',0,0,1),
-(2904,'2019-09-19','DIY URL shortening',738,'Quick tip on how to shorten an URL without a silly SaaS','
\r\nMake a directory to house your shortened URLs.\r\n
\r\n\r\n
\r\n$ ssh example.com mkdir public_html/u\r\n
\r\n\r\n
\r\nOn demand, create a subdirectory for the shortened URL you want to create.\r\n
\r\n\r\n
\r\n$ ssh example.com mkdir public_html/u/hpr\r\n
\r\n\r\n
\r\nCreate an HTTP redirect in an index.html file.\r\n
\r\n',78,0,0,'CC-BY-SA','html, url shortner',0,0,1),
-(2928,'2019-10-23','Building markov chains with Haskell',1798,'How to build markov chains with Haskell','
Intro
\r\n
Last time we built a weighted list, this time we’re using that to build markov chains. Wikipedia states that “A Markov chain is a stochastic model describing a sequence of possible events in which the probability of each event depends only on the state attained in the previous event.” and that they’re named after the Russian mathematician Andrey Markov.
\r\n
Configuration
\r\n
We’re after generic system, hence parametrized data types.
\r\n
First part is Configuration a that lists possible starting elements of chain and elements that can follow a particular element.
\r\n
data Config a = Config\r\n { configStarts :: ![Item a]\r\n , configContinuations :: !(Map a [Item a])\r\n } deriving (Show, Read, Eq)
\r\n
Second part is Item a, that just holds single item that could appear in chain and relatively frequency for its appearance.
\r\n
data Item a =\r\n Item (Frequency (Maybe a))\r\n deriving (Show, Read, Eq)
\r\n
We’re using Maybe a as in some cases there’s chance of element being last element in chain. Thus, Nothing will represent end of chain.
\r\n
In previous episode, we implemented choose, but later on I decided to rename it to chooseM. So when you see chooseM, it’s just different name for what we implemented previously.
\r\n
Building a chain
\r\n
Since building a configuration depends on the case quite a bit, we’re just going to assume that we have one at hand.
\r\n
Our chains are built by chainM :: (Ord a, RandomGen g) => Config a -> Rand g [a]. Given a config, it creates computation that when run will return list of a, which is our chain.
\r\n
Implementation is fairly straightforward:
\r\n
chainM config = do\r\n starter <- chooseM (itemToFreq <$> configStarts config)\r\n case join starter of\r\n Nothing ->\r\n return []\r\n\r\n Just h -> do\r\n t <- tailOfChain config h\r\n return $ h : t
\r\n
First we select item from starting elements. In case there isn’t one, result will be a empty list. Otherwise we use tailOfChain to compute rest of the list and return a list of starter element followed by that tail.
\r\n
For tail we need to figure out first what possible elements there are that can follow a given element. This is done by candidates function. lookup finds a possible list of elements in configContinuations. We use itemToFreq to turn this list into frequencies. Since items might be Nothing (in case where there aren’t any suitable continuations present) and any continuation in the list might be Nothing (in case where this is possibly terminating element), we have to use (fmap . fmap) to apply itemToFreq to each possible element. Moreover, concat turns our Maybe [Frequency (Maybe a)] into [Frequency (Maybe a)], if we have Nothing at this stage, result will be an empty list [].
\r\n
candidates :: (Ord a) => Config a -> a -> [Frequency (Maybe a)]\r\ncandidates config x =\r\n concat $ (fmap . fmap) itemToFreq items\r\n where\r\n items = lookup x (configContinuations config)
\r\n
That concat part could have been written as:
\r\n
case (fmap . fmap) itemToFreq items of\r\n Nothing ->\r\n []\r\n\r\n Just x ->\r\n x
\r\n
and the end result would be identical.
\r\n
Now that we know how to figure our possible continuation elements, we can implement computing tail of chain:
\r\n
tailOfChain :: (Ord a, RandomGen g) => Config a -> a -> Rand g [a]\r\ntailOfChain config c = do\r\n item <- chooseM (candidates config c)\r\n case join item of\r\n Nothing ->\r\n return []\r\n\r\n Just x -> do\r\n xs <- tailOfChain config x\r\n return $ x : xs
\r\n
Function first select item from candidates. If there isn’t suitable item or item is Nothing, result will be an empty list. Otherwise function recurses, computes tail starting from selected element and constructs chain starting by selected item and followed by tail.
\r\n
join item at the start of case analysis collapses two nested Maybes together:
\r\n
\r\n
Nothing will result Nothing (no suitable continuation)
\r\n
Just Nothing will also result Nothing (end of chain reached)
\r\n
Just a will result Just a (suitable element found)
\r\n
\r\n
In the end we have list that is sort of like: h : chooseM (candidates config h) : chooseM (candidates config h\') : chooseM (candidates config h\'\') : ... : []
\r\n
Extra
\r\n
For convenience we define two other functions. First one is for when we don’t want to use Rand g a. It’s done by applying runRand function with our chainM function, config and RandomGen.
\r\n
chain :: (Ord a, RandomGen g) => Config a -> g -> ([a], g)\r\nchain config g =\r\n runRand (chainM config) g
\r\n
More interesting is chains which builds infinite list of chains:
\r\n
chains :: (Ord a, RandomGen g) => Config a -> g -> [[a]]\r\nchains config g =\r\n c : chains config g'\r\n where\r\n (c, g') = chain config g
\r\n
This uses chain function to create starting element (which is markov chain) and new generator g\'. Then it builds a list where that first chain is followed by list of chains that is created by calling chains with that new random generator. Since there’s no termination case in the function, it will compute infinitely long list of markov chains. This works because elements are computed only when needed. For all intents and purposes for program using this infinite list, items are there when needed.
\r\n
Closing
\r\n
Hardest part working with markov chains (at least in my opinion) is building suitable configuration. When you have that configuration at hand, building chains from it requires relatively small amount of code. In the next episode we’re going to use this chains for our space game.
\r\n
Questions, comments and feedback are always welcome. Best way to reach me is by email or in fediverse where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','markov chains, Haskell',0,0,1),
-(2905,'2019-09-20','Two HPR hosts living in the same region finally meet up!',1145,'Dave Morriss and MrX meet up and record a conversation','
Introduction
\r\n
Two HPR hosts who live in the Edinburgh locality in Scotland met on Saturday 24th August for a chat.
Some of the meeting was recorded and is presented here.
\r\n
Recording information
\r\n
We were both recording this chat. Dave was using his Zoom H2n (with the microphones in XY mode) and MrX had left his small Dictaphone-like recorder on the table.
\r\n
Most of the audio here was from the Zoom, but at one point it switches to MrX’s recorder for comparison. The sample is at about 18 minutes into the recording (hard to judge since an intro sequence will have been added on the HPR site). A “chirp” effect has been added at the start and end of this sample to help with identification.
\r\n
The Zoom track had noise reduction applied to it, using a noise sample from the start as a reference. The sample from MrX’s recorder also had noise reduction applied, and both tracks were amplified.
\r\n',225,0,1,'CC-BY-SA','HPR,hosts,meeting,Dave Morriss,MrX',0,0,1),
+(2918,'2019-10-09','Selecting random item from weighted list',1604,'How to selected random item from weighted list using Haskell','
Intro
\r\n
We’re going to have a look how to select random item from weighted list. There isn’t that much code this time, but it certainly took many tries to get it working and looking nice.
\r\n
Analogy
\r\n
Imagine stack of building blocks of different heights stacked on top of each other. Height of the each block is chance of how often it will be selected. Selection is done by chopping a stick so that its length at maximum is height of the stack. Place stick next to the stack and select the block that stick reaches at.
\r\n
Explanation of algorithm
\r\n
We have list of items and associated weight, defined as Frequency a = Frequency Int a.
\r\n
Total is sum of all the weights and we select a random number n between 1 and total.
\r\n
pick function has signature of [Frequency a] -> n -> Maybe a. Empty list will result Nothing. When picking item, if n is equal or less than weight of the first item, return that item. Otherwise, drop the first item, subtract weight of that first item from n and try again. Eventually we either arrive to item which weight is greater than n or to empty list.
\r\n
Quick detour on random number generators
\r\n
Haskell functions are pure, meaning that with same input, you are guaranteed to get the same output (safe for some specific cases). Which makes concept of random numbers at first glance to be impossible. This is solved by passing in a random number generator, which can supply you a random value a new random number generator. Using this new random number generator to generate a value yields you a yet another value and yet another random number generator.
\r\n
Passing these random number generators around in code gets tedious, but there’s different solution: MonadRandom. Using it will thread along generators automatically behind the scenes, ensuring that you always have access to a fresh generator. There’s several functions that can be used to generate random values, but we’re using this one: getRandomR :: Random a => (a, a) -> m a. Given a lower and upper bound, it will return you a random value wrapped in context that carries that new random number generator.
\r\n
In the end, we need to take our computation (that can be complex and use multiple calls to random number generator) and turn that m a into a. This is done with runRand :: RandomGen g => Rand g a -> g -> (a, g). We give it our computation and a RandomGen g that can generate random values and receive (a, g) where a is our result and g new random number generator. In cases where we aren’t going to use the new generator, we can use evalRand :: RandomGen g => Rand g a -> g -> a, which discards it and returns just a.
\r\n
Actual implementation with explanation
\r\n
First, Frequency for expressing weight of individual item. It’s parametrized, so can be used with any data.
\r\n
data Frequency a = Frequency Int a\r\n deriving (Show, Read, Eq)
\r\n
Next, determining which item to choose, based on stack and measuring stick. In case a value outside of valid range has been selected, we end up with Nothing, otherwise with Just a. First case is for empty list (either we called this originally with empty list or picked number that is greater than total sum of weights), second one either picks the first item of list or recursive calls itself removing first item.
\r\n
pick :: [Frequency a] -> Int -> Maybe a\r\npick [] _ = Nothing\r\n\r\npick (Frequency x item:xs) i\r\n | i <= x = Just item\r\n | otherwise = pick xs (i - x)
\r\n
Finally, function for calculating total of weights and choosing random number. We’re using that Rand g (Maybe a) I explained earlier. First case is for empty list again and latter case for list with at least one item.
\r\n
choose :: RandomGen g => [Frequency a] -> Rand g (Maybe a)\r\nchoose [] =\r\n return Nothing\r\n\r\nchoose items = do\r\n let total = sum $ fmap (\\(Frequency x _) -> x) items\r\n n <- getRandomR (1, total)\r\n return $ pick items n
\r\n
Notice how we can get random number by n <- getRandomR (1, total), without talking about generators. MonadRandom is handling generators and making sure that there’s always a fresh generator available and new generator is stored ready to be used.
\r\n
And that’s all the code this time (I told the amount of code is small this time).
\r\n
In closing
\r\n
This probably sounds a lot more complicated than it actually is. I arrived to the result after quite many detours, but the end result looks pretty nice.
\r\n
Next time we’re going to have a look where to use our choose function.
\r\n
In the meantime, questions, comments and feedback are welcomed. Best way to reach me is email or fediverse where I’m Tuula@mastodon.social. Or even better, record your own Hacker Public Radio episode.
\r\n',364,107,0,'CC-BY-SA','haskell, random, monad',0,0,1),
+(2904,'2019-09-19','DIY URL shortening',738,'Quick tip on how to shorten an URL without a silly SaaS','
\r\nMake a directory to house your shortened URLs.\r\n
\r\n\r\n
\r\n$ ssh example.com mkdir public_html/u\r\n
\r\n\r\n
\r\nOn demand, create a subdirectory for the shortened URL you want to create.\r\n
\r\n\r\n
\r\n$ ssh example.com mkdir public_html/u/hpr\r\n
\r\n\r\n
\r\nCreate an HTTP redirect in an index.html file.\r\n
\r\n',78,0,0,'CC-BY-SA','html, url shortner',0,0,1),
+(2928,'2019-10-23','Building markov chains with Haskell',1798,'How to build markov chains with Haskell','
Intro
\r\n
Last time we built a weighted list, this time we’re using that to build markov chains. Wikipedia states that “A Markov chain is a stochastic model describing a sequence of possible events in which the probability of each event depends only on the state attained in the previous event.” and that they’re named after the Russian mathematician Andrey Markov.
\r\n
Configuration
\r\n
We’re after generic system, hence parametrized data types.
\r\n
First part is Configuration a that lists possible starting elements of chain and elements that can follow a particular element.
\r\n
data Config a = Config\r\n { configStarts :: ![Item a]\r\n , configContinuations :: !(Map a [Item a])\r\n } deriving (Show, Read, Eq)
\r\n
Second part is Item a, that just holds single item that could appear in chain and relatively frequency for its appearance.
\r\n
data Item a =\r\n Item (Frequency (Maybe a))\r\n deriving (Show, Read, Eq)
\r\n
We’re using Maybe a as in some cases there’s chance of element being last element in chain. Thus, Nothing will represent end of chain.
\r\n
In previous episode, we implemented choose, but later on I decided to rename it to chooseM. So when you see chooseM, it’s just different name for what we implemented previously.
\r\n
Building a chain
\r\n
Since building a configuration depends on the case quite a bit, we’re just going to assume that we have one at hand.
\r\n
Our chains are built by chainM :: (Ord a, RandomGen g) => Config a -> Rand g [a]. Given a config, it creates computation that when run will return list of a, which is our chain.
\r\n
Implementation is fairly straightforward:
\r\n
chainM config = do\r\n starter <- chooseM (itemToFreq <$> configStarts config)\r\n case join starter of\r\n Nothing ->\r\n return []\r\n\r\n Just h -> do\r\n t <- tailOfChain config h\r\n return $ h : t
\r\n
First we select item from starting elements. In case there isn’t one, result will be a empty list. Otherwise we use tailOfChain to compute rest of the list and return a list of starter element followed by that tail.
\r\n
For tail we need to figure out first what possible elements there are that can follow a given element. This is done by candidates function. lookup finds a possible list of elements in configContinuations. We use itemToFreq to turn this list into frequencies. Since items might be Nothing (in case where there aren’t any suitable continuations present) and any continuation in the list might be Nothing (in case where this is possibly terminating element), we have to use (fmap . fmap) to apply itemToFreq to each possible element. Moreover, concat turns our Maybe [Frequency (Maybe a)] into [Frequency (Maybe a)], if we have Nothing at this stage, result will be an empty list [].
\r\n
candidates :: (Ord a) => Config a -> a -> [Frequency (Maybe a)]\r\ncandidates config x =\r\n concat $ (fmap . fmap) itemToFreq items\r\n where\r\n items = lookup x (configContinuations config)
\r\n
That concat part could have been written as:
\r\n
case (fmap . fmap) itemToFreq items of\r\n Nothing ->\r\n []\r\n\r\n Just x ->\r\n x
\r\n
and the end result would be identical.
\r\n
Now that we know how to figure our possible continuation elements, we can implement computing tail of chain:
\r\n
tailOfChain :: (Ord a, RandomGen g) => Config a -> a -> Rand g [a]\r\ntailOfChain config c = do\r\n item <- chooseM (candidates config c)\r\n case join item of\r\n Nothing ->\r\n return []\r\n\r\n Just x -> do\r\n xs <- tailOfChain config x\r\n return $ x : xs
\r\n
Function first select item from candidates. If there isn’t suitable item or item is Nothing, result will be an empty list. Otherwise function recurses, computes tail starting from selected element and constructs chain starting by selected item and followed by tail.
\r\n
join item at the start of case analysis collapses two nested Maybes together:
\r\n
\r\n
Nothing will result Nothing (no suitable continuation)
\r\n
Just Nothing will also result Nothing (end of chain reached)
\r\n
Just a will result Just a (suitable element found)
\r\n
\r\n
In the end we have list that is sort of like: h : chooseM (candidates config h) : chooseM (candidates config h\') : chooseM (candidates config h\'\') : ... : []
\r\n
Extra
\r\n
For convenience we define two other functions. First one is for when we don’t want to use Rand g a. It’s done by applying runRand function with our chainM function, config and RandomGen.
\r\n
chain :: (Ord a, RandomGen g) => Config a -> g -> ([a], g)\r\nchain config g =\r\n runRand (chainM config) g
\r\n
More interesting is chains which builds infinite list of chains:
\r\n
chains :: (Ord a, RandomGen g) => Config a -> g -> [[a]]\r\nchains config g =\r\n c : chains config g'\r\n where\r\n (c, g') = chain config g
\r\n
This uses chain function to create starting element (which is markov chain) and new generator g\'. Then it builds a list where that first chain is followed by list of chains that is created by calling chains with that new random generator. Since there’s no termination case in the function, it will compute infinitely long list of markov chains. This works because elements are computed only when needed. For all intents and purposes for program using this infinite list, items are there when needed.
\r\n
Closing
\r\n
Hardest part working with markov chains (at least in my opinion) is building suitable configuration. When you have that configuration at hand, building chains from it requires relatively small amount of code. In the next episode we’re going to use this chains for our space game.
\r\n
Questions, comments and feedback are always welcome. Best way to reach me is by email or in fediverse where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','markov chains, Haskell',0,0,1),
+(2905,'2019-09-20','Two HPR hosts living in the same region finally meet up!',1145,'Dave Morriss and MrX meet up and record a conversation','
Introduction
\r\n
Two HPR hosts who live in the Edinburgh locality in Scotland met on Saturday 24th August for a chat.
Some of the meeting was recorded and is presented here.
\r\n
Recording information
\r\n
We were both recording this chat. Dave was using his Zoom H2n (with the microphones in XY mode) and MrX had left his small Dictaphone-like recorder on the table.
\r\n
Most of the audio here was from the Zoom, but at one point it switches to MrX’s recorder for comparison. The sample is at about 18 minutes into the recording (hard to judge since an intro sequence will have been added on the HPR site). A “chirp” effect has been added at the start and end of this sample to help with identification.
\r\n
The Zoom track had noise reduction applied to it, using a noise sample from the start as a reference. The sample from MrX’s recorder also had noise reduction applied, and both tracks were amplified.
\r\n',225,0,1,'CC-BY-SA','HPR,hosts,meeting,Dave Morriss,MrX',0,0,1),
(2906,'2019-09-23','Feature Engineering for Data-Driven Decision Making',1006,'In this episode, I explain feature engineering, and how it can be used to make decisions','
\r\n\r\n',300,0,0,'CC-BY-SA','data',0,0,1),
(2909,'2019-09-26','ONICS Basics Part 3: Networking Fundamentals',3031,'This show discusses basic principles of networks and how to send data using ONICS','
Theory
\r\n
In this episode I decided to take a slight diversion into networking fundamentals. As before, if you want to learn more about installing the ONICS tool suite, go back and listen to HPR 2882.
\r\n
There are three key concepts to understand about modern networks. They are:
\r\n
\r\n
digital - the networks carry bits and bytes (binary digits)
\r\n
packet switched - devices break data into blobs of data called "packets" and take turns sending and receiving those packets to/from other devices attached to the network
\r\n
internetworked -- machines communicate using a protocol that allows traffic to traverse across multiple, independently-managed networks in a uniform way
\r\n
\r\n
My Setup
\r\n
\r\n
2 laptops connected to a home wifi network that has Internet connectivity.
\r\n
Practicing sending data from a source machine to a destination machine. Both are running Linux.
\r\n
Source machine:
\r\n
\r\n
Wifi interface: wlan0
\r\n
Ethernet address: 00:22:fa:a7:69:90
\r\n
IP address: 192.168.0.4
\r\n
\r\n
Destination machine
\r\n
\r\n
Wifi interface: wlo1
\r\n
Ethernet address: 6c:88:14:7c:2e:14
\r\n
IP address: 192.168.0.248
\r\n
\r\n
Internet Router:
\r\n
\r\n
Ethernet address: 00:0d:b9:23:f2:51
\r\n
IP address: 192.168.0.1
\r\n
\r\n
\r\n
More Terminology
\r\n
\r\n
Address - a number that identifies a machine\'s interface in a network
\r\n
Packet - a blob of binary data sent as a unit over a network
\r\n
Route - a rule that specifies how to forward traffic to a given address
\r\n
Router / Gateway - a machine that uses the IP protocol and forwards traffic between multiple networks that it connects to
\r\n
Network Protocol - a set of rules and data formats for exchanging information over a network
\r\n
\r\n
Standard UNIX Commands
\r\n
\r\n
ifconfig (no arguments or \'-a\')\r\n
\r\n
list interfaces on a machine
\r\n
\r\n
ifconfig IFNAME\r\n
\r\n
list properites about a given interface
\r\n
\r\n
ping -c 1 IPADDRESS\r\n
\r\n
send an echo request to machine IPADDRESS
\r\n
\r\n
arp -na\r\n
\r\n
Dump the Ethernet addresses of known nearby machines
\r\n
\r\n
netstat -nr\r\n
\r\n
Dump the routes in a system
\r\n
\r\n
netstat -nr | grep "^0.0.0.0"\r\n
\r\n
Find the route (and thus IP address) of the default gateway
\r\n
\r\n
\r\n
ONICS Commands in this Episode
\r\n
\r\n
rawpkt - take a blob of data and wrap it in an XPKT format (so other ONICS tools can understand what it is)
\r\n
ethwrap - take an XPKT and prepend an Ethernet header to it
\r\n
ipwrap - take an XPKT and prepend an IP header to it
\r\n
pktin - read a stream of packets from a network interface
\r\n
pflt - filter a stream of packets so that only those matching a pattern get through
\r\n
pktout - send a stream of packets to a network interface
\r\n
x2hpkt - convert XPKTs into a hex dump
\r\n
xpktdump - like x2hpkt, but send the output to a pager like \'less\' for easy reading
\r\n
\r\n
Sending an Ethernet Packet to the Destination
\r\n
\r\n
On the receiver:
\r\n
\r\n
$ sudo pktin wlo1 |\r\n pflt "not ip and eth.dst == 6c:88:14:7c:2e:14" |\r\n x2hpkt\r\n
Note that while I broke up the field setting commands into multiple lines in ethwrap, they can all be part of a single quoted string if desired. To store the packet to a file rather than send it instead do something
Note that while I broke up the field setting commands into multiple lines in ipwrap and ethwrap, they can all be part of a single quoted string if desired. Also note that it is not actually necessary to set the \'ip.len\' and \'eth.ethtype\' fields: the tools will do that automatically.
There are several differences between the packets that arrive at the destination machine when sending directly over the local network versus sending via an IP gateway (router). I\'ve mentioned how the Ethernet header is different. Can you find the other differences? What causes these differences?
\r\n
TIP: instead of sending the pktin command to x2hpkt, send it to a file. Do this for both local network send and for sending via the router saving each to different files. Then run pdiff on the two files to highlight the differences.
\r\n',259,61,0,'CC-BY-SA','command-line, networking, basics',0,0,1),
(2911,'2019-09-30','my internet connection',655,'a bloviated harang with a smattering of spewed expetives, while describing available ISPs','
Any notes for this episode should probably contain links to the ISPs mentioned in the show. Since I do not wish to harm any listeners, I have opted to not include links to evil ISPs.
',243,0,1,'CC-BY-SA','internet service, satellite',0,0,1),
-(2938,'2019-11-06','Naming pets in space game',1236,'How to use markov chains to generate names','
Intro
\r\n
In the two previous episodes we built a weighted list and used that to build markov chains. This time we’re going to use them to generate some names based on examples. I’m skipping over a lot of uninteresting code in this episode, concentrating only the parts that deal with names.
\r\n
Idea
\r\n
Person in game might hear scurrying sounds inside walls of their quarters. Then they have option of getting a cat, taming a rat or letting someone else deal with the problem. Depending on their choice, they might end up with a cat or a rat, that of course needs a name. Game offers 3 different options of names that haven’t been used before and person can always opt for completely random one.
\r\n
Config
\r\n
While we’re not going to dig very deep into making configurations for markov chains, we can have look at the overall process.
\r\n
We have list of names to serve as examples and three functions, which implementation I won’t delve into:
\r\n
\r\n
start for adding starting element
\r\n
links for recording link between two elements
\r\n
end adds ending element
\r\n
\r\n
addName function is used to add single name into config:
\r\n
addName :: Int -> Text -> Config Text -> Config Text\r\naddName n s config =\r\n links pairs $\r\n end elements $\r\n start elements config\r\n where\r\n elements = chunksOf n s\r\n pairs = zip elements (safeTail elements)
\r\n
First s (name) is split into strings of length n. These elements are then combined into pairs, where consecutive elements form a pair. Final step is to add start and ending elements into config, followed by links between elements of pairs.
\r\n
We can then fold a list of examples into config:
\r\n
nameConfig :: [Text] -> Int -> Config Text\r\nnameConfig xs n =\r\n foldr (addName n) emptyConfig xs
\r\n
This starts with emptyConfig and calls addName repeatedly until all elements of list containing examples have been processed.
\r\n
Implementation
\r\n
Now that we have configuration, we can start generating names. As usual, I like to keep things specific and generate PetName instead of just Text. I happened to have list of ancient greek names at hand, so I used that. Later on we’ll have to add more cultures, like Romans, Parthians, Persians, Germans, Phoenicians and so on.
\r\n
General implementation of generating infinite list of strings of specific kind is shown below:
\r\n
names :: (RandomGen g, Eq b) => (Text -> b) -> Config Text -> g -> [b]\r\nnames t config g =\r\n nub $ (t . toTitle . concat) <$> chains config g
\r\n
It’s easier to read if you start from right. chains config g generates infinite list of markov chains with given configuration. Next we create a new function (t . toTitle . concat), which uses concat to combine list of Text into single Text, toTitle to capitalize is correctly and t to transform it to something (PetName in our case). <$> is then used to apply this function to each element of our infinite list. Finally nub is used to remove duplicate entries.
The actual beef is namingPetEvent function. When applied with Entity Person, Entity Pet and StarDate, it will create News that can be saved into database and later on showed to player. While the code is shown below, I’m not going to go over it line by line:
\r\n
namingPetEvent :: (PersistQueryRead backend, MonadIO m,\r\n BaseBackend backend ~ SqlBackend) =>\r\n Entity Person -> Entity Pet -> StarDate -> ReaderT backend m News\r\nnamingPetEvent personE petE date = do\r\n pets <- selectList [ PetOwnerId ==. (entityKey personE)\r\n , PetDateOfDeath ==. Nothing\r\n ] []\r\n let names = (petName . entityVal) <$> pets\r\n g <- liftIO getStdGen\r\n let availableNames = take 3 $ filter (\\x -> not (x `elem` names)) $ petNames g\r\n let content = NamingPet (NamingPetEvent { namingPetEventPersonId = entityKey personE\r\n , namingPetEventPetId = entityKey petE\r\n , namingPetEventPetType = (petType . entityVal) petE\r\n , namingPetEventDate = date\r\n , namingPetNameOptions = availableNames\r\n })\r\n [] Nothing\r\n return $ mkPersonalSpecialNews date (entityKey personE) content
\r\n
General idea is to use selectList to load living pets of given person and then extract their names. With random generator g, we create a infinite list of PetNames, remove already used names from it and take 3 first ones. These names are then used to create NamingPetEvent.
\r\n
In closing
\r\n
Names are probably one of the most common applications of markov chains in games. Same technique can be used to generate nonsense books and articles that look realistic on a glance.
\r\n
Questions, comments and feedback is welcomed, best way to reach is email or in fediverse where I’m tuturto@mastodon.social. Or even better, record your own episode for Hacker Public Radio.
\r\n
ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, markov chains',0,0,1),
+(2938,'2019-11-06','Naming pets in space game',1236,'How to use markov chains to generate names','
Intro
\r\n
In the two previous episodes we built a weighted list and used that to build markov chains. This time we’re going to use them to generate some names based on examples. I’m skipping over a lot of uninteresting code in this episode, concentrating only the parts that deal with names.
\r\n
Idea
\r\n
Person in game might hear scurrying sounds inside walls of their quarters. Then they have option of getting a cat, taming a rat or letting someone else deal with the problem. Depending on their choice, they might end up with a cat or a rat, that of course needs a name. Game offers 3 different options of names that haven’t been used before and person can always opt for completely random one.
\r\n
Config
\r\n
While we’re not going to dig very deep into making configurations for markov chains, we can have look at the overall process.
\r\n
We have list of names to serve as examples and three functions, which implementation I won’t delve into:
\r\n
\r\n
start for adding starting element
\r\n
links for recording link between two elements
\r\n
end adds ending element
\r\n
\r\n
addName function is used to add single name into config:
\r\n
addName :: Int -> Text -> Config Text -> Config Text\r\naddName n s config =\r\n links pairs $\r\n end elements $\r\n start elements config\r\n where\r\n elements = chunksOf n s\r\n pairs = zip elements (safeTail elements)
\r\n
First s (name) is split into strings of length n. These elements are then combined into pairs, where consecutive elements form a pair. Final step is to add start and ending elements into config, followed by links between elements of pairs.
\r\n
We can then fold a list of examples into config:
\r\n
nameConfig :: [Text] -> Int -> Config Text\r\nnameConfig xs n =\r\n foldr (addName n) emptyConfig xs
\r\n
This starts with emptyConfig and calls addName repeatedly until all elements of list containing examples have been processed.
\r\n
Implementation
\r\n
Now that we have configuration, we can start generating names. As usual, I like to keep things specific and generate PetName instead of just Text. I happened to have list of ancient greek names at hand, so I used that. Later on we’ll have to add more cultures, like Romans, Parthians, Persians, Germans, Phoenicians and so on.
\r\n
General implementation of generating infinite list of strings of specific kind is shown below:
\r\n
names :: (RandomGen g, Eq b) => (Text -> b) -> Config Text -> g -> [b]\r\nnames t config g =\r\n nub $ (t . toTitle . concat) <$> chains config g
\r\n
It’s easier to read if you start from right. chains config g generates infinite list of markov chains with given configuration. Next we create a new function (t . toTitle . concat), which uses concat to combine list of Text into single Text, toTitle to capitalize is correctly and t to transform it to something (PetName in our case). <$> is then used to apply this function to each element of our infinite list. Finally nub is used to remove duplicate entries.
The actual beef is namingPetEvent function. When applied with Entity Person, Entity Pet and StarDate, it will create News that can be saved into database and later on showed to player. While the code is shown below, I’m not going to go over it line by line:
\r\n
namingPetEvent :: (PersistQueryRead backend, MonadIO m,\r\n BaseBackend backend ~ SqlBackend) =>\r\n Entity Person -> Entity Pet -> StarDate -> ReaderT backend m News\r\nnamingPetEvent personE petE date = do\r\n pets <- selectList [ PetOwnerId ==. (entityKey personE)\r\n , PetDateOfDeath ==. Nothing\r\n ] []\r\n let names = (petName . entityVal) <$> pets\r\n g <- liftIO getStdGen\r\n let availableNames = take 3 $ filter (\\x -> not (x `elem` names)) $ petNames g\r\n let content = NamingPet (NamingPetEvent { namingPetEventPersonId = entityKey personE\r\n , namingPetEventPetId = entityKey petE\r\n , namingPetEventPetType = (petType . entityVal) petE\r\n , namingPetEventDate = date\r\n , namingPetNameOptions = availableNames\r\n })\r\n [] Nothing\r\n return $ mkPersonalSpecialNews date (entityKey personE) content
\r\n
General idea is to use selectList to load living pets of given person and then extract their names. With random generator g, we create a infinite list of PetNames, remove already used names from it and take 3 first ones. These names are then used to create NamingPetEvent.
\r\n
In closing
\r\n
Names are probably one of the most common applications of markov chains in games. Same technique can be used to generate nonsense books and articles that look realistic on a glance.
\r\n
Questions, comments and feedback is welcomed, best way to reach is email or in fediverse where I’m Tuula@mastodon.social. Or even better, record your own episode for Hacker Public Radio.
\r\n
ad astra!
\r\n',364,107,0,'CC-BY-SA','haskell, markov chains',0,0,1),
(2913,'2019-10-02','Windows, SDN, and Firewalls',2483,'Being a Windows User for the past 3 years, Information on SDN, and a DIY approach to a home Firewall','
\r\nIntro\r\n\r\nLast Upload was hpr1468 March 19, 2014 \r\n\r\npython\r\n\r\n>>> print (D.today() - D(2014, 3, 19)).days\r\n\r\n1999\r\n\r\n>>> 2000/365\r\n\r\n5\r\n
Fantastic Text editor and very powerful. I use this to quickly parse data using regex searches and push this to spreadsheets or other tools that allow me to organize data quickly. Overall Great tool for anyone
\r\n
\r\n
Summary:
\r\n
\r\n
Overall: The importance of being an everyday Windows User has allowed me to focus on solving problems in different and unique ways. I\'ve found that the way I use Windows is not the same as most normal Windows Users. I live most of the time inside of Chrome so Windows is just another OS to get my Chrome Browser running.
\r\n
Observation: Windows has definitely matured over the past 10 years. I find myself enjoying the time I save using Windows 10.
\r\n
Contradictions: I still use Linux, but as a VM to work on things that I just can\'t do inside of Windows.
\r\n
\r\n
Web Stuff
\r\n
\r\n
Regex\r\n
\r\n
Test and debug your regex. It is a great tool that combines pastebin and regex debugging. This allows you to share your regex with other by simply using a link. There is a lot of useful information on the site about what each portion of your regex is doing.
Very nice site that allows you to download PDFs of 1:24000 or 7.5 minute Maps. You can print these off and use a Map grid tool to navigate your journey. This is kind of an analog tool but you are downloading the maps to your computer or phone. Good to have maps saved offline while you hike, that way you don\'t get lost.
If you\'re just starting with Software Defined Networking or are already working with it in a production environment, there is much to learn but very few places to find aggregated information. The GitHub Page called awesome-sdn has tons of links on NOS,Controllers, Libraries, and more. I have A couple of Northbound network and Aruba switches at home to use with my SDN projects. I highly recommend you start getting familiar with network automation using ansible or other automation best practices at the least. For the more technical stuff definitely start looking at SDN.
Ubiquiti \"SDN\" Like FW decent enough for homes with 100Mb/s Uplinks but not for homes with 1Gb/s uplinks.
\r\n
USG3 can\'t handle IPS throughput past 50Mb/s
\r\n
USG3 can\'t handle FW PPS past 400Mb/s at 100B packets, which is around 500,000 PPS
\r\n
The Ubiquiti alternative would be to spend money on an XG which is well over $1000 USD.
\r\n
\r\n
DIY Option\r\n
\r\n
The best alternative would be to purchase a used SFF PC with at least 1 Gb onboard NIC and 2 PCIe x16 or x 8 lanes. This would allow for 10Gb NIC options
\r\n
4x10Gb Intel Nics are a steal
\r\n
or 4 x 1Gb Nics which are an even better deal.
\r\n
Going SFP+ is a great option because you can use Copper or Fiber Modules in the same NIC card.
\r\n
\r\n
\r\n
Summary\r\n
\r\n
The most important part about the SFF Option, you get to use a xeon processor, at least 32 GBs of RAM, and install up to 4 HDDs in the System. You can even install a PCIe NVME or M.2 Sata using a PCIe peripheral.
\r\n
For software, PFSense or Sophos XG will be great options. If you really want to get technical, load up a hypervisor and then install the Firewall as a VM. This would allow you to leverage the SFF system for more than just a FW and allow for easy testing of other types of FW solutions.
\r\n',231,61,1,'CC-BY-SA','Windows, Firewalls, SDN',0,0,1),
(2914,'2019-10-03','Describing how I listen to podcasts PART 4',526,'In this episode I cover my 2nd add on board for the raspberry pi','
Pictures 01, 02 and 03 show how the PiFace Control and Display board and raspberry pi fit into the case \r\n \r\n \r\n
\r\n
Pictures 04 and 05 shows the piece of plastic used to transfer the light from the LED’s on the Pi board to the holes in the casing. This is supposed to allow you to monitor the PI LED’s. I held it in place using a piece of Blu Tack. \r\n \r\n
Pictures 7 and 8 show the project in operation and mounted on a spare Anker tablet stand that I had lying about. \r\n \r\n
\r\n
This is an example of the Anker stand I used. I use it to hold my project at a 45 degree angle so I can see it from around the room, it is intended to be used as a tablet stand. \r\nAnker stand for my Nexus 7, pictures, links
\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Raspberry Pi, hardware, electronics, projects',0,0,1),
(2915,'2019-10-04','Intro - My Recording Setup',1248,'My first HPR episode. A bit of an intro and then a description of my recording setup.','
I discuss loading Fedora on various bits of older hardware and devise a plan to turn one of those bits of older hardware into a dedicated headless audio processor using its firewire port to keep yet another older piece of hardware alive: a Yamaha GO46 audio interface.
\r\n
Having done that and finding that it all performs admirably, I illogically decide to replace it with newer (but not new) hardware and buy yet another different model firewire audio interface: a Focusrite Saffire Pro 24.
\r\n
I record the end of the show on audio interface #3: a USB based Steinberg UR22mkII, which one could argue that I should have been using all along, leaving the firewire gear in the last decade where it belongs (?).
',380,0,0,'CC-BY-SA','Fedora, Firewire, Audio Interface',0,0,1),
(2919,'2019-10-10','hosting software in HPR show notes',626,'boats are awesome, but might lead to hosting software in the HPR show notes ','
#!/usr/bin/env python\r\nimport urllib.request\r\nimport json\r\nimport re\r\nimport subprocess\r\n\r\n# see https://www.weather.gov/documentation/services-web-api\r\n\r\n#where are we? GPS coordinates\r\nlat = 39.275235\r\nlon = -120.9199507\r\n#what is the user agent string?\r\nagent = "Jezra's fun lil script"\r\n#minimum wind speed in mph?\r\nmin_speed = 9\r\n\r\ndef get_api_data(endpoint):\r\n print(endpoint)\r\n #prepare the connection with custom headers\r\n request = urllib.request.Request(endpoint, headers={"User-Agent":agent})\r\n #create a handler for the request\r\n handler = urllib.request.urlopen(request)\r\n #get the text\r\n text = handler.read()\r\n #parse the json text to a python object\r\n obj = json.loads(text)\r\n return obj\r\n\r\ndef wind_is_good(s):\r\n #use regex to find the matches\r\n matches = re.findall("[0-9]+",s)\r\n for match in matches:\r\n #convert string to int\r\n m = int(match)\r\n #is the speed good?\r\n if(m>=min_speed):\r\n return True\r\n #if we get here, there is no match :(\r\n return False\r\n\r\nstart_url = "https://api.weather.gov/points/{0},{1}".format(lat,lon)\r\n#get the json response from the start_url as a python object\r\nobj = get_api_data(start_url)\r\n\r\n#get the forecast url from the returned data\r\nforecast_url = obj['properties']['forecast']\r\n\r\n# process the forecast url\r\nforecast = get_api_data(forecast_url)\r\n\r\n#loop through the forcast periods\r\nfor period in forecast['properties']['periods']:\r\n #put name and windspeed into easier to handle variable names\r\n name= period['name']\r\n wind = period['windSpeed']\r\n print (name, wind)\r\n #check the wind speed\r\n if wind_is_good(wind):\r\n subprocess.call(["textjezra","{0}: {1}".format(name,wind)])\r\n
\r\n',243,25,0,'CC-BY-SA','canoe, ptython, api, weather',0,0,1),
(2921,'2019-10-14','Geocaching with the family',2916,'Dave and his family take a wander around a wood looking for Geocaches','
In this episode, Dave and his family wander the paths of Sandall Beat Wood in Doncaster to participate in the game of Geocaching. During this time, which demonstrates an unusual level of failure in us playing the game, we try and explain what the game is all about.
As I explain at the beginning of the episode, this is a fairly long episode which hasn\'t been edited down much, so there are a lot of ambient pauses and heavy breathing to be enjoyed.
\r\n
Recorded in the field on my Olympus DM-3 voice recorder.
\r\n',314,0,0,'CC-BY-SA','geocaching, outdoors, family',0,0,1),
-(2948,'2019-11-20','Testing with Haskell',2560,'Introduction on HSpec and QuickCheck','
Intro
\r\n
I have liked writing automated tests for a long time, so it’s not a surprise that I end up writing them in Haskell too. This is very broad topic, so this episode only scratches the surface.
\r\n
HSpec
\r\n
HSpec is testing framework that automatically detects tests, like most of the modern systems. It supports hierarchies, so one can organize tests by feature for example.
\r\n
spec :: Spec\r\nspec = do\r\n describe "Very important feature" $ do\r\n it "Execution should be error free" $ do\r\n ...\r\n\r\n it "Flux capacitors can be charged" $ do\r\n ...\r\n\r\n describe "Somewhat less important feature" $ do\r\n ...
\r\n
Unit test
\r\n
Unit test tests a single case with fixed set of inputs. With pure functions these are a pleasure to write as they’re really just data in, data out, verify results. Below is two examples:
\r\n
spec :: Spec\r\nspec = do\r\n describe "Markov chain configuration" $ do\r\n it "Adding new starting element to empty configuration creates item with frequency of 1" $ do\r\n let config = addStart ("AA" :: DT.Text) emptyConfig\r\n config ^? (configStartsL . _head . itemFreqL) `shouldBe` Just 1\r\n config ^? (configStartsL . _head . itemItemL . _Just) `shouldBe` Just "AA"\r\n\r\n it "Adding same element twice to empty configuration creates item with frequency of 2" $ do\r\n let config = addStart "AA" $\r\n addStart ("AA" :: DT.Text) emptyConfig\r\n config ^? (configStartsL . _head . itemFreqL) `shouldBe` Just 2\r\n config ^? (configStartsL . _head . itemItemL . _Just) `shouldBe` Just "AA"
\r\n
Both are for testing configuring markov chains. First one checks that adding a starting element in empty configuration results correct item with correct weight being added. Second checks that adding same starting element twice results weight of 2.
\r\n
Both tests use lenses for reading nested data structure. Episode doesn’t cover them much at all, as it’s enough to know that (configStartsL . _head . itemFreqL) focuses on starting elements of configuration, selects first item of the list and then selects frequency of that item. Lenses can also be used for modifying data and they don’t have to focus on only one element.
\r\n
Unit tests are easy enough to write, they verify single thing about the unit being tested and are usually super fast to run and not error prone.
\r\n
Property based test
\r\n
Property based tests are used to check that a certain property holds with randomly generated input parameters. I’m using HSpec as testing framework and QuickCheck as tool for generating test data:
\r\n
spec :: Spec\r\nspec = do\r\n describe "planets" $ do\r\n describe "food" $ do\r\n it "food requirement for positive amount of population is more than zero" $ do\r\n forAll positivePopulation $ \\x -> foodRequirement x > RawResource 0\r\n\r\n it "food base production for farms is equal or greater than their amount" $ do\r\n forAll someFarms $ \\x -> (sum (fmap foodBaseProduction x)) > (RawResource $ length x)
\r\n
Above we have two tests. First one checks that with any non-zero population, foodRequirement is greater than 0. Second one check that with any positive amount of farm, foodBaseProduction is greater than amount of the farms.
\r\n
positivePopulation is Generator, that is used by QuickCheck to generate random data for testing. Its definition is shown below:
\r\n
singlePopulation :: Gen PlanetPopulation\r\nsinglePopulation = do\r\n let aPlanetId = toSqlKey 0\r\n let aRaceId = toSqlKey 0\r\n aPopulation <- arbitrary `suchThat` \\x -> x > 0\r\n return $ PlanetPopulation aPlanetId aRaceId aPopulation\r\n\r\npositivePopulation :: Gen [PlanetPopulation]\r\npositivePopulation = do\r\n k <- arbitrary `suchThat` \\x -> x > 0\r\n vectorOf k singlePopulation
\r\n
Generated data can be really simple or very complex. Generating complex data is often convenient to break into smaller steps and write generators for them.
\r\n
Property based tests are somewhat harder to write than unit tests, but they can potentially cover edge cases that might otherwise not been discovered.
\r\n
Working with database
\r\n
All tests shown so far have been testing pure code, that is, code that is data in, data out. When database is introduced, things get more complicated. Suddenly there’s much more possibilities for errors. Below is an example of such a test:
There’s a lot more code that had to be written for this test and majority of it is for setting up database state. The test if for ensuring that when good harvest boost expires, it is removed from database and respective news article is created.
\r\n
These kinds of tests have a lot more code and are much more slower to run because of the communication with a database. There’s also more cases where something can go wrong. But in the end, these kinds of tests are needed if one wants to verify that interaction with database is working as planned.
\r\n
Testing API
\r\n
Last example is about testing REST API. There are two tests, where the first one is checking that proper access control is in place and second one checks that pending messages are correctly retrieved.
Here extra complication is created by the fact that many features of the system are behind authentication and authorization. Luckily Yesod comes with helper function authenticateAs, that allows code to authenticate when system is running in development mode.
\r\n
These test are even slower than any of the previous ones, but on the other hand, they test whole chain from user interaction to database and back.
\r\n
In closing
\r\n
There’s lots of things that I couldn’t cover in such a short time, like various types of tests: UI testing, performance testing, security testing, long running testing…, the list goes on and on. But hopefully this episode gave you ideas what kinds of tests one can write and how to get started doing so using Haskell.
\r\n
Best way to reach me is email or at fediverse, where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','haskell, testing, HSpec, QuickCheck',0,0,1),
+(2948,'2019-11-20','Testing with Haskell',2560,'Introduction on HSpec and QuickCheck','
Intro
\r\n
I have liked writing automated tests for a long time, so it’s not a surprise that I end up writing them in Haskell too. This is very broad topic, so this episode only scratches the surface.
\r\n
HSpec
\r\n
HSpec is testing framework that automatically detects tests, like most of the modern systems. It supports hierarchies, so one can organize tests by feature for example.
\r\n
spec :: Spec\r\nspec = do\r\n describe "Very important feature" $ do\r\n it "Execution should be error free" $ do\r\n ...\r\n\r\n it "Flux capacitors can be charged" $ do\r\n ...\r\n\r\n describe "Somewhat less important feature" $ do\r\n ...
\r\n
Unit test
\r\n
Unit test tests a single case with fixed set of inputs. With pure functions these are a pleasure to write as they’re really just data in, data out, verify results. Below is two examples:
\r\n
spec :: Spec\r\nspec = do\r\n describe "Markov chain configuration" $ do\r\n it "Adding new starting element to empty configuration creates item with frequency of 1" $ do\r\n let config = addStart ("AA" :: DT.Text) emptyConfig\r\n config ^? (configStartsL . _head . itemFreqL) `shouldBe` Just 1\r\n config ^? (configStartsL . _head . itemItemL . _Just) `shouldBe` Just "AA"\r\n\r\n it "Adding same element twice to empty configuration creates item with frequency of 2" $ do\r\n let config = addStart "AA" $\r\n addStart ("AA" :: DT.Text) emptyConfig\r\n config ^? (configStartsL . _head . itemFreqL) `shouldBe` Just 2\r\n config ^? (configStartsL . _head . itemItemL . _Just) `shouldBe` Just "AA"
\r\n
Both are for testing configuring markov chains. First one checks that adding a starting element in empty configuration results correct item with correct weight being added. Second checks that adding same starting element twice results weight of 2.
\r\n
Both tests use lenses for reading nested data structure. Episode doesn’t cover them much at all, as it’s enough to know that (configStartsL . _head . itemFreqL) focuses on starting elements of configuration, selects first item of the list and then selects frequency of that item. Lenses can also be used for modifying data and they don’t have to focus on only one element.
\r\n
Unit tests are easy enough to write, they verify single thing about the unit being tested and are usually super fast to run and not error prone.
\r\n
Property based test
\r\n
Property based tests are used to check that a certain property holds with randomly generated input parameters. I’m using HSpec as testing framework and QuickCheck as tool for generating test data:
\r\n
spec :: Spec\r\nspec = do\r\n describe "planets" $ do\r\n describe "food" $ do\r\n it "food requirement for positive amount of population is more than zero" $ do\r\n forAll positivePopulation $ \\x -> foodRequirement x > RawResource 0\r\n\r\n it "food base production for farms is equal or greater than their amount" $ do\r\n forAll someFarms $ \\x -> (sum (fmap foodBaseProduction x)) > (RawResource $ length x)
\r\n
Above we have two tests. First one checks that with any non-zero population, foodRequirement is greater than 0. Second one check that with any positive amount of farm, foodBaseProduction is greater than amount of the farms.
\r\n
positivePopulation is Generator, that is used by QuickCheck to generate random data for testing. Its definition is shown below:
\r\n
singlePopulation :: Gen PlanetPopulation\r\nsinglePopulation = do\r\n let aPlanetId = toSqlKey 0\r\n let aRaceId = toSqlKey 0\r\n aPopulation <- arbitrary `suchThat` \\x -> x > 0\r\n return $ PlanetPopulation aPlanetId aRaceId aPopulation\r\n\r\npositivePopulation :: Gen [PlanetPopulation]\r\npositivePopulation = do\r\n k <- arbitrary `suchThat` \\x -> x > 0\r\n vectorOf k singlePopulation
\r\n
Generated data can be really simple or very complex. Generating complex data is often convenient to break into smaller steps and write generators for them.
\r\n
Property based tests are somewhat harder to write than unit tests, but they can potentially cover edge cases that might otherwise not been discovered.
\r\n
Working with database
\r\n
All tests shown so far have been testing pure code, that is, code that is data in, data out. When database is introduced, things get more complicated. Suddenly there’s much more possibilities for errors. Below is an example of such a test:
There’s a lot more code that had to be written for this test and majority of it is for setting up database state. The test if for ensuring that when good harvest boost expires, it is removed from database and respective news article is created.
\r\n
These kinds of tests have a lot more code and are much more slower to run because of the communication with a database. There’s also more cases where something can go wrong. But in the end, these kinds of tests are needed if one wants to verify that interaction with database is working as planned.
\r\n
Testing API
\r\n
Last example is about testing REST API. There are two tests, where the first one is checking that proper access control is in place and second one checks that pending messages are correctly retrieved.
Here extra complication is created by the fact that many features of the system are behind authentication and authorization. Luckily Yesod comes with helper function authenticateAs, that allows code to authenticate when system is running in development mode.
\r\n
These test are even slower than any of the previous ones, but on the other hand, they test whole chain from user interaction to database and back.
\r\n
In closing
\r\n
There’s lots of things that I couldn’t cover in such a short time, like various types of tests: UI testing, performance testing, security testing, long running testing…, the list goes on and on. But hopefully this episode gave you ideas what kinds of tests one can write and how to get started doing so using Haskell.
\r\n
Best way to reach me is email or at fediverse, where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','haskell, testing, HSpec, QuickCheck',0,0,1),
(2924,'2019-10-17','Hacking an Alarm Clock to Make it Quieter',365,'I talk about installing a resistor in the speaker wire of an alarm clock so it won\'t be so loud','
The alarm clock on my bedside table had a very loud alarm—so loud that it scared me and made my heart race when it went off. I know you\'re thinking I should just use an alarm on my phone, but for whatever reason I wanted to use the alarm clock. In this episode I talk about installing a resistor in the speaker wires of the alarm clock so that it won\'t be so loud when it goes off. It\'s all good now. Loud enough to wake me up, but not so loud that it scares everyone.
\r\n\r\n
\r\n',238,0,0,'CC-BY-SA','clocks, electronics, decibels, noise levels, alarm clocks, alarms',0,0,1),
(2937,'2019-11-05','Lord D\'s Film Reviews: His Girl Friday',2937,'Lostnbronx reviews an old screwball comedy.','
Ignore the address for the film that I give in the review. Here’s a MUCH better copy than the one I watched. It’s another upload on Archive.org:
\r\n',107,109,0,'CC-0','review, film, lord d',0,0,1),
(2933,'2019-10-30','A walk through my PifaceCAD Python code – Part 1',871,'In this series a do whirl wind tour of the Python code I developed for my PifaceCAD board','
In this series a do whirl wind tour of the Python code I developed to control my PifaceCAD raspberry pi add on board. I this use to control a music player running on a remote raspberry pi upstairs.
\r\n
In this episode I cover my use of global variables.
\r\n
List of global variables along with associated comments explaining what they are used for
\r\n
# GLOBAL VARIABLES\r\n\r\nRemoteDevice = "pi@192.168.1.13"\r\n# Username and ip address of the remote device to control\r\n\r\nSeekMin = -6\r\n# Sets the minimum value of the variable SeekPosition\r\n\r\nSeekMax = 6\r\n# Sets the maximum value of the variable SeekPosition\r\n\r\nSeekPosition = 0\r\n# stores seek menu position,\r\n\r\nSeekMenu = False\r\n# used to track seek menu state, ie are we in seek menu or not\r\n\r\nFirstPass = True\r\n# Used to track 1st time button 5 (backlight toggle) is pushed, turns off blinkstick\r\n\r\nLcdLightOn = False\r\n# used to track toggle sate of backlight button 5\r\n\r\nMenuMin = 0\r\n# Sets the minimum value of variable "Menu"\r\n\r\nMenuMax = 2\r\n# Sets the maximum value of variable "Menu"\r\n\r\nMenu = 0\r\n# global variable used to keep trak of selected menu\r\n\r\nIrActive = False\r\n# used to track toggle state of active infrared buttons, when false disables\r\n# all buttons on the remote control except the blue button.\r\n\r\nStoredTime = 0\r\n# Stores curent time in seconds when a button is pushed, used by double button tap feature\r\n\r\n#GET_IP_CMD = "hostname –all-ip-addresses"\r\n# Debian 7 wheezy, Command to get IP adress\r\n\r\nGET_IP_CMD = "hostname --all-ip-addresses | cut -d' ' -f1"\r\n# Debian 8 jessie, Command to get IP adress\r\n\r\n#GET_ESSID_CMD = "iwconfig wlan0 | grep 'ESSID:' | cut -d':' -f2"\r\n# Debian 7 wheezy, Command to get wifi ESSID\r\n\r\nGET_ESSID_CMD = "/sbin/iwconfig wlan0 | grep 'ESSID:' | cut -d':' -f2"\r\n# Debian 8 wheezy, Command to get wifi ESSID\r\n\r\nGET_WIFI_STRENGTH_CMD = "/sbin/iwconfig wlan0 | grep 'Link Quality=' | awk '{ print $2 }'"\r\n# Command to get wifi signal strength
\r\n',201,38,1,'CC-BY-SA','Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
(2923,'2019-10-16','Describing how I listen to podcasts PART 5',1750,'In this episode I cover how I use my 2nd add on board the PiFace Control and Display','
Below are examples of messages shown on the screen during operation
\r\n
System Up (Unfortunately I didn’t get a picture of this message)
\r\n
\r\nShows the unit waiting to get a wi-fi connection and get given an IP address.
\r\n
\r\nUnit goes to the HPR site and gets the number of days to free slot in the show queue. At the time when I took the picture the queue had a healthy 22 shows!
\r\n
Links to three previous shows I did that mention the Blinkstick
0 [PODCASTS]\r\n0 1 <|| PLAY/PAUSE (Toggles moc between play and Pause)\r\n0 2 << INFORMATION(Displays information about the current track)\r\n0 3 << (Move to previous track in playlist)\r\n0 4 << (Move to next track in playlist)\r\n0 5 LIGHT (Toggle back-light on LCD screen)\r\nPUSH IN TOP TOGGLE BUTTON (Seek forward or back in current track)
\r\n
\r\nMenu 1 Audiobooks screens
\r\n
1 [AUDIOBOOKS]\r\n1 1 <|| PLAY/PAUSE (Toggles moc between play and Pause)\r\n1 2 << INFORMATION(Displays information about the current track)\r\n1 3 << (Move to previous track in playlist)\r\n1 4 << (Move to next track in playlist)\r\n1 5 LIGHT (Toggle back-light on LCD screen)\r\nPUSH IN TOP TOGGLE BUTTON (Seek forward or back in current track)
\r\n
\r\nMenu 2 System screens
\r\n
2 [SYSTEM]\r\n2 1 Sys Information (System information)\r\n2 2 WiFi (Displays WiFi inofrmation such SSID & signal strength)\r\n2 3 HPR (Displays the number days to the next free slots on FPR que)\r\n2 4 Not shown, (Not in use)\r\n2 5 LIGHT (Toggle back-light on LCD screen)\r\nPUSH IN TOP TOGGLE BUTTON (Shut-down the Raspberry Pi)
\r\n \r\nExample of a message being sent to the unit telling me that a backup is complete. The bright pink LED on the Blinkstick lets me know at a glance that a message has been sent to the display.
\r\n \r\n \r\nA flavour of what information is shown when the information button 2 is pushed. The picture showing the title scrolling from right to left was blurred so I didn’t include this.
\r\n
\r\nThe menu displayed during seek, this in initiated by pushing and releasing the toggle button while either in the Podcasts main menu 0 or Audio book main menu 1.
\r\n
\r\nThe shut-down menu this in initiated by pushing and releasing the toggle button while in the System main menu 2.
\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
-(2925,'2019-10-18','LinuxLugCast\'s Memorial for FiftyOneFifty ',7541,'We are here tonight to share memories of our friend Donald Grier aka FiftyOneFifty.','
I was in the back room pottering away when espeak notified me that 5150 \r\nhad passed away. I went back to the computer and read the announcement \r\nin the IRC Logs and confirmed the news. Some dude I had never met, never \r\nseen in my life, and didn’t even know his real name, was gone and I was \r\nin the back room crying my eyes out.
\r\n
Crying for the loss of a friend.
\r\n
When had he become a friend ?
\r\n
People have been socializing since the dawn of humans, be it at the camp \r\nfire, the forge, pub, hairdresser, sports club, church, or wherever.
\r\n
For us it was via Linux podcasting. You are there because you share a \r\ncommon interest. If you were into Linux podcasting then you could not \r\nhelp but get to know fiftyonefifty. The guy turned up everywhere if not \r\non the podcasts themselves he was commenting on them. I have 619 \r\nmessages from him about HPR alone.
\r\n
He submitted his first show back in 2010 and has been a regular since \r\nthen. At some point after that I knew that he was on my “special list” \r\nof people who I could rely upon to fill the queue if needed.
\r\n
And as I sat there crying I realized that he had also sneaked onto my \r\nlist of friends.
\r\n
I’ve not always been a fan of the New Year Show, but now I am glad for \r\nit. While I may never get to share a beer with him any more, or take him \r\nup on his promise to let me fire off some rounds on his farm, I did at \r\nleast get to shoot the breeze with him for many a happy hour.
\r\n
Goodbye old friend you will be missed
\r\n
Anonymous \r\nA Ramble for FiftyOneFifty: King of Ramblers
\r\n
I am writing a Ramble for a man I knew only as FiftyOneFifty. I never knew his real name, \r\nnor do I know if he knew mine. In many things, Names do not matter, People, Actions, and \r\nfeeling do. We podcasted together off and on, over several years. I don’t recall exactly \r\nhow many. It doesn’t matter now, since they are all that there will ever be. We grew to be \r\ngood friends. I never met him in person, online life is like that. I only know my life would be \r\nmuch poorer, if I had not known him. Hearing he died, shattered me. This Ramble is my try \r\nat putting most the pieces back in place. Of course, nothing can replace the largest piece, \r\nthe Man Himself. My heart and prayers go out to those friends and family dealing with his loss.
\r\n
His death is a harsh, unchangeable, fact. I shall focus on his life, and things better remembered \r\nthan the wall we all will hit one day. Fifty was a man if Life, Joy, and passions. That is how I shall \r\nwrite of him. I had a far too short time, to learn about him, and from him. It will also warm my heart, \r\nwhere he live yet, and has for a long time. I learned this fact, only after I could no longer talk with him.
\r\n
I found him easy to talk with, and listen to. He was also “Vaccinated with a Victrola Needle ” as \r\nmy relatives might say. He could ramble on for hours. enjoyably. He virtually always made sense, \r\neven when in his cups. He shared himself, his hobbies, experience, and his travels with us, on our \r\npodcasts. While he went to Linux events, he never limited himself to just linux topics. He reported the \r\nnon Linux features of events. This great for choosing family trips to them. He included accommodations, restaurants, and pubs in the area. I don’t travel, or drive, so these second hand visit were a delight.
\r\n
His research and Linux activities made up much of his contribution to our podcasts. He life also \r\nflowed in, to entertain and inform us. He lived in the country, farming, cows, trouble getting Internet \r\nservice were included. My parents can off farms, so he even kept my ties to that life alive. Firearms, cars, especially his beloved Hearse were shared interests. tale from his tech support work, for businesses and schools enlightened me. Farmers are natural pack rats, so gathering all sorts of discarded computer gear was natural. Unfortunately he lost most of it in the fire which destroyed his house. Losing his house, and even his dear father, never seemed to blight his spirit or life, in the long run. It would be natural to keep such private matters from more distant friends, as I was. Nor did his long illness color the side of him I saw. it got in his way, sometimes, as I recall, but never in his spirit. I wish I had been closer, to offer myself more to the man I miss dearly. I must just try to use his independent example, in my own life. Anyone could do much, worse. His quiet touch helped heal me in ways I am only now realizing.
\r\n
I started the day in tears, still aching from losing a rare, true friend. Then I recalled a song from Toby Keith, called “Cryin’ for Me (Wayman’s Song ) written about he loss of his close friend, Wayman Tisdale. Toby found about his friends passing on Friday. On Sunday Toby was driven to write the memorial song. In it he says his tears are not for his lost friend, who is now in Heaven, but for Toby himself, and all those family, and friends, Wayman left behind. I believe Fifty is in Heaven, with his Dad, and those who have gone before. He will see things from the Good Seats. He can enjoy all the Holidays, and never feel the cold. I was driven to write like Toby, to handle my own shock and grief. We Cry and Mourn, those left behind in the Mortal world, for our loss and pain. Our dear One is beyond pain, perhaps for the first time in years. He has earned his time in Grace. He as paid as we pay now, for life beyond grief, with those who have gone ahead. I hope my words and memories may help the ones he left behind. Pain is a Mortal thing. It need not be deadly, or poisonous. Fifty’s Life is a great example of this and many other things. I hope we can go forward, with his example helping heal our loss of him. God Bless You, Fifty, and those you touched in turn.
\r\n',269,0,1,'CC-BY-SA','LinuxLugCast, FiftyOneFifty, Memorial, Syndication',0,0,1),
+(2925,'2019-10-18','LinuxLugCast\'s Memorial for FiftyOneFifty ',7541,'We are here tonight to share memories of our friend Donald Grier aka FiftyOneFifty.','
I was in the back room pottering away when espeak notified me that 5150 \r\nhad passed away. I went back to the computer and read the announcement \r\nin the IRC Logs and confirmed the news. Some dude I had never met, never \r\nseen in my life, and didn’t even know his real name, was gone and I was \r\nin the back room crying my eyes out.
\r\n
Crying for the loss of a friend.
\r\n
When had he become a friend ?
\r\n
People have been socializing since the dawn of humans, be it at the camp \r\nfire, the forge, pub, hairdresser, sports club, church, or wherever.
\r\n
For us it was via Linux podcasting. You are there because you share a \r\ncommon interest. If you were into Linux podcasting then you could not \r\nhelp but get to know fiftyonefifty. The guy turned up everywhere if not \r\non the podcasts themselves he was commenting on them. I have 619 \r\nmessages from him about HPR alone.
\r\n
He submitted his first show back in 2010 and has been a regular since \r\nthen. At some point after that I knew that he was on my “special list” \r\nof people who I could rely upon to fill the queue if needed.
\r\n
And as I sat there crying I realized that he had also sneaked onto my \r\nlist of friends.
\r\n
I’ve not always been a fan of the New Year Show, but now I am glad for \r\nit. While I may never get to share a beer with him any more, or take him \r\nup on his promise to let me fire off some rounds on his farm, I did at \r\nleast get to shoot the breeze with him for many a happy hour.
\r\n
Goodbye old friend you will be missed
\r\n
Anonymous \r\nA Ramble for FiftyOneFifty: King of Ramblers
\r\n
I am writing a Ramble for a man I knew only as FiftyOneFifty. I never knew his real name, \r\nnor do I know if he knew mine. In many things, Names do not matter, People, Actions, and \r\nfeeling do. We podcasted together off and on, over several years. I don’t recall exactly \r\nhow many. It doesn’t matter now, since they are all that there will ever be. We grew to be \r\ngood friends. I never met him in person, online life is like that. I only know my life would be \r\nmuch poorer, if I had not known him. Hearing he died, shattered me. This Ramble is my try \r\nat putting most the pieces back in place. Of course, nothing can replace the largest piece, \r\nthe Man Himself. My heart and prayers go out to those friends and family dealing with his loss.
\r\n
His death is a harsh, unchangeable, fact. I shall focus on his life, and things better remembered \r\nthan the wall we all will hit one day. Fifty was a man if Life, Joy, and passions. That is how I shall \r\nwrite of him. I had a far too short time, to learn about him, and from him. It will also warm my heart, \r\nwhere he live yet, and has for a long time. I learned this fact, only after I could no longer talk with him.
\r\n
I found him easy to talk with, and listen to. He was also “Vaccinated with a Victrola Needle ” as \r\nmy relatives might say. He could ramble on for hours. enjoyably. He virtually always made sense, \r\neven when in his cups. He shared himself, his hobbies, experience, and his travels with us, on our \r\npodcasts. While he went to Linux events, he never limited himself to just linux topics. He reported the \r\nnon Linux features of events. This great for choosing family trips to them. He included accommodations, restaurants, and pubs in the area. I don’t travel, or drive, so these second hand visit were a delight.
\r\n
His research and Linux activities made up much of his contribution to our podcasts. He life also \r\nflowed in, to entertain and inform us. He lived in the country, farming, cows, trouble getting Internet \r\nservice were included. My parents can off farms, so he even kept my ties to that life alive. Firearms, cars, especially his beloved Hearse were shared interests. tale from his tech support work, for businesses and schools enlightened me. Farmers are natural pack rats, so gathering all sorts of discarded computer gear was natural. Unfortunately he lost most of it in the fire which destroyed his house. Losing his house, and even his dear father, never seemed to blight his spirit or life, in the long run. It would be natural to keep such private matters from more distant friends, as I was. Nor did his long illness color the side of him I saw. it got in his way, sometimes, as I recall, but never in his spirit. I wish I had been closer, to offer myself more to the man I miss dearly. I must just try to use his independent example, in my own life. Anyone could do much, worse. His quiet touch helped heal me in ways I am only now realizing.
\r\n
I started the day in tears, still aching from losing a rare, true friend. Then I recalled a song from Toby Keith, called “Cryin’ for Me (Wayman’s Song ) written about he loss of his close friend, Wayman Tisdale. Toby found about his friends passing on Friday. On Sunday Toby was driven to write the memorial song. In it he says his tears are not for his lost friend, who is now in Heaven, but for Toby himself, and all those family, and friends, Wayman left behind. I believe Fifty is in Heaven, with his Dad, and those who have gone before. He will see things from the Good Seats. He can enjoy all the Holidays, and never feel the cold. I was driven to write like Toby, to handle my own shock and grief. We Cry and Mourn, those left behind in the Mortal world, for our loss and pain. Our dear One is beyond pain, perhaps for the first time in years. He has earned his time in Grace. He as paid as we pay now, for life beyond grief, with those who have gone ahead. I hope my words and memories may help the ones he left behind. Pain is a Mortal thing. It need not be deadly, or poisonous. Fifty’s Life is a great example of this and many other things. I hope we can go forward, with his example helping heal our loss of him. God Bless You, Fifty, and those you touched in turn.
\r\n',269,0,1,'CC-BY-SA','LinuxLugCast, FiftyOneFifty, Memorial, Syndication',0,0,1),
(2929,'2019-10-24','Recovering Files from a Dead MacBook Air',482,'I talk about recovering the files from my wife\'s dead MacBook Air using an Ubuntu Live CD.','
I talk about becoming a household hero by recovering my wife\'s files from her dead MacBook Air. Her laptop would not boot, shutting down seconds into the process each time she tried to start it up. I used an Ubuntu Live CD (DVD), with the commands fdisk and fsck to repair the damaged filesystem on the Mac. It still wouldn\'t boot even with the repaired filesystem, but I was able to mount the drive and copy her files to a USB drive.
\r\n',238,0,0,'CC-BY-SA','Ubuntu,Mac OS X,File Recovery,Filesystem Repair',0,0,1),
(2931,'2019-10-28','Wallabag for on premises article aggregation',690,'In this episode, I describes my trials and eventual triumph in installing Wallabag','
Addendum
\r\n
I forgot to mention that Wallabag is also offered as a service for a small fee. Check out the website for more information.
\r\n',300,0,0,'CC-BY-SA','self-hosted, docker',0,0,1),
(2939,'2019-11-07','Submit a show to Hacker Public Radio in 10 easy steps',601,'This is a 10 step walkthrough of submitting a show to HPR','
Click on "Calendar" (the link is not obvious, so use your browser\'s find functionality to search for the word "Calendar"). \r\nEdit: Please use the ⇧Upload⇧ link in the menu bar\r\n
\r\n
Choose a slot
\r\n
Submit your email address
\r\n
Click the link in the confirmation email
\r\n
Create your profile (if new), then fill in the form with title, summary and show notes
\r\n
Attach your episode and submit (wait for long upload process)
\r\n
Receive your confirmation email, and enjoy your episode!
\r\n\r\n',300,45,0,'CC-BY-SA','podcast, hpr, how-to',0,0,1),
@@ -19256,18 +19376,18 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2935,'2019-11-01','The work of fire fighters, part 3',1807,'The continued introduction into the work of fire fighters','
Continued general basic knowledge of fire fighting.
\r\n
Talking about large water system, breathing gear, “the walk”, flash-over and back-draft.
\r\n',369,0,0,'CC-BY-SA','fire fighting, fire brigade',0,0,1),
(2941,'2019-11-11','Server Basics 107: Minishift and container management',2331,'Klaatu introduces Minishift, a local test environment for a single-node cloud','
Background sounds provided by some road noise, and a train.
\r\n',329,0,1,'CC-BY-SA','science',0,0,1),
-(3196,'2020-11-02','HPR Community News for October 2020',5375,'Dave and Ken review the months happenings, and try various pronunciations of Cedric De Vroeys name.','\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
hpr3153\n(2020-09-02) \"Fixing eBooks with Calibre and pdfcrop\"\nby Ken Fallon.
\n
\n
\n
\nComment 1:\nKen Fallon on 2020-10-21:\n\"Thank for this\"
\n
\n
This month\'s shows
\n
There are 13 comments on 9 of this month\'s shows:
Comment 1:\nmcnalu on 2020-10-26:\n\"Interesting info from Sweden\"
\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
Call for shows
\n
\n
There are just a few days until the next free slot on the calendar. More shows are urgently needed!
\n
\n
Question
\n
\n
Which undead would you rather be from D&D v 5 - Lich or Vampire ? And why ?
\n
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 6 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3221,'2020-12-07','HPR Community News for November 2020',2948,'HPR Volunteers talk about shows released and comments posted in November 2020','\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 13 comments in total.
\n
Past shows
\n
There are 7 comments on\n6 previous shows:
\n
\n
hpr1771\n(2015-05-18) \"Audacity: Label Tracks\"\nby Jon Kulp.
\n
\n
\n
\nComment 4:\nKen Fallon on 2020-11-19:\n\"Yes - found it\"
\n
hpr1796\n(2015-06-22) \"Audacity - Chains, Notches and Labels\"\nby cheeto4493.
\n
\n
\n
\nComment 1:\nKen Fallon on 2020-11-19:\n\"And this one as well\"
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 3:\nKen Fallon on 2020-11-19:\n\"And the final piece of the puzzle\"
Comment 1:\nnorrist on 2020-11-25:\n\"Great episode\"
Comment 2:\nKevin O'Brien on 2020-11-27:\n\"I loved the show\"
\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
Tags and Summaries
\n
There were no tag or summary updates in the past month.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3196,'2020-11-02','HPR Community News for October 2020',5375,'Dave and Ken review the months happenings, and try various pronunciations of Cedric De Vroeys name.','\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
hpr3153\n(2020-09-02) \"Fixing eBooks with Calibre and pdfcrop\"\nby Ken Fallon.
\n
\n
\n
\nComment 1:\nKen Fallon on 2020-10-21:\n\"Thank for this\"
\n
\n
This month\'s shows
\n
There are 13 comments on 9 of this month\'s shows:
Comment 1:\nmcnalu on 2020-10-26:\n\"Interesting info from Sweden\"
\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
Call for shows
\n
\n
There are just a few days until the next free slot on the calendar. More shows are urgently needed!
\n
\n
Question
\n
\n
Which undead would you rather be from D&D v 5 - Lich or Vampire ? And why ?
\n
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 6 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3221,'2020-12-07','HPR Community News for November 2020',2948,'HPR Volunteers talk about shows released and comments posted in November 2020','\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 13 comments in total.
\n
Past shows
\n
There are 7 comments on\n6 previous shows:
\n
\n
hpr1771\n(2015-05-18) \"Audacity: Label Tracks\"\nby Jon Kulp.
\n
\n
\n
\nComment 4:\nKen Fallon on 2020-11-19:\n\"Yes - found it\"
\n
hpr1796\n(2015-06-22) \"Audacity - Chains, Notches and Labels\"\nby cheeto4493.
\n
\n
\n
\nComment 1:\nKen Fallon on 2020-11-19:\n\"And this one as well\"
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 3:\nKen Fallon on 2020-11-19:\n\"And the final piece of the puzzle\"
Comment 1:\nnorrist on 2020-11-25:\n\"Great episode\"
Comment 2:\nKevin O'Brien on 2020-11-27:\n\"I loved the show\"
\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
Tags and Summaries
\n
There were no tag or summary updates in the past month.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2942,'2019-11-12','Why I love lisps',509,'A very wooden and scripted episode about why I love the lisp programming language family','
Syntax example
\r\n
(define (fib-rec n)\r\n (if (< n 2)\r\n n\r\n (+ (fib-rec (- n 1))\r\n (fib-rec (- n 2)))))\r\n
\r\n',381,0,0,'CC-BY-SA','lisp, programming',0,0,1),
(2955,'2019-11-29','Machine Learning / Data Analysis Basics',1293,'We talk about different machine learning techniques','
In this episode, I talk about different techniques that we can use to predict the outcome of some question depending on input features.
\r\n
The different techniques I will go through are the ZeroR and OneR that will create a baseline for the rest of the methods.
\r\n
Next up, we have the Naive Bayes classifier that is simple but powerful for some applications.
\r\n
Nearest neighbor and Decision trees are next up that requires more training but is very efficient when you infer results.
\r\n
Multi-layer perceptron (MLP) is the first technique that is close to the ones we usually see in Machine Learning frameworks used today. But it is just a precursor to Convolutional Neural Network (CNN) because of the size requirements. MLPs have the same size for all the hidden layers, which makes it unfeasible for larger networks.
\r\n
CNNs, on the other hand, uses subsampling that will shrink the layer maps to reduce the size of the network without reducing the accuracy of the predictions.
\r\n
Links
\r\n
\r\n
Some references for further reading on Wikipedia.\r\n
A video I made some years ago where you can see some visual aids for this subject. \r\nhttps://youtu.be/Xys1N_7MbSs
\r\n
',382,0,0,'CC-BY-SA','machine learning, basics, theory',0,0,1),
(2944,'2019-11-14','ONICS Basics Part 4: Network Flows and Connections',989,'I try to add a bit more basic networking info while writing a quick script for Dave Morris','
Terminology
\r\n
\r\n
connection - a bi-directional communication channel between two programs over a network
\r\n
client - the initiator of a connection
\r\n
server - the receiver of the connection
\r\n
port - a common term for the address of a program or service on a given machine
\r\n
5-tuple - the combination of protocol, client machine network address, client port, server machine network address, server port that uniquely identifies a connection
\r\n
flow - a grouping of packets to be treated in a common way
\r\n
microflow - a flow with a fine level of granularity such as the packets from one direction of traffic in a connection
\r\n
\r\n
The topflow.sh Script
\r\n
#!/bin/sh\r\n\r\n# Start a capture in the background that drops the packets\r\n# and just reports the flow events\r\npktin $1 | nftrk -d -f /tmp/flows.txt &\r\nPID=$!\r\n\r\n# On CTRL-C clean kill the capture and clean up\r\ntrap "kill $PID ; rm -f /tmp/flows.txt /tmp/topflows.txt /tmp/namecache.txt ; exit 0" INT TERM\r\n\r\n# Once per second do\r\n# look at the last 100 flows\r\n# sort them by 5-tuple\r\n# remove duplicates\r\n# convert ports, protocols and addresses to names\r\n# sort by data usage per flow in reverse order (highest first)\r\n# a little more pretty printing\r\n# only take the top 20 lines\r\n# clear the screen and print the result\r\nwhile [ 1 ] ; do\r\n tail -100 /tmp/flows.txt |\r\n sort -s -t '|' -k 3,3 |\r\n awk -f uniqflows.awk |\r\n awk -f prflow.awk |\r\n sort -s -t ',' -k 3 -r |\r\n awk -f columns.awk |\r\n head -20 > /tmp/topflows.txt\r\n clear\r\n cat /tmp/topflows.txt\r\n sleep 1\r\ndone\r\n
\r\n',259,61,0,'CC-BY-SA','command line networking',0,0,1),
-(2945,'2019-11-15','Saturday at OggCamp Manchester 2019',2225,'Interviews and chat from the UK\'s largest FLOSS event.','
\r\nOggCamp is an unconference celebrating Free Culture, Free and Open Source Software, hardware hacking, digital rights, and all manner of collaborative cultural activities and is committed to creating a conference that is as inclusive as possible. \r\nThis year a team of HPR volunteers hit the show.\r\n
\r\n
\r\n \r\nKen\'s recording kit and some of the stickers.\r\n
\r\n \r\nTimttmy\'s script to turn an Android phone into a webcam. Two versions of the script to take a screenshot and post it to the web.\r\n
\r\n
\r\n \r\nSurveillance state ?\r\n
\r\n
\r\n \r\nOur latest host Nihilazo signs the booth.\r\n
\r\n
\r\n \r\nAn Interview with Ban Parsons from the MatrixAn open network for secure, decentralized communication\r\n
\r\n
\r\n \r\nAn Interview with mystorm.uk makers of the open FPGA. An FPGA chip is a re-programmable piece of silicon hardware, it can be reconfigured or programmed to a logic circuit of your own design.\r\n\r\n \r\nIn 2016 we decided to setup up the myStorm project in order to build OpenSource FPGA hardware. Several years later we are building the 5th generation of BlackIce Development boards. BlackIce Mx the latest generation of our hardware has been built using BlackEdge open hardware standard which enable the \'Core\' Board IceCore to be separated from its carrier board which provides MixMod and Pmod hardware add-ons. Please take a look at the myStorm forum to ask questions and participate in our community. \r\n\r\n
\r\n',30,78,0,'CC-BY-SA','OGGCamp, FSFE, Matrix, BlackEdge, mystorm, blackice, fswebcam, android, sshpass',0,0,1),
-(2946,'2019-11-18','Sunday at OggCamp Manchester 2019',3378,'Interviews and chat from the UK\'s largest FLOSS event.','
\r\n \r\n\r\nAt Drake Music we are leaders in music, disability and technology. \r\nWe are innovators, educators, curators and advocates. We believe everyone has the right to express themselves creatively through music. We use new technologies and ideas to open up access to music for all. Our vision is a world where disabled and non-disabled musicians work together as equals.\r\n
Manchester Grey Hats is a place for all those interested in hacking and cyber security to learn and share. We run capture the flags, workshops and perform/present security research.
\r\n
We encourage all skill levels and those from all backgrounds. Are you an aspiring hacker or a developer thinking about security? Come along and learn. Presenting is open to all members, so if you have something you’d like to present but aren’t ready for the big conferences, get in touch.
\r\n\r\n
Said best by The Mentor – “This is our world now… the world of the electron and the switch, the beauty of the baud”
\r\n\r\n
Although we meet face to face once a month, MGH is mostly an online community. We encourage people to join us in person for workshops and events but if you can\'t, join us on Slack and our live stream.
\r\n\r\n
\r\n \r\nAn example of the of the locks that needed to be picked for the FlawCon Capture the Flag event.\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\nHow to hold the lock while you are picking it.\r\n
\r\n',30,78,0,'CC-BY-SA','OGGCamp, FSFE, Matrix, BlackEdge, mystorm, blackice, fswebcam, android, sshpass',0,0,1),
+(2945,'2019-11-15','Saturday at OggCamp Manchester 2019',2225,'Interviews and chat from the UK\'s largest FLOSS event.','
\r\nOggCamp is an unconference celebrating Free Culture, Free and Open Source Software, hardware hacking, digital rights, and all manner of collaborative cultural activities and is committed to creating a conference that is as inclusive as possible. \r\nThis year a team of HPR volunteers hit the show.\r\n
\r\n
\r\n \r\nKen\'s recording kit and some of the stickers.\r\n
\r\n \r\nTimttmy\'s script to turn an Android phone into a webcam. Two versions of the script to take a screenshot and post it to the web.\r\n
\r\n
\r\n \r\nSurveillance state ?\r\n
\r\n
\r\n \r\nOur latest host Nihilazo signs the booth.\r\n
\r\n
\r\n \r\nAn Interview with Ban Parsons from the MatrixAn open network for secure, decentralized communication\r\n
\r\n
\r\n \r\nAn Interview with mystorm.uk makers of the open FPGA. An FPGA chip is a re-programmable piece of silicon hardware, it can be reconfigured or programmed to a logic circuit of your own design.\r\n\r\n \r\nIn 2016 we decided to setup up the myStorm project in order to build OpenSource FPGA hardware. Several years later we are building the 5th generation of BlackIce Development boards. BlackIce Mx the latest generation of our hardware has been built using BlackEdge open hardware standard which enable the \'Core\' Board IceCore to be separated from its carrier board which provides MixMod and Pmod hardware add-ons. Please take a look at the myStorm forum to ask questions and participate in our community. \r\n\r\n
\r\n',30,78,0,'CC-BY-SA','OGGCamp, FSFE, Matrix, BlackEdge, mystorm, blackice, fswebcam, android, sshpass',0,0,1),
+(2946,'2019-11-18','Sunday at OggCamp Manchester 2019',3378,'Interviews and chat from the UK\'s largest FLOSS event.','
\r\n \r\n\r\nAt Drake Music we are leaders in music, disability and technology. \r\nWe are innovators, educators, curators and advocates. We believe everyone has the right to express themselves creatively through music. We use new technologies and ideas to open up access to music for all. Our vision is a world where disabled and non-disabled musicians work together as equals.\r\n
Manchester Grey Hats is a place for all those interested in hacking and cyber security to learn and share. We run capture the flags, workshops and perform/present security research.
\r\n
We encourage all skill levels and those from all backgrounds. Are you an aspiring hacker or a developer thinking about security? Come along and learn. Presenting is open to all members, so if you have something you’d like to present but aren’t ready for the big conferences, get in touch.
\r\n\r\n
Said best by The Mentor – “This is our world now… the world of the electron and the switch, the beauty of the baud”
\r\n\r\n
Although we meet face to face once a month, MGH is mostly an online community. We encourage people to join us in person for workshops and events but if you can\'t, join us on Slack and our live stream.
\r\n\r\n
\r\n \r\nAn example of the of the locks that needed to be picked for the FlawCon Capture the Flag event.\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\nHow to hold the lock while you are picking it.\r\n
\r\n',30,78,0,'CC-BY-SA','OGGCamp, FSFE, Matrix, BlackEdge, mystorm, blackice, fswebcam, android, sshpass',0,0,1),
(2947,'2019-11-19','The Mimblewimble Protocol',1261,'mimblewimble is a new blockchain protocol for scalability, privacy and fungibility','
Financial privacy is critical for adoption of cryptocurrency as a means of exchange. Individuals worry about employers monitoring their spending details, insurers increasing rates based on purchases and landlords raising rents when they get a promotion. Businesses can only operate using cryptocurrency if they can prevent disclosure of vendor payments, rates paid to suppliers, payroll details, and so on. At the same time, they need to selectively disclose financial data to governments and might need to demonstrate compliance in some industries.
\r\n
Mimblewimble is a new protocol that uses cryptography to achieve striking reductions in blockchain size, so users can run a full node on low powered devices like phones. It offers the strongest privacy protection assurances around, through a variety of clever tricks. For one thing, transaction history is not recorded, which also results in a smaller blockchain. There are no addresses and no transaction amounts are recorded.
\r\n
We’re not going to focus on the cryptography, although it’s a fascinating example of just how much progress is being made in recent years. We’ll focus instead on what makes this mysterious network protocol unique among cryptocurrencies.
\r\n',379,110,0,'CC-BY-SA','blockchain, privacy',0,0,1),
(2954,'2019-11-28','Wrestling As You Like It episode 1',462,'A Wrestling podcast reporting on indie wrestling. Today we are talking about different TV styles.','
TV and pro wrestling go hand in hand. Both have fed off of each other, and with the internet we are now exposed to many different promotions with their own visual style in order to broadcast wrestling in the ring.
\r\n',354,0,1,'CC-BY-SA','Pro Wrestling',0,0,1),
(2949,'2019-11-21','Grin and Beam: The 2 major mimblewimble blockchains',1387,'Grin and Beam are two mimblewimble implementations that are very different & we take a look at both','
Last time we reviewed the mimblewimble protocol for blockchain networks. This is an innovative protocol focused on privacy and scalability.
\r\n
In this episode we take a closer look at the two major implementations of mimblewimble, called Grin and Beam. They are both interesting projects that take very different approaches, yet both have managed to launch working blockchains that preserve the core strengths of the protocol.
',379,110,1,'CC-BY-SA','blockchain, privacy',0,0,1),
(2960,'2019-12-06','Dehydrated Foods',835,'Dehydrating your own fruits and vegetables for healthy snacks','
I have begun to dehydrate fruits and vegetables at home with my own dehydrator, and it lets me have fresher products without all of the additives. In this episode I discuss both the why and the how.
',198,100,0,'CC-BY-SA','Health, Diet',0,0,1),
-(2958,'2019-12-04','Haskell modules',1387,'tuturto talks about haskell modules','
With small programs it’s easy enough to have all code in single file. But as the program grows, you eventually want to organize things into separate files. In this episode I’ll talk a bit how to define modules and how to use them.
\r\n
Defining
\r\n
Each module is defined in separate file. In our example, we have file called multiplexer.hs, which contains our module definition.
We’re omitting actual function and type definitions as they aren’t important to this episode. In any case, there’s two functions: mix and match and two types: Plexer and Scooper that module exports (that is, these are available outside of the module). Plexer is imported as a type only and Scooper with field accessors or value constructors depending if it’s a record or algebraic datatype.
\r\n
Using modules
\r\n
In order to be able to use identifiers defined in separate module, we have to import them into our current one. In our imaginary program, we have main.hs that defines entry point for our program and we would like to import the definitions from Multiplexer module.
\r\n
Easiest one is to just have import Multiplexer at the start of the main. This brings all exported identifiers from Multiplexer and we can then use them. Both qualified and unqualified names are imported. Qualified means name is prepended with module name: Multiplexer.mix instead of just mix.
\r\n
If we want, we can specify what exactly should be imported: import Multiplexer (mix, match). This causes only functions mix and match be imported, while Plexer and Scooper are unavailable for us. Again, both qualified and unqualified names are imported.
\r\n
In case we want only qualified names, we’ll write import qualified Multiplexer. After this mix isn’t available, but Multiplexer.mix is (and all the other identifiers exported by Multiplexer).
\r\n
Sometimes module name is long and tedious to repeat when using qualified names. In these cases, renaming module while importing is a good option. This can be done by writing import Multiplexer as M. After this, instead of Multiplexer.mix you write M.mix.
\r\n
Final thing I’m going to mention is importing everything else except specified identifiers. This is done by writing import Multiplexer hiding (mix). This imports everything exported by Multiplexer, except mix.
\r\n
Summary
\r\n
There are many ways of importing and they can be mixed. Here’s a list of them:
import qualified Multiplexer as M (Plexer, Scooper(..))
\r\n
\r\n
In short:
\r\n
\r\n
Some identifiers can be chosen to be imported, while leaving others unimported
\r\n
Modules can be imported qualified (forcing an obligatory namespace qualifier to imported identifiers).
\r\n
Some identifiers can be skipped via the hiding clause.
\r\n
The module namespace can be renamed, with an as clause.
\r\n
\r\n
Prelude
\r\n
Prelude is base module containing lots of helpful types and functions, which is automatically imported by every module. If this is not what you want, there’s two options. First one is to use pragma at start of the file: {-# LANGUAGE NoImplicitPrelude #-}, which causes Prelude not to be imported. Another one is to manually import Prelude, which turns of automatic import: import qualified Prelude as P.
\r\n
Closing
\r\n
When system grows, it’s helpful to break it into more manageable pieces. For this we use modules. import is used to bring identifiers from other modules into current one.
\r\n
Questions, comments and feedback is welcomed. Best way to reach me is either email or in fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, modules',0,0,1),
+(2958,'2019-12-04','Haskell modules',1387,'Tuula talks about haskell modules','
With small programs it’s easy enough to have all code in single file. But as the program grows, you eventually want to organize things into separate files. In this episode I’ll talk a bit how to define modules and how to use them.
\r\n
Defining
\r\n
Each module is defined in separate file. In our example, we have file called multiplexer.hs, which contains our module definition.
We’re omitting actual function and type definitions as they aren’t important to this episode. In any case, there’s two functions: mix and match and two types: Plexer and Scooper that module exports (that is, these are available outside of the module). Plexer is imported as a type only and Scooper with field accessors or value constructors depending if it’s a record or algebraic datatype.
\r\n
Using modules
\r\n
In order to be able to use identifiers defined in separate module, we have to import them into our current one. In our imaginary program, we have main.hs that defines entry point for our program and we would like to import the definitions from Multiplexer module.
\r\n
Easiest one is to just have import Multiplexer at the start of the main. This brings all exported identifiers from Multiplexer and we can then use them. Both qualified and unqualified names are imported. Qualified means name is prepended with module name: Multiplexer.mix instead of just mix.
\r\n
If we want, we can specify what exactly should be imported: import Multiplexer (mix, match). This causes only functions mix and match be imported, while Plexer and Scooper are unavailable for us. Again, both qualified and unqualified names are imported.
\r\n
In case we want only qualified names, we’ll write import qualified Multiplexer. After this mix isn’t available, but Multiplexer.mix is (and all the other identifiers exported by Multiplexer).
\r\n
Sometimes module name is long and tedious to repeat when using qualified names. In these cases, renaming module while importing is a good option. This can be done by writing import Multiplexer as M. After this, instead of Multiplexer.mix you write M.mix.
\r\n
Final thing I’m going to mention is importing everything else except specified identifiers. This is done by writing import Multiplexer hiding (mix). This imports everything exported by Multiplexer, except mix.
\r\n
Summary
\r\n
There are many ways of importing and they can be mixed. Here’s a list of them:
import qualified Multiplexer as M (Plexer, Scooper(..))
\r\n
\r\n
In short:
\r\n
\r\n
Some identifiers can be chosen to be imported, while leaving others unimported
\r\n
Modules can be imported qualified (forcing an obligatory namespace qualifier to imported identifiers).
\r\n
Some identifiers can be skipped via the hiding clause.
\r\n
The module namespace can be renamed, with an as clause.
\r\n
\r\n
Prelude
\r\n
Prelude is base module containing lots of helpful types and functions, which is automatically imported by every module. If this is not what you want, there’s two options. First one is to use pragma at start of the file: {-# LANGUAGE NoImplicitPrelude #-}, which causes Prelude not to be imported. Another one is to manually import Prelude, which turns of automatic import: import qualified Prelude as P.
\r\n
Closing
\r\n
When system grows, it’s helpful to break it into more manageable pieces. For this we use modules. import is used to bring identifiers from other modules into current one.
\r\n
Questions, comments and feedback is welcomed. Best way to reach me is either email or in fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, modules',0,0,1),
(2951,'2019-11-25','A walk through my PifaceCAD Python code – Part 2',888,'In this episode I cover some generic functions at the top of the code.','
Code
\r\n
The script being discussed in this show is available for download with this show: cad-menu.py
\r\n
GENERIC FUNCTIONS
\r\n
\r\n
def get_hpr_que(): \r\nGoto hacker public stats page and extract the number of days to next free slot turns on blinkstick LED with colour dependent on the number of days to next free slot in HPR queue prints number of days to next free slot to the display
\r\n
\r\n
GENERIC BLINKSTICK FUNCTIONS
\r\n
\r\n
def bstick_off(): \r\nSearch for all attached blinksticks and turn them all off
\r\n
def bstick_on(colour): \r\nTurn blinkstick on and set led colour to string value stored in var colour. valid colours are, black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, aqua
\r\n
def bstick_on_random(): \r\nTurn blinkstick on colour random
\r\n
def bstick_blink(colour): \r\nTurn blinkstick on with supplied colour
\r\n
\r\n
END BLINKSTICK FUNCTIONS
\r\n
\r\n
def run_cmd(cmd): \r\nUsed to run an external linux command
\r\n
def get_my_ip(): \r\nReturns ip address
\r\n
def get_my_essid(): \r\nReturns wifi ESSID
\r\n
def get_my_wifi_strength(): \r\nReturns wifi signal strength as a percentage
\r\n
def wait_for_ip(): \r\nTries 10 times to get IP address
\r\n
def show_wifi_info(): \r\nShow WiFi information on display, shows essid on first line and both the wifi signal strength as a percentage and ip address on the second line.
\r\n
def custom_bitmaps(): \r\nSelection of custom bitmaps to use on LCD display
def writelongstring(longstring): \r\nWrites a long string to the piface control and display LCD & scrolls it to the left until the last character appears on the right hand side of the screen
\r\n
\r\n
# Local Variables (for function writelongstring)\r\nDisplaySize = 15\r\n# Number of characters that can be displayed on 1 line of display\r\n\r\nStepSize = 4\r\n# Step size when scrolling message on display\r\n\r\nScrollSpeed = 0.55\r\n# Adjusts scroll speed, delay in seconds between scrolls\r\n\r\nScroll = 0\r\n# Default value for scroll, used when string is smaller than display size
\r\n
\r\n
def init_display(): \r\n# Setup LCD display for selected menu 0 (Podcasts), 1 (Audiobooks), 2 (System)
\r\n
def display_main_menu(event): \r\n# Clear LCD & dsplays the appropriate main menu message
\r\n
\r\n',201,38,1,'CC-BY-SA','Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
(2952,'2019-11-26','Publishing your book using open source tools',1562,'How I evolved from writing with a publisher to self-publishing using open source tools','
',369,0,0,'CC-BY-SA','asciidoc,asciidoctor,lulu,writing,books',0,0,1),
(2953,'2019-11-27','How I got started in Linux',276,'How I start in Linux, computing, and Free Software','
Osdisc.com is the website that I mentioned while distro hopping. Unfortunately, as of August 2019, their site is no longer sending CD’s/DVD’s.
\r\n
How I recorded: \r\nAndroid phone, lapel mic, and Audio Recorder app found here:
\r\n',318,29,0,'CC-BY-SA','Linux, FreeBSD, Computers',0,0,1),
@@ -19276,20 +19396,20 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(2961,'2019-12-09','Kubernetics / Cloud - Terminology',664,'We talk about terms often used when using Kubernetes','
We talk about terms often used when using Kubernetes.
\r\n
Terms we talk about
\r\n
\r\n
Node - Machine to run jobs on.
\r\n
Cluster - Grouping of nodes to deploy work to.
\r\n
Container - Compute unit that we can run in the cloud
\r\n
Pod - One or more containers that are one unit in the cloud that could be started, stopped, or restarted.
\r\n
Service - Different network services that serve the pods\r\n
\r\n
Load balancers - Balance network calls to different pods
\r\n
Certmanager - Handles certificates, for instance, let’s encrypt.
\r\n
Ingress - Handles traffic from the external network
\r\n
\r\n
Volumes - External resources used by pods to keep state
\r\n
ConfigMap - Configuration parameters that could be changed without restarting the pods or deployment.
\r\n
Deployment - A configuration of all the terms mentioned that you use to deploy as a unit to the cluster.
\r\n
\r\n',382,0,0,'CC-BY-SA','kubernetics, basic, terminology',0,0,1),
(2968,'2019-12-18','Life and Times of a Geek part 3',2441,'Part 3 of my personal story of experiences with computers','
Introduction
\r\n
In the last part of my story (show 1811 in 2015) I told you about some of my experiences at the University of Manchester as a postgraduate student from around 1973.
\r\n
Today I want to talk a little more about my time in Manchester and mention some of the things I did that may be of interest to Hackers!
\r\n
Researching for the episode
\r\n
As I have been researching for this HPR episode I realise how long ago some of these events were - in Internet years particularly. In many cases I could find no online records of places, equipment or people. This seems to be because any records there might be are on paper and have never made it online. I contacted a company that made some of the laboratory equipment I used that I thought might be of interest, and the person I contacted said that although he remembered what I was referring to the company had kept no records of it and had had to discontinue it due to modern safety concerns.
\r\n
I find this somewhat dispiriting and it makes me feel very very old!
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode. The HTML version can be viewed here and the ePub version downloaded from here.
\r\n
Links
\r\n
\r\n
Building experimental apparatus:\r\n
\r\n
Wikipedia page for Dexion - for building metal structures
\r\n',225,29,1,'CC-BY-SA','video recorder,Skinner box,logic gate,digitiser,Dobbie McInnes,Data General,teletype,Cyber-72,APL,Si',0,0,1),
(2975,'2019-12-27','SimpleScreenRecorder and Vidcutter',311,'Two useful applications to record a screen, and to chop and trim a video ','
In today’s show Ken talks about two small applications to make recording and trimming video easy.
\r\n
What is SimpleScreenRecorder?
\r\n
\r\n
SimpleScreenRecorder is a Linux program that I’ve created to record programs and games. There were already a few programs that could do this, but I wasn’t 100% happy with any of them, so I created my own.
\r\n
My original goal was to create a program that was just really simple to use, but as I was writing it I started adding more and more features, and the result is actually a pretty powerful program. It’s ‘simple’ in the sense that it’s easier to use than ffmpeg/avconv or VLC, because it has a straightforward user interface.
\r\n
\r\n
What is VidCutter
\r\n
\r\n
The simplest & sexiest tool for cutting and joining your videos without the need for re-encoding or a diploma in multimedia. VidCutter focuses on getting the job done using tried and true tech in its arsenal via mpv and FFmpeg.
',30,78,0,'CC-BY-NC-ND','Randal Schwartz, Aaron Newcomb, FLOSS Weekly',0,0,1),
(2962,'2019-12-10','Bespoke bike building',1474,'Brian in Ohio continues his bike building project','
(The images below may be clicked to view the full-sized versions)
\r\n
\r\nmocking up parts to see spacing, especially the crankset
\r\n
\r\nlaying out ‘fishmouth’ cut, used to connect two tubes
\r\n
\r\nlay out fishmouth
\r\n
\r\nanother layout picture, note marks on tube
\r\n
\r\nfinished product
\r\n
\r\ntest fitting assembly one, the engine room
\r\n
\r\nbrazing complete! assembly one done
\r\n
\r\nsetting up assembly tube, gray tube slips inside the red tube
\r\n
\r\nneed to cut that small tab off, get to hear this in the recording
\r\n
\r\njigging up the frame, similar to john kulps set up, see hpr 1282
\r\n
\r\nstill in the jig but all brazed up, top half of frame done!
\r\n
\r\nthe next part will be modifiying the rear triangle and brazing it where i’m pointing to.
\r\n
Summary
\r\n
\r\n
all in all, went better than expected, i’ll clean up those brazing joints after the bike is done and has been ridden for a while, before I paint it.
\r\n
brazing isn’t as difficult as i thought it might be. give it a try its a cool hacker skill!
\r\n
\r\n',326,115,0,'CC-BY-SA','bicycle, recumbent, recycle',0,0,1),
(2963,'2019-12-11','A walk through my PifaceCAD Python code – Part 3',880,'In this episode I cover functions activated when a button is pushed on the PiFaceCAD board','
Code
\r\n
The script being discussed in this show is available for download with the previous show: cad-menu.py
\r\n
Functions
\r\n
\r\n
def button0(event): \r\nPlay / Pause Button \r\nPrint message to lcd and toggle between play and pause for podcasts, then runs init_display to display available options
\r\n
def button1(event): \r\nTrack Information button \r\nPrint message to lcd then display current moc track information such as moc state, current time, time left, current playlist number of total playlist number & podcast title. \r\n \r\nExample output from command mocp --info
\r\n
State: PAUSE\r\nFile: /home/pi/files/mp3/hpr1597.mp3\r\nTitle: Steve Smethurst - HPR1597: Extravehicular Activity (Hacker Public Radio)\r\nArtist: Steve Smethurst\r\nSongTitle: HPR1597: Extravehicular Activity\r\nAlbum: Hacker Public Radio\r\nTotalTime: 14:11\r\nTimeLeft: 02:47\r\nTotalSec: 851\r\nCurrentTime: 11:24\r\nCurrentSec: 684\r\nBitrate: 64kbps\r\nAvgBitrate: 64kbps\r\nRate: 44kHz
\r\n
def button2(event): \r\nPrevious Track Button \r\nButton is only active if button is pushed twice within 0.3 seconds. This was added to stop moving to a new track by accidental pushing of button. If menu = 0 or 1 and value of variable TimeDiff is less than 0.3 then Print message to lcd and move to previous track in playlist. If menu = 2 and button pressed twice within 0.3 then display number of HPR shows in the queue
\r\n
def button3(event): \r\nNext track Button \r\nButton is only active if button is pushed twice within 0.3 seconds. This was added to stop moving to a new track by accidental pushing of button. If menu = 0 or 1 and value of variable TimeDiff is less than 0.3 then Print message to lcd and move to next track in playlist Button currently has no function if menu = 2
\r\n
def button4(event): \r\nToggle backlight Button \r\nIf 1st time button is pushed then turn off blinkstick and display main menu else Toggle lcd backlight between on and off
\r\n
def moc_seek(): \r\nUsed to seek backward or forward in track being played in mocp SeekPosition is a global variable used to store the current seek position, its value changes up and down when using button6 and button7
\r\n
def button5(event): \r\nJogg switch \r\nThis button is selected by momentarily pushing in the left/right toggle button. Button located on the top of unit \r\n\r\n
\r\n
If menu equals 0 or 1, [PODCASTS or AUDIOBOOKS] menu then \r\n\r\n
\r\n
if not in seek menu then display seek menu
\r\n
if in seek menu then jump forward or back in track by the amount currently displayed on the seek menu, uses function moc_seek()
\r\n
\r\n
If menu equals 2, [SYSTEM] menu then\r\n
\r\n
Get date and time information, Clear screen, turn on LCD backlight print the shutdown message with date and time info to lcd & then issue the shutdown command
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
def button6(event): \r\nLeft Jogg switch decrement through menus also used during seek \r\nThis button is selected by momentarily pushing the toggle switch to the left. Button located on the top of unit \r\nButton only active if more than 0.3 seconds has passed since it was last pushed, this was added to get around switch bounce causing multiple jumps in menu, think left and right jogg switch is a bit noisy.\r\n
\r\n
If in seek menu\r\n
\r\n
SeekPosition decrements by one until SeekMin is reached, and then returns to 0
\r\n
each time the display is updated with the decremented value stored in dictionary SeekDisplay
\r\n
\r\n
If not in seek menu\r\n
\r\n
Menu decrements down by one until MenuMin is reached then rolls over to MenuMax
\r\n
\r\n
\r\n
def button7(event): \r\nSame as button6 above but instead increments value, i.e. menu or seek value is incremented by 1
\r\n
def print_ir_code(event): \r\nUsed during debugging to get remote control working, came from piface examples page, prints IR code print(event.ir_code)
\r\n
def ir_play(event): \r\nIf the play button is pushed on the remote control twice within 0.5 seconds and if IR is active then toggle backlight and toggle between play and pause
\r\n
def ir_info(event): \r\nIf the info button (pause) is pushed on the remote control twice within 0.5 seconds and if IR is active then toggle backlight and display on the LCD information about the current track
\r\n
def ir_rewind(event): \r\nIf the rewind button is pushed on the remote control and if IR is active then toggle backlight and go to previous track on playlist
\r\n
def ir_forward(event): \r\nIf the forward button is pushed on the remote control and if IR is active then toggle backlight and go to next track on playlist
\r\n
def ir_stop(event): \r\nIf the stop button is pushed on the remote control and if IR is active then toggle backlight
\r\n
def ir_blue(event): \r\nActivate and deactivate IR buttons on the remote control, turns blinkstick on red when IR active. When blue button is pushed twice within 0.5 seconds on remote control, toggle backlight and display momentary message on LCD display giving IR status i.e. are the remote control buttons active or deactive. \r\n \r\nAll remote buttons bar this one are affected. This feature was added to remotely disable all the buttons while using the TV remote control media buttons these would sometimes falsely trigger things \r\n \r\nThe double push of the blue button within 0.5 seconds was added as sometimes a single push of it was required on my TV and this would falsely activate it \r\n \r\nFeature added to check if var FirstPass is set to true, i.e. backlight button4 has not pushed since boot \r\n \r\nbutton4 normally toggles backlight but turns off hpr queue LED first time it’s pushed after boot.
\r\n
\r\n',201,38,1,'CC-BY-SA','Audio, Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
(2964,'2019-12-12','Bolos and Bowties: Neckwear for Nerds',980,'I talk about ties, at least the kind I like to wear when the occasion calls for it.','
It\'s probably because of a non-conformist streak in me, but I\'ve never liked traditional neckties. In fact I never wanted to wear any ties until I got my first bolo tie, which was sufficiently different from everyone else and easy enough to put on that I decided I could wear bolo ties. I\'ve built a collection of about a dozen of these and they always get positive comments, especially the ones made from recycled circuit boards. Recently I\'ve expanded my horizons to include bowties, which have a more formal appearance and the added nerd factor of being difficult to tie for most people. In this episode I talk about my ties.
\r\n',238,0,0,'CC-BY-SA','Style, Fashion, Recycling, Upcycling, Circuit Boards, Ties, Bowties, Bolo Ties, Neck ties',0,0,1),
-(2969,'2019-12-19','Crewing a spaceship in Haskell',1358,'How to calculate amount of crew needed for a spaceship','
Intro
\r\n
Every spaceship in game needs a crew to operate it. Smaller ships with fewer components require less crew than huge ones with lots of components.
\r\n
Types
\r\n
Unit stats lists amount of crew required to operate a spaceship and if they need sleeping quarters.
The fact that single person could manage multiple components is reflected by ComponentCrewReq having Double instead of Integer
\r\n
-- | Crew requirements for a component\r\ndata ComponentCrewReq =\r\n ComponentCrewReq CrewPosition Double\r\n deriving (Show, Read, Eq)
\r\n
In closing
\r\n
If you have questions, comments or feedback, easiest way to catch me nowdays is by email or in fediverse where I’m tuturto@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, problem solving',0,0,1),
+(2969,'2019-12-19','Crewing a spaceship in Haskell',1358,'How to calculate amount of crew needed for a spaceship','
Intro
\r\n
Every spaceship in game needs a crew to operate it. Smaller ships with fewer components require less crew than huge ones with lots of components.
\r\n
Types
\r\n
Unit stats lists amount of crew required to operate a spaceship and if they need sleeping quarters.
The fact that single person could manage multiple components is reflected by ComponentCrewReq having Double instead of Integer
\r\n
-- | Crew requirements for a component\r\ndata ComponentCrewReq =\r\n ComponentCrewReq CrewPosition Double\r\n deriving (Show, Read, Eq)
\r\n
In closing
\r\n
If you have questions, comments or feedback, easiest way to catch me nowdays is by email or in fediverse where I’m Tuula@mastodon.social
\r\n',364,107,0,'CC-BY-SA','haskell, problem solving',0,0,1),
(2965,'2019-12-13','instant feedback for students in maths',838,'How we use old CAS software to give students instant feedback in their maths homework','
I\'m trying to make sure that this show doesn\'t come across as as advertisment placement on HPR I won\'t provide a link to our application (which wouldn\'t help a lot anyway as we don\'t really have much of a web site anyway.).
\r\n
However I\'ll link to some of the technical components:
\r\n
The Computer Algebra System we use is called Maxima, its history goes back to the early 80s. It\'s written in common lisp.
\r\n
We have considered switching to SymPy as a more modern alternative. SymPy doesn\'t offer the feature completeness Maxima does, though. It has still a long way to go.
\r\n
Our servers run Debian. The current version is written in PHP but we are working on a new version based on dockerized Django with a JS frontend in Ember along with some micro services written in Go, Python and PHP.
\r\n
To render math we use MathJax in the current version and KaTeX in the new version. The PDF-export of worksheets is of course done in LaTeX.
',288,0,0,'CC-BY-SA','maths,education,learning',0,0,1),
(2966,'2019-12-16','World of Commodore 2019 Episode 1: The Interviews',1174,'In this first episode, I interview exhibitors and members at the World of Commodore in 2019.','
Hello, good people of Hacker Public Radio, my name is Paul Quirk and this is my very first ever podcast. I would like to give credit Klaatu of Gnu World Order for making me aware of Hacker Public Radio, which I’ve been a listener of for the past year. As we near the holiday season of the winter solstice, I decided to give back to the open source community with this gift of a mini series of podcasts about the World of Commodore from December 7, 2019.
\r\n
The World of Commodore is an annual computer expo dedicated to Commodore computers that is normally held on the first Saturday of December in the city of Mississauga, Ontario. It started off back in 1983 by Commodore Canada as a trade show where Commodore and related vendors could showcase their latest products for the holiday season. As a Commodore computer nerd kid of the 1980’s living within an hour’s drive of Mississauga, this was an event I always looked forward to with excitement. For me, this was bigger and better than Santa Claus. Commodore went bankrupt in 1994, but a decade later, the show was revived by the Toronto PET user’s group, or TPUG, one of the world’s oldest computer user groups of which I am a member. Today’s World of Commodore is very different from the expo’s of the 1980’s, and has transformed into an event where hackers from around the world gather together to share ideas and show off their own discoveries and products, both open source and commercial.
\r\n
Since many listeners and contributors of Hacker Public Radio got started with a Commodore computer at some time, and since this event has grown beyond Commodore products and into open source hardware and software, I thought this event would be of great interest to this community, and it is my hope that many of you listeners might join us at next year’s World of Commodore.
\r\n
I have decided to create a miniseries of podcasts of this event which I will release on a weekly schedule. In this first episode, I walk around the trade show floor and interview various exhibitors, vendors, and members of TPUG. As there is a visual element to this podcast, I have posted pictures of the exhibits in my personal non-commercial blog at pquirk.com, which I encourage you to visit in order to get the full experience. And so, with no further ado, let’s all go to the wonderful world of Commodore.
\r\n',383,103,0,'CC-BY-SA','Commodore,PET,Amiga,Gecko,retro',0,0,1),
(2967,'2019-12-17','Wrestling As You Like It Episode 2',1599,'Wrestling As You Like It Episode 2','
Today’s episode is about the landscape of professional wrestling today, the hierarchy, and how it came to be that way, and a brief explanation of different styles of professional wrestling.
',354,0,1,'CC-BY-SA','Pro Wrestling',0,0,1),
(2970,'2019-12-20','The Fediverse',1142,'The Fediverse is the open network of social media platforms','
The Fediverse is the name given to the collection of social media platforms that are distributed and interconnected. Distributed means that the servers are not centrally controlled, but are available to users in a variety of forms and conditions. And interconnected means they use protocols that are designed to allow communication between different platforms as well as different servers. The most common of these protocols is ActivityPub.
\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(2971,'2019-12-23','World of Commodore 2019 Episode 2: Hacking GeckOS',2960,'Glen Holmer explains how he got Linux running on a Commodore 64.','
',383,103,0,'CC-BY-SA','Commodore,PET,Amiga,Geckos,retro,Linux,Open Source',0,0,1),
-(2972,'2019-12-24','The foot of the ski slope',2681,'MrX and Dave Morriss chat about nerdy things near a ski slope','
This time we met up for breakfast on Sunday 24th November in a pub/restaurant in an area called Hillend, just outside Edinburgh in Midlothian. The hill close by is the location of the Midlothian Snowsports Centre, an artificial Ski Slope which is very popular in the region for recreation and training.
\r\n
We chatted for a while inside then moved to Studio C in the car park and recorded this episode.
\r\n
PDAs and the like
\r\n
We were talking about PDAs (Personal Data Assistants) from the 1980’s.
\r\n
\r\n
MrX had recently been offered a Gemini device and had at one time owned a Psion Series 3c.
\r\n
Dave owns a broken Psion Series 5 (and recently parted with a working one after much bargaining).
\r\n
Dave struggled to remember devices like the Palm Pilot which were quite popular in the 80’s and 90’s. These had no keyboard, but offered a touch-sensitive screen, used with a stylus, and had handwriting recognition1.
\r\n
MrX mentioned the Compaq iPAQ PDA (Compaq was later acquired by Hewlett Packard) from the 2000’s, which was a much advanced PDA with similar features.
\r\n
\r\n
Software annoyances
\r\n
\r\n
Mr X has had some problems with the latest Audacity on Ubuntu. It sometimes does not launch from the menu link after an upgrade.
\r\n
Calibre on Dave’s Debian Testing system has stopped working recently, due to a Python error.2
\r\n
Dave uses Clementine, the music player, which turns off the UI when you close it down the wrong way and apparently doesn’t provide a way to enable it again without hacking the configuration file3.
\r\n
MrX had problems with audio device recognition and uses hdajackretask to correct this. This is part of the alsa-tools-gui package on Debian (and related)4, but has a non-intuitive UI.
\r\n
\r\n
OS choices
\r\n
\r\n
Dave uses Raspbian Lite on his headless Raspberry Pis (which he secures using advice from Ken Fallon’s HPR show on preparing the Raspbian image).
\r\n
MrX uses standard Raspian on RPis, Ubuntu as his main Linux version, as well as OSMC (Open Source Media Center) on a Raspberry Pi, for watching media.
\r\n
Dave originally started with Fedora (actually Red Hat version 4 for a brief time) then moved to Ubuntu (Kubuntu) before moving to Debian Testing on his desktop, and KDE Neon on his laptop.
\r\n
Both had used Crunchbang at one point, another Debian-based distribution.
\r\n
\r\n
A few other topics
\r\n
\r\n
MrX uses a Wiki service (https://www.wikidot.com/). Dave uses MediaWiki on a Raspberry Pi and has scripts that update some of the contents (mainly tables). There was discussion about using Pandoc (https://pandoc.org/) to generate MediaWiki markup from something like Markdown.
The person using a Palm Pilot to take meeting notes had an external keyboard, and wasn’t using handwriting recognition!↩
\r\n
calibre was failing with the error: ImportError: No module named functools_lru_cache. It later proved possible to fix this by reinstalling a Python module: pip2 install --force backports.functools_lru_cache↩
\r\n
There have been no releases of Clementine since 2016 sadly, though there are more recent changes on the GitHub page.↩
\r\n
Information on the web about alsa-tools-gui seems a little sparse. The hdajackretask application has a README file in the distribution that gives some information.↩
\r\n\r\n',225,0,1,'CC-BY-SA','HPR,hosts,meeting,technology',0,0,1),
+(2972,'2019-12-24','The foot of the ski slope',2681,'MrX and Dave Morriss chat about nerdy things near a ski slope','
This time we met up for breakfast on Sunday 24th November in a pub/restaurant in an area called Hillend, just outside Edinburgh in Midlothian. The hill close by is the location of the Midlothian Snowsports Centre, an artificial Ski Slope which is very popular in the region for recreation and training.
\r\n
We chatted for a while inside then moved to Studio C in the car park and recorded this episode.
\r\n
PDAs and the like
\r\n
We were talking about PDAs (Personal Data Assistants) from the 1980’s.
\r\n
\r\n
MrX had recently been offered a Gemini device and had at one time owned a Psion Series 3c.
\r\n
Dave owns a broken Psion Series 5 (and recently parted with a working one after much bargaining).
\r\n
Dave struggled to remember devices like the Palm Pilot which were quite popular in the 80’s and 90’s. These had no keyboard, but offered a touch-sensitive screen, used with a stylus, and had handwriting recognition1.
\r\n
MrX mentioned the Compaq iPAQ PDA (Compaq was later acquired by Hewlett Packard) from the 2000’s, which was a much advanced PDA with similar features.
\r\n
\r\n
Software annoyances
\r\n
\r\n
Mr X has had some problems with the latest Audacity on Ubuntu. It sometimes does not launch from the menu link after an upgrade.
\r\n
Calibre on Dave’s Debian Testing system has stopped working recently, due to a Python error.2
\r\n
Dave uses Clementine, the music player, which turns off the UI when you close it down the wrong way and apparently doesn’t provide a way to enable it again without hacking the configuration file3.
\r\n
MrX had problems with audio device recognition and uses hdajackretask to correct this. This is part of the alsa-tools-gui package on Debian (and related)4, but has a non-intuitive UI.
\r\n
\r\n
OS choices
\r\n
\r\n
Dave uses Raspbian Lite on his headless Raspberry Pis (which he secures using advice from Ken Fallon’s HPR show on preparing the Raspbian image).
\r\n
MrX uses standard Raspian on RPis, Ubuntu as his main Linux version, as well as OSMC (Open Source Media Center) on a Raspberry Pi, for watching media.
\r\n
Dave originally started with Fedora (actually Red Hat version 4 for a brief time) then moved to Ubuntu (Kubuntu) before moving to Debian Testing on his desktop, and KDE Neon on his laptop.
\r\n
Both had used Crunchbang at one point, another Debian-based distribution.
\r\n
\r\n
A few other topics
\r\n
\r\n
MrX uses a Wiki service (https://www.wikidot.com/). Dave uses MediaWiki on a Raspberry Pi and has scripts that update some of the contents (mainly tables). There was discussion about using Pandoc (https://pandoc.org/) to generate MediaWiki markup from something like Markdown.
The person using a Palm Pilot to take meeting notes had an external keyboard, and wasn’t using handwriting recognition!↩
\r\n
calibre was failing with the error: ImportError: No module named functools_lru_cache. It later proved possible to fix this by reinstalling a Python module: pip2 install --force backports.functools_lru_cache↩
\r\n
There have been no releases of Clementine since 2016 sadly, though there are more recent changes on the GitHub page.↩
\r\n
Information on the web about alsa-tools-gui seems a little sparse. The hdajackretask application has a README file in the distribution that gives some information.↩
\r\n\r\n',225,0,1,'CC-BY-SA','HPR,hosts,meeting,technology',0,0,1),
(2976,'2019-12-30','A walk through my PifaceCAD Python code – Part 4',391,'This is the last show in the series and covers the main program section at the bottom of my script','
This is the last show in the series. The series was recorded in one go and split into multiple parts. This last section is pretty short; it covers the main program section at the bottom of my script that calls all the other functions and allows the user to quit the program. In this episode I also mention explanatory notes that I included in my script. These are mainly for my own benefit so I could remember how I set up lirc. I’ve included these notes at the end of these show notes.
\r\n
Main program \r\nTurn LCD backlight on, print System up message to LCD, wait a few seconds then clear screen. Activate push buttons on control and display board. Activates various IR buttons waiting on input from the remote control. Print quit message to terminal, waiting for input, repeat message until q is entered by user. When q is entered deactivate buttons and turn LCD backlight off.
\r\n
Below are my Lirc explanatory comments at the end of my Python script.
\r\n
\r\n
lirc \r\nThis is the Linux IR control program \r\nLIRC (Linux Infrared remote control) is an open source package that allows users to receive and send infrared signals with a Linux-based computer system.
\r\n
Irrecord \r\nTool used to record valid IR codes from your remote control. It generates the file /etc/lirc/lircd.conf, possibly overwrites original file so use with caution. It attempts to recognise your remote control from a series of button pushes. If the remote is not recognised then it captures the codes in raw mode, I abandoned this tool and got a valid IR file for a very similar remote control on the internet, see info below
\r\n
/etc/lirc/lircd.conf \r\nFile used to store IR codes for your remote control, either using the tool irrecord or from somewhere on the internet. This file is a direct copy of file \"BN59-00861A-SAMSUNG-TV.conf\" I added the Samsung TV string to the file name.
\r\n
irw \r\nTool used to get the key names for your particular remote control, for this to work you must first have a valid /etc/lirc/lircd.conf file
\r\n
~/.lircrc \r\nThis file is used to store the remote control key names that you want to activate, and what action is to be taken when the button is pushed. Adding the field \"remote =\" allows the use of multiple remote controls. The remote control key names can be found by using the command \"irw\", I created a file called ~/scripts/remote-key-names-sorted.txt to store the valid key names for my Samsung remote control
\r\n
~/scripts/remote-key-names-sorted.txt \r\nList of valid remote control key names for my Samsung remote control, this was generated using the irw command. I used the \"tee\" command to pipe output to the screen and write output to this file at the same time, see file for further details of commands I used.
\r\n
\r\n',201,38,1,'CC-BY-SA','Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
-(3241,'2021-01-04','HPR Community News for December 2020',4055,'HPR Volunteers Dave, ToeJet, and Ken talk about shows released and comments posted in December 2020','\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 18 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3090\n(2020-06-05) \"Locating Computer on a Enterprise Network\"\nby operat0r.
Comment 1:\nClaudioM on 2020-12-28:\n\"Links for the Episode\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 3 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3261,'2021-02-01','HPR Community News for January 2021',3606,'HPR Volunteers talk about shows released and comments posted in January 2021','\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.
Comment 1:\nb-yeezi on 2021-01-20:\n\"New info, even for me\"
\n
hpr3257\n(2021-01-26) \"Lack of diversity in Linux and other open source communities\"\nby swift110.
\n
\n
Comment 1:\nb-yeezi on 2021-01-26:\n\"I can relate\"
Comment 2:\nTony Hughes on 2021-01-26:\n\"The lack of diversity in Linux\"
Comment 3:\nBeeza on 2021-01-27:\n\"Thoughts on diversity\"
\n
hpr3258\n(2021-01-27) \"Linux Inlaws S01E22: The Linux Professional Institute\"\nby monochromec.
\n
\n
Comment 1:\nKevin O'Brien on 2021-01-28:\n\"I loved the show\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 3 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3241,'2021-01-04','HPR Community News for December 2020',4055,'HPR Volunteers Dave, ToeJet, and Ken talk about shows released and comments posted in December 2020','\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 18 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3090\n(2020-06-05) \"Locating Computer on a Enterprise Network\"\nby operat0r.
Comment 1:\nClaudioM on 2020-12-28:\n\"Links for the Episode\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 3 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3261,'2021-02-01','HPR Community News for January 2021',3606,'HPR Volunteers talk about shows released and comments posted in January 2021','\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.
Comment 1:\nb-yeezi on 2021-01-20:\n\"New info, even for me\"
\n
hpr3257\n(2021-01-26) \"Lack of diversity in Linux and other open source communities\"\nby swift110.
\n
\n
Comment 1:\nb-yeezi on 2021-01-26:\n\"I can relate\"
Comment 2:\nTony Hughes on 2021-01-26:\n\"The lack of diversity in Linux\"
Comment 3:\nBeeza on 2021-01-27:\n\"Thoughts on diversity\"
\n
hpr3258\n(2021-01-27) \"Linux Inlaws S01E22: The Linux Professional Institute\"\nby monochromec.
\n
\n
Comment 1:\nKevin O'Brien on 2021-01-28:\n\"I loved the show\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nWindigo
\n
Over the period tags and/or summaries have been added to 3 shows which were without them.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2973,'2019-12-25','Introduction to Advent of Code',836,'Advent of code is a challenge each year between 1-25 of December.','
I discuss all the challenges we have seen so far during the Advent of Code and talk about what they entailed and how hard they were to solve.
',382,0,0,'CC-BY-SA','coding, challenge',0,0,1),
(2974,'2019-12-26','Guitar Setup pt. 2',3107,'NYbill finish a guitar setup.','
Heh, listen to NYbill tune a guitar for an hour.
\r\n
Part two of guitar set up. Fret polishing, neck relief, string height, and intonation.
\r\n',235,0,0,'CC-BY-SA','Guitar, Setup, Repair',0,0,1),
(2977,'2019-12-31','World of Commodore 2019 Episode 3: Life after Commodore',1660,'A presentation by Dr. Richard Immers, author of \"Inside Commodore DOS\"','
\r\n',383,78,0,'CC-BY-SA','Commodore,PET,Amiga,64,Geckos,retro,Inside Commodore,DOS',0,0,1),
@@ -19326,25 +19446,25 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3045,'2020-04-03','OSS compliance with privacy by default and design',951,'How can Open Source Software manage the mandates of regulations like the GDPR?','
The GDPR (General Data Protection Regulation) was enacted by the European Community in 2016, and began to be enforced in 2018. Since this covers a large segment of the Internet users, and other jurisdictions are looking at similar legislation this talk is a timely look at what is required and how Open Source Software can meet the legal requirements. https://www.zwilnik.com/?page_id=1096
\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Privacy',0,0,1),
(3007,'2020-02-11','Photography 101',1468,'I tell you everything I know about the basics of photography','
\r\n',383,0,0,'CC-BY-SA','Photography 101,digital,film,camera',0,0,1),
(2999,'2020-01-30','SQRL - Secure Quick Reliable Login',1442,'In this podcast we talk about what SQRL is and how it works.','
In this podcast, we talk about what SQRL is, and how it works, why I feel that it’s an exciting new login method that is safe and easy to use.
\r\n',382,0,1,'CC-BY-SA','security, login method',0,0,1),
-(3281,'2021-03-01','HPR Community News for February 2021',4150,'HPR Volunteers talk about shows released and comments posted in February 2021','\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 16 comments in total.
\n
Past shows
\n
There are 7 comments on\n4 previous shows:
\n
\n
hpr2356\n(2017-08-14) \"Safely enabling ssh in the default Raspbian Image\"\nby Ken Fallon.
\n
\n
\n
\nComment 4:\nLeo_B on 2021-02-23:\n\"If you\'re watching this in 2021\"
\n
\nComment 5:\nKen Fallon on 2021-02-25:\n\"Updated versions\"
\n
hpr3187\n(2020-10-20) \"Ansible for Dynamic Host Configuration Protocol\"\nby norrist.
\n
\n
\n
\nComment 2:\nWindigo on 2021-02-10:\n\"Interesting approach\"
Comment 1:\nmcnalu on 2021-02-19:\n\"Might return to dwm\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n
There are now 414 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3306,'2021-04-05','HPR Community News for March 2021',2000,'HPR Volunteers talk about shows released and comments posted in March 2021','\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 15 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3153\n(2020-09-02) \"Fixing eBooks with Calibre and pdfcrop\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nKen Fallon on 2021-03-03:\n\"Thanks Again.\"
hpr3299\n(2021-03-25) \"Linux Inlaws S01E26: Make your Linux harder\"\nby monochromec.
\n
\n
Comment 1:\nnobody on 2021-03-25:\n\"Other MAC implementations\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n
There are now 404 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3281,'2021-03-01','HPR Community News for February 2021',4150,'HPR Volunteers talk about shows released and comments posted in February 2021','\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 16 comments in total.
\n
Past shows
\n
There are 7 comments on\n4 previous shows:
\n
\n
hpr2356\n(2017-08-14) \"Safely enabling ssh in the default Raspbian Image\"\nby Ken Fallon.
\n
\n
\n
\nComment 4:\nLeo_B on 2021-02-23:\n\"If you\'re watching this in 2021\"
\n
\nComment 5:\nKen Fallon on 2021-02-25:\n\"Updated versions\"
\n
hpr3187\n(2020-10-20) \"Ansible for Dynamic Host Configuration Protocol\"\nby norrist.
\n
\n
\n
\nComment 2:\nWindigo on 2021-02-10:\n\"Interesting approach\"
Comment 1:\nmcnalu on 2021-02-19:\n\"Might return to dwm\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n
There are now 414 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3306,'2021-04-05','HPR Community News for March 2021',2000,'HPR Volunteers talk about shows released and comments posted in March 2021','\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 15 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3153\n(2020-09-02) \"Fixing eBooks with Calibre and pdfcrop\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nKen Fallon on 2021-03-03:\n\"Thanks Again.\"
hpr3299\n(2021-03-25) \"Linux Inlaws S01E26: Make your Linux harder\"\nby monochromec.
\n
\n
Comment 1:\nnobody on 2021-03-25:\n\"Other MAC implementations\"
\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
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 10 shows which were without them.
\n
There are now 404 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3055,'2020-04-17','Advice to new Fediverse administrators and developers',754,'An experienced admin for a Mastodon Instance at a major Fediverse developer offers some tips','
Framasoft is a company that develops for PeerTube and Mobilizon, and also hosts a Mastodon instance. The speaker is the sysadmin for the Mastodon instance gives his tips based on his experience at this non-profit company. https://www.zwilnik.com/?page_id=1098
\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(3065,'2020-05-01','The case for the unattributed message',977,'Anonymity can cause problems (trolls) but also can be necessary.','
Anonymity has an unfortunate consequence of enabling trolls and abuse. But there are cases where it is important for people to communicate anonymously. In this talk some ideas are presented on how to enable a measure of anonymity without having all of the problems. https://www.zwilnik.com/?page_id=1103
\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Privacy, Anonymity',0,0,1),
(3075,'2020-05-15','Federated Blogging with WriteFreely',740,'A look at a minimally social blogging app using ActivityPub.','
Many social media apps seem determined to put bells and whistles in every possible place, which is not always in the interest of the user. This talk presents an alternative view which is called “minimally social” which only puts in the features needed by the user. In this case, the main focus is on a simple blogging app. There is also a brief mention of a very technical talk about coding. https://www.zwilnik.com/?page_id=1103
\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Blogging',0,0,1),
(3085,'2020-05-29','Architectures of Robust Openness',1142,'A look at how to secure social networks against attack while still being open to strangers.','
Social networks can be attacked by people who want to cause abuse and disruption, and one way to deal with that is to lock down the membership. But that goes against the idea of social, which should include being open to welcoming strangers. Mark Miller presents an analysis of how you can be both secure and welcoming which focuses on Object Capabilities. https://www.zwilnik.com/?page_id=1107
\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Security, OCaps',0,0,1),
(3000,'2020-01-31','Chopin Free project',1433,'An effort to produce royalty and copyright free versions of Frédéric Chopin work.','
\r\nThe Musopen (www.musopen.org) is a 501(c)(3) non-profit focused on improving access and exposure to music by creating free resources and educational materials. We provide recordings, sheet music, and textbooks to the public for free, without copyright restrictions. Put simply, our mission is to set music free.\r\n
',383,0,0,'CC-BY-SA','musopen, Frédéric Chopin',0,0,1),
-(3004,'2020-02-06','Fixing simple audio problems with Audacity',808,'Sharing a few experiences with Audacity that may be helpful to others','
Overview
\r\n
I recorded the audio for the show I did with MrX in late 2019: “hpr2972 :: The foot of the ski slope”. I was using my Zoom H2n recorder in my car, on a small tripod placed on the dashboard. Something about this setup caused the result to be very boomy and (to me) unpleasant to listen to. This episode is about what I did for a cure, after some research.
\r\n
I have also been using the ‘Truncate Silence’ effect in Audacity incorrectly in the past, and I used the opportunity to learn how to do a better job with it.
\r\n
Now, I am well aware that there are some skilled and experienced Audio Engineers out there in HPR-land. I am certainly not one of these, though I quite enjoy fiddling with audio to make it sound better. I’d like to make two requests:
\r\n\r\n
If I didn’t do a good job, please tell me what I did wrong here, and how I should have done it.
\r\n
Think about doing a show (or shows) on HPR about how to deal with common audio problems. For example: how to remove a mains hum, the use of compression and normalisation.
\r\n\r\n
Long notes
\r\n
A longer form of these notes may be found here (full_shownotes.html). These go into more detail on the steps I took to try and make the audio for show 2972 more tolerable.
\r\n',225,0,1,'CC-BY-SA','audio,Audacity,effects,problem solving',0,0,1),
+(3004,'2020-02-06','Fixing simple audio problems with Audacity',808,'Sharing a few experiences with Audacity that may be helpful to others','
Overview
\r\n
I recorded the audio for the show I did with MrX in late 2019: “hpr2972 :: The foot of the ski slope”. I was using my Zoom H2n recorder in my car, on a small tripod placed on the dashboard. Something about this setup caused the result to be very boomy and (to me) unpleasant to listen to. This episode is about what I did for a cure, after some research.
\r\n
I have also been using the ‘Truncate Silence’ effect in Audacity incorrectly in the past, and I used the opportunity to learn how to do a better job with it.
\r\n
Now, I am well aware that there are some skilled and experienced Audio Engineers out there in HPR-land. I am certainly not one of these, though I quite enjoy fiddling with audio to make it sound better. I’d like to make two requests:
\r\n\r\n
If I didn’t do a good job, please tell me what I did wrong here, and how I should have done it.
\r\n
Think about doing a show (or shows) on HPR about how to deal with common audio problems. For example: how to remove a mains hum, the use of compression and normalisation.
\r\n\r\n
Long notes
\r\n
A longer form of these notes may be found here (full_shownotes.html). These go into more detail on the steps I took to try and make the audio for show 2972 more tolerable.
\r\n',225,0,1,'CC-BY-SA','audio,Audacity,effects,problem solving',0,0,1),
(3009,'2020-02-13','Linux Inlaws S01E01',3570,'Linux Inlaws - a podcast about on topics around free and open source software','
Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.
\r\n
Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute t-rexes or other associated dinosaurs.
\r\n\r\n
\r\nIn this show the lads introduce themselves and discuss the technology they use and why they are putting on the show.\r\n
\r\n',384,111,1,'CC-BY','free open source software revolution',0,0,1),
(3095,'2020-06-12','Intro to GIMP',1064,'An introduction to GIMP to kick off a new series.','
GIMP is the open source alternative to the proprietary Photoshop, and can do most of the same things while respecting your freedom. This show will kick off a new series of tutorials. As a note of caution, I am not an expert, I am just learning GIMP as I go. But I thought there was no harm in sharing my experiences with the HPR community. https://www.ahuka.com/?page_id=1423
\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics',0,0,1),
-(3010,'2020-02-14','FOSDEM first impressions',1638,'Impressions from my first attendance at FOSDEM.','
FOSDEM is the biggest Free and Open Source conference in the world and on its 20th anniversary I decided to attend for the first time. By a good turn of fate, and some well-judged pitching, Ken Fallon secured a stand for the Free Culture Podcasts project which is an umbrella group that covers HPR, many of the shows on The Other Side Network and many more excellent podcasts that are released under creative commons licenses.
\r\n\r\n
This audio is recorded in snippets in between manning the stand and gives some off-the-cuff observations from a FOSDEM noob. I was surprised to find that relatively few visitors to our stand had heard of HPR, which we quickly rectified of course, and I give a brief summary of the feedback we received. Also mentioned in this show, but not actually appearing, are my co-conspirators at FOSDEM, Ken, Beni, JWP as well as Dave Morriss who unfortunately wasn\'t able to join us in person but was very much there in spirit.
\r\n\r\n',268,0,0,'CC-BY-SA','fosdem,conference,podcasts,creative commons',0,0,1),
+(3010,'2020-02-14','FOSDEM first impressions',1638,'Impressions from my first attendance at FOSDEM.','
FOSDEM is the biggest Free and Open Source conference in the world and on its 20th anniversary I decided to attend for the first time. By a good turn of fate, and some well-judged pitching, Ken Fallon secured a stand for the Free Culture Podcasts project which is an umbrella group that covers HPR, many of the shows on The Other Side Network and many more excellent podcasts that are released under creative commons licenses.
\r\n\r\n
This audio is recorded in snippets in between manning the stand and gives some off-the-cuff observations from a FOSDEM noob. I was surprised to find that relatively few visitors to our stand had heard of HPR, which we quickly rectified of course, and I give a brief summary of the feedback we received. Also mentioned in this show, but not actually appearing, are my co-conspirators at FOSDEM, Ken, Beni, JWP as well as Dave Morriss who unfortunately wasn\'t able to join us in person but was very much there in spirit.
\r\n\r\n',268,0,0,'CC-BY-SA','fosdem,conference,podcasts,creative commons',0,0,1),
(3012,'2020-02-18','Sample episode from Wikipediapodden',518,'An English microsode of their Swedish language podcast about Wikipedia.','
',30,75,1,'CC-BY-SA','fosdem, wikipediapodden, swedish, sweden',0,0,1),
(3036,'2020-03-23','WiiU is dead long live WiiU!',1439,'How to approach dea-ish mod communities','
\r\n',36,0,1,'CC-BY-SA','wiiu,modding,hacking,tcpgecko,android,ssl pinning,games',0,0,1),
(3014,'2020-02-20','A Headless Raspberry Pi Streaming Radio',1068,'I use a Raspberry Pi to make a streaming radio device for my pillow speaker.','
In this episode I talk about how I used a Raspberry Pi to create a streaming radio device to feed my pillow speaker. This is something I used to do with clock radios and later a satellite radio, but in an effort to decrease monthly subscription costs for services I did not use optimally, I discontinued my satellite radio subscription about a year ago. This new free solution is an excellent substitute for Satellite Radio so far, since I was mostly listening to this same channel on the Sat Radio but paying about $12 a month for the privilege. The device I’m using is a Raspberry Pi 2 Model B with Ubuntu Server. My barrier to this project in the past was not being able to find the URL for the stream I wanted but I discovered you can find it easily if you use Firefox with Video Download Helper to reveal the URL on a page with media playing (in this case it’s from TuneIn):
Once I figure out the command that plays the stream I want, I save the command as an executable script in /home/$user/bin.
\r\n\r\n
Using the “Radio”
\r\n\r\n
To start playing a stream you first have to SSH into the RasPi. This is easy from a laptop using any terminal emulator. I use pubkey auth so I don’t have to type a password every time. On my phone I use ConnectBot. Once I’m into the Pi I run the radio commands from CLI like espn or kmfa or krvs. To stop playback I kill the process with pkill mpg. I have a 3.5mm audio splitter Plugged into the headphone jack of the USB audio interface. In one side of the splitter I’ve got an old pair of earbuds where one side didn’t work, with the working earbud under my pillow. That’s my pillow speaker. On the other side of the splitter I put the audio cable for an FM transmitter, so that I can use an FM radio to listen to the stream while I’m walking around the house.
\r\n\r\n
Click the image below to see pictures of the setup.
\r\n',238,0,0,'CC-BY-SA','Raspberry Pi, Internet Radio, Streaming Radio, Radio, Streaming Audio, Ubuntu, Ubuntu Server',0,0,1),
(3018,'2020-02-26','Encrypted edit',1234,'Klaatu talks about editing and viewing encrypted files in a tmpfs in RAM','
\r\n',78,0,0,'CC-BY-SA','GPG, privacy',0,0,1),
(3017,'2020-02-25','Developing Black and White Film',2544,'Join me as I develop my first roll of black and white film since over 30 years ago.','
\r\n',383,0,0,'CC-BY-SA','Photography,film,developing,black and white',0,0,1),
(3019,'2020-02-27','Linux Inlaws S01E02 FOSDEM shenanigans',3929,'Linux Inlaws - a podcast about on topics around free and open source software','
Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.
You will probably have seen references to The Environment in various contexts relating to shells, shell scripts, scripts in other languages and compiled programs.
\r\n
In Unix and Unix-like operating systems an environment is maintained by the shell, and we will be looking at how Bash deals with this in this episode. When a script, program or subprocess is invoked it is given an array of strings called the environment. This is a list of name-value pairs, of the form name=value.
\r\n
Using the environment
\r\n
The environment is used to convey various pieces of information to the executing script or program. For example, two standard variables provided by the shell are \'HOME\', which is set to the current user’s home directory and \'PWD, set to the current working directory. The shell user can set, change, remove and view environment variables for their own purposes as we will see in this episode. The Bash shell itself creates and in some cases manages environment variables.
\r\n
The environment contains global data which is passed down to subprocesses (child processes) by copying. However, it is not possible for a subprocess to pass information back to the superior (parent) process.
\r\n
Viewing the environment
\r\n
You can view the environment in a number of ways.
\r\n
\r\n
From the command line the command printenv can do this (this is usually but not always a stand-alone command: it’s /usr/bin/printenv on my Debian system). We will look at this command later.
\r\n
The command env without any arguments does the same thing as printenv without arguments. This is actually a tool to run a program in a modified environment which we will look at later. The environment printing capability can be regarded as more of a bonus feature.
\r\n
Scripting languages like awk (as well as Python and Perl, to name just a few) can view and manipulate the environment.
\r\n
Compiled languages such as C can do this too of course.
\r\n
There are other commands that will show the environment, and we will look at some of these briefly.
\r\n
\r\n
Changing variables in the environment
\r\n
The variables in the environment are not significantly different from the shell parameters we have seen throughout this Bash Tips series. The only difference is that they are marked for export to commands and sub-shells. You will often see variables (or parameters) in the environment referred to as environment variables. The Bash manual makes a distinction between ordinary parameters (variables) and environment variables, but many other sources are less precise about this in my experience.
\r\n
The standard variables in the environment have upper-case names (HOME, SHELL, PWD, etc), but there is no reason why a variable you create should not be in lower or mixed case. In fact, the Bash manual suggests that you should avoid using all upper-case names so as not to clash with Bash’s variables.
\r\n
Variables can be created and changed a number of ways.
\r\n
\r\n
They can be set up at login time (globally or locally) through various standard configuration files. It is intended to look at this subject in an upcoming episode so we will leave discussing the subject until then.
\r\n
By preceding the command or script invocation with name=value expressions which will temporarily place these variables into the environment for the command
\r\n
Using the export command
\r\n
Using the declare command with the -x option
\r\n
The value of an environment variable (once established) can be changed at any time in the sub-shell with a command like myvar=42, just as for a normal variable
\r\n
The export command can also be used to turn off the export marker on a variable
\r\n
Deletion is performed with the unset command (as seen earlier in the series)
\r\n
\r\n
We will look at all of these features in more detail later in the episode.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,variable,environment,environment variable',0,0,1),
-(3020,'2020-02-28','Validating data in Haskell',1500,'tuturto talks about wow to validate incoming http request before acting on them','
Background
\r\n
The space game I working on needs a admin interface that can by used by game masters to view and modify the simulation.
\r\n
For start, I added interface for viewing, modifying and creating new people. It has three HTTP endpoints that are defined below. In this episode, I’ll concentrate on creating a new person and especially making sure that parameters used are valid.
\r\n
/api/admin/people AdminApiPeopleR GET\r\n/api/admin/people/#PersonId AdminApiPersonR GET PUT\r\n/api/admin/addPerson AdminApiAddPersonR POST
\r\n
Types and parsing
\r\n
There are two important approaches on making sure that data is valid. Making illegal state unpresentable and parsing instead of validation.
\r\n
If it’s impossible to create invalid data, you don’t have to validate it. Instead of using Integer and checking that given parameter is 0 or more, you should use Natural. Since Natural can’t have negative values, you don’t have to validate it. Similarly, instead of using a list, you could use NonEmpty to make sure that there’s at least one element present in the collection.
\r\n
Parse, don’t validate is similar approach. Instead of having a lax parser and then validating the result, parser should reject data that doesn’t make sense. By selecting suitable datatypes to represent data in the system, simply parsing incoming message is sometimes enough to validate it at the same time.
\r\n
Person creation
\r\n
Function in charge of generating a new person has signature of generatePersonM :: RandomGen g => StarDate -> PersonOptions -> Rand g Person. Given a current StarDate and PersonOptions describing what kind of person is needed, it will return a computation that can be executed to generate a random person.
\r\n
PersonOptions is very barebones. There’s only one field to tell what kind of age the person should have and even that is an optional field.
AgeOptions has two possibilities. AgeBracket describes case where age should be inside of given range. ExactAge specifies exactly what age should be.
\r\n
data AgeOptions =\r\n AgeBracket Age Age\r\n | ExactAge Age\r\n deriving (Show, Read, Eq)
\r\n
Age is newtype wrapping Natural, thus Age can never be less than zero.
\r\n
newtype Age = Age { unAge :: Natural }\r\n deriving (Show, Read, Eq, Num, Ord)
\r\n
Hand written FromJSON instance takes care of rejecting numbers that aren’t integers and at least zero. One could skip the checks here and parsed Age still couldn’t be negative. Advantage of explicit checks is that we get much nicer error message instead of just annoying runtime exception.
\r\n
instance FromJSON Age where\r\n parseJSON =\r\n withScientific "age"\r\n (\\x -> case toBoundedInteger x of\r\n Nothing ->\r\n mempty\r\n\r\n Just n ->\r\n if n >= 0 then\r\n return $ Age $ fromIntegral (n :: Int)\r\n\r\n else\r\n mempty)
\r\n
So, when creating a new person, you can have:
\r\n
\r\n
no age options at all, computer can pick something
\r\n
specific age, computer calculates date of birth based on current date
\r\n
age bracket, computer calculates date of birth based on current date and bracket
\r\n
age is always integer that is 0 or more
\r\n
\r\n
There’s still possibility of error. Nothing ensure that age bracket makes sense. It could be AgeBracket (Age 10) (Age 5) (bracket from 10 to 5). We need to add a bit of validation.
\r\n
Data.Validation is “a data-type like Either but with an accumulating Applicative”. What this means to me is that I can validate multiple aspects and collect errors in a list. It’s handy for getting all the problems at once, instead of having to fix them one by one and retry after each fix.
\r\n
Our validation function has signature validateAddPerson :: PersonOptions -> Validation [ErrorCode] PersonOptions. Given PersonOptions, it will give list of ErrorCode and original PersonOptions. Multiple validation functions can be combined for more complex validations.
\r\n
In our example validateAgeOptions validates only age related options of the data. validateAddPerson is supposed to validate whole data, but currently it just delegates to validateAgeOptions. In the future, we can add more validations by adding more functions and chaining them with <* operator.
\r\n
validateAddPerson :: PersonOptions -> Validation [ErrorCode] PersonOptions\r\nvalidateAddPerson opt =\r\n pure opt\r\n <* validateAgeOptions opt\r\n\r\nvalidateAgeOptions :: PersonOptions -> Validation [ErrorCode] PersonOptions\r\nvalidateAgeOptions opt =\r\n case personOptionsAge opt of\r\n Nothing ->\r\n _Success # opt\r\n\r\n Just (AgeBracket a b) ->\r\n if a <= b\r\n then _Success # opt\r\n else _Failure # [ AgeBracketStartIsGreaterThanEnd ]\r\n\r\n Just (ExactAge _) ->\r\n _Success # opt
\r\n
Putting it all together
\r\n
Function that handles POST message and creates a new person is shown below:
\r\n
postAdminApiAddPersonR :: Handler Value\r\npostAdminApiAddPersonR = do\r\n _ <- apiRequireAdmin\r\n msg <- requireJsonBody\r\n date <- runDB $ starDate\r\n _ <- raiseIfFailure $ validateAddPerson msg\r\n g <- liftIO newStdGen\r\n let person = evalRand (generatePersonM date msg) g\r\n pId <- runDB $ insert person\r\n returnJson (Entity pId person)
\r\n
It does several things: - check that current user is admin - get json content and parse it to PersonOptions - get current star date from database - validate PersonOptions and return error if validation fails - get new random number generator - generate new person - insert it into database - return tuple of (PersonId, Person)
\r\n
Closing
\r\n
Types should represent only valid states. By having invalid state unpresentable, we can avoid many errors. Likewise, parsing should reject invalid data. This usually follows from having invalid states being unpresentable (you can’t parse invalid message to invalid data if you don’t have way to represent that invalid data).
\r\n
Questions, comments and feedback welcome. Best way to reach me is either by email or in mastodon, where I’m tuturto@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','validation, algebraic data types, json',0,0,1),
+(3013,'2020-02-19','Bash Tips - 21',2497,'Environment variables','
The Environment (More collateral Bash tips)
\r\n
Overview
\r\n
You will probably have seen references to The Environment in various contexts relating to shells, shell scripts, scripts in other languages and compiled programs.
\r\n
In Unix and Unix-like operating systems an environment is maintained by the shell, and we will be looking at how Bash deals with this in this episode. When a script, program or subprocess is invoked it is given an array of strings called the environment. This is a list of name-value pairs, of the form name=value.
\r\n
Using the environment
\r\n
The environment is used to convey various pieces of information to the executing script or program. For example, two standard variables provided by the shell are \'HOME\', which is set to the current user’s home directory and \'PWD, set to the current working directory. The shell user can set, change, remove and view environment variables for their own purposes as we will see in this episode. The Bash shell itself creates and in some cases manages environment variables.
\r\n
The environment contains global data which is passed down to subprocesses (child processes) by copying. However, it is not possible for a subprocess to pass information back to the superior (parent) process.
\r\n
Viewing the environment
\r\n
You can view the environment in a number of ways.
\r\n
\r\n
From the command line the command printenv can do this (this is usually but not always a stand-alone command: it’s /usr/bin/printenv on my Debian system). We will look at this command later.
\r\n
The command env without any arguments does the same thing as printenv without arguments. This is actually a tool to run a program in a modified environment which we will look at later. The environment printing capability can be regarded as more of a bonus feature.
\r\n
Scripting languages like awk (as well as Python and Perl, to name just a few) can view and manipulate the environment.
\r\n
Compiled languages such as C can do this too of course.
\r\n
There are other commands that will show the environment, and we will look at some of these briefly.
\r\n
\r\n
Changing variables in the environment
\r\n
The variables in the environment are not significantly different from the shell parameters we have seen throughout this Bash Tips series. The only difference is that they are marked for export to commands and sub-shells. You will often see variables (or parameters) in the environment referred to as environment variables. The Bash manual makes a distinction between ordinary parameters (variables) and environment variables, but many other sources are less precise about this in my experience.
\r\n
The standard variables in the environment have upper-case names (HOME, SHELL, PWD, etc), but there is no reason why a variable you create should not be in lower or mixed case. In fact, the Bash manual suggests that you should avoid using all upper-case names so as not to clash with Bash’s variables.
\r\n
Variables can be created and changed a number of ways.
\r\n
\r\n
They can be set up at login time (globally or locally) through various standard configuration files. It is intended to look at this subject in an upcoming episode so we will leave discussing the subject until then.
\r\n
By preceding the command or script invocation with name=value expressions which will temporarily place these variables into the environment for the command
\r\n
Using the export command
\r\n
Using the declare command with the -x option
\r\n
The value of an environment variable (once established) can be changed at any time in the sub-shell with a command like myvar=42, just as for a normal variable
\r\n
The export command can also be used to turn off the export marker on a variable
\r\n
Deletion is performed with the unset command (as seen earlier in the series)
\r\n
\r\n
We will look at all of these features in more detail later in the episode.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,42,1,'CC-BY-SA','Bash,variable,environment,environment variable',0,0,1),
+(3020,'2020-02-28','Validating data in Haskell',1500,'Tuula talks about wow to validate incoming http request before acting on them','
Background
\r\n
The space game I working on needs a admin interface that can by used by game masters to view and modify the simulation.
\r\n
For start, I added interface for viewing, modifying and creating new people. It has three HTTP endpoints that are defined below. In this episode, I’ll concentrate on creating a new person and especially making sure that parameters used are valid.
\r\n
/api/admin/people AdminApiPeopleR GET\r\n/api/admin/people/#PersonId AdminApiPersonR GET PUT\r\n/api/admin/addPerson AdminApiAddPersonR POST
\r\n
Types and parsing
\r\n
There are two important approaches on making sure that data is valid. Making illegal state unpresentable and parsing instead of validation.
\r\n
If it’s impossible to create invalid data, you don’t have to validate it. Instead of using Integer and checking that given parameter is 0 or more, you should use Natural. Since Natural can’t have negative values, you don’t have to validate it. Similarly, instead of using a list, you could use NonEmpty to make sure that there’s at least one element present in the collection.
\r\n
Parse, don’t validate is similar approach. Instead of having a lax parser and then validating the result, parser should reject data that doesn’t make sense. By selecting suitable datatypes to represent data in the system, simply parsing incoming message is sometimes enough to validate it at the same time.
\r\n
Person creation
\r\n
Function in charge of generating a new person has signature of generatePersonM :: RandomGen g => StarDate -> PersonOptions -> Rand g Person. Given a current StarDate and PersonOptions describing what kind of person is needed, it will return a computation that can be executed to generate a random person.
\r\n
PersonOptions is very barebones. There’s only one field to tell what kind of age the person should have and even that is an optional field.
AgeOptions has two possibilities. AgeBracket describes case where age should be inside of given range. ExactAge specifies exactly what age should be.
\r\n
data AgeOptions =\r\n AgeBracket Age Age\r\n | ExactAge Age\r\n deriving (Show, Read, Eq)
\r\n
Age is newtype wrapping Natural, thus Age can never be less than zero.
\r\n
newtype Age = Age { unAge :: Natural }\r\n deriving (Show, Read, Eq, Num, Ord)
\r\n
Hand written FromJSON instance takes care of rejecting numbers that aren’t integers and at least zero. One could skip the checks here and parsed Age still couldn’t be negative. Advantage of explicit checks is that we get much nicer error message instead of just annoying runtime exception.
\r\n
instance FromJSON Age where\r\n parseJSON =\r\n withScientific "age"\r\n (\\x -> case toBoundedInteger x of\r\n Nothing ->\r\n mempty\r\n\r\n Just n ->\r\n if n >= 0 then\r\n return $ Age $ fromIntegral (n :: Int)\r\n\r\n else\r\n mempty)
\r\n
So, when creating a new person, you can have:
\r\n
\r\n
no age options at all, computer can pick something
\r\n
specific age, computer calculates date of birth based on current date
\r\n
age bracket, computer calculates date of birth based on current date and bracket
\r\n
age is always integer that is 0 or more
\r\n
\r\n
There’s still possibility of error. Nothing ensure that age bracket makes sense. It could be AgeBracket (Age 10) (Age 5) (bracket from 10 to 5). We need to add a bit of validation.
\r\n
Data.Validation is “a data-type like Either but with an accumulating Applicative”. What this means to me is that I can validate multiple aspects and collect errors in a list. It’s handy for getting all the problems at once, instead of having to fix them one by one and retry after each fix.
\r\n
Our validation function has signature validateAddPerson :: PersonOptions -> Validation [ErrorCode] PersonOptions. Given PersonOptions, it will give list of ErrorCode and original PersonOptions. Multiple validation functions can be combined for more complex validations.
\r\n
In our example validateAgeOptions validates only age related options of the data. validateAddPerson is supposed to validate whole data, but currently it just delegates to validateAgeOptions. In the future, we can add more validations by adding more functions and chaining them with <* operator.
\r\n
validateAddPerson :: PersonOptions -> Validation [ErrorCode] PersonOptions\r\nvalidateAddPerson opt =\r\n pure opt\r\n <* validateAgeOptions opt\r\n\r\nvalidateAgeOptions :: PersonOptions -> Validation [ErrorCode] PersonOptions\r\nvalidateAgeOptions opt =\r\n case personOptionsAge opt of\r\n Nothing ->\r\n _Success # opt\r\n\r\n Just (AgeBracket a b) ->\r\n if a <= b\r\n then _Success # opt\r\n else _Failure # [ AgeBracketStartIsGreaterThanEnd ]\r\n\r\n Just (ExactAge _) ->\r\n _Success # opt
\r\n
Putting it all together
\r\n
Function that handles POST message and creates a new person is shown below:
\r\n
postAdminApiAddPersonR :: Handler Value\r\npostAdminApiAddPersonR = do\r\n _ <- apiRequireAdmin\r\n msg <- requireJsonBody\r\n date <- runDB $ starDate\r\n _ <- raiseIfFailure $ validateAddPerson msg\r\n g <- liftIO newStdGen\r\n let person = evalRand (generatePersonM date msg) g\r\n pId <- runDB $ insert person\r\n returnJson (Entity pId person)
\r\n
It does several things: - check that current user is admin - get json content and parse it to PersonOptions - get current star date from database - validate PersonOptions and return error if validation fails - get new random number generator - generate new person - insert it into database - return tuple of (PersonId, Person)
\r\n
Closing
\r\n
Types should represent only valid states. By having invalid state unpresentable, we can avoid many errors. Likewise, parsing should reject invalid data. This usually follows from having invalid states being unpresentable (you can’t parse invalid message to invalid data if you don’t have way to represent that invalid data).
\r\n
Questions, comments and feedback welcome. Best way to reach me is either by email or in mastodon, where I’m Tuula@mastodon.social.
\r\n',364,107,0,'CC-BY-SA','validation, algebraic data types, json',0,0,1),
(3022,'2020-03-03','FOSDEM 2020 Stand Interviews',5578,'Interviews with some of the stands at FOSDEM 2020','
\r\n0 A.D. is a free and open-source, real-time strategy game under development by Wildfire Games. It is a historical war and economy game focusing on the years between 500 BC and 1 BC for the first part, and a planned second part for the years 1 AD to 500 AD. The game is cross-platform, playable on Windows, macOS, FreeBSD, Linux, and OpenBSD. It aims to be entirely free and open-source, using the GPLv2+ license for the game engine and CC BY-SA for the game art. \r\n
\r\n\r\n
\r\nWildfire Games is a global group of volunteer game developers. We create open source games and mods.\r\n
\r\n
Listen to the interview with Stanislas Dolcini from 0 A.D.
\r\nPrebuilt OpenJDK Binaries for Free! \r\nJava is the world\'s leading programming language and platform. AdoptOpenJDK uses infrastructure, build and test scripts to produce prebuilt binaries from OpenJDK class libraries and a choice of either the OpenJDK HotSpot or Eclipse OpenJ9 VM. All AdoptOpenJDK binaries and scripts are open source licensed and available for free.\r\n
\r\n
Listen to the interview with Stewart X Addison AdoptOpenJDK
\r\nApache Camel is an open source framework for message-oriented middleware with a rule-based routing and mediation engine that provides a Java object-based implementation of the Enterprise Integration Patterns using an application programming interface (or declarative Java domain-specific language) to configure routing and mediation rules. The domain-specific language means that Apache Camel can support type-safe smart completion of routing rules in an integrated development environment using regular Java code without large amounts of XML configuration files, though XML configuration inside Spring Framework is also supported. Camel is often used with Apache ServiceMix, Apache ActiveMQ and Apache CXF in service-oriented architecture projects. \r\n
\r\n
Listen to the interview with Rachel Yordán from Apache Camel
\r\nCoderDojo organizes free coding workshops (called Dojos) for girls and boys from 7 to 18 years old. A Dojo is entirely prepared and led by volunteers. If you are older, then you can help out at an existing Dojo or start your very own CoderDojo! \r\n
\r\nThe Eclipse Foundation provides our global community of individuals and organizations with a mature, scalable, and business-friendly environment for open source software collaboration and innovation. The Foundation is home to the Eclipse IDE, Jakarta EE, and over 350 open source projects, including runtimes, tools, and frameworks for a wide range of technology domains such as the Internet of Things, automotive, geospatial, systems engineering, and many others.\r\n
\r\n
Listen to the interview with Mikaël Barbero, Release Engineer, Eclipse Foundation
\r\nGitLab is a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking and CI/CD pipeline features, using an open-source license, developed by GitLab Inc.\r\n
\r\n
Listen to the interview with David Planella Director Of Community Relations at GitLab
\r\nGNU Health combines the socioeconomic determinants of health with state-of-the-art technology in bioinformatics and clinical genetics. It manages the internal processes of a health institution, such as financial management, stock and pharmacies or laboratories (LIMS)\r\n
\r\n
Listen to the interview with Axel K. Braun about GNU Health
\r\nHackages is a community-based tech company with education at its core. We help you boost your skills and realise your projects through our expertise in training, product development, consultancy and community building.\r\n
\r\n
Listen to the interview with Marta Moliz about Javascript
\r\nJenkins X provides pipeline automation, built-in GitOps, and preview environments to help teams collaborate and accelerate their software delivery at any scale.\r\n
\r\n
Listen to the interview with Kara de la Marck, Open Source Community Manager at CloudBees, about Jenkins-x
\r\n100% Open source collaboration tools: email, calendaring, Mattermost chat, webRTC video meetings, document collaboration with LibreOffice Online, integration with file storage services and more.\r\n
\r\n
Listen to the interview with Brian Joseph about Kopano
\r\nVirtual Machine Management on Kubernetes. Building a virtualization API for Kubernetes. KubeVirt technology addresses the needs of development teams that have adopted or want to adopt Kubernetes but possess existing Virtual Machine-based workloads that cannot be easily containerized. More specifically, the technology provides a unified development platform where developers can build, modify, and deploy applications residing in both Application Containers as well as Virtual \r\n
\r\n
\r\n
\r\nThere are a number of great open source tools for bare metal host provisioning, including Ironic. Metal3.io aims to build on these technologies to provide a Kubernetes native API for managing bare metal hosts via a provisioning stack that is also running on Kubernetes. We believe that Kubernetes Native Infrastructure, or managing your infrastructure just like your applications, is a powerful next step in the evolution of infrastructure management.\r\n
\r\nMicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments. \r\n
\r\n
\r\n
\r\nEspruino is an open-source JavaScript interpreter for microcontrollers. It is designed for devices with small amounts of RAM (as low as 8kB). Espruino was created by Gordon Williams in 2012 as an attempt to make microcontroller development truly multiplatform. It was made open-source in 2013 after a successful Kickstarter campaign for a development board running the software.\r\n
\r\n
Listen to the interview with Christine Spindler from Micropython and Gordon Williams from Espruino
\r\nThe OpenStack Foundation promotes the global development, distribution and adoption of open infrastructure with more than 105,000 community members from 187 countries around the world. The OpenStack Foundation was founded in September 2012 to provide an independent home for the OpenStack cloud operating system, which has since become one of the largest and most diverse open source projects in history.\r\n
\r\n
Listen to the interview with Jeremy Stanley about OpenStack Foundation
\r\nOpenTAP is an open source project for test automation. An open source test sequencing engine. The project is available online at \r\nhttps://Gitlab.com/OpenTAP/OpenTAP\r\n
\r\n
Listen to the interview with Michael Dieudonné about OpenTAP
\r\nWe are a UK organisation committed to develop and sustain UK leadership in Open Technology. We promote businesses, projects and people, who use Open. We strive to collaborate across all existing organisations for Open.\r\n
\r\n
Listen to the interview with Amanda Brock about OpenUK
\r\nThe Open Web Application Security Project (OWASP) is a nonprofit foundation that works to improve the security of software. Through community-led open source software projects, hundreds of local chapters worldwide, tens of thousands of members, and leading educational and training conferences, the OWASP Foundation is the source for developers and technologists to secure the web.\r\n
\r\n
Listen to the interview with Antonis Manaras about OWASP
\r\nPercona is a leading provider of unbiased open source database solutions that allow organizations to easily, securely and affordably maintain business agility, minimize risks, and stay competitive.\r\n
\r\n
Listen to the interview with Evgeniy Patlan about Percona
\r\nAn Open Source Smartwatch For Your Favorite Devices. Low Cost, High Fidelity.\r\n \r\nThe PineTime is a free and open source smartwatch capable of running custom-built open operating systems. Some of the notable features include a heart rate monitor, a week-long battery as well as a capacitive touch IPS display that is legible in direct sunlight. It is a fully community driven side-project, which means that it will ultimately be up to the developers and end-users to determine when they deem the PineTime ready to ship. \r\n
\r\n
Listen to the interview with Koen Zandberg about PineTime
\r\nAt Teckids, all children and adolescents become part of the Free Software community - as users and contributors. Our young tutors aged between 9 and 16 regularly work together on their workshops, which they then lead for children and adolescents of the same age.\r\n
\r\n
Listen to the interview with Niels Bradek from Skolelinux / AlekSIS / Teckids
\r\nTechnoethical is an online shop that sells hardware compatible with operating systems that fully respect users\' freedom as defined by the GNU Project. We are based in Bucharest, Romania (European Union) and we ship worldwide.\r\n
\r\n
Listen to the interview with Tiberiu Turbureanu about Technoethical
\r\nTinyGo is a project to bring the Go programming language to microcontrollers and modern web browsers by creating a new compiler based on LLVM. You can compile and run TinyGo programs on several different microcontroller boards such as the BBC micro:bit and the Arduino Uno. TinyGo can also be used to produce WebAssembly (WASM) code which is very compact in size.\r\n
\r\n
Listen to the interview with Ron \"Dead Program\" Evans about Tiny Go
\r\nTurnkey Open Source Hypervisor. Based on XenServer, XCP-ng is the result of massive cooperation between individuals and companies, to deliver a product without limits. No restrictions on features and every bit available on GitHub! \r\n
\r\n
Listen to the interview with Olivier Lambert about XCP-ng
\r\nZenroom: easy cryptography to the people. Zenroom is a tiny and portable virtual machine that authenticates and manages access to data using human-readable smart contracts. Zenroom is easy to program to performs fast cryptographic operations for end-to-end encryption and runs on: desktop, embedded, mobile phones, clouds and web browsers.\r\n
\r\n
Listen to the interview with Denis \"Jaromil\" Roio from Zenroom
Track name : Free Software Song\r\nPerformer : Fenster\r\nRecorded date : 2002\r\nCopyright : Copyright (C) 2002, \r\nFenster LLC. Verbatim copying of this entire recording is permitted in any medium, \r\nprovided this notice is preserved. \r\nPerformers: \r\nPaul Robinson (vocals), \r\nRoman Kravec (guitar), \r\nEd D\'Angelo (bass), \r\nDave Newman (drums), \r\nBrian Yarbrough (trumpet), \r\nTony Moore (trumpet). \r\n
\r\n\r\n',30,78,0,'CC-BY-SA','FOSDEM 2020',0,0,1),
(3023,'2020-03-04','Critique My Script, Episode 1 - Qots-Crew-Gen',782,'Discussion of using a shell script to randomly generate a ten man aircrew.','
This is my second HPR episode and the first in what could be a series about shell scripts I have written. This episode goes through a short script which randomly generates first and last names for a ten man aircrew to use with the Avalon Hill game B-17 Queen of the Skies.
\r\n',380,0,0,'CC-BY-SA','Shell Script,Random Numbers,Awk',0,0,1),
(3024,'2020-03-05','A funny thing happened the other day',259,'Describing a funny thing that happened the other day.','
\r\n',201,0,1,'CC-BY-SA','story, audio, sound',0,0,1),
@@ -19355,7 +19475,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3031,'2020-03-16','Daniel Persson - Me? Me!',1131,'I talk about who I am and where I come from and what my interests are.','
Talking about my history, forgot to talk about my open-source interests and different projects I’m a part of.
\r\n
If you want to know more about me you could follow any of the links below.
\r\n',382,0,0,'CC-BY-SA','biography',0,0,1),
(3032,'2020-03-17','piCore on a Raspberry Pi 1 Model B',651,'How I revived my Raspberry Pi Model 1 B with piCore and a tiny SD card.','
In this episode, I discuss how I revived my Raspberry Pi 1 Model B using piCore, a specialized version of Tiny Core Linux for the Raspberry Pi, on a 128 MB SD card that I had laying around. I also mention nanoBSD and Alpine Linux as possible alternatives to try out.
\r\n',152,0,0,'CC-BY-SA','raspberrypi,rpi,linux,bsd',0,0,1),
(3033,'2020-03-18','Linux Inlaws S01E03 32 Bit Time Travel',3543,'Linux Inlaws - a podcast on topics around free and open source software','
',384,111,1,'CC-BY-SA','Linux Inlaws, free open source software, revolution, FLOSS',0,0,1),
-(3034,'2020-03-19','How to bridge Freenode IRC rooms to Matrix.org',786,'Thaj builds upon a previous episode by Clacke to deep dive into bridging IRC to Matrix.org','
Matrix.org is a Free, open source, and decentralized messaging system. One of the strong points of this system is its ability to bridge multiple protocols together into one interface.
Bridging to Freenode\'s IRC server is built into Matrix.org. If you already have a registered Nick on Freenode it is a simple process to associate your Matrix and Freenode accounts.
\r\n
Steps to bridge to a Freenode IRC room
\r\n\r\n
Start a direct message with @freenode_NickServ:matrix.org and send the command identify nick pass (replacing nick and pass with your credentials).
\r\n
Direct message @appservice-irc:matrix.org with the command !storepass nick:pass
\r\n
Join the room #freenode_#oggcastplanet:matrix.org. You can really join any room on freenode with #freenode_#CHANNAME:matrix.org
\r\n
PROFIT!!!!
\r\n
\r\n
\r\n',270,108,0,'CC-BY-SA','Freenode, IRC, Matrix.org, Riot.im, Social Media',0,0,1),
+(3034,'2020-03-19','How to bridge Freenode IRC rooms to Matrix.org',786,'Thaj builds upon a previous episode by Clacke to deep dive into bridging IRC to Matrix.org','
Matrix.org is a Free, open source, and decentralized messaging system. One of the strong points of this system is its ability to bridge multiple protocols together into one interface.
Bridging to Freenode\'s IRC server is built into Matrix.org. If you already have a registered Nick on Freenode it is a simple process to associate your Matrix and Freenode accounts.
\r\n
Steps to bridge to a Freenode IRC room
\r\n\r\n
Start a direct message with @freenode_NickServ:matrix.org and send the command identify nick pass (replacing nick and pass with your credentials).
\r\n
Direct message @appservice-irc:matrix.org with the command !storepass nick:pass
\r\n
Join the room #freenode_#oggcastplanet:matrix.org. You can really join any room on freenode with #freenode_#CHANNAME:matrix.org
\r\n
PROFIT!!!!
\r\n
\r\n
\r\n',270,108,0,'CC-BY-SA','Freenode, IRC, Matrix.org, Riot.im, Social Media',0,0,1),
(3037,'2020-03-24','Ambient recording at Union Station',205,'Ambient recording in the main hall at Union Station, Chicago','
This was recorded in the main hall at Union Station in Chicago, Illinois. \r\nThere was a brief security announcement about watching for bags or package left unattended.
',318,101,0,'CC-BY-SA','soundscape, train station',0,0,1),
(3038,'2020-03-25','Solo Magic',2244,'All the magic without the gathering','
This episode outlines my single-player mod for the Magic: The Gathering card game.
',78,95,0,'CC-BY-SA','magic, mtg',0,0,1),
(3040,'2020-03-27','Why use GNU Autotools',1766,'6 good reasons you should be using a build system','
GNU Autotools is a build system that helps you distribute your code in a predictable and reliable way.\r\nBuild systems offer many benefits, including:\r\n
\r\n\r\n\r\n
Standard and automate-able build process
\r\n
hooks into packaging systems (RPM, DEB, Slackbuilds, Flatpak, Snap, and so on)
\r\n
version reporting
\r\n
build for various OSes
\r\n
you get lots of code to handle every possible corner case, for free
\r\n
with a single configuration, you can build your project as the developer, build it for packagers, and enable users to build it for themselves
\r\n\r\n\r\n
Next up: how to use GNU Autotools
',78,0,0,'CC-BY-SA','autotools,build,make',0,0,1),
@@ -19376,46 +19496,46 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3060,'2020-04-24','Running a local imap server',360,'Ken installs courier-imap locally to have a local backup of his mail.','
Setting up a local imap server
\r\n
To install a local imap daemon that will only listen to localhost connections, made via ssh tunneling. This is for use as a local backup of your imap files, or for keeping a remote backup somewhere.
\r\n
This is not a mail delivery solution but rather a way to keep a backup of your email using to a MailDir directory that you can access using your email client. As each message is stored in its own file, you can also use normal tools like find|sed|awk|grep to find messages.
\r\n
This setup can be installed locally or remotely on, for example, a raspberry pi. In that case you can enable a portforwarding rule in ~/.ssh/config to include something like LocalForward 127.0.0.1:2143 127.0.0.1:143
\r\n
Install using aptitude install courier-imap courier-authdaemon
\r\n
You can check the status using systemctl status courier-imap.service courier-authdaemon.service
\r\n
Edit the file /etc/courier/imapd and modify the following settings:
\r\n
Address to listen on, can be set to a single IP address.
\r\n
< ADDRESS=0\r\n > ADDRESS=127.0.0.1\r\n
\r\n
Maximum number of IMAP servers started
\r\n
< MAXDAEMONS=40\r\n > MAXDAEMONS=80\r\n
\r\n
Maximum number of connections to accept from the same IP address
\r\n
< MAXPERIP=20\r\n > MAXPERIP=40\r\n
\r\n
The following setting is optional, and causes messages from the given folder to be automatically deleted after the given number of days.
Then restart the service using systemctl restart courier-imap.service courier-authdaemon.service.
\r\n
When I did this I got a strange error about but installing the package gamin fixed it. Which is a Library providing the FAM File Alteration Monitor API.
\r\n
Filesystem notification initialization error -- contact your mail\r\n administrator (check for configuration errors with the FAM/Gamin library)\r\n
\r\n',30,0,0,'CC-BY-SA','courier, imap, MailDir, raspberrypi',0,0,1),
(3058,'2020-04-22','The COVID-19 Work From Home Stream - Day 3',6065,'A few HPR characters decide to spend some of their social distancing time being social','
Friday 2020-03-02
\r\n
\r\n
A secret message left for Thaj (for the record it pronounced like the Taj in Taj Mahal)
\r\n',270,0,1,'CC-BY-SA','Bidets, ffmpeg, driving, Programming, Arch Linux, OggcastPlanet, education',0,0,1),
(3061,'2020-04-27','Parental Controls With Mike Ivy',2051,'We talk about Parental Controls and IOT device ','
\r\n
Amazon free time
\r\n
Microsoft family safety live account
\r\n
\r\n',36,0,1,'CC-BY-SA','IOT,hacking,amazon,android,firestick',0,0,1),
-(3057,'2020-04-21','Formal verification with Coq',1271,'tuturto talks about formally verifying code','
Coq is interactive theorem prover, which comes with its own programming language Gallina.
\r\n
If we wanted to write function that calculates resulting blood type based on two gene alleles, we could do it as following.
\r\n
Start by defining types that represents alleles and resulting blood type:
It states that if bloodType is applied with anything else than two BloodTypeO, the result will not be TypeO. Proof for this is longer. It goes through each and every combination of parameters and proves that the result isn’t TypeO. Mathematician could write this as: ∀ b1 b2, b1 ≠ BloodTypeO ∨ b2 ≠ BloodTypeO → bloodType b1 b2 ≠ TypeO.
\r\n
If code above is in module called Genes, we can add following at the end to instruct compiler to emit Haskell code:
\r\n
Extraction Language Haskell.\r\nExtraction Genes.
\r\n
Resulting code is as follows:
\r\n
data BloodTypeAllele =\r\n BloodTypeA\r\n | BloodTypeB\r\n | BloodTypeO\r\n\r\ndata BloodType =\r\n TypeA\r\n | TypeB\r\n | TypeAB\r\n | TypeO\r\n\r\nbloodType :: BloodTypeAllele -> BloodTypeAllele -> BloodType\r\nbloodType a b =\r\n case a of {\r\n BloodTypeA -> case b of {\r\n BloodTypeB -> TypeAB;\r\n _ -> TypeA};\r\n BloodTypeB -> case b of {\r\n BloodTypeA -> TypeAB;\r\n _ -> TypeB};\r\n BloodTypeO ->\r\n case b of {\r\n BloodTypeA -> TypeA;\r\n BloodTypeB -> TypeB;\r\n BloodTypeO -> TypeO}}
\r\n
Now we have Haskell code that started in Coq, has two properties formally verified and is ready to be integrated with rest of the system.
It states that if bloodType is applied with anything else than two BloodTypeO, the result will not be TypeO. Proof for this is longer. It goes through each and every combination of parameters and proves that the result isn’t TypeO. Mathematician could write this as: ∀ b1 b2, b1 ≠ BloodTypeO ∨ b2 ≠ BloodTypeO → bloodType b1 b2 ≠ TypeO.
\r\n
If code above is in module called Genes, we can add following at the end to instruct compiler to emit Haskell code:
\r\n
Extraction Language Haskell.\r\nExtraction Genes.
\r\n
Resulting code is as follows:
\r\n
data BloodTypeAllele =\r\n BloodTypeA\r\n | BloodTypeB\r\n | BloodTypeO\r\n\r\ndata BloodType =\r\n TypeA\r\n | TypeB\r\n | TypeAB\r\n | TypeO\r\n\r\nbloodType :: BloodTypeAllele -> BloodTypeAllele -> BloodType\r\nbloodType a b =\r\n case a of {\r\n BloodTypeA -> case b of {\r\n BloodTypeB -> TypeAB;\r\n _ -> TypeA};\r\n BloodTypeB -> case b of {\r\n BloodTypeA -> TypeAB;\r\n _ -> TypeB};\r\n BloodTypeO ->\r\n case b of {\r\n BloodTypeA -> TypeA;\r\n BloodTypeB -> TypeB;\r\n BloodTypeO -> TypeO}}
\r\n
Now we have Haskell code that started in Coq, has two properties formally verified and is ready to be integrated with rest of the system.
\r\n',364,0,0,'CC-BY-SA','Coq, Haskell, mathematics',0,0,1),
(3059,'2020-04-23','A quick intro to Snapcast',293,'A brief overview of Snapcast, an open source multi-room audio streaming system.','
',386,0,1,'CC-BY-SA','opensource, selfhosted',0,0,1),
(3062,'2020-04-28','Vassal: How to play board games while remote',931,'How to do physical distancing while avoiding social distance using digitized boardgames','
There are some things that may be confusing the first time, but the game engine works well, the rule- and tile-set we played worked well, text chat is surprisingly adequate for talking to people while playing, and I would like to play again some time.
',311,95,0,'CC-BY-SA','game, board game, xmpp, remote, network game',0,0,1),
-(3063,'2020-04-29','Pens, pencils, paper and ink - 1',879,'Looking at a few more of my writing implements','
Introduction
\r\n
It’s been over four years since I did a show about fountain pens. It was in the What’s in My Toolkit series entitled What’s in my case, show 1941 released on 2016-01-11.
\r\n
I thought it might be appropriate to visit the subject once again. I want to tell you about some new pens and pencils I have acquired, some inks I am enjoying and some of the notebooks I have bought.
\r\n
There’s too much for a single show here, so I’m making a mini-series of three shows. This also leaves the door open for more when the collection grows in the future!
\r\n
Long notes
\r\n
I have provided detailed notes with pictures for this episode, and these can be viewed here.
',225,112,1,'CC-BY-SA','fountain pen,ballpoint pen',0,0,1),
+(3063,'2020-04-29','Pens, pencils, paper and ink - 1',879,'Looking at a few more of my writing implements','
Introduction
\r\n
It’s been over four years since I did a show about fountain pens. It was in the What’s in My Toolkit series entitled What’s in my case, show 1941 released on 2016-01-11.
\r\n
I thought it might be appropriate to visit the subject once again. I want to tell you about some new pens and pencils I have acquired, some inks I am enjoying and some of the notebooks I have bought.
\r\n
There’s too much for a single show here, so I’m making a mini-series of three shows. This also leaves the door open for more when the collection grows in the future!
\r\n
Long notes
\r\n
I have provided detailed notes with pictures for this episode, and these can be viewed here.
',225,112,1,'CC-BY-SA','fountain pen,ballpoint pen',0,0,1),
(3064,'2020-04-30','How I got started in Electronics',427,'How I got started in Electronics and some job stuff','
\r\n',318,0,0,'CC-BY-SA','electronics, soldering, trains, jobs',0,0,1),
(3105,'2020-06-26','Akaso EK7000 Pro',1009,'My experience with an inexpensive Waterproof action camera called the Akaso EK7000 Pro','
Action cameras are becoming very popular, and many incorporate a waterproof feature. If you want to try this with something less expensive than a GoPro, take a look at this review.
\r\n',198,0,0,'CC-BY-SA','Camera, Waterproof Camera, Action camera',0,0,1),
-(3068,'2020-05-06','Keeping track of downloads in Elm',791,'tuturto shows how to keep track of what data is being downloaded in Elm','
Background
\r\n
I have page that requests several resources from server. To keep track what is going on, I initially had model like:
\r\n
type alias Model =\r\n { availableChassis : List Chassis\r\n , chassisLoaded : Bool\r\n , chassisLoading : Bool\r\n ...\r\n }
\r\n
Problem with this is that I have to remember to check those boolean flags while rendering on screen. And it’s possible to have inconsistent state (both loading and loaded).
\r\n
Solution
\r\n
We can model state with algebraic datatypes and we don’t even have to write it by ourselves as there’s RemoteData library.
\r\n
Now we can change our model to following:
\r\n
import RemoteData exposing (RemoteData(..), WebData)\r\n\r\ntype alias Model =\r\n { availableChassis : WebData (List Chassis)\r\n }
\r\n
\r\n
availableChassis has four states it can be in:\r\n
\r\n
NotAsked, data isn’t available and it hasn’t been requested from server
\r\n
Loading, data isn’t available, but it has been requested from server
\r\n
Success (List Chassis), data has been loaded from server
\r\n
Failure Http.Error, there was error while loading data
\r\n
\r\n
\r\n
For example, while rendering the view, you could do
\r\n',364,0,0,'CC-BY-SA','Elm, programming',0,0,1),
+(3068,'2020-05-06','Keeping track of downloads in Elm',791,'Tuula shows how to keep track of what data is being downloaded in Elm','
Background
\r\n
I have page that requests several resources from server. To keep track what is going on, I initially had model like:
\r\n
type alias Model =\r\n { availableChassis : List Chassis\r\n , chassisLoaded : Bool\r\n , chassisLoading : Bool\r\n ...\r\n }
\r\n
Problem with this is that I have to remember to check those boolean flags while rendering on screen. And it’s possible to have inconsistent state (both loading and loaded).
\r\n
Solution
\r\n
We can model state with algebraic datatypes and we don’t even have to write it by ourselves as there’s RemoteData library.
\r\n
Now we can change our model to following:
\r\n
import RemoteData exposing (RemoteData(..), WebData)\r\n\r\ntype alias Model =\r\n { availableChassis : WebData (List Chassis)\r\n }
\r\n
\r\n
availableChassis has four states it can be in:\r\n
\r\n
NotAsked, data isn’t available and it hasn’t been requested from server
\r\n
Loading, data isn’t available, but it has been requested from server
\r\n
Success (List Chassis), data has been loaded from server
\r\n
Failure Http.Error, there was error while loading data
\r\n
\r\n
\r\n
For example, while rendering the view, you could do
\r\n',364,0,0,'CC-BY-SA','Elm, programming',0,0,1),
(3080,'2020-05-22','Ansible ping',440,'Troubleshooting a basic install of Ansible','Here are some steps you need to should take when setting up Ansible for the first time.\r\n\r\n
\r\nCheck that your server is up and reported correctly in your file by having Ansible ping it. This should allow you to determine if at least there is a command and control connection available.\r\n\r\n
\r\n\r\nThis uses the group all and will ping all servers under it. The reply below shows a positive and negative response. \r\n\r\n
my_server | SUCCESS => {\r\n \"ansible_facts\": {\r\n \"discovered_interpreter_python\": \"/usr/bin/python\"\r\n },\r\n \"changed\": false,\r\n \"ping\": \"pong\"\r\n}\r\nyour_server | UNREACHABLE! => {\r\n \"changed\": false,\r\n \"msg\": \"Failed to connect to the host via ssh: ssh: connect to host 192.168.1.2 port 22: No route to host\",\r\n \"unreachable\": true\r\n}\r\n
\r\n\r\nThe msg will give you a clue as to what is going wrong and you should try to ssh directly with the Ansible credentials again, and then try and ping using Ansible.\r\n
\r\n\r\nIf there is no reply all is good. For your reference I will remove the hosts line and this is the response.\r\n
ansible-playbook --syntax-check ~/my_example.yaml\r\nERROR! the field \'hosts\' is required but was not set\r\n
\r\n\r\n
Confirm everything works together
\r\n\r\nAfter that you should be able to run the playbook using.\r\n\r\n
ansible-playbook --inventory-file my_inventory.yaml ~/my_example.yaml\r\n\r\nPLAY [Test Ping] ***************************************************************************************************\r\n\r\nTASK [Gathering Facts] *********************************************************************************************\r\n[WARNING]: Platform linux on host my_server is using the discovered Python interpreter at /usr/bin/python, but\r\nfuture installation of another Python interpreter could change this. See\r\nhttps://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.\r\nok: [my_server]\r\nfatal: [your_server]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: ssh: connect to host 192.168.1.2 port 22: No route to host\", \"unreachable\": true}\r\n\r\nTASK [ping] ********************************************************************************************************\r\nok: [my_server]\r\n\r\nPLAY RECAP *********************************************************************************************************\r\nmy_server : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \r\nyour_server : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0\r\n
\r\n',30,0,0,'CC-BY-SA','ansible, ping, ssh',0,0,1),
(3084,'2020-05-28','AudioBookClub 18 - Star Trek: The Continuing Mission',6017,'The HPR Audiobook Club reviews the fan audio drama Star Trek: The Continuing Mission','
Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.
Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.
\r\n
As always; remember to visit the HPR contribution page HPR could really use your help right now.
\r\n
Sincerely, The HPR Audiobook Club
\r\n
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
Our Audio
\r\n\r\n
This episode was processed using Audacity. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.
\r\n',270,0,1,'CC-BY-SA','Audiobooks, Audio Drama, Star Trek',0,0,1),
-(3100,'2020-06-19','For your consideration - Makers Corner',4534,'Makers Corner is a tech oriented DIY podcast, from the Other Side Podcast Network','
\r\nI\'m amazed I didn\'t find this podcast earlier, epically as one half of the team is HPR Host Yannick, and that we listed it on our Sister Project Free Culture Podcasts.
\r\n
\r\nThis show is a sample episode I picked, but it is not a typical show. I wanted to give a bit more exposure to the interview.\r\n
',30,75,0,'CC-BY-SA','pimoroni, gadgetoid, Monster Mouth Headphone Holder,Free Culture Podcasts',0,0,1),
+(3100,'2020-06-19','For your consideration - Makers Corner',4534,'Makers Corner is a tech oriented DIY podcast, from the Other Side Podcast Network','
\r\nI\'m amazed I didn\'t find this podcast earlier, epically as one half of the team is HPR Host Yannick, and that we listed it on our Sister Project Free Culture Podcasts.
\r\n
\r\nThis show is a sample episode I picked, but it is not a typical show. I wanted to give a bit more exposure to the interview.\r\n
',30,75,0,'CC-BY-SA','pimoroni, gadgetoid, Monster Mouth Headphone Holder,Free Culture Podcasts',0,0,1),
(3074,'2020-05-14','For your consideration - Escape Pod',1773,'A sample episode from Escape Pod The Original Science Fiction Podcast','
\r\nIt\'s high time I submitted a sample episode from Escape Pod, one of the many excellent Podcasts from the Escape Artists. They are a serious platform for the best science fiction out there today.\r\n
\r\n
\r\nWith so much choice, I can pick a recommendation that I think will be right up HPR\'s alley, and that is Escape Pod 624: Fandom for Robots released on April 19, 2018 written by Vina Jie-Min Prasad and Narrated by Trendane Sparks.\r\n
',30,75,1,'CC-BY-NC-ND','EA Podcasts, Escape Pod, Fandom for Robots, Vina Jie-Min Prasad, Trendane Sparks',0,0,1),
-(3326,'2021-05-03','HPR Community News for April 2021',4825,'HPR Volunteers talk about shows released and comments posted in April 2021','\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.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr3291\n(2021-03-15) \"The New Audacity and Batch Processing Macros\"\nby Ahuka.
\n
\n
\n
\nComment 4:\nbrother mouse on 2021-04-04:\n\"audacity batch\"
\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
Booth kit update
\n
The FSF Europe have sent us a selection of stickers and leaflets to add to our booth kit(s).
Select your slot and check for the confirmation email
\n
Post your show as normal - but add a note to say it\'s an anonymous user.
\n
\n
\n
Older HPR shows on archive.org
\n
The project to upload the older HPR shows to archive.org has been quiescent for a few years. The shows between 1 and 870 had not been uploaded prior to April 2021 (though some shows had been uploaded in batches in the early days, without notes etc).
\n
However, this old show project has been restarted this month, after new software had been written to help manage the process. At the time of writing 65 shows in the range 1-870 have been uploaded, with notes, and with the same range of audio formats used for current shows.
\n
Since we don\'t want to upload shows without summaries or tags the two projects are now tied together. So we will be all the more welcoming of tag and summary updates sent to the address referenced in the next section!
\n
The plan is to report the numbers uploaded each month in the AOB section of the Community News show notes.
\n
HPR shows on archive.org have the URL https://archive.org/details/hprXXXX where XXXX is the show number with leading zeroes. So for example, show 840\'s URL is: https://archive.org/details/hpr0840.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nDave Morriss, Windigo
\n
Over the period tags and/or summaries have been added to 23 shows which were without them.
\n
There are now 384 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3351,'2021-06-07','HPR Community News for May 2021',3956,'The HPR Matrons are doing the rounds.','\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 12 comments in total.
\n
Past shows
\n
There are 5 comments on\n4 previous shows:
\n
\n
hpr2499\n(2018-03-01) \"Tuning around the HF 40Mtr band\"\nby MrX.
\n
\n
\n
\nComment 3:\nDave (thelovebug) on 2021-05-19:\n\"Coming to this late, but wow!\"
\n
\nComment 4:\nMrX on 2021-05-29:\n\"Re: Coming to this late, but wow!\"
Comment 1:\nmpardo on 2021-05-18:\n\"mpardohpr@gmail.com\"
\n
hpr3342\n(2021-05-25) \"HPR 2020 - 2021 New Years Eve Show Episode 2\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\n
hpr3346\n(2021-05-31) \"HPR 2020 - 2021 New Years Eve Show Episode 3\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\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
Reminder - Stuff you need to know
\n
\n
HPR will stop as a project if there are not enough shows.
\n
We do not syndicate shows not produced for HPR.
\n
You are agreeing to license your show CC-BY-SA.
\n
You have permission to redistribute your show in its entirety.
\n
Your show will not be moderated.
\n
Your show will be signaled as containing explicit content.
\n
You determine where in the schedule your show will be released.
\n
We use UTF-8 end to end.
\n
Your show will be heard by an International Audience.
\n
We also need emergency shows.
\n
You will no longer be allowed to edit HPR pages on Wikipedia.
\n
\n
Reminder - Scheduling Guidelines
\n\n
You must have your audio recording ready to upload before you pick a slot.
\n
Always try and fill any free slots that are available in the upcoming two weeks.
\n
If the queue is filling up then please consider leaving some slots free for new contributors.
\n
If you have a non urgent show then find a empty week and schedule it then.
\n
If you are uploading a series of shows, consider scheduling one every two weeks.
\n\n
Older HPR shows on archive.org
\n
This month 96 additional shows in the range 1-870 have been uploaded to the Internet Archive.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 7 shows which were without them.
\n
There are currently 377 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3326,'2021-05-03','HPR Community News for April 2021',4825,'HPR Volunteers talk about shows released and comments posted in April 2021','\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.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr3291\n(2021-03-15) \"The New Audacity and Batch Processing Macros\"\nby Ahuka.
\n
\n
\n
\nComment 4:\nbrother mouse on 2021-04-04:\n\"audacity batch\"
\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
Booth kit update
\n
The FSF Europe have sent us a selection of stickers and leaflets to add to our booth kit(s).
Select your slot and check for the confirmation email
\n
Post your show as normal - but add a note to say it\'s an anonymous user.
\n
\n
\n
Older HPR shows on archive.org
\n
The project to upload the older HPR shows to archive.org has been quiescent for a few years. The shows between 1 and 870 had not been uploaded prior to April 2021 (though some shows had been uploaded in batches in the early days, without notes etc).
\n
However, this old show project has been restarted this month, after new software had been written to help manage the process. At the time of writing 65 shows in the range 1-870 have been uploaded, with notes, and with the same range of audio formats used for current shows.
\n
Since we don\'t want to upload shows without summaries or tags the two projects are now tied together. So we will be all the more welcoming of tag and summary updates sent to the address referenced in the next section!
\n
The plan is to report the numbers uploaded each month in the AOB section of the Community News show notes.
\n
HPR shows on archive.org have the URL https://archive.org/details/hprXXXX where XXXX is the show number with leading zeroes. So for example, show 840\'s URL is: https://archive.org/details/hpr0840.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nDave Morriss, Windigo
\n
Over the period tags and/or summaries have been added to 23 shows which were without them.
\n
There are now 384 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3351,'2021-06-07','HPR Community News for May 2021',3956,'The HPR Matrons are doing the rounds.','\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 12 comments in total.
\n
Past shows
\n
There are 5 comments on\n4 previous shows:
\n
\n
hpr2499\n(2018-03-01) \"Tuning around the HF 40Mtr band\"\nby MrX.
\n
\n
\n
\nComment 3:\nDave (thelovebug) on 2021-05-19:\n\"Coming to this late, but wow!\"
\n
\nComment 4:\nMrX on 2021-05-29:\n\"Re: Coming to this late, but wow!\"
Comment 1:\nmpardo on 2021-05-18:\n\"mpardohpr@gmail.com\"
\n
hpr3342\n(2021-05-25) \"HPR 2020 - 2021 New Years Eve Show Episode 2\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\n
hpr3346\n(2021-05-31) \"HPR 2020 - 2021 New Years Eve Show Episode 3\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\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
Reminder - Stuff you need to know
\n
\n
HPR will stop as a project if there are not enough shows.
\n
We do not syndicate shows not produced for HPR.
\n
You are agreeing to license your show CC-BY-SA.
\n
You have permission to redistribute your show in its entirety.
\n
Your show will not be moderated.
\n
Your show will be signaled as containing explicit content.
\n
You determine where in the schedule your show will be released.
\n
We use UTF-8 end to end.
\n
Your show will be heard by an International Audience.
\n
We also need emergency shows.
\n
You will no longer be allowed to edit HPR pages on Wikipedia.
\n
\n
Reminder - Scheduling Guidelines
\n\n
You must have your audio recording ready to upload before you pick a slot.
\n
Always try and fill any free slots that are available in the upcoming two weeks.
\n
If the queue is filling up then please consider leaving some slots free for new contributors.
\n
If you have a non urgent show then find a empty week and schedule it then.
\n
If you are uploading a series of shows, consider scheduling one every two weeks.
\n\n
Older HPR shows on archive.org
\n
This month 96 additional shows in the range 1-870 have been uploaded to the Internet Archive.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributor for sending in updates in the past month: \nDave Morriss
\n
Over the period tags and/or summaries have been added to 7 shows which were without them.
\n
There are currently 377 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3077,'2020-05-19','Video conference Push to Talk',457,'Building the push to talk button missing from many video conference tools','
For the sake of archival, \"state of the world\" refers to the COVID-19 pandemic.
\r\n
The code and CAD files for this project can be found here.
\r\n
Relevant links:
\r\n
\r\n
PulseAudio is the sound server used by many Linux distributions
\r\n
pulsectl is a Python library that allows you to control a PulseAudio server
The Teensy is a small but powerful microcontroller development board
\r\n
pySerial is a library allowing you to use serial ports in Python
\r\n
PlatformIO is a tool for making software development for embedded platforms easy
\r\n
\r\n
Early prototype: \r\n
\r\n
Assembled electronics fitted into case ready to be closed: \r\n
\r\n
View of the top of the case, showing Cherry switch and NeoPixel LED indicator: \r\n
\r\n
View of the bottom of the case, showing USB port and some of the nicer M3 screws from my parts bin: \r\n
\r\n
Plugged in and powered on, showing the muted state: \r\n
\r\n
Button pushed, showing the unmuted/mic live state: \r\n
\r\n',386,103,1,'CC-BY-SA','arduino, linux audio, electronics, hardware',0,0,1),
(3067,'2020-05-05','Getting my Python3 code working in Python2',1526,'What I had to do to get my raspberry Pi PifaceCAD board working after a Debian upgrade.','
I have a raspberry Pi model B with the original Pifacecad add on board
\r\n
I recently upgraded the operating system on my raspberry pi from Wheezy (Debian 7) to Jessie (Debian 8), all seemed fine till I tried to run my Python3 project. It reported that the pifacecad module wasn’t present. I tried to install the module using the standard apt-get command given in the Pifacecad documentation. It installed OK for python 2 but It would not install for python 3 as there was a dependency issue with the python-lirc library. I’m guessing the upgrade broke something.
\r\n
I installed a fresh minimal installation of raspbian Stretch (Debian 9) onto a new SD card and ran the standard installation command in the Pifacecad documentation. It all installed but there was a warning about Spi which I had forgotten to enable. I enabled this using the raspi-config util and rebooted the pi.
\r\n
I then tested the installation by running the sys-info.py example that is mentioned in the installation documentation that comes with the pifacecad board.
\r\n
Running this example gave a warning saying that the pifacecad hardware could not be found at this point I gave up and decided instead to run my project in python 2.
\r\n
Of course at first the code wouldn’t run using python 2 and I had to do a bit of digging around to find out what was going wrong.
\r\n
You may find this useful in the unlikely event that you have a project written in python 3 that you want to run in python 2, it might also be useful if you’re going in the other direction.
\r\n
One other thing that I briefly stumbled upon was that I believe there is a tool available that attempts to convert python 2 code to python 3 I don’t know anything about it and didn’t bother looking to see if there is a tool to go in the opposite direction which is what I needed. I’ve included a link to the tool below https://docs.python.org/2/library/2to3.html
\r\n
I’ve got the two versions of code loaded into the excellent graphical diff tool meld and I’ll just briefly cover the things that I had to change.
hostname --all has different output on this version of Debian, now includes mac address which I did not want.
\r\n
Getting the wifi ESSID information. I used iwconfig to get this information. The path to iwconfig command changed in this version of Debian and I now had to give the full path to get it to work.
\r\n
Python 2 and 3 seemed to handle strings differently when converting from an array to a plain string.
\r\n
Python 3 handles input different from python 2
\r\n
If python 2 comes across a non numeric value it quits with an exception
\r\n',201,38,1,'CC-BY-SA','Python, Programming, Linux, Raspberry Pi',0,0,1),
(3069,'2020-05-07','Linux Inlaws S01E05 Porn and Skynet',4029,'This is Linux Inlaws, a series on free and open source software, black humour, the revolution','
Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.
\r\n
Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute t-rexes or other associated dinosaurs.
',384,111,1,'CC-BY-SA','linux inlaws, communism, free and open source software, adult entertainment, skynet',0,0,1),
(3070,'2020-05-08','making vim xdg compatible',3070,'move your vim configuration out of the home directory','
xdg vim config
\r\n
To make vim load an alternative config file either use an alias or the VIMINIT variable. i.e. place either alias vim=\"vim -u ~/.config/vim/vimrc\" or VIMINIT=\"source ~/.config/vim/vimrc\" in your .bashrc (ironically, that one is still in my home folder).
\r\n
Once that is loaded, you should source the following file after \"nocompatible\"
\r\n
" file: ~/.config/vim/xdg.vim\r\nif empty($XDG_CACHE_HOME)\r\n let $XDG_CACHE_HOME=$HOME."/.cache"\r\nendif\r\n\r\nif empty($XDG_CONFIG_HOME)\r\n let $XDG_CONFIG_HOME=$HOME."/.config"\r\nendif\r\n\r\nif empty($XDG_DATA_HOME)\r\n let $XDG_DATA_HOME=$HOME."/.local/share"\r\nendif\r\n\r\nset directory=$XDG_CACHE_HOME/vim/swap,~/,/tmp\r\nset backupdir=$XDG_CACHE_HOME/vim/backup,~/,/tmp\r\nset undodir=$XDG_CACHE_HOME/vim/undo,~/,/tmp\r\nset viminfo+=n$XDG_CACHE_HOME/vim/viminfo\r\nset runtimepath+=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/bundle/Vundle.vim,$VIM,$VIMRUNTIME\r\nlet $MYVIMRC=$XDG_CONFIG_HOME."/vim/vimrc"\r\n
\r\n
With this file in place you should call it from your vimrc
\r\n
" file: ~/.config/vim/vimrc\r\nset nocompatible\r\nfiletype off\r\nsource $HOME/.config/vim/xdg.vim\r\ncall vundle#begin()\r\nlet vundle#bundle_dir = expand("$XDG_DATA_HOME/vim/bundle")\r\n\r\n" include your calls to Plugin here\r\n\r\ncall vundle#end()\r\nfiletype plugin indent on\r\nsyntax on\r\n\r\nsource ~/.config.\r\n
\r\n
Note that it is important that all the paths are defined BEFORE Vundle (or whatever is your plugin manager) is called, since the path to it is defined in xdg.vim.
\r\n',385,82,1,'CC-BY-SA','vim, configuration, XDG',0,0,1),
(3071,'2020-05-11','Bash snippet - quotes inside quoted strings',799,'How to add quotes to quoted strings in Bash','
Bash and quoted strings
\r\n
An issue I just hit in Bash was that I had a quoted string, and I wanted to enclose it in quotes. How to do this?
\r\n
This is the umpteenth time I have stumbled over this issue, and I realised I had found out how to solve it a while back but the information hadn’t rooted itself into my mind!
\r\n
I have always been less clear in my mind about quoted strings in Bash than I should be, so, assuming others might have similar confusion I thought I’d try and clarify things in the form of an HPR show.
\r\n
The problem
\r\n
The thing I was having difficulties with was an alias definition of a useful pipeline:
This uses nmap (see Ken’s show 3052 for a discussion of its use) piped into an awk one-liner that formats the information returned by nmap.
\r\n
The alias command can be used to store such a command or command sequence as a single simple command. It’s usually added to the ~/.bashrc file so it gets added to every Bash shell you start up (note Bash Tips #22, currently being written, will cover these startup files).
\r\n
An alias definition looks something like this:
\r\n
alias la='ls -Al'
\r\n
The alias itself \'la\' is defined as the command ls -Al.
\r\n
So how to make my nmap sequence into an alias given that the commands contain both single and double quotes?
\r\n
Quoted strings in Bash
\r\n
Bash is (to my mind) a bit weird with quoted strings.
\r\n
There are two sorts of quotes in Bash (leaving aside the backquote or backtick – `):
\r\n
\r\n
Single quotes, also called hard quotes (\'). The literal value of characters between the quotes is preserved. Single quotes are not allowed, even if preceded by backslash escape characters.
\r\n
Double quotes, also called soft quotes (\"). Certain characters within the quotes have special meanings, such as \'$\' and \'\\'. Double quotes are allowed in the string when preceded by a backslash.
\r\n
\r\n
There’s a more comprehensive treatment of these quoting types (and others) in the Bash Reference Manual.
\r\n
Changing quotes and concatenating strings
\r\n
To make a variable containing a string with embedded quotes you can do this:
What we did here was close \'string1\', start a new string enclosed in double quotes \"\'\", then append a second string \'string2\'. Bash treats the three strings as one, but they have to be contiguous. There must be no intervening spaces1.
\r\n
This solution is rather ugly. You could also use Bash string concatenation to do this, though it’s more long-winded:
However, as discussed earlier, it’s not possible to use backslashes to escape single quotes inside a single quoted string in Bash. However, outside a string a backslashed character is escaped. For example, if you have files which have spaces in their names, you can quote the name or use the backslash escape to protect the spaces2:
\r\n
$ ls -l a\ file\ with\ spaces.awk\r\n-rw-r--r-- 1 hprdemo hprdemo 0 Apr 22 22:25 'a file with spaces.awk'
\r\n
So, knowing this, you can exit a string, concatenate with a backslashed quote then restart a string like this:
This is quite an artificial example to make a point. You wouldn’t do things this way in reality. Using x=\'string1\'\"\'string2\" would also work (\'string1\' in single quotes, and \"\'string2\'\" in double quotes). Also, you could just write x=\"string1\'string2\" and stop all the messing about, but that would not be much of an example!↩
\r\n
The backslash is making the space a literal space, otherwise Bash would see it as an argument delimiter, and would look for the files \'a\', \'file\', \'with\' and \'spaces.awk\' to list details about!↩
\r\n\r\n\r\n',225,42,1,'CC-BY-SA','Bash,quotes',0,0,1),
(3072,'2020-05-12','The joy of pip-tools and pyenv-virtualenv',1441,'How to manage your dependencies and environment isolation when developing in Python','
TL;DL: What I end up recommending is that you use pip-tools for your dependency management needs, and pyenv-virtualenv for your environment management needs. In the show I explain why you would want these things.
The optional bits provide you with the pyenv shell functionality for setting a session-specific Python version, and automatic activation of the virtualenv. Most of the time you don’t need activation, scripts and commands run just fine via the shims, but some tooling around Python may sometimes need to know which virtualenv you’re in.
\r\n\r\n
Run the export and eval lines in your shell to have the configuration work immediately. Alternatively, do su - yourusername to login to a new session that runs the profile. The - is important.
\r\n\r\n
You might be able to get away with just opening a new tab or window in your terminal. Whether that runs the profile depends on your settings.
\r\n\r\n
Set up your pyenv virtualenv for your project
\r\n\r\n
# Creates the virtualenv named my-project-env using \r\n# the python named system (your system default python)\r\npyenv virtualenv system my-project-env \r\ncd /path/to/my-project\r\npyenv local my-project-env\r\n
\r\n\r\n
Your system Python may or may not work for this. You might have to install pip and virtualenv. It might still break with some message about ensurepip failing (currently both Nix (20.09pre) python and Ubuntu (18.04) python are failing for me, and older Anaconda pythons also had a broken venv). In that case, use pyenv to install a Python that works, and use that instead of the system python:
\r\n\r\n
pyenv install miniconda3-latest\r\npyenv virtualenv miniconda3-latest my-project-env\r\ncd /path/to/my-project\r\npyenv local my-project-env\r\n
\r\n\r\n
Install pip-tools
\r\n\r\n
You’ll want to do this inside the virtual environment that you want to manage. Don’t install pip-tools globally.
\r\n\r\n
cd /path/to/my/project\r\n# And, assuming you have the shims on your $PATH\r\n# and you set the pyenv local as shown previously\r\npython -m pip install pip-tools\r\n
\r\n\r\n
Now put your requirements in requirements.in, one on each line, in the form you would give them to pip on the command line:
\r\n\r\n
somepackage >=3, <4\r\notherpackage <7\r\n
\r\n\r\n
Compile requirements.in to a requirements.txt:
\r\n\r\n
python -m piptools compile\r\n
\r\n\r\n
You could run the shorter command pip-compile for convenience, but using the long form with -m looks it up through your configured Python, and makes it less likely for you to surprise yourself and run a tool in a different virtualenv than you expected. Same with python -m pip above.
\r\n\r\n
Your requirements.txt will look something like this:
\r\n\r\n
otherpackage==6.9.3 # via -r requirements.in\r\nsomepackage==3.4.2 # via -r requirements.in\r\ntransitivedependency==2.7.6 # via somepackage\r\n
\r\n\r\n
It helpfully tells you where everything is from!
\r\n\r\n
Now to actually install these things you python -m pip -r requirements.txt.
\r\n\r\n
Now you’re good to go! Happy hacking!
',311,38,1,'CC-BY-SA','python,pyenv,virtualenv,virtualenvwrapper,poetry,pipenv,pip-tools',0,0,1),
-(3076,'2020-05-18','Keep calm and Virion',3526,'A COVID-19 lockdown chat from Scotland','
Introduction
\r\n
Two HPR hosts from Scotland get together over Mumble to chat about all manner of stuff.
Dave’s sound was a bit muffled in this recording. It turns out that it’s important which USB port the microphone (Zoom recorder) is plugged into. Who knew!
\r\n
Notes
\r\n
Some of the topics we discussed
\r\n
\r\n
Accent differences in Scotland\r\n
\r\n
What is Butcher Meat? Is it an Edinburgh expression?
Dave’s sound was a bit muffled in this recording. It turns out that it’s important which USB port the microphone (Zoom recorder) is plugged into. Who knew!
\r\n
Notes
\r\n
Some of the topics we discussed
\r\n
\r\n
Accent differences in Scotland\r\n
\r\n
What is Butcher Meat? Is it an Edinburgh expression?
\r\n',225,0,1,'CC-BY-SA','Virus,Virion,COVID-19',0,0,1),
(3090,'2020-06-05','Locating Computer on a Enterprise Network',2388,'advanced nmap tips','
\r\nIn this episode operat0r responds to hpr3052 :: Locating computers on a network, with more tips and tricks. Then he continues through a detailed exercise in using nmap on the corporate network.\r\n
',36,61,1,'CC-BY-SA','nmap,hacking,computers,networking,scripting,bash,shell',0,0,1),
(3073,'2020-05-13','Matchbox and Diecast Restoration',182,'A short episode about my New hobby restoring Matchbox and other Diecast models','
\r\nToday\'s show is about my recently started hobby of restoring Matchbox models. I talked about this on the New Year show and Ken said it deserved a show in its own right.\r\n
\r\n
\r\nSo today I briefly talk about how I got into the hobby through watching YouTube Videos of Marty\'s Matchbox Makeovers, and my first restoration pictured below. Enjoy.\r\n
\r\n\r\n',338,114,0,'CC-BY-SA','Matchbox, Diecast Models, Restoration',0,0,1),
(3078,'2020-05-20','Coronavirus Update 2020-05-07',878,'Where we are with this pandemic, and how should we respond?','
This is an update to my earlier show to pull together what we know about the Coronavirus on this date, and what measures we can take. It focuses on the lack of solid information at this point and suggests a prudent course to stay safe. https://www.palain.com/health-topics/coronavirus-update-20200507/
\r\nExtracted from Palain.com under the tearms of Creative Commons Attribution-ShareAlike 4.0 International License. \r\n
\r\n\r\n
Coronavirus Update 20200507
\r\n\r\n
The coronavirus pandemic is continuing throughout most of the world, and I wanted to put down some observations on where we stand today. First, note that I put the date in the title. This is because the situation in some ways changes day-by-day, even though there are continuities. That makes it a dangerous place to be because it is human nature to look for the latest news and jump on it if it looks good. And that is a prime mistake because we do not in fact know enough at this point to be confident in these news reports. I would refer you to my earlier essay, Scientific and Medical Reports, which is highly relevant right now. While I could not have predicted this pandemic when I wrote it, it contains basic principles that are always relevant.
\r\n\r\n\r\n\r\n
The nature of the press is that it is like the carnivorous plant in the movie Little Shop of Horrors, always crying \"Feed Me!\" And of course we are all interested if not to say anxious for any news on the course of this disease and where it is taking us. What this means is that you will see a unstoppable stream of news stories touting the latest study on one or another aspect of this. Add in the desire of politicians to spin things to their advantage, and you have a recipe for disaster. To keep sane, remember a few basic principles:
\r\n\r\n\r\n\r\n
One study proves nothing. There are lots of studies, and many of them are one-and-done without having any effect on medical practice. If there is an interesting result, it merely indicates an area for further study.
Study results are only meaningful when they have withstood peer review and have been replicated by other scientists. This process does produce good results, but only with time. Only in movies do scientists go into the lab and come out 24 hours later with the answer.
If you really want to know when all of this will end, there are only two answers. It can end very soon with an accompanying loss of life because the virus is still spreading. This is starting to show up in places that ignore the science. Going outside without a mask and carrying on as usual is not brave, it is stupid.
The other answer is that a gradual relaxation of isolation can happen if it guided by sound science. Unfortunately, as just explained, that sound science is still being sought, and will take time.
When you see the vast majority of doctors and scientists saying the same thing, that is your best assurance the information is accurate.
Right now the number one priority is testing, testing, testing.
\r\n\r\n\r\n\r\n
So, with that background, do we know anything at this point? Yes, we do. But we also have a lot of unanswered questions.
\r\n\r\n\r\n\r\n
Second Wave?
\r\n\r\n\r\n\r\n
The first big question is whether there will be a second wave, and this is something that every qualified epidemiologist I have heard from says is guaranteed. And the reason is that a certain \"fatigue\" sets in with staying in isolation, and at least some people will convince themselves they don’t need to do it. They are wrong, and they will guarantee that second wave. In the 1918 Flu Pandemic, the second wave was far worse than the first wave. And don’t forget there was a third wave in that pandemic until it petered out in 1920. The best thing you can do is keep isolated if at all possible, and follow all of the guidelines:
\r\n\r\n\r\n\r\n
Wear a mask if you must go out, such as for groceries.
Many stores are offering special hours for seniors. If you are one, take advantage.
After a shopping trip, wash or disinfect items carefully. Remember that soap is all you need to defeat the virus, but use disinfectant wipes when soap is not practical.
After returning, strip and place all of your clothes in the washer. The detergent should kill any virus that is there.
Wash your hands with soap frequently.
Try not to touch your face.
Maintain at least two meters distance from anyone not in your household when you do go out.
Try to stay fit. I go for walks in my neighborhood if there aren’t too many others out, and when there is someone else out, I give them a wide separation. I also do gardening in my own yard, and exercise in my home. That won’t prevent you from getting the disease, but it may prevent you from dying of it.
\r\n\r\n\r\n\r\n
Yeah, this is all of the stuff we have been hearing all along. But annoying as it is, it does work if you do it.
\r\n\r\n\r\n\r\n
Is the virus mutating?
\r\n\r\n\r\n\r\n
Yes. In other news, water is wet. Face it, mutation is what organisms do, and that has been true for billions of years. The question you really have is \"Is it getting worse?\" And right now the answer is \"We don’t know.\" Sorry I can’t give you any more determinative answer, but we are only at the \"one study\" phase right now, and we are a ways off from the \"peer-reviewed, replicated consensus\" phase that will resolve this. There are indications that at least this virus does not mutate as much as influenza, but even that may require more study.
\r\n\r\n\r\n\r\n
Am I Immune?
\r\n\r\n\r\n\r\n
We would all love to know if we are immune. This requires two big things to give a good answer. First, does having the disease and then recovering give you immunity? And the sad truth is that we don’t know yet. The common cold is a coronavirus, and you never get immunity. Influenza is a virus, and getting it one year provides no immunity the next. And if getting it once does provide immunity, we still need testing to discover this. The number one priority right now in all locations should be testing, testing, testing. That is the prerequisite for doing any decent epidemiology. There was a report (note: one study) out of South Korea that indicated that some people could get the disease twice, but they re-analyzed the data and decided that it might have been false positives. That is the kind of thing that happens when scientists are trying to do a year’s worth of work in few weeks, which is what they are doing.
\r\n\r\n\r\n\r\n
Is It More Infectious Than We Thought?
\r\n\r\n\r\n\r\n
Again, very unclear. And even less clear is what this implies. An argument is being made that if the rate of infection is higher, given the number of deaths, that would imply it is less lethal. And that is being used to argue in favor of this not being a big deal, so reopen everything. But to put it in perspective, in the 2017-2018 flu season, which was on the high end of deaths, we had 61 thousand deaths in the U.S. Today, in just over 2 months, we have 75 thousand deaths in the US, and that is with all of the extraordinary measures we put in place to keep people safe. To make an argument that Covid-19 is no more dangerous than the flu is to be criminally stupid at best.
\r\n\r\n\r\n\r\n
Didn’t They Predict More Deaths?
\r\n\r\n\r\n\r\n
Why yes, they did. A widely used model in the US is from the Institute for Health Metrics and Evaluation (IHME), at the University of Washington. And they have issued forecasts that ranged from hundreds of thousands of deaths to around 60,000 deaths. Clearly they have no idea what they are doing, right? Not so fast. As the statistician George Box famously said, \"All models are wrong but some are useful\". In this case you have to factor in two things. One is uncertainty, of course. To forecast how many people will die, it helps to know how many people have died, and this has been subject to fierce debate.
\r\n\r\n\r\n\r\n
And here it gets difficult, since one argument is over what counts as a Covid-19 death. And since every one of our 50 states has their own health reporting system, there is a wide disparity. One example of this is the idea of \"excess deaths\". If a given area has a pretty regular death rate for a number of years, and suddenly that death rate jumps 500% in the midst of a pandemic, it is reasonable to suspect those \"excess deaths\" are a result of the coronavirus. But if those deaths get counted, others will argue that it is inflating the numbers, and that only a positive coronavirus serum test should count. Since each state does this differently, this leads to the odd result that the disease appears more or less lethal depending on your state of residence. And that means politicians have incentive to get the numbers they want.
\r\n\r\n\r\n\r\n
The other factor complicating things is the phenomenon known as the \"self-preventing\" prophecy. You see, the initial high estimates tended to be \"This is what will happen if you don’t take strong measures\", and of course they were very high. And we know that governments like the UK and the US looked at those predictions, and started to take some stronger measures. So after a little bit, new predictions came out that were lower as a result of those measures. And now we are seeing misguided efforts to get people to go out and resume normal life, and as a result the newest forecasts are going up again. This is a feedback loop, in other words.
\r\n\r\n',198,100,0,'CC-BY-SA','Health, Coronavirus',0,0,1),
(3115,'2020-07-10','Pest Control',2291,'Talk about pest control','
use normal pump sprayer for indoors suggest using a metal tip for finer mist on baseboards etc youtube for best approach… I DO NOT spray surfaces that people touch .. some folks spray ‘safe’ indoor stuff on carpet and couches … I spray under/around/behind
\r\n
\r\n
FULL TANK ( ~3.5 gal )GETS:\r\n
\r\n
4 oz of bifen OR .5oz of Mavrik
\r\n
12 of essentra ic3
\r\n
\r\n
Pump Sprayer gets:\r\n
\r\n
1gal water
\r\n
.5oz bifen or .1 Mavrik
\r\n
\r\n
\r\n',36,0,1,'CC-BY-SA','Pest Control,bugs,DIY,Home Improvement',0,0,1),
(3082,'2020-05-26','RFC 5005 Part 1 – Paged and archived feeds? Who cares?',2108,'An interview with two passionate RFC 5005 fans on how to handle big Atom feeds','
This conversation took almost an hour, so I split it into two shows:
\r\n\r\n
\r\n
Part 1 talks mostly about the RFC itself, what it means and why.
\r\n
Part 2 goes into personal experiences with the RFC and with syndication in general, in particular in the context of web comics. This is part 1.
\r\n
\r\n\r\n
The why
\r\n\r\n
When serving most RSS/Atom feed readers today, you have to choose: Do you make a complete feed with all the things you ever published, or do you make a shorter feed with just the latest entries?
\r\n\r\n
This is a trade-off with pros and cons, and it seems like a trade-off you have to make, but a solution to let your Atom feed have the cake and eat it too existed already 13 years ago, if only any of our feed readers would adhere to it: RFC 5005, Feed Paging and Archiving
The XML namespace for RFC 5005 elements is https://purl.org/syndication/history/1.0, aliased as fh below.
\r\n
Section 2 defines the complete feed: It is one document (Atom file) that contains the entire set the feed describes. The document is marked with an fh:complete element.
\r\n
Section 3 defines the paged feed: It is a series of documents connected with Atom link elements with rel set to the link relationsfirst, last, previous or next.
\r\n
Section 4 defines the archived feed: It has a subscription document that may change at any time, and a series of archive documents that are expected to have stable contents and URIs. The link relations defined are current, prev-archive and next-archive. The semantics are clearer: prev-archive refers to previously published entries, and because the contents are stable you can stop when you see a URI to a document you already have. Archive documents are marked with the fh:archive element.
HTML4 does indeed define the HTML link relations: \r\nhttps://www.w3.org/TR/html4/types.html#h-6.12 \r\nIt has prev rather than the previous of RFC 5005, but mentions that some browsers support previous as an alias.
RFC 5005 singles out its own Section 3 (Paged Feeds) as the best-effort, loose, discouraged model.\r\n
\r\n
Section 3:\r\n
Therefore, clients SHOULD NOT present paged feeds as coherent or complete, or make assumptions to that effect.
\r\n
\r\n
Section 4:\r\n
Unlike paged feeds, archived feeds enable clients to do this without losing entries.
\r\n
\r\n
\r\n
\r\n
I’m confused about it in the show, but the RFC is clear that an archived feed has one dynamic subscription document, which points to a chain of immutable archive documents.
\r\n
Back in 2002, Aaron Swartz published his joke MIME-header-based RSS 3: \r\nhttps://www.aaronsw.com/weblog/000574 \r\nThe cultural context at the time and the rivalry between RSS 0.91+, RSS 1.0, RSS 2.0 and Atom deserves a show of its own.
\r\n
\r\n',311,0,0,'CC-BY-SA','rss,atom,rfc,interview,feedreader,podcatcher',0,0,1),
-(3083,'2020-05-27','Mumbling while on lockdown',3021,'Two Edinburgh-based hosts have a chat from their respective houses','
Introduction
\r\n
Two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 lockdown.
Dave’s sound was a bit distorted in this recording. Having had recent problems using the Zoom recorder as a microphone, this time the in-built microphone was resorted to, with even worse results it turned out. See the Sound processing section below if you want to know more.
\r\n
Notes
\r\n
Some of the topics we discussed
\r\n
\r\n
Locations for recording. Ambient noises.
\r\n
WiFi versus ethernet. Dave has a 5-port switch on his dining table (not 8-port).
The recording was made in multichannel mode in anticipation of problems. The distorted channel was processed by using the Clip Fix effect in Audacity, which didn’t seem to change much except reduce the sound level. It was also necessary to find and remove sounds produced by the push to talk key presses. Removal meant replacing these sounds by silence so the two channels would not get out of step. After this the two channels were merged together and silences truncated.
\r\n
Lessons learned: don’t use a built-in microphone if you can help it!
\r\n\r\n',225,0,1,'CC-BY-SA','COVID-19,lockdown',0,0,1),
-(3081,'2020-05-25','Why do formal verification?',1120,'tuturto talks about testing and formal verification of software','
In episode 3057 I talked about formal verification of software and forgot to mention why one would want to do it. This episode hopefully answers to that.
\r\n
While formal verification is powerful tool, it’s also rather cumbersome and slow to use. In some cases you’re better off with traditional ways of testing.
',364,0,0,'CC-BY-SA','testing, verification, mathematics',0,0,1),
+(3083,'2020-05-27','Mumbling while on lockdown',3021,'Two Edinburgh-based hosts have a chat from their respective houses','
Introduction
\r\n
Two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 lockdown.
Dave’s sound was a bit distorted in this recording. Having had recent problems using the Zoom recorder as a microphone, this time the in-built microphone was resorted to, with even worse results it turned out. See the Sound processing section below if you want to know more.
\r\n
Notes
\r\n
Some of the topics we discussed
\r\n
\r\n
Locations for recording. Ambient noises.
\r\n
WiFi versus ethernet. Dave has a 5-port switch on his dining table (not 8-port).
The recording was made in multichannel mode in anticipation of problems. The distorted channel was processed by using the Clip Fix effect in Audacity, which didn’t seem to change much except reduce the sound level. It was also necessary to find and remove sounds produced by the push to talk key presses. Removal meant replacing these sounds by silence so the two channels would not get out of step. After this the two channels were merged together and silences truncated.
\r\n
Lessons learned: don’t use a built-in microphone if you can help it!
\r\n\r\n',225,0,1,'CC-BY-SA','COVID-19,lockdown',0,0,1),
+(3081,'2020-05-25','Why do formal verification?',1120,'Tuula talks about testing and formal verification of software','
In episode 3057 I talked about formal verification of software and forgot to mention why one would want to do it. This episode hopefully answers to that.
\r\n
While formal verification is powerful tool, it’s also rather cumbersome and slow to use. In some cases you’re better off with traditional ways of testing.
',364,0,0,'CC-BY-SA','testing, verification, mathematics',0,0,1),
(3079,'2020-05-21','Linux Inlaws S01E06 Porn and Trump',4779,'The lads discuss Audacity, KDEnlive, Blender, PwC, The Current War, Better Things, and Pamela Adlon','
This is Linux Inlaws, a series on free and open source software, black humour, the revolution and freedom in general (this includes ideas and software) and generally having fun.
\r\n
Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.
\r\n
Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute T-Rexes or other associated dinosaurs.
',384,111,1,'CC-BY-SA','Audacity, KDEnlive, Blender, PwC mishap, The Current War, Better Things, Pamela Adlon',0,0,1),
(3087,'2020-06-02','Phonetic alphabet',114,'The NATO phonetic alphabet recited once.','
The NATO phonetic alphabet. Play this a few times until it\'s ingrained in your memory banks. It\'ll change the way you communicate.
',78,43,0,'CC-BY-SA','nato, alphabet, communication',0,0,1),
(3088,'2020-06-03','Matchbox Restoration Part 2',307,'Second episode discussing restoring Matchbox diecast models Tony talks tools and materials needed ','
Matchbox HPR Episode 2 – Equipment
\r\n
Hello all those in HPR land. This is Tony Hughes coming to you from Blackpool in the UK. I hope you are all keeping well at the current time of restrictions due to the Corona Virus.
\r\n
In this the second of my recordings talking about restoring of Matchbox and other Die-cast models, I am going to talk of the equipment you will find essential, and some other things that while at the start you could live without, as you get into the hobby you may find extremely useful.
\r\n
So the first thing you will need is a drill for drilling the posts out on the model, both to aid in dismantling them and if you plan to reassemble with the aid of small screws, to drill the hole in the post for tapping to accommodating the screws. This can be a hand held wired or cordless drill or if you have a workshop with a drill press, all the better as this can be used in several ways during the reassembly of the models. That is on my wish list as I don’t have one at the moment.
\r\n
Secondly you will need a set of modelling files for removing the burr on axles, to remove these and the plastic wheels of the base of the model to allow for repainting if required.
\r\n
Wire brushes for cleaning the remains of any paint that didn’t get removed by the paint stripper.
\r\n
Hemostat Clamp Tweezers or crocodile clips on a rod, for use to hold the model during spray painting
\r\n
Additionally, although you can start doing restorations without these, the following will become very useful to help save time and achieve better finishes of the completed restoration.
\r\n
Rotary Tool, the most well known is the Dremel but there are many other manufacturers of similar tools at more economic cost. However beware you do get what you pay for and you may find buying the cheapest you can find a false economy. My cheap Lidl rotary tool which I have had for a few years but barely used, failed after 5 months of use a few weeks ago. The chuck ring thread striped and it will no longer hold bits in the chuck. The rotary tool makes the removal of the axles a very quick job, and cleaning paint stripped castings with a wire rotary brush is a breeze.
\r\n
Another thing you may find useful is a small spray booth with an extractor fan and filter for removing over-spray from the area you are painting in if doing this indoors, particularly if your workshop is in the house. Although one YouTube modeller I follow sprays his models on the cooker with the cooker extractor fan on to achieve a similar result when painting indoors.
\r\n
Finally you may wish to put a compressor and spray gun on your wish list if you get hooked as this gives you a far better range of colours you can paint in, as you can mix your own shades. Some in this community are sticklers for trying to get an exact match to the original colour of the model, others like me at the moment are happy to use shop bought spray paint cans.
\r\n
Small table vice for holding the model. A set of helping hands for the same during painting, particularly when painting fine details.
\r\n
So that’s the tools, now the consumables:
\r\n
\r\n
Gloves – Rubber washing up gloves to protect from some of the chemicals used to strip paint.
\r\n
Latex gloves for using when spray painting as you have more control while wearing these rather than the looser fitting rubber washing up gloves.
\r\n
Work gloves to use when drilling or using other tools.
\r\n
Paint face mask to prevent inhaling fumes.
\r\n
Paint stripper, I use B&Q’s DIAL own brand paint stripper. I also use caustic soda for the same thing, occasionally one will work when the other failed to remove the paint, it depends on the original paint applied to the model.
\r\n
Model filler for repairing dents in the casting
\r\n
Wire wool and several grades of wet and dry sanding paper to smooth models after filler has been used.
\r\n
Super glue, useful for repairs where a quick setting medium is needed.
\r\n
Cans of spray paint to repaint the model, both primer and the final colour. You may also want a can or two of a clear coat to give that extra protection after painting or giving a gloss finish if the paint was a matt or satin finish.
\r\n
Not essential at the start but I also use a UV resin glue that cures very quickly after exposure to a UV light torch, this can be added and cured in layers if needed and remains flexible so can be useful for repairs on cables as well as my modelling.
\r\n
Finally you need your first model to start work on, these can be found in charity shops, online auction sites or maybe in your loft or garage if you have any of your childhood models kicking around needing to be re-loved.
\r\n
\r\n
Later in the series I’ll talk about other things you may add to the consumables list as you get more into the hobby. So that’s it for this episode. In the next episode I’ll talk you through me dismantling a model for restoration.
\r\n
This is Tony Hughes for HPR signing off for this episode. Keep safe and I’ll be back soon.
\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, Tools and materials.',0,0,1),
-(3089,'2020-06-04','For my Entertainment',425,'How I have my file server and media center put together','
Reasoning.
\r\n
I have a file server with Slackware running on a Pi4. I wanted to make the movies and TV Shows easily accessible on the TV without using a DVD or Blu ray player.
\r\n
It would give my wife and I a chance to sit and watch a show without much fuss. The latest show we are on is Sue Thomas F.B. Eye. The main character, Sue has been deaf from about the age of 4 years. She is adept at reading lips and learned to speak despite being deaf.
The Pi4 is enclosed in a stripped out power supply that died on me. The fan still worked, so I wired it to the Pi on the 5v line. It runs at half the speed it was designed for, but that makes it run almost silent. With the heatsinks added, stays about 35C when idle and 50C when encoding video.
\r\n
Pi Networking.
\r\n
I have 2 Pi\'s connected via ethernet. One is on 192.168.2.5 with a gateway of 192.168.2.6, with the other on 192.168.2.6 with a gateway of 192.168.2.5. Essentially just a crossover network. The reason for this is running Kodi on Pi4 has choppy video, but is better at running video encoding. So I linked it to a Pi3 to run Kodi via a samba share from the Pi4.
\r\n
Used OSMC for the kodi interface. It was the distribution that was stable on my Pi and booted right to the Kodi interface.
[Unit] Description=Wifi network auto connect on boot After=http-time.service\r\n [Service] Type=simple Restart=always ExecStart=/bin/bash /usr/bin/net.sh \r\n[Install] WantedBy=multi-user.target
\r\n\r\n
Edit:
\r\n
Since I sent the show notes, I had problems using the GUI way to set up a static IP address on the OSMC section. Here is a more concise way to go about\r\nit.
pokey: I have beer this month it\'s pretty good. I Like it, but I don\'t love it. I also bought a few of the credit card sized tools that we talked about on our last episode. In short they are interesting, but mostly not very useful.
\r\n
FiftyOneFifty:Shiner Prickly Pear. This unusual beer came as a complete surprise to me because I was frankly expecting a sweet peary. Instead I was confronted by a very dry, only slightly hoppy (20 IBU) beer without much flavor but a lasting aftertaste that is slightly sweet. Those Shiner boys aren\'t messing around, they make beer with cactus. I really did not enjoy the first beer but by the end of the six it is growing on me. Though it would be refreshing on a hot day, I doubt I will be buying it again.
\r\n
\r\n
Things We talked about
\r\n\r\n
\r\n
We talk about the connections to \"The Dark Tower\"
Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.
Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.
\r\n
As always; remember to visit the HPR contribution page HPR could really use your help right now.
\r\n
Sincerely, The HPR Audiobook Club
\r\n
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
Our Audio
\r\n\r\n
This episode was processed using Audacity. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.
\r\n',157,53,1,'CC-BY-SA','HPR Audiobook Club, Audiobooks, SciFi, Western',0,0,1),
+(3089,'2020-06-04','For my Entertainment',425,'How I have my file server and media center put together','
Reasoning.
\r\n
I have a file server with Slackware running on a Pi4. I wanted to make the movies and TV Shows easily accessible on the TV without using a DVD or Blu ray player.
\r\n
It would give my wife and I a chance to sit and watch a show without much fuss. The latest show we are on is Sue Thomas F.B. Eye. The main character, Sue has been deaf from about the age of 4 years. She is adept at reading lips and learned to speak despite being deaf.
The Pi4 is enclosed in a stripped out power supply that died on me. The fan still worked, so I wired it to the Pi on the 5v line. It runs at half the speed it was designed for, but that makes it run almost silent. With the heatsinks added, stays about 35C when idle and 50C when encoding video.
\r\n
Pi Networking.
\r\n
I have 2 Pi\'s connected via ethernet. One is on 192.168.2.5 with a gateway of 192.168.2.6, with the other on 192.168.2.6 with a gateway of 192.168.2.5. Essentially just a crossover network. The reason for this is running Kodi on Pi4 has choppy video, but is better at running video encoding. So I linked it to a Pi3 to run Kodi via a samba share from the Pi4.
\r\n
Used OSMC for the kodi interface. It was the distribution that was stable on my Pi and booted right to the Kodi interface.
[Unit] Description=Wifi network auto connect on boot After=http-time.service\r\n [Service] Type=simple Restart=always ExecStart=/bin/bash /usr/bin/net.sh \r\n[Install] WantedBy=multi-user.target
\r\n\r\n
Edit:
\r\n
Since I sent the show notes, I had problems using the GUI way to set up a static IP address on the OSMC section. Here is a more concise way to go about\r\nit.
Make sure to change the IPv4 line to match your own network/netmask/gateway and Nameservers to use the ones you want.
\r\n
\r\n
\r\n
Reboot your RPi or restart the connman service:
\r\n
sudo systemctl restart connman\r\n
\r\n
\r\n\r\n
If you opt to restart connman, you’ll loose the connection.
\r\n',318,0,0,'CC-BY-SA','Raspberry Pi, Kodi, OSMC, Networking, Slackware, Sarpi Project',0,0,1),
+(3104,'2020-06-25','HPR AudioBook Club 19 - Tincture: An Apocalyptic Proposition',7607,'The HPR Audiobook Club reviews the audiobook Tincture by Matthew D. Jordan','
pokey: I have beer this month it\'s pretty good. I Like it, but I don\'t love it. I also bought a few of the credit card sized tools that we talked about on our last episode. In short they are interesting, but mostly not very useful.
\r\n
FiftyOneFifty:Shiner Prickly Pear. This unusual beer came as a complete surprise to me because I was frankly expecting a sweet peary. Instead I was confronted by a very dry, only slightly hoppy (20 IBU) beer without much flavor but a lasting aftertaste that is slightly sweet. Those Shiner boys aren\'t messing around, they make beer with cactus. I really did not enjoy the first beer but by the end of the six it is growing on me. Though it would be refreshing on a hot day, I doubt I will be buying it again.
\r\n
\r\n
Things We talked about
\r\n\r\n
\r\n
We talk about the connections to \"The Dark Tower\"
Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.
Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.
\r\n
As always; remember to visit the HPR contribution page HPR could really use your help right now.
\r\n
Sincerely, The HPR Audiobook Club
\r\n
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
Our Audio
\r\n\r\n
This episode was processed using Audacity. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.
\r\n',157,53,1,'CC-BY-SA','HPR Audiobook Club, Audiobooks, SciFi, Western',0,0,1),
(3091,'2020-06-08','fuguserv',2628,'Fuguita OpenBSD server - building a new wifi-router / server','
\r\n
Where you can go to get your copy of the fuguita OS. \r\nhttps://fuguita.org
nt_if="{ vether0 em0 athn0 }"\r\nbroken="224.0.0.22 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12\r\n 10.0.0.0/8 169.254.0.0/16 192.0.2.0/24\r\n 198.51.100.0/24, 203.0.113.0/24,\r\n 169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32"\r\ntable <bruteforce> persist\r\nset block-policy drop\r\nset loginterface egress\r\nset skip on lo0\r\nmatch in all scrub (no-df random-id max-mss 1440)\r\nmatch out on egress inet from !(egress:network) to any nat-to (egress:0)\r\nantispoof quick for (egress)\r\nblock quick from <bruteforce>\r\nblock in quick on egress from { $broken no-route urpf-failed } to any\r\nblock in quick inet6 all\r\nblock return out quick inet6 all\r\n#block return out quick log on egress proto { tcp udp } from any to any port 53\r\nblock return out quick log on egress from any to { no-route $broken }\r\nblock in all\r\npass out quick inet keep state\r\npass in on $int_if inet\r\npass in on egress inet proto tcp from any to (egress) port 22 keep state (max-src-conn 40, max-src-conn-rate 40/172800 ,overload <bruteforce> flush global)\r\npass in quick on $int_if proto udp from any to ! 192.168.1.1 port 123 rdr-to 192.168.1.1
\r\n
sysctl.conf
\r\n
net.inet.ip.forwarding=1\r\nnet.inet.ip.redirect=0\r\nkern.bufcachepercent=50\r\nnet.inet.ip.ifq.maxlen=1024\r\nnet.inet.tcp.mssdflt=1440\r\nmachdep.allowaperture=2 # See xf86(4)\r\nmachdep.lidaction=0\r\nnet.inet6.ip6.forwarding=0\r\nnet.inet6.ip6.mforwarding=0\r\nhw.smt=1
\r\n',377,0,0,'CC-BY-SA','FuguIta, OpenBSD, Wifi-Routers, Servers, Portable, Memory_resident',0,0,1),
(3092,'2020-06-09','Pens, pencils, paper and ink - 2',1256,'Looking at more writing equipment','
Introduction
\r\n
This is the second in a short series about pens, pencils, writing paper and ink. In this episode we will look at three more fountain pens (two lower-priced and one around £50), a mechanical pencil and some paper.
\r\n
Long notes
\r\n
I have provided detailed notes as usual for this episode, and these can be viewed here.
\r\n',225,112,1,'CC-BY-SA','fountain pen,mechanical pencil,paper',0,0,1),
(3093,'2020-06-10','Response to Linux Inlaws S01E06 (hpr 3079) on NeXT',430,'Response to Linux Inlaws S01E06 (hpr 3079) regarding NeXT, NeXTSTEP, and what would become Mac OS X.','
Some clarification on NeXT as I ramble on about all things NeXT, what would become \"Mac OS X\" (now \"macOS\"), and a harbinger of what was to come.
',152,0,0,'CC-BY-SA','NeXT, NeXTSTEP, OPENSTEP, Rhapsody, Darwin, MacOSX, OSX, macOS, AUX',0,0,1),
(3098,'2020-06-17','Matchbox Restoration Part 3',191,'In this the 3rd in the series Tony discusses dismantling the castings of the MK10 Jaguar','
HPR Matchbox show Episode 3
\r\n
Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 3rd in a series of shows about my hobby of restoring Matchbox and other Die-cast models. In the first 2 shows I introduced the concept and discussed the tools and other equipment you would need to start this hobby.
\r\n
In this episode I have decided to return to where it all started with the Matchbox No28 the Jaguar Mk10. Please refer to the show notes for the pictures of the process as we move along. You can see in the first picture the 4 castings used in this process.
\r\n
Picture 000: \r\n
\r\n
This is a lovely little casting and is a nice introduction to the techniques used in the process. Also I have several of these that I can strip down to their components and that should give us enough quality parts to reassemble at least one good example, hopefully one or two more.
\r\n
The next picture shows you the base of the model and that there is a mushroomed post that needs to be drilled out at the rear of the model, the front of the base is retained by a tab, which once the post is removed and the base released, this can be slid forward to free the tab.
\r\n
Picture 001: \r\n
\r\n
I drilled out this post. The post is drilled out with a 4mm drill bit, and as you can see in the next picture on this particular casting I was a little over zealous and damaged the base a little, although as it is the base it’s not a major issue.
\r\n
Picture 003: \r\n
\r\n
I then released the base by prying it off the remainder of the post with a small flat bladed screwdriver to lever it of the body. This now allowed the removal of the inner plastic forming the seating and holding a small plastic suspension piece. In the next picture you can see the casting without any internals but with the plastic window unit still held in place with another shallow mushroom post.
\r\n
Picture 005: \r\n
\r\n
Being very careful not to be too aggressive drilling this mushroom holding the windscreen unit, it is removed, again with a 4mm drill bit, so that a little pressure from a flat blade slid between the roof and the glassing unit will allow it to pop out without it breaking. It usually takes several attempts of a little drilling, trying with the flat blade, then if not coming free, a little more drilling until it pops off.
\r\n
Picture 006: \r\n
\r\n
Picture 006x: \r\n
\r\n
This process was repeated with the other 3 castings and the result is shown in the next picture
\r\n
Picture 008: \r\n
\r\n
As you can see the casting on the upper left of the image still has the bonnet (Hood) attached, this would not come off without me risking damaging it, so I was hoping that once the paint is removed that this will help it to come free. You will have to wait for the next instalment to find out what happened next. I’ve got to keep you wanting some more of this rambling tale.
\r\n
So until next time this is Tony Hughes saying goodbye to all those in HPR land. Keep safe until the next instalment.
\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, dismantling the model',0,0,1),
(3094,'2020-06-11','Holy crud! I have a kinesis advantage 2 keyboard!',275,'Sigflup does a review of the Kinesis Advantage 2 keyboard','
Kinesis Advantage 2 Keyboard
\r\n\r\n
',115,0,0,'CC-BY-SA','keyboards',0,0,1),
-(3097,'2020-06-16','Linux Inlaws S01E07 The Big Blue Button',3895,'The lads talk to Fred Dixon, product manager for BigBlueButton.','
In this episode our two chaps welcome Fred Dixon, product manager for BigBlueButton, on the show to talk about the project, its history and if it will finally run on Fedora and CentOS.
\r\n
Surrounding musings include how to hack the GDM login screen, why Martin is not behind the recent Easyjet hack and poxes as well as anti-poxes.
The Ubuntu logo for the GDM3 login screen for Focal Fossa and previous Ubuntu versions can be found at: /usr/share/plymouth/ubuntu-logo.png. Simply truncate this to zero bytes and the logo will be gone from the login screen
\r\n',384,111,1,'CC-BY-SA','BigBlueButton, GDM, Focal Fossa, Ubuntu',0,0,1),
-(3371,'2021-07-05','HPR Community News for June 2021',3988,'Dave and Ken talk about shows released and comments posted in June 2021','\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 23 comments in total.
\n
Past shows
\n
There are 7 comments on\n5 previous shows:
\n
\n
hpr3263\n(2021-02-03) \"My Beginnings in Tech\"\nby o9l.
\n
\n
\n
\nComment 1:\narcher72 on 2021-06-03:\n\"Welcome to HPR\"
\n
hpr3329\n(2021-05-06) \"Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel\"\nby monochromec.
\n
\n
\n
\nComment 1:\nKen Fallon on 2021-06-05:\n\"Who ?\"
\n
hpr3342\n(2021-05-25) \"HPR 2020 - 2021 New Years Eve Show Episode 2\"\nby Honkeymagoo.
\n
\n
\n
\nComment 2:\ncrvs on 2021-06-24:\n\"thank you for the reminder\"
Comment 1:\nbjb on 2021-06-29:\n\"hpr3357 :: My terminal journey, part 02. - feedback/comment\"
\n
hpr3361\n(2021-06-21) \"HPR 2020 - 2021 New Years Eve Show Episode 6\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\n
hpr3366\n(2021-06-28) \"HPR 2020 - 2021 New Years Eve Show Episode 7\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\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
Condolences
\n
Our deepest condolences to Randy Noseworthy on the loss of his wife.
\n
Older HPR shows on archive.org
\n
This month 100 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Dave Morriss
\n
Over the period tags and/or summaries have been added to 82 shows which were without them.
\n
There are now 295 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3391,'2021-08-02','HPR Community News for July 2021',4611,'HPR Volunteers talk about shows released and comments posted in July 2021','\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 18 comments in total.
Comment 1:\nZen_floater2 on 2021-07-22:\n\"Why I love OpenBSD\"
\n
hpr3388\n(2021-07-28) \"Linux Inlaws S01E35: The Free Software Foundation Europe\"\nby monochromec.
\n
\n
Comment 1:\nBrian-in-ohio on 2021-07-30:\n\"free speech\"
\n
hpr3390\n(2021-07-30) \"Intro to DOS Series\"\nby Ahuka.
\n
\n
Comment 1:\nBrian-in-ohio on 2021-07-30:\n\"great show\"
Comment 2:\nKevin O'Brien on 2021-07-30:\n\"You are most welcome\"
\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 archive.org
\n
This month 35 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Rho`n, Dave Morriss
\n
Over the period tags and/or summaries have been added to 71 shows which were without them.
\n
There are currently 222 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3097,'2020-06-16','Linux Inlaws S01E07 The Big Blue Button',3895,'The lads talk to Fred Dixon, product manager for BigBlueButton.','
In this episode our two chaps welcome Fred Dixon, product manager for BigBlueButton, on the show to talk about the project, its history and if it will finally run on Fedora and CentOS.
\r\n
Surrounding musings include how to hack the GDM login screen, why Martin is not behind the recent Easyjet hack and poxes as well as anti-poxes.
The Ubuntu logo for the GDM3 login screen for Focal Fossa and previous Ubuntu versions can be found at: /usr/share/plymouth/ubuntu-logo.png. Simply truncate this to zero bytes and the logo will be gone from the login screen
\r\n',384,111,1,'CC-BY-SA','BigBlueButton, GDM, Focal Fossa, Ubuntu',0,0,1);
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3371,'2021-07-05','HPR Community News for June 2021',3988,'Dave and Ken talk about shows released and comments posted in June 2021','\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 23 comments in total.
\n
Past shows
\n
There are 7 comments on\n5 previous shows:
\n
\n
hpr3263\n(2021-02-03) \"My Beginnings in Tech\"\nby o9l.
\n
\n
\n
\nComment 1:\narcher72 on 2021-06-03:\n\"Welcome to HPR\"
\n
hpr3329\n(2021-05-06) \"Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel\"\nby monochromec.
\n
\n
\n
\nComment 1:\nKen Fallon on 2021-06-05:\n\"Who ?\"
\n
hpr3342\n(2021-05-25) \"HPR 2020 - 2021 New Years Eve Show Episode 2\"\nby Honkeymagoo.
\n
\n
\n
\nComment 2:\ncrvs on 2021-06-24:\n\"thank you for the reminder\"
Comment 1:\nbjb on 2021-06-29:\n\"hpr3357 :: My terminal journey, part 02. - feedback/comment\"
\n
hpr3361\n(2021-06-21) \"HPR 2020 - 2021 New Years Eve Show Episode 6\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\n
hpr3366\n(2021-06-28) \"HPR 2020 - 2021 New Years Eve Show Episode 7\"\nby Honkeymagoo.
\n
\n
Comment 1:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"
\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
Condolences
\n
Our deepest condolences to Randy Noseworthy on the loss of his wife.
\n
Older HPR shows on archive.org
\n
This month 100 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Dave Morriss
\n
Over the period tags and/or summaries have been added to 82 shows which were without them.
\n
There are now 295 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3391,'2021-08-02','HPR Community News for July 2021',4611,'HPR Volunteers talk about shows released and comments posted in July 2021','\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 18 comments in total.
Comment 1:\nZen_floater2 on 2021-07-22:\n\"Why I love OpenBSD\"
\n
hpr3388\n(2021-07-28) \"Linux Inlaws S01E35: The Free Software Foundation Europe\"\nby monochromec.
\n
\n
Comment 1:\nBrian-in-ohio on 2021-07-30:\n\"free speech\"
\n
hpr3390\n(2021-07-30) \"Intro to DOS Series\"\nby Ahuka.
\n
\n
Comment 1:\nBrian-in-ohio on 2021-07-30:\n\"great show\"
Comment 2:\nKevin O'Brien on 2021-07-30:\n\"You are most welcome\"
\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 archive.org
\n
This month 35 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Rho`n, Dave Morriss
\n
Over the period tags and/or summaries have been added to 71 shows which were without them.
\n
There are currently 222 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3114,'2020-07-09','Using the Akaso EK7000 Pro',666,'Some tips on using the camera based on my limited experience on one trip.','
I found this camera to be useful, but it has a few quirks. Here is what I learned about using it. I took it on a cruise in the Caribbean Sea in February 2020, just before the coronavirus hit everything.
\r\n',198,0,0,'CC-BY-SA','Camera, Waterproof Camera, Action camera',0,0,1),
(3125,'2020-07-24','GIMP: The Canvas',785,'The Canvas is the first key concept in learning Gimp','
The Canvas is the main stage on which all of the action takes place, and it controls some aspects of the final image. When you get ready to export, you only export what is on the canvas.
',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, canvas, layer',0,0,1),
(3110,'2020-07-03','Finding an Android phone to run LineageOS',2277,'Join Ken on this 6 year long journey of success but also failure','
Finding an Android phone to run LineageOS
\r\n
Affordable phone that support school apps, and allow firewall.
\r\n
TL;DR
\r\n
Don\'t, unless you are willing to loose the money you are paying.
\r\n
Requirements
\r\n
\r\n
Supported for 3-5 years.
\r\n
Apps = Android = LineageOS
\r\n
Firewall = AFWall+ = Unlocked + Root
\r\n
Affordable
\r\n
\r\n
Support
\r\n
Getting a brand new phone means that Developers have not had time to release code.
\r\n
Older phones are no longer available for purchase, and actually become more expensive.
\r\n
Too old a version and apps are no longer supported.
\r\n
Finding a phone that can be unlocked
\r\n
I use a site called Tweakers.net which allows you to do parameter search.
\r\n
Set the maximum price you are willing to pay.
\r\n
The current version of Android is 10 so select only those. You want your phone to be supported for as long as possible.
\r\n
Make any other selections that you think are critical, like memory, processor etc but be prepared to adjust this later.
\r\n
In my case I selected a minimum of 4G Ram and 64G Storage the first time.
\r\n
Sort by price low to high, and loop through, finding what support there is for TWRP. That will tell you how open the phone is. If the Manufacturer support (the spirit of) unlocking, then remove them from the list.
\r\n
\r\n
HTC support unlocking but not don\'t give code to the developers so it\'s useless.
\r\n
Motorola support was good but since the take over by Lenovo they have stopped supporting unlocking.
\r\n
Google phones are unlocked and are ideal for developers but are too expensive.
\r\n
Xiaomi requires you to wait until the EU 14 day no questions asked warranty has expired.
\r\n
Fairphone too expensive.
\r\n
PinePhone may be an option but people report the current version being too slow.
\r\n
\r\n
After finding a phone that can be unlocked and rooted, then check to see if there is an official version for LineageOS
\r\n
If no phone meets all the requirements then try the next one.
\r\n
It\'s very likely you will not find a phone. You are then faced with the choice of adjusting your parameters, for example picking a more expensive model, but at the end of the day be prepared that you may not find a phone.
\r\n
If you do find a phone, it\'s very likely that it may be a different version than the one supported. I have had to return several phones that I had unlocked and just hoped that the supplier would take them back and refund me.
\r\n
Even on supported phones, especially newer ones, it\'s quite often that a major piece of functionality will not work. I have had issues with no GPS on one phone, and bluetooth/wifi not working on another until files were manually edited on each reboot.
\r\n
Do not do this if you want a stress free life, and also if you are not willing to accept the waste of all the money, and time involved.
\r\n',30,0,1,'CC-BY-SA','TWRP,Tweakers,LineageOS,scrcpy,tektab.com,bootloader,fastboot,Sony Xperia XA2,pinephone',0,0,1),
@@ -19455,8 +19575,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3132,'2020-08-04','Keeping track of where I am',1362,'How I keep track of where I am','
This episode covers how I keep track of what I\'m listening to
\r\n
I almost never produced this podcast as I discovered part way through that I had covered it in my show \"Describing how I listen to podcasts PART 2\" (HPR 2889). I\'m conscious I have a tendency to repeat myself in real life, I think this is because I have such a terrible memory. Despite this I decided to continue with the episode but will go into subject in a bit more detail.
\r\n
These ideas slowly evolved over time and I think some of them may now be redundant. I think I need to do some tidying.
\r\n
As I\'ve previously mention I used cordless headphones to listen to my podcasts and audiobooks. The headphones come with base transmitter which was originally plugged into my old Compaq home server. This server was generally turned on when I came home from work and turned off before going to bed. Each night I had to remember which track I was on and where about in the track. I often forgot and had to try and find the place again. This quickly became a tiresome task.
\r\n
My first solution was to use some bash Kung Fu jiggery pokery to create list of files which I placed in each podcast folder. In the process I learned a bit about using bash commands.
epr0006.mp3 - dosman complete\r\nhpr0010.mp3 - linux boot process, part 1 complete\r\nhpr0012.mp3 - zen virtulization complete\r\nhpr0018.mp3 - book review complete
\r\n
The downside of this was that at the end of each night I had to remember to update my file lists recording what I had listened to and what position I was in within the track. From time to time I had to update this list by appending the latest episodes sitting on my server using the previous id3v2 command.
\r\n
As you can imagine this took up a fair amount of time and became very tiresome, I would sometimes forget to do it this would cause me a headache next time I started listening to my podcasts.
\r\n
My next solution involved creating a bash script that attempted to persuade my music player moc to find the track I was previously listening to.
\r\n
The script sometimes worked but it was a bit flaky and didn\'t always work.
\r\n
My final solution is in multiple parts
\r\n
The 1st part consists of a bash script and a log file, it\'s a handy way of checking the last podcast episode and last position, this information is recorded to the log file when the front end of moc is exited by hitting Q. Of course this doesn\'t work if mocp closes for any other reason ie if I forgot to hit Q or my Pi crashed.
\r\n
First script
\r\n
~/scripts/podcasts\r\n\r\nquick lash up of script created 29/12/12 (DD/MM/YY)\r\nCreated to keep track of last position of listened podcast\r\n\r\nScript displays last 4 lines of logfile "podcasts.txt"\r\nThe four lines consist of a Dashed line separator, the last recorded Track\r\nTitle, last recorded Filename and the last recorded track position.\r\nThe script then pauses and displays a message saying\r\npress any key to continue.\r\nRuns mocp\r\nWhen the frontend of mocp exits\r\nThe script gets the current track filename\r\nIf the result is empty ie no filename then\r\n exit with error saying (moc was not playing anything)\r\nif not empty\r\n append a dashed line separator, the current track title, the current\r\n filename, the current track position to logfile it then display last 4 lines\r\n of logfile and exits the script\r\n\r\nSo in essence I get a reminder of the track and position I'm listening to\r\nevery time a start or stop the front end of moc\r\n\r\nThe logfile located at /home/pi/scripts/podcast.txt\r\npodcasts.txt as of 4th October 2019 is 168KB in size and currently has 4904\r\nlines as each entry has 4 lines this means it currently contains 1226 entries.
\r\n
The 2nd script I use runs as a cron job every night at 11.01pm. This script keeps track of all the files copied to the MP3 directory of my raspberry pi, this is where I put my podcasts that I want to listen to. I can then grep the log file to see the latest version of a particular episodes that\'s been copied to my mp3 directory as from time to time I delete the episodes I\'ve listened to before copying new ones in.
\r\n
~/scripts/update-podcast-episode-log\r\n Below are the comments taken directly from my script\r\nCreated to keep track of the latest podcast episode I've\r\nlistened to it does this by logging the contents\r\nof the mp3 directory on the raspberry pi.\r\nThe script checks the logfile exists, then checks the\r\npodcast (mp3) directory exists, it then use the find\r\ncommand to list the files in the mp3 directory and send the listing to a log\r\nfile, a date stamp is added at the beginning of the listing.\r\nV1 11 July 2015\r\n\r\nLogfile located at /home/pi/files/logs/podcast-episodes.log\r\nAs of the 4th October 2019 the log file is an impressive 688Kb containing\r\na whopping 28,158 lines, the first entry was dated 15th July 2013
\r\n
The 3rd script is also runs as a cron job every every night at 11.00pm
\r\n
/home/pi/scripts/update-podcast-position-log\r\nBelow are the comments taken directly from my script\r\nCreated to log current position of current podcast\r\nThe script checks the logfile exists, then checks that mocp is installed on\r\nthe system it then writes a timestamp, and track position information to\r\na logfile using moc with -Q flag to get current track position, track title\r\n& file name\r\nV1 Created by MrX 11th July 2015\r\n\r\nLogfile located at /home/pi/files/logs/podcast-position.log\r\nSize is 148Kb as of 4th October 2019 currently has a 1495 lines, the first\r\nentry was dated 15th July 2013
\r\n
Example logfile output
\r\n
15:09:06:23:01 | 01:12 | Dave Morriss - HPR1811: Life and Times of a Geek part 2 (Hacker Public Radio) | hpr1811.mp3\r\n\r\nYY:MM:DD:HH:MM | Track position (MM:SS) | ID3 track title | Filename
\r\n
The 4th script is identical to the previous script but is used to update the current audiobook position to a log file, like the previous script it runs as a cron job every night.
\r\n
/home/pi/scripts/update-audiobook-position-log
\r\n
The 5th and final script
\r\n
home/pi/scripts/logs
\r\n
Was created to easily view podcast and audiobook logs The script first checks that the logfiles exists, then displays the last three lines of my podcasts and audiobooks logs so I can quickly see the most recent episode positions that were stored by the cron jobs at 11pm.
This added an option to seach for a string in my episodes position logs to easily find out what the last episode I listened to of a particular book or podcast, the output is piped to less as numerous lines can be returned.
\r\n
if more than one argument is given then it displays an error and usage message
\r\n
V3 Updated by MrX 21st Jul 2017
\r\n
If a single argument is given now jumps to end of list rather than beginning, this was achieved by using the +G flag with less command.
\r\n',201,0,1,'CC-BY-SA','Linux, bash, podcasts, audio, scripts',0,0,1),
(3149,'2020-08-27','HPR AudioBook Club 21 - The Terrible Business of Salmon and Dusk',6342,'The HPR Audiobook Club reviews the audiobook The Terrible Business of Salmon and Dusk by Myke Bartle','
Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new epsiodes with listener participation.
Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.
\r\n
As always; remember to visit the HPR contribution page HPR could really use your help right now.
\r\n
Sincerely, The HPR Audiobook Club
\r\n
P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.
\r\n
Our Audio
\r\n\r\n
This episode was processed using Audacity. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).
\r\n
We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.
\r\n
Next we use the \"Compressor\" effect with the following settings:
\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.
\r\n
After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.
\r\n
We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.
\r\n
At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.
\r\n
At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.
\r\n
Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.
\r\n',157,53,1,'CC-BY-SA','Audiobook, Review, Creative Commons',0,0,1),
(3133,'2020-08-05','Quick tip - Using MPV with Youtube links',124,'I give a quick tip on shortcut keys for watching Youtube or other video sites in MPV','
Idea:
\r\n
Quickly copy a Youtube or other video site, and open in the MPV media player.
Copy script to /usr/bin/vlc and chmod +x /usr/bin/vlc
\r\n
How to use:
\r\n
Vim Vixen copy is \'y\' Surfingkeys copy is \'yy\'
\r\n
Shortcut to open copied video url is Shift-Mod-p, with Mod being the windows key
\r\n
Tested with Gnome3, Xfce and i3
\r\n
In i3, press Mod+v then Mod+s.
\r\n
Any video played this way will be stacked under Firefox/Chromium for the rest of your session.
\r\n
Config:
\r\n
In ~/.config/i3/config
\r\n
#Paste url into mpv player\r\nbindsym $mod+Shift+p exec vlc
\r\n
Example screenshots:
\r\n
Example of stacked Firefox/MPV layout \r\n
\r\n
For Gnome3 the setting can be reached with Mod (Windows key) and Shortcuts \r\n
\r\n
And the Default Applications need to be changed \r\n
\r\n
The setting for Shortcuts in Xfce looks like this \r\n
\r\n',318,0,0,'CC-BY-SA','Video, media, bash, i3, Gnome3, Xfce',0,0,1),
-(3416,'2021-09-06','HPR Community News for August 2021',5765,'Ken\'s not available so MrX joins Dave to talk about the shows and comments in August','\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 24 comments in total.
\n
Past shows
\n
There are 9 comments on\n5 previous shows:
\n
\n
hpr3323\n(2021-04-28) \"The alternate Internet you never knew existed\"\nby klaatu.
Comment 4:\nKevin O'Brien on 2021-08-30:\n\"Audio quality\"
Comment 5:\nKen Fallon on 2021-08-30:\n\"Can you define broken\"
\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 archive.org
\n
This month 10 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3436,'2021-10-04','HPR Community News for September 2021',3268,'HPR Volunteers talk about shows released and comments posted in September 2021','\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 1:\nOperat0r on 2021-09-27:\n\"Kids these days!\"
Comment 2:\nb-yeezi on 2021-09-28:\n\"+1 for cnus\"
Comment 3:\nsesamemucho on 2021-09-29:\n\"The text\"
Comment 4:\nDave Morriss on 2021-09-29:\n\"Very enjoyable\"
\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 archive.org
\n
This month 5 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Rho`n
\n
Over the period tags and/or summaries have been added to 76 shows which were without them.
\n
There are currently 38 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3416,'2021-09-06','HPR Community News for August 2021',5765,'Ken\'s not available so MrX joins Dave to talk about the shows and comments in August','\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 24 comments in total.
\n
Past shows
\n
There are 9 comments on\n5 previous shows:
\n
\n
hpr3323\n(2021-04-28) \"The alternate Internet you never knew existed\"\nby klaatu.
Comment 4:\nKevin O'Brien on 2021-08-30:\n\"Audio quality\"
Comment 5:\nKen Fallon on 2021-08-30:\n\"Can you define broken\"
\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 archive.org
\n
This month 10 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3436,'2021-10-04','HPR Community News for September 2021',3268,'HPR Volunteers talk about shows released and comments posted in September 2021','\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 1:\nOperat0r on 2021-09-27:\n\"Kids these days!\"
Comment 2:\nb-yeezi on 2021-09-28:\n\"+1 for cnus\"
Comment 3:\nsesamemucho on 2021-09-29:\n\"The text\"
Comment 4:\nDave Morriss on 2021-09-29:\n\"Very enjoyable\"
\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 archive.org
\n
This month 5 additional shows in the range 1-870 have been uploaded.
\n
Since we don\'t want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Rho`n
\n
Over the period tags and/or summaries have been added to 76 shows which were without them.
\n
There are currently 38 shows which need a summary and/or tags.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3134,'2020-08-06','Tomorrowland 2020',584,'Explaining the experience of the first virtual music festival','
The music festival Tomorrowland was made virtual this year.
\r\n
Usually, they have 200k visitors over two weekends on a small area of 128 football (soccer) fields. This year they digitally did it all, which was engaging and fun. I\'ve never attended, but I loved this year, where I could be a part of the experience.
\r\n
This recording was made at 01.00 AM right after the festival had ended, so I still had the hype, totally sober but euphoric.
\r\n',382,0,0,'CC-BY-SA','music,dance,house,festival,tomorrowland',0,0,1),
(3136,'2020-08-10','Matchbox Restoration Part 6',286,'Matchbox Cars, Diecast Models, Restoration, Reassembly of the model','
Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 6th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process I use to paint and prepare the casting for reassembly. In this episode I will discuss how I put back the wheels onto the base and reassemble the final model, before revealing in the show note pictures how the model came out.
\r\n
So before putting back the plastic wheels onto the axles I polished the axles in my drill bit using a little bit of fine wet and dry emery paper.
\r\n
Picture 001 \r\n
\r\n
After selecting the best 4 of the plastic tyres from the models we originally dismantled I washed these in a little soapy water and after drying they these were fit for putting back on the restored model. The cleaned up axle is assembled on the base with the first tyre in place with the large dome end of the axle sat on a nail punch held in a vice. The second tyre is then placed on the axle and holding this all in place a small hammer is used to peen over the end of the axle by hitting it gently so the end is peened over but the axle does not bend. It is possible to do this stage in a drill press using another nail punch in the drill chuck, but I do not have a drill press at the moment, so have to do this the old school way, with a bit of brute force and ignorance.
\r\n
Picture 002 \r\n
\r\n
So we now have all the parts ready for reassembly. The base has the axles and wheels back on, the screen has been polished and the plastic seating given a clean in soapy water and dried, and the body is repainted and ready to go.
\r\n
Picture 003 \r\n
\r\n
So being careful not to damage the paint work the casting is placed with the base side up and the window unit is placed into it.
\r\n
Picture 004 \r\n
\r\n
Followed by the plastic interior, the eagle eyed among you will notice a colour change to the body work as I forgot to take a picture of this stage on the gold model. You have to ensure that the tab with the tow hitch (yes Matchbox put a tow hitch on a posh car) is fully over the retaining post or the base will not seat properly.
\r\n
Picture 005 \r\n
\r\n
The base is then placed back on the model by sliding it over the tab at the front and clicking it down over the rivet post.
\r\n
Picture 006 \r\n
\r\n
I then used some \'5 second Fix\' UV glue to glue around the post to hold it in place. You can also drill out the post with a 1.5mm drill and using an M2 tap then use a small M2 screw to hold the base in place, but in this case I was happy with the glue as it was for display and will not be handled frequently enough to require the more secure retention of a screw. With these small models there is a risk of damaging the post while drilling and tapping them so it is personal preference as to the method used to hold it all together at the end.
\r\n
Picture 007 \r\n
\r\n
Picture 008 \r\n
\r\n
The model is now completed and the final picture in the show notes is a small collection of what it looks like now it is ready to display again.
\r\n
Picture 009 \r\n
\r\n
So that is the story of how to restore a Die-cast model back from the dead (well almost). These small models are comparatively easy, but some of the larger scale models with many more parts can take many days to restore, and require a lot of patience to do so. But from small beginnings we all start, and maybe in the future I will feel confident enough to tackle something a little more complicated. I have recently done a few models with opening doors which have a retaining spring holding them in place.
\r\n
So this short story is finished so this is Tony Hughes for Hacker Public Radio, saying goodbye for now, keep safe everyone and I\'ll be back at some time with another show. At the moment I\'m not sure about what, but I will be back, so Ken can rest assured I still owe him a show.
\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, Reassembly of the model',0,0,1),
(3137,'2020-08-11','Coronavirus Update 2020-07-30',1364,'Where we are with this pandemic, and how should we respond?','
This is an update to my earlier shows to pull together what we know about the Coronavirus on this date, and what measures we can take. It focuses on the lack of solid information at this point and suggests a prudent course to stay safe. https://www.palain.com/health-topics/coronavirus-update-20200730/
\r\n',198,100,0,'CC-BY-SA','Health, Coronavirus',0,0,1),
@@ -19482,31 +19602,31 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3157,'2020-09-08','Compost',2583,'How and why to compost','
\r\n How to compost food scraps to produce nutrient-rich soil. It's natural!\r\n
',78,93,0,'CC-BY-SA','food, rubbish, landfill, gardening',0,0,1),
(3159,'2020-09-10','Vivaldi - The Four Seasons',2703,'All four movements of Vivaldi\'s Four Seasons, celebrating the Creative Commons license','
\r\nAntonio Vivaldi composed The Four Seasons (\'Le quattro stagioni\' in its original Italian) in 1723. It is a set of 4 violin concertos that propose an early form of descriptive music: for example, Winter makes prominent use of pizzicato notes in high registers, whereas Summer evokes a storm in its final movement. The work was first presented as part of Op. 8, being later catalogued as RV 269, 315, 293 & 297. The Four Seasons remain very popular to this day, some of its concertos spawning a great number of derivative works, whereas thousands of recordings of the original pieces have been made. It is still debated if Vivaldi wrote this concertos to accompany four sonnets that may have been written by himself. \r\nFrom Vivaldi The Four Seasons, Op. 8\r\n
',383,22,0,'CC-BY-SA','Vivaldi, four seasons, creative commons',0,0,1),
(3158,'2020-09-09','Fingerprint access control? LOL... ',1201,'A story about pentesting physical security','
Hello everyone, my name is Cedric and I\'m here again with another story on pentesting and security, straight from the trenches.
\r\n
Today I\'m going to share a story with you about an assignment we did some time ago for a large entertainment company. Our client, like many entertainment companies, produces a lot of intellectual property. So, one of their biggest concerns is that someone might physically break into their premises and steal some of these designs and products. They had already taken some precautions, like installing intrusion detection alarms and access controls on all doors etc\' The access controls they installed even had a dual function and could be used both as an RFID reader and as a fingerprint reader. So, they were already trying their best to secure their on-site intellectual property. And that\'s also the reason why they hired me and my team: they wanted to check if their investment in security was actually worth its money so far.
\r\n
We proposed a plan to hack them, in any way our devious minds could possibly think of. Everything was on the table: We could try and hack ourselves in. We could social engineer ourselves in, basically by manipulating people and abusing their trust and confidence. We could do all of that, and we would, eventually. But first, the grand opening of this show, would be an attempt to physically break into their premises at night. And yes, that was as much fun as it sounds ;-)
\r\n
Our approach was basically the same as that of a professional burglar: we\'d start with a week of preparation and scoping the place.
\r\n
So how do you do this? Well, we knew the address of course so first we checked out the place on Google Maps. And we were pretty lucky: Google had just recently updated their imagery of the area which meant we had recent maps to work with and the entire thing could be viewed in 3D with a fair amount of detail. That\'s pretty much as perfect as it comes when you\'re planning to do a major heist on a place in the physical world out there :-) So, we started with scouting the area from behind our laptops. We saw where all the entrances to the building were. We also saw that on the frontside the building just gave access to the street, while on the backside of the premise there was a public park. This looked very promising as a potential entrypoint, so our next step would be to actually physically go there and scout the area.
\r\n
So, first we went there during daylight hours and just took a drive around the block using a rental car. We\'d look for entrances to the building, camera\'s guarding these and the general view of the area, basic things… We didn\'t spot any cameras on the outside of the building. So we figured it would be pretty safe to take a walk and scout the area by foot. There was foot traffic but not too much, so we wouldn\'t draw any attention by just casually walking around and having a closer look.
\r\n
The main entrance to the building was in a quiet street which led to a small square where a few kids were playing, and on the other side there was a street with some shops and a few restaurants. The entrance to our clients building had a gate through which we could see a quiet courtyard and the general layout of the building. The first thing that drew our attention was an access control device guarding the entrance, it was a fingerprint reader and it had a brand name Suprema printed on it. Straight across the courtyard we could see the trees of the neighboring park. There was a rooftop terrace on the first floor which gave access to the offices of our client. We also noticed the wall that separated this terrace from the park and it was huge, at least 6 meters.
\r\n
We couldn\'t hang around for too long of course so we decided to continue our walk to the second entrance we spotted just around the corner. We could recognise its anonymous door next to a restaurant because it was guarded by the same Suprema fingerprint device. The restaurant however seemed quite popular, and it had a terras in front of it with a dozen tables, so that pretty much dismissed this entrance as a possible entry for our heist.
\r\n
Needless to say that while we walked around the block we were also continuously scanning the area for Wifi and bluetooth devices. But nothing interesting had shown up so far. We had spotted our clients network but it was protected. We probably could use this information to set up rogue access-points later during our assignment, but for now this information was of little use to us.
\r\n
We continued our walk and took a left to end up at the park bordering to the other side of our clients building. While the park was empty at that moment, we didn\'t really feel at ease. On one side the park bordered an apartment building and all of its rear terrasses faced this park. We went to the wall at the far end of the park as casually as possible, and inspected it. It had two large windows, giving the people working in the offices on the inside a nice view of the park. Unfortunately these windows didn\'t seem to have any way of opening. The wall was high, very high, we estimated about 8 meters. On the other side it would give access to the terrace on the first floor. We figured that this would be the perfect entrypoint for our heist. We\'d use the cover of darkness to get a ladder across the park, under the trees against that wall. I\'d climb over it to land on the terrace and that would be our first step onto the premise. Next step would be to find a way into the building and for that we\'d have to find a way to bypass these Suprema fingerprint readers next to every door.
\r\n
So we went back to our hackerspace and researched this device and we figured the best way to move forward would be to actually buy one of these to first try and hack it in the safety of our lab. So I spent a fair amount of time researching the exact model they had installed and ordering one from a local supplier. The thing came at a hefty price, these Suprema devices are not cheap. But now I had an electronic lock, a relay board, a power supply and one of these fingerprint readers with which I could start playing.
\r\n
I started off with reading the manual of course, which already was very interesting on its own. I learned that this thing can be configured in a zillion ways. I figured that, like most things, the guys that installed it would probably stick pretty close to how it came out of the box. So that\'s what I did as well: I installed the thing exactly as it came, following the instructions in the manual.
\r\n
I\'ll give you the summary of this entire installation. Electronic locks are pretty simple technology. Basically it\'s just an electro-magnet, a coil through which you send current to create a magnetic field that pulls a bolt out of the way so the lock can open, that\'s when it makes the clicking sound. Inside of the building, the receptionist can just press a button and a current will flow to the lock. However, on the outside of the building it wouldn\'t be very desirable that anyone can just press a button to open the door. That\'s why most companies implement access controls like RFID-readers or in this case fingerprint readers. A visitor scans his fingerprint with the device next to the door, the software checks if it finds the signature of the print in the database holding all recognized prints, and if so it will open the door.
\r\n
So if we\'d want to bypass this scheme, we\'d basically have two options: hack the device to open the lock, or duplicate a registered fingerprint to fool the scanner and open the lock. Research had shown that this last option wasn\'t actually so far fetched. It\'s actually a proven feasible attack, last DEFCON even demonstrated an attack where a print was copied in 3D using a 3D printer. The technique we would try involved etching the negative of a high-contrast image from a lifted latent print onto a copper plate. Next we\'d pour hot glue over that etch to actually recreate the fingerprint in 3D. However, this procedure requires some practice and skills, and we didn\'t have time for that. We tried it using our own prints lifted from a glass plate, following the procedure as best as we could but we failed miserably. So, this would not be an option and we already spent a fair amount of time.
\r\n
So by now it had become clear we would have to hack the device. And as it was laying there in front of me on my desk, basically running the default setup with just my own print registered in the software, it became obvious that I had missed a crucial error in the design the entire time. I had never actually bothered to install this thing \"properly\" like mounted to a board with its cables fitted nicely behind a wall etc. The entire thing was just laying there, in front of me on my desk and all the cables really were a mess, but most importantly: the software wasn\'t showing any warnings whatsoever that the device was not mounted to a wall. I investigated the manual and I learned that the thing has something called a \"tamper alarm\". But this must have been disabled by default because I never had any alarms while the device was just laying there and was continuously shaking and moving it. So this meant that I could probably just pull this thing from a wall without any alarms going off.
\r\n
I had to validate this premise first before we could continue. If this turned out to be a false assumption we\'d waste valuable time investigating a plan which would probably fail in the end. So the following night I set out again to our clients building. It was like 3:30 in the morning and there was nobody on the streets. We already validated that there were no cameras pointing to the entrance, still I didn\'t feel too confident. My plan was simple but solid: I\'d unscrew the fingerprint reader at the main entrance and put it back in place after 30seconds. I\'d then walk to the little square at the end of the street and sit on the bench there so I would have a clear view of our clients entrance. I figured that, if the tamper alarm was enabled, and if they had someone monitoring it, they would probably come and check the device causing the alarm. I\'d be interested in their response time of course, but most of all I was just hoping nobody would show up. And that\'s also what happened. I waited for 2 whole hours on that bench and nobody showed up, so I concluded the tamper alarm must have been disabled as is the default setting on these things, or nobody is monitoring it. Anyway, now I knew I could safely start tinkering on how I could manipulate this thing into letting me.
\r\n
So the next day after I had a few hours of sleep we went back to work, playing with that Suprema BioLite and its software. I was in a good mood and had lots of inspiration. We started with investigating the general architecture of this access control scheme. So it turns out you have a client device, the scanner which is next to the door and this client device gets a database of recognized fingerprints from a control server which holds a list of all connected devices. So it\'s on this server where you register new doors and locks and new users that can open these locks. Now, when I installed the setup to experiment with, I learned that I had to register the lock into the control server before I could actually do anything, so I followed that entire procedure but unless I was missing something I didn\'t notice any real checks to be in place during that registration. So what I was thinking was: maybe I can disconnect this device from its network and the control server and reconnect it to my own server. Then I could upload my own prints to the device and then I\'d be able to open the door with my own finger. So that\'s what I tried. I had the entire setup running in my own network, so I re-installed the software once again on my laptop. I then registered another print of mine into this installation. Next I disconnected the device from my network and connected it to a new temporary network running on my laptop: I had it running DHCP and I had a little USB-powered ethernet switch laying around which came in handy for this job. So the device quickly got an ip address from my new network and when I scanned for new fingerprint devices in my network using the Suprema control server that was installed on my laptop, I easily found it and was able to register it in this installation. I then was able to upload a copy of my fingerprints from my laptop to the device and after reconnecting it to the original network I could still open the lock with my newly registered print. So this meant we had our hack to bypass this device: we\'d just upload our own set of prints to it and it would happily accept these and open the door for us.
\r\n
So we hired a van and a ladder, and with some action cameras geared up we set out in the middle of the following night. We managed to get the ladder across the park and put it against the wall without making too much noise, we didn\'t wake up any curious neighbours. Next, I\'d climb up the ladder, but since it was only 6m and the wall was about 8m high I\'d have to climb the last bit by hand. Fortunately there was some vegetation growing on that wall and it felt like it would be strong enough to hold my weight. So, I gave it a try and pulled myself up from the ladder and the vines fortunately didn\'t break, so I climbed to the top of the wall and hoisted myself on top of it. I jumped off on the other side and landed on the first floor terrace we saw earlier. I went straight to the door and as expected it had one of these Suprema fingerprint readers next to it and I immediately went to work: I unscrewed the device from its mounting bracket and pulled the cables a bit from the wall. I then cut all the wires of the UTP-connection and connected a female RJ-45 socket to the UTP-wires of the fingerprint reader with crocodile clips. Next I hooked it up to my usb-powered switch which connected the device to the network running on my laptop. As I had tested everything in detail, the attack went smooth as a breeze and within no time I had my own fingerprint loaded into the device. I tested it and I could hear the lock of the door clicking while I put my finger onto the reader, so I started screwing the device back into the mounting bracket.
\r\n
Everything went exactly as planned and I had just put my laptop and all my gear into my backpack again when suddenly I saw the lights go on through the glass door separating me from the inside of the top floor. I could see the elevator doors open and suddenly there I was, standing face to face with a janitor. I could see his face and he could see me so I tried to pull myself together, I had to think quickly. I figured he would let me in, or call the cops and I would probably only get one chance to explain myself. So I pulled my silly face, pointed with a finger to the access control, shrugged my shoulders and lipped slowly \"it\'s not working\". Well, I must have been an actor in a previous life because, sure thing the man came up to the door and opened up for me. While I entered and said a quick \"hey thanks man\", he looked a bit questioning and mumbled something of \"who are you and what are you doing here?\" and as casual as I could I answered \"Oh I\'m from IT, I\'m here for work\". I smiled, thanked him once again while I stepped into the elevator and pressed the button for the ground floor. I was in! My heart was pounding like a racehorse but I was in! This stuff was like straight from the movies.
\r\n
Now it was time for the fun part of the night: claiming our flag of victory. First I went to the director\'s office, to leave a friendly signature of my presence: I left a bottle of champagne on his desk and I decorated the place with some CYBER-tape :-) On my way out I left a little present in the form of a LAN Turtle 3G. That\'s a 3G-enabled remote access toolkit with a network-connection which I hooked up with an empty socket underneath the receptionist\'s desk. The LAN Turtle would immediately boot and using its 3G connection it established a reverse tunnel using SSH to our command-and-control server. Using that covert connection we now had a way into the network from the outside. Installing it only took about 15 seconds and after having confirmed tunnel using a shell on my phone I went straight to the front-door and left the place. Mission accomplished! We had successfully penetrated the place.
\r\n
I went to bed with a very big smile on my face early in the morning that day. By Noon I got up after a few hours of sleep and called our clients. They thanked us for the champagne and I gave them the gist of what had happened earlier that day while everyone else was still in bed sleeping.
\r\n
The following weeks we would continue with our assignment and use our newly granted access into the place to go there physically during daytime hours, posing as an external developer. Eventually we gained full access to the entire place, including their on-premise datacenter holding their intellectual property, the crown jewels as to speak. Apparently, the access control-server was still protected with the default credentials admin/admin so I had pretty easy time expanding my initial foothold.
\r\n
At the end of our assignment we presented all of our findings to our client and they immediately took appropriate action, including making sure tampering control got enabled on all of their access control devices. And I for my part had learned a whole lot of new fun stuff about access control devices and the possible flaws they can hold.
\r\n
So, this was yet another story on pentesting and security. I hope you enjoyed this episode. If you\'d like to reach out to me, please use the comment section on Hacker Public Radio or contact me on Twitter or Facebook. See you next time!
\r\n',387,74,0,'CC-BY-SA','pentesting,security,hacking,biometrics',0,0,1),
-(3161,'2020-09-14','How I manage podcast listening',1192,'Another reply to MrX\'s episode on how he listens to podcasts','
Introduction
\r\n
I have spoken in the past about the podcast management system I have created, but have never gone into much detail about how I manage the playing of episodes.
',225,0,1,'CC-BY-SA','podcast,software,mp3 player,database',0,0,1),
+(3161,'2020-09-14','How I manage podcast listening',1192,'Another reply to MrX\'s episode on how he listens to podcasts','
Introduction
\r\n
I have spoken in the past about the podcast management system I have created, but have never gone into much detail about how I manage the playing of episodes.
',225,0,1,'CC-BY-SA','podcast,software,mp3 player,database',0,0,1),
(3164,'2020-09-17','I\'m Learning Spanish',989,'How I am using a variety of tools to learn Spanish','
I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far.
\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning',0,0,1),
(3165,'2020-09-18','Spanish Tools Continued',830,'Part two of how I am using a variety of tools to learn Spanish','
I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far. This is the second part of my tools exploration.
\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning',0,0,1),
(3175,'2020-10-02','International Keyboard',681,'How I learned to implement a keyboard that lets me type in Spanish','
I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far. This is the third part where I explain how I implemented the US International Keyboard on a variety of platforms. This lets me type characters that Spanish uses which do not appear on a standard US English keyboard. And best of all, it a purely free software fix.
\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, typing foreign characters',0,0,1),
-(3456,'2021-11-01','HPR Community News for October 2021',4849,'HPR Volunteers talk about shows released and comments posted in October 2021','\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 38 comments in total.
\n
Past shows
\n
There are 16 comments on\n7 previous shows:
\n
\n
hpr2793\n(2019-04-17) \"bash coproc: the future (2009) is here\"\nby clacke.
\n
\n
\n
\nComment 5:\nclacke on 2021-10-08:\n\"Real world use, thanks Dave!\"
Comment 1:\noperat0r on 2021-09-27:\n\"Example script\"
\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 archive.org
\n
This month 70 additional shows in the range 1-870 have been uploaded.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Rho`n
\n
Over the period tags and/or summaries have been added to 38 shows which were without them.
\n
---------------------------------------- \nHooray! There are now no more shows that need summaries or tags!
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3481,'2021-12-06','HPR Community News for November 2021',5638,'HPR Volunteers talk about shows released and comments posted in November 2021','\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 20 comments in total.
\n
Past shows
\n
There are 5 comments on\n4 previous shows:
\n
\n
hpr2169\n(2016-11-24) \"How I connect to the awesome #oggcastplanet on mobile\"\nby clacke.
\n
\n
\n
\nComment 2:\nclacke on 2021-11-06:\n\"NickServ authentication\"
Comment 1:\nKen Fallon on 2021-11-27:\n\"No please don\'t add silence to the audio\"
\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
Providing a valid link to your show\'s audio
\n
In the upload form there is the option to provide shows via a URL. This must be a publicly available URL that is accessible without authentication via command line tools like wget or curl.
\n
Older HPR shows on archive.org
\n
This month 115 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 369.
\n
Tags and Summaries
\n
Hooray! There are now no more shows that need summaries or tags!
\n
See the notes for episode 3456 for a list of all the contributors to this project
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3456,'2021-11-01','HPR Community News for October 2021',4849,'HPR Volunteers talk about shows released and comments posted in October 2021','\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 38 comments in total.
\n
Past shows
\n
There are 16 comments on\n7 previous shows:
\n
\n
hpr2793\n(2019-04-17) \"bash coproc: the future (2009) is here\"\nby clacke.
\n
\n
\n
\nComment 5:\nclacke on 2021-10-08:\n\"Real world use, thanks Dave!\"
Comment 1:\noperat0r on 2021-09-27:\n\"Example script\"
\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 archive.org
\n
This month 70 additional shows in the range 1-870 have been uploaded.
\n
Tags and Summaries
\n
Thanks to the following contributors for sending in updates in the past month: \nArcher72, Rho`n
\n
Over the period tags and/or summaries have been added to 38 shows which were without them.
\n
---------------------------------------- \nHooray! There are now no more shows that need summaries or tags!
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3481,'2021-12-06','HPR Community News for November 2021',5638,'HPR Volunteers talk about shows released and comments posted in November 2021','\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 20 comments in total.
\n
Past shows
\n
There are 5 comments on\n4 previous shows:
\n
\n
hpr2169\n(2016-11-24) \"How I connect to the awesome #oggcastplanet on mobile\"\nby clacke.
\n
\n
\n
\nComment 2:\nclacke on 2021-11-06:\n\"NickServ authentication\"
Comment 1:\nKen Fallon on 2021-11-27:\n\"No please don\'t add silence to the audio\"
\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
Providing a valid link to your show\'s audio
\n
In the upload form there is the option to provide shows via a URL. This must be a publicly available URL that is accessible without authentication via command line tools like wget or curl.
\n
Older HPR shows on archive.org
\n
This month 115 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 369.
\n
Tags and Summaries
\n
Hooray! There are now no more shows that need summaries or tags!
\n
See the notes for episode 3456 for a list of all the contributors to this project
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3162,'2020-09-15','Introduction to Ansible',2674,'Klaatu demonstrates some Ansible tricks, and how Ansible can be a better choice than scripting.','
\r\nIntroduction to Ansible.\r\n
',78,0,0,'CC-BY-SA','ansible,sysadmin',0,0,1),
(3163,'2020-09-16','Linux Inlaws S01E13: The road to communism and freedom',3855,'Our old heroes discuss their legacy and how they arrived at open source software and communism','
',384,111,1,'CC-BY-SA','open source, communism, escort services, freedom, Mach, VMS, accounts',0,0,1),
(3166,'2020-09-21','Using Ansible to mirror a Git repo',1580,'Klaatu uses Ansible to mirror a Git repo on two separate Git hosts','
\r\nI came up with a way to easily clone a repo living on Github and mirror it, with all the latest commits, on another Git host. You can schedule Ansible to run periodically to ensure your mirror stays updated.\r\n
',78,0,0,'CC-BY-SA','ansible,sysadmin,git',0,0,1),
(3169,'2020-09-24','Ludwig van Beethoven with a hint of Chopin',2518,'A fine treat to satisfy your earholes.','
All music in this episode is freely available from musopen.org.
\r\n',383,22,0,'CC-BY-SA','Ludwig Van Beethoven,Fredrick Chopin,classical,energetic,music,public domain',0,0,1),
-(3167,'2020-09-22','A ramble with the Pentland Squires (part 1)',2547,'MrX and Dave Morriss chat from opposite sides of the Pentland Hills, Edinburgh','
Introduction
\r\n
Once again the two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 pandemic.
We recorded this conversation in the evening of Sunday 23rd August 2020.
\r\n
The audio was quite long when we’d finished, so we decided to cut it into two similar-length pieces and the remainder is released as a second episode.
\r\n
Show title
\r\n
Although a explaining a joke can often destroy it, it’s probably worth saying that the title of this show was derived from the name of a variety of potato, Pentland Squire, and the fact that the two participants were separated by the Pentland Hills in Edinburgh! \"Where was the joke?\" you ask…
\r\n
Notes
\r\n
Some of the topics we discussed:
\r\n
\r\n
Our positions relative to the Pentland Hills: MrX is to the East and Dave is to the West of the area, which is to the south of Edinburgh, about 6 or 7 miles out.\r\n
\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
+(3167,'2020-09-22','A ramble with the Pentland Squires (part 1)',2547,'MrX and Dave Morriss chat from opposite sides of the Pentland Hills, Edinburgh','
Introduction
\r\n
Once again the two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 pandemic.
We recorded this conversation in the evening of Sunday 23rd August 2020.
\r\n
The audio was quite long when we’d finished, so we decided to cut it into two similar-length pieces and the remainder is released as a second episode.
\r\n
Show title
\r\n
Although a explaining a joke can often destroy it, it’s probably worth saying that the title of this show was derived from the name of a variety of potato, Pentland Squire, and the fact that the two participants were separated by the Pentland Hills in Edinburgh! \"Where was the joke?\" you ask…
\r\n
Notes
\r\n
Some of the topics we discussed:
\r\n
\r\n
Our positions relative to the Pentland Hills: MrX is to the East and Dave is to the West of the area, which is to the south of Edinburgh, about 6 or 7 miles out.\r\n
The jails will be configured to bind to an IP address on the jail host\'s internal network. The host OS will pass traffic from the external network to the jail.
\r\n
The jails will be managed with Iocage. Iocage uses ZFS properties to store configuration data for each jail, so a ZFS file system is required.
\r\n
Network setup
\r\n
These steps will:
\r\n\r\n
Set up the internal network.
\r\n
Enable the pf packet filter
\r\n
Configure pf pass internet traffic to and from the jail.
\r\n\r\n
PF is full featured firewall, and can do more than just pass traffic to an internal network. Refer to the PF documentation for additional configuration options.
\r\n
Run the following to configure the internal network and enable pf.
# Variables\r\n# ext_if should be set to the hosts external NIC\r\next_if = "vtnet0"\r\njail_if = "lo1"\r\njail_net = $jail_if:network\r\n\r\n# NAT allows the jails to access the external network\r\nnat on $ext_if from $jail_net to any -> ($ext_if)\r\n\r\n# Redirect traffic on port 80 to the web server jail\r\n# Add similar rules for additional jails\r\nrdr pass on $ext_if inet proto tcp to port 80 -> 192.0.2.10\r\n
\r\n
Reboot to activate the network changes
\r\n
ZFS
\r\n
The best way to use ZFS on a VPS is to attach block storage as a new disk.
\r\n
If block storage is not available, you can optionally use a file as the ZFS device.
\r\n
Enable and start ZFS.
\r\n
sysrc zfs_enable="YES"\r\nservice zfs start\r\n
\r\n
ZFS using Block storage
\r\n
List the available disks. If you are using a VPS, the block store will probably be the second disk.
\r\n',342,0,0,'CC-BY-SA','BSD',0,0,1),
-(3172,'2020-09-29','A ramble with the Pentland Squires (part 2)',2983,'Second half of the chat between MrX and Dave Morriss','
The two HPR hosts based in Edinburgh got together over Mumble on the evening of Sunday 23rd August 2020 to have a chat during the COVID-19 pandemic.
A Slicer: software for converting a 3D model into instructions for a 3D printer in the form of G-code.
\r\n
\r\n
\r\n
\r\n
The current pandemic\r\n
\r\n
Lockdown controls exposure to the virus and limits cases
\r\n
Fewer cases means the health service can cope better
\r\n
Sheltering keeps vulnerable people safe until a vaccine is available
\r\n
Herd Immunity is when the majority of people are immune to the virus and don’t transmit it to vulnerable people
\r\n
Long-term effects of COVID-19
\r\n
Asymptomatic carriers of the virus
\r\n
\r\n
\r\n
\r\n
HPR listening and contributing in the time of COVID\r\n
\r\n
Current times tend to make it harder to keep up to date with shows
\r\n
It’s also harder to make time to make contributions at the moment
\r\n
Issues with motivation
\r\n
\r\n
\r\n
\r\n
Miscellaneous\r\n
\r\n
MrX’s car needing attention due to rust
\r\n
Dave’s anecdote of his neighbour losing power late one night
\r\n
\r\n
\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
+(3172,'2020-09-29','A ramble with the Pentland Squires (part 2)',2983,'Second half of the chat between MrX and Dave Morriss','
The two HPR hosts based in Edinburgh got together over Mumble on the evening of Sunday 23rd August 2020 to have a chat during the COVID-19 pandemic.
A Slicer: software for converting a 3D model into instructions for a 3D printer in the form of G-code.
\r\n
\r\n
\r\n
\r\n
The current pandemic\r\n
\r\n
Lockdown controls exposure to the virus and limits cases
\r\n
Fewer cases means the health service can cope better
\r\n
Sheltering keeps vulnerable people safe until a vaccine is available
\r\n
Herd Immunity is when the majority of people are immune to the virus and don’t transmit it to vulnerable people
\r\n
Long-term effects of COVID-19
\r\n
Asymptomatic carriers of the virus
\r\n
\r\n
\r\n
\r\n
HPR listening and contributing in the time of COVID\r\n
\r\n
Current times tend to make it harder to keep up to date with shows
\r\n
It’s also harder to make time to make contributions at the moment
\r\n
Issues with motivation
\r\n
\r\n
\r\n
\r\n
Miscellaneous\r\n
\r\n
MrX’s car needing attention due to rust
\r\n
Dave’s anecdote of his neighbour losing power late one night
\r\n
\r\n
\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
(3240,'2021-01-01','Linux Under Attack',978,'A look at how malware is now targeting Linux, especially servers','
At one time most malware targeted Windows because it was the most popular OS, but as Linux has risen in popularity, particularly in the data center, it has become a target. We look at some of the recent attacks on Linux, and note some common features of the attacks. This then suggests some ways we can protect ourselves
\r\n',198,74,0,'CC-BY-SA','Linux, malware, ssh',0,0,1),
(3174,'2020-10-01','Linux Inlaws S01E14: The big programming language panel',3174,'Our heroes host an eclectic panel of experts discussion C(++), Python and Rust. ',' Shownotes: \r\n
\r\n',384,111,1,'CC-BY-SA','C++, Python, Rust, Rainbow Escorts, Halloween',0,0,1),
(3185,'2020-10-16','Pandemics In History',1062,'Infectious disease is one of the most important factors influencing human history','
This is a look at how infectious diseases have changed the course of human history. It is admittedly a bit Euro- or Western-centric since that is what I know best. But I think the point of its importance applies more broadly.
\r\n',198,100,0,'CC-BY-SA','Health, Infectious Disease, History, Pandemics',0,0,1),
(3171,'2020-09-28','A Week On Soylent',735,'Lostnbronx tries eating nothing but Soylent, so you don\'t have to.','
I bought - and ate - a jar of Soylent, which is a powdered food replacement product. These are my thoughts.
',107,0,0,'CC-BY-SA','soylent, food, health, diet, lostnbronx',0,0,1),
-(3173,'2020-09-30','Manage your Raspberry Pi fleet with Ansible',1209,'A solution to the problem of updating difficult-to-reach Raspberry Pis in the enterprise.','
\r\nThis is the final show in the miniseries on how to manage your RaspberryPis with ansible. The goal is to produce a common base Raspberry Pi OS image that doesn\'t change often but, once it\'s installed, can automatically be customized, maintained, and managed remotely.\r\n
\r\n
\r\nWe will create the base image using the script fix-ssh-on-pi which is available on GitHub. \r\n
',30,0,0,'CC-BY-SA','raspberrypi, Raspbian, ansible, opensource.com',0,0,1),
+(3173,'2020-09-30','Manage your Raspberry Pi fleet with Ansible',1209,'A solution to the problem of updating difficult-to-reach Raspberry Pis in the enterprise.','
\r\nThis is the final show in the miniseries on how to manage your RaspberryPis with ansible. The goal is to produce a common base Raspberry Pi OS image that doesn\'t change often but, once it\'s installed, can automatically be customized, maintained, and managed remotely.\r\n
\r\n
\r\nWe will create the base image using the script fix-ssh-on-pi which is available on GitHub. \r\n
',30,0,0,'CC-BY-SA','raspberrypi, Raspbian, ansible, opensource.com',0,0,1),
(3250,'2021-01-15','GIMP: Getting Started With Layers',952,'Mastering the basic tools of Layers in GIMP','
Layers are the feature that does most of the heavy lifting in GIMP. After our previous introduction, we start to get hands-on with the controls that let us work with Layers
\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, layers',0,0,1),
(3260,'2021-01-29','Free, Public Domain and Creative Commons Assets',1289,'Using images and fonts that are not restricted','
In preparation for doing some sample exercises I wanted to first explain about how you can use images and fonts that are not restricted or are available under license terms that are not too restrictive. Any image that is intended for public display or for commercial purposes could be liable for copyright infringement if care is not taken. Fortunately, there are many resources available that you can use, and we look at some of the better ones.
\r\n',342,0,0,'CC-BY-SA','VPN, OpenVPN',0,0,1),
(3270,'2021-02-12','An Example of Using Layers',900,'Creating a new header image for my WordPress site using Layers in GIMP','
There is a point where you need to stop being abstract and start demonstrating what you are talking about, so I thought this was a good opportunity to put some things into practice by creating an image. I chose to do a header image for my site Ahuka Communications that would more accurately reflect the content. This lets us use freely licensed images, an OFL-licensed font, layers, and various tools. Note that you can download all of this stuff from my site.
\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, WordPress',0,0,1),
(3178,'2020-10-07','Finishing the Recumbent Bicycle',259,'While channeling Stephen Hawking, Brian in Ohio describes finishing and riding the bike','
This is how I clamped up the conduit bending tool in the trusty workmate. In this configuration you can bend the tube to specific angles and make sure the bends stay in plane. The goal here is to create two side rails that are identical. The seat webbing is sewn on to these rails.
\r\n
2 - Needed weights \r\n
\r\n
This photo shows some more of how the bending jig was set up. Those are counter weights needed to keep the jig on the ground while the tube is being bent.
\r\n
3 - Seat rail plans \r\n
\r\n
Mr. Carson provides pdf files that you can print out to be used as templates to match your bends.
\r\n
4 - Marking tubes \r\n
\r\n
5 - Sighting down tube \r\n
\r\n
6 - Using marks \r\n
\r\n
7 - Help with angles \r\n
\r\n
8 - Matching to plans \r\n
\r\n
Pictures 4-8 show the layout of the tubes and how the marks are used to ensure you make mirror image rails for the seat.
\r\n
9 - Matching sides \r\n
\r\n
10 - Seat backs \r\n
\r\n
11 - Drilling fish mouths \r\n
\r\n
12 - Seat backs ready for trimming \r\n
\r\n
13 - Finished seat backs \r\n
\r\n
14 - Jigging up \r\n
\r\n
Pictures 9-14 outline the steps in fabricating the seat backs. The seat backs tie the rails together and are where the clamps that connect the seat to the frame grab the seat. This part of the construction can be overwhelming if you don\'t take it one step at a time. I had to constantly remind myself that building the bike was not a race but a journey, take your time and enjoy each little milestone. The last picture is the seat frame jigged up and ready for brazing.
\r\n
15 - Seat stay one \r\n
\r\n
16 - Seat stay two \r\n
\r\n
The seat stay was at first glance very intimidating. This piece connects the back of the seat down to the frame, supporting the upper part of your body. Its made of many parts, but all they are is cut up pieces of steel rod and threaded rod that are brazed together. No bending is involved only cutting and brazing and in the end it wasn\'t to difficult to fabricate.
\r\n
17 - Seat stay three \r\n
\r\n
The completed seat connected to the frame. The seat is clamped to the frame using hose clamps and clamping blocks made of conduit cut length wise and brazed together at right angles.
\r\n
18 - Seat webbing one \r\n
\r\n
19 - Seat webbing two \r\n
\r\n
The seat webbing is sewn on using fishing line as described on the website, the only challenge is getting it nice and tight. Needle, line and a few hpr episodes is all you need to get through the task.
\r\n
20 - Finished \r\n
\r\n
The last picture is the bike finished and ready for its maiden journey.
\r\n
Espeak script:
\r\n
Hello Hacker Public Radio, Brian in Ohio here.
\r\n
I am out from under my rock, and doing the last of the recumbent bike build episodes. My wife and I are visiting the land of our youth, Colorado, so my recording stuff is at home, hence the espeak rendition of the show. I finished building the bike a while ago and have been riding it around town to do errands and get exercise. I love this bike! The comfort level is unparalleled. Its like sitting in a chase lounge. No more neck strain or pain in the derriere. You don\'t need any fancy bike clothes, like padded biking shorts, in order to feel comfortable. The bike is fast and has responsive handling. Somethings I have learned so far while riding the bike. First, a rear view mirror really helps when riding on the street. Unlike upright bikes turning your head to look back to clear for traffic is not as easy. Next, the handling takes some getting used to. The long lever arm of the steering tube makes the bike feel jerky when you first ride it. After a while you\'ll see that a light hand on the tiller goes a long way to smoothing out the ride. It took me a bit of practice to gracefully get the bike started after coming to a stop. Because you can\'t stand up and hammer on the peddles, coming to a stop requires a bit of work on the gears. Being in a easy gear then shifting up as you get moving is the way to go. If you build one of these bikes, and why wouldn\'t you, you will have to think about storage because throwing a back pack on is not really an option. I found a bike rack that attaches to the back of the bike, a grocery store plastic basket and an instructive video tutorial by C J Hoyle on you tube took care of my storage needs, a link is in the show notes. The last parts that need to be fabricated to complete the bike were the seat and the handle bars, and all of there associated bits and pieces that make up these assemblies. Instead of narrating through all the pictures, I leave you, dear hacker public radio listener, that\'s interested to look at the pictures and read the captions yourself. My general impressions of building the pieces are as follows. The handle bars are relatively easy to fabricate but the big problem for me was the metal on the handle bars you use to make the tiller did not braze well with the conduit. In the end I had to resort to pop rivets and a through bolt to get a safe, sturdy connection. The seat is a collection of many parts and at first glance can be a bit overwhelming. By examining the photos on the recycled recumbent website and studying the plans, focusing on each step the seat came out fine for me, yours will too. The side rails are bent using a conduit bender and the challenge is getting the two sides close to match. Take your time and get some extra conduit, you\'re probably going to need it. The seat back stay is pretty easy to make, but it is made up of quite a few parts, requiring simple cuts and brazing to fashion it. The rest of the seat parts, the various fittings used to clamp the seat to the frame are pretty easy to make and I can\'t compliment Mr. Carsen highly enough for his ingenious design. Fitting out the bike; getting wheels, brakes and drive train together are going to be unique to every bike and will depend on how much money you want to spend, what parts you have laying around and what fittings you might have to create to attach the parts. I opted to use used parts that were at hand so I could get the bike up and running. I plan on upgrading parts, making changes and improvements after I\'ve ridden the bike for a few months and gotten a good number of miles under my belt. I\'ll do an update show in the future to let you know what I\'ve done. Will I do this again? Yes definitely I will build another bike, maybe a mach two or three, the building is fun the bike rides great. Mr Carsen sells parts, kits and completed bikes on his website. When I do it again I may opt to buy the seat from him. I would recommend this project to anyone. You can, go out and build one yourself.
\r\n
This is Brian in Ohio signing off for now reminding every one to: go fast; take chances.
\r\n',326,115,0,'CC-BY-SA','bicycle, recumbent',0,0,1),
(3179,'2020-10-08','MakeMKV to back up media, and a Question',404,'Describing two ways to install MakeMKV DVD/Blu-ray backup program on Fedora 32','
Installed Fedora 32 on a spare laptop
\r\n
Quick tip
\r\n
To ignore the handle switch on the laptop triggering a power off:
\r\n
Put HandleLidSwitch=ignore in /etc/systemd/logind.conf
Is it antiquated to want to rip Blu-ray/DVD disks to a server?
\r\n
Is there a better way to accomplish this, rather than using MakeMKV, which continues to be Beta software, and not Free and Open Source?
\r\n',318,0,0,'CC-BY-SA','dvd, blu-ray, backup',0,0,1),
-(3182,'2020-10-13','Yo-ho-ho, and a bottle of Cholecalciferol',4763,'From Scotland, two HPR hosts chew the fat','
Introduction
\r\n
Two HPR hosts from Scotland get together over Mumble one more time to chat about all manner of stuff.
We recorded on Saturday 19th September 2020, which was International Talk Like A Pirate Day, we but managed to avoid any utterances of ARRRR!, and the use of marlinspikes, fids or belaying pins. Also, no timbers were shivered and no mainbraces spliced (not while recording anyway).
\r\n
Notes
\r\n
Some of the topics we discussed:
\r\n
\r\n
COVID-19:\r\n
\r\n
The increase in COVID-19 cases in Scotland, particularly Glasgow\r\n
\r\n
Movement in Glasgow is more restricted than in Edinburgh at time of recording
This week in Virology podcast discussing easing of lock down and return of children to school, both likely to increase infections.
\r\n
Vitamin D (D3 in particular1) seems to have a beneficial effect in COVID-19 cases. Having an optimal level of the vitamin seems to help ameliorate the COVID-19 effects, whereas being deficient can apparently result in more severe effects. See the study in the Journal of Steroid Biochemistry and Molecular Biology
The virus is called SARS-CoV-22 (as opposed to SARS-CoV-1, the previous SARS coronavirus). The disease is called COVID-193.
\r\n
Speculations heard:\r\n
\r\n
Whether having had the BCG immunisation against tuberculosis helps protect from COVID-19.
\r\n
Whether exposure to other (milder) corona viruses can provide immunity to SARS-CoV-2.
\r\n
\r\n
The puzzling case of Sweden and COVID-19
\r\n
Have there been randomised controlled trials of the effectiveness of the masks in common use?4
\r\n
\r\n
\r\n
\r\n
What we’re doing in lockdown:\r\n
\r\n
Dave: cooking for the family 2 nights a week; shopping “by proxy”; not going to the gym yet
\r\n
Andrew: exercising at home; tried the gym a couple of times but was put off by overcrowding; working on the BBC Micro (check HPR show hpr2731 :: My 8 bit Christmas)
The 6502 could be seen as an early RISC (Reduced Instruction Set) machine (though not intentionally). Acorn created the Acorn RISC Machine (ARM) for the Archimedes and eventually spun off ARM Ltd.
\r\n
\r\n
\r\n
\r\n
Internet bandwidth in Scotland\r\n
\r\n
Dave’s street has just had optical fibre installed. He has an ADSL link at present which is slow and not always reliable
\r\n
Andrew has cable, which is very reliable. Reliability is more important than very high speeds, as is low latency
\r\n
\r\n
\r\n
\r\n
HPR queue state:\r\n
\r\n
OK for the next couple of weeks (at time of recording)
\r\n
A new show then arrived at that point!
\r\n
HPR always needs shows!
\r\n
\r\n
\r\n
\r\n
Programming languages:\r\n
\r\n
Dave hasn’t been too keen on using assembler since the late 1980’s
\r\n
Andrew has been a Java programmer but likes the slimness of C
\r\n
Dave tinkered with FORTH on the BBC Micro at one time, and wrote some stuff in PostScript as a programming language
SARS-CoV-2: SARS stands for Severe Acute Respiratory Syndrome, CoV means Corona Virus and the 2 refers to the second SARS corona virus in recent times.↩︎
\r\n
COVID-19: simply means coronavirus disease 19, referring to its arrival in 2019.↩︎
\r\n
Some clarification of the types of mask being used most commonly might be needed. Andrew was thinking of the fabric masks when speaking about this. Some research after the recording discovered a mask-related trial as follows: Human coronavirus data from four clinical trials of masks and respirators.↩︎
\r\n\r\n\r\n',225,0,1,'CC-BY-SA','COVID-19,SARS-Cov-2,Vitamin D,6502 microprocessor,BBC Micro',0,0,1),
+(3182,'2020-10-13','Yo-ho-ho, and a bottle of Cholecalciferol',4763,'From Scotland, two HPR hosts chew the fat','
Introduction
\r\n
Two HPR hosts from Scotland get together over Mumble one more time to chat about all manner of stuff.
We recorded on Saturday 19th September 2020, which was International Talk Like A Pirate Day, we but managed to avoid any utterances of ARRRR!, and the use of marlinspikes, fids or belaying pins. Also, no timbers were shivered and no mainbraces spliced (not while recording anyway).
\r\n
Notes
\r\n
Some of the topics we discussed:
\r\n
\r\n
COVID-19:\r\n
\r\n
The increase in COVID-19 cases in Scotland, particularly Glasgow\r\n
\r\n
Movement in Glasgow is more restricted than in Edinburgh at time of recording
This week in Virology podcast discussing easing of lock down and return of children to school, both likely to increase infections.
\r\n
Vitamin D (D3 in particular1) seems to have a beneficial effect in COVID-19 cases. Having an optimal level of the vitamin seems to help ameliorate the COVID-19 effects, whereas being deficient can apparently result in more severe effects. See the study in the Journal of Steroid Biochemistry and Molecular Biology
The virus is called SARS-CoV-22 (as opposed to SARS-CoV-1, the previous SARS coronavirus). The disease is called COVID-193.
\r\n
Speculations heard:\r\n
\r\n
Whether having had the BCG immunisation against tuberculosis helps protect from COVID-19.
\r\n
Whether exposure to other (milder) corona viruses can provide immunity to SARS-CoV-2.
\r\n
\r\n
The puzzling case of Sweden and COVID-19
\r\n
Have there been randomised controlled trials of the effectiveness of the masks in common use?4
\r\n
\r\n
\r\n
\r\n
What we’re doing in lockdown:\r\n
\r\n
Dave: cooking for the family 2 nights a week; shopping “by proxy”; not going to the gym yet
\r\n
Andrew: exercising at home; tried the gym a couple of times but was put off by overcrowding; working on the BBC Micro (check HPR show hpr2731 :: My 8 bit Christmas)
The 6502 could be seen as an early RISC (Reduced Instruction Set) machine (though not intentionally). Acorn created the Acorn RISC Machine (ARM) for the Archimedes and eventually spun off ARM Ltd.
\r\n
\r\n
\r\n
\r\n
Internet bandwidth in Scotland\r\n
\r\n
Dave’s street has just had optical fibre installed. He has an ADSL link at present which is slow and not always reliable
\r\n
Andrew has cable, which is very reliable. Reliability is more important than very high speeds, as is low latency
\r\n
\r\n
\r\n
\r\n
HPR queue state:\r\n
\r\n
OK for the next couple of weeks (at time of recording)
\r\n
A new show then arrived at that point!
\r\n
HPR always needs shows!
\r\n
\r\n
\r\n
\r\n
Programming languages:\r\n
\r\n
Dave hasn’t been too keen on using assembler since the late 1980’s
\r\n
Andrew has been a Java programmer but likes the slimness of C
\r\n
Dave tinkered with FORTH on the BBC Micro at one time, and wrote some stuff in PostScript as a programming language
SARS-CoV-2: SARS stands for Severe Acute Respiratory Syndrome, CoV means Corona Virus and the 2 refers to the second SARS corona virus in recent times.↩︎
\r\n
COVID-19: simply means coronavirus disease 19, referring to its arrival in 2019.↩︎
\r\n
Some clarification of the types of mask being used most commonly might be needed. Andrew was thinking of the fabric masks when speaking about this. Some research after the recording discovered a mask-related trial as follows: Human coronavirus data from four clinical trials of masks and respirators.↩︎
\r\n\r\n\r\n',225,0,1,'CC-BY-SA','COVID-19,SARS-Cov-2,Vitamin D,6502 microprocessor,BBC Micro',0,0,1),
(3181,'2020-10-12','RealVNC cloud offering',262,'JWP emails in a show about using VNC while out and about','
\r\nJust a short podcast about RealVNC cloud offering.\r\nAn interesting VNC option if you want to connect on the road or the at\r\nthe coffee shop to a server back home without putting holes in your router.\r\n
',129,0,1,'CC-BY-SA','realvnc, remote computing',0,0,1),
(3184,'2020-10-15','Linux Inlaws S01E15: IT Security and stick insects',3368,'How to secure photos of your stick insect collection and more ','
In this episode Martin discovers that protecting pictures of stick insects (rated XXX or not)\r\non USB sticks (pun intended) can be an ardous endeavour indeed. Never mind eventually turning\r\nthis into a business including web servers, shared file spaces and password storage. Additional\r\nbonus: the lovely Emma from Rainbow Escorts makes another cameo apperance supported by some Irish, um, students.
',384,111,0,'CC-BY-SA','IT Security, stick insects, Rainbow Escorts, Grumpy Old Coders',0,0,1),
(3183,'2020-10-14','Don\'t trust zipfiles',277,'Zipfiles can contain all kinds of evilness and unpacking them can lead to unexpected results','
This show explains the concept of injecting symbolic links into zipfiles and how those can be used to attack a web application.
',387,74,0,'CC-BY-SA','pentesting,security,hacking,zip',0,0,1),
@@ -19539,7 +19659,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3226,'2020-12-14','Using taskwarrior to structurize your work',970,'How using taskwarrior can help you to structure your work','
Taskwarrior is Free and Open Source Software that manages your TODO list from the command line. It is flexible, fast, and unobtrusive. It does its job then gets out of your way.
Tracking time on the command line with Taskwarrior and Timewarrior
\r\n
\r\n
',369,0,0,'CC-BY-SA','command-line,taskwarrior,timewarrior,todo-list',0,0,1),
(3215,'2020-11-27','Why I Gave Away a 3-D Printer',442,'I briefly had a 3-D printer and gave it away. This is why.','
Ken Fallon asked for shows abut 3-D printers and I told him I had given mine away. So of course he asked for a show about why I had done that. This is that show.
',198,0,0,'CC-BY-SA','3D Printers, prosthetics',0,0,1),
(3209,'2020-11-19','Linux Inlaws S01E17: Nextcloud',4189,'Chat with Frank Karlitschek about Nextcloud and forking your company','
',384,111,1,'CC-BY-SA','Nextcloud, PHP, Golang, forking a company, technical debt',0,0,1),
-(3207,'2020-11-17','Fireside chat with E Nigma',3799,'Ken talks to the original HPR and Today with a Techie Admin.','
In this rambling episode, we talk to Enigma about the old days of HPR. He helped out with Today With A Techie and Droops asked him if he would like lead the project. After 300 episodes he, Dual Parallel, Droops, and StankDawg decided to pivot and rebrand as Hacker Public Radio. A nod to National Public Radio.
',30,0,1,'CC-BY-SA','HPR, TWAT, DDP, Infonomicon, Binrev, RFA',0,0,1),
+(3207,'2020-11-17','Fireside chat with E Nigma',3799,'Ken talks to the original HPR and Today with a Techie Admin.','
In this rambling episode, we talk to Enigma about the old days of HPR. He helped out with Today With A Techie and Droops asked him if he would like lead the project. After 300 episodes he, Dual Parallel, Droops, and StankDawg decided to pivot and rebrand as Hacker Public Radio. A nod to National Public Radio.
',30,0,1,'CC-BY-SA','HPR, TWAT, DDP, Infonomicon, Binrev, RFA',0,0,1),
(3208,'2020-11-18','The Paul Quirk show: Wacom with Pinebook, and thoughts on the DMCA takedown',1120,'I got a Wacom tablet to use with my Pinebook, and then share my thoughts on the recent DMCA takedown','
',383,0,0,'CC-BY-SA','Pinebook,Pro,Wacom,tablet,DMCA,takedown,Youtube,Canadian,Canada,Music',0,0,1),
(3212,'2020-11-24','A Pi Model 3B as your daily driver? You must be joking.',755,'Beeza\'s laptop is away being fixed. Can he manage for a few days using just his Raspberry Pi 3B?','
My Dell laptop had to go away to have a new cooling fan fitted. I\'ve got 3 other laptops to call upon, but instead I decided to conduct an experiment I\'ve theorised about for ages. Could a Raspberry Pi 3B serve as my daily driver?
\r\n
This idea goes back some way and since then, of course, the much more powerful model 4 has been released. However, there must be thousands of 3Bs out there doing nothing, so perhaps they could have a new lease of life providing basic browsing and internet capabilities to people who might otherwise not be in a position to buy a computer.
\r\n
Hardware: Raspberry Pi Model 3B \r\nOS: Raspberry Pi OS (current version as of 31st October 2020) \r\nMicroSD: SanDisk 16GB
\r\n
ADDITIONAL SOFTWARE INSTALLED
\r\n
\r\n
Audio Editor: mhWaveEdit 1.4.23
\r\n
Audio Format Converter: SoundConverter 2.1.3
\r\n
Image Editor: GIMP 2.10
\r\n
\r\n',246,0,0,'CC-BY-SA','Raspberry Pi, Software Review',0,0,1),
(3213,'2020-11-25','Electrical Safety',1835,'I discuss why and how I stay safe when working with electricity, with some ear candy at the end.','
',383,0,0,'CC-BY-SA','Electrical,safety,code,electricity,electrocution',0,0,1),
@@ -19548,8 +19668,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3222,'2020-12-08','Musings about writing a book about the Odoo software suite',1616,'How I started writing again after 20 years and this time about the Odoo software','
In this podcast I describe how I met another Dutch guy at the Ubucon 2018 conference in Spain. And how he asked me to write another book, this time about Odoo. How I learned how the Odoo ecosystem works, with the Odoo S.A. company and the Odoo Community Association (OCA).
If you have questions or comments, please leave a comment at the HPR site.
\r\n
Warm regards, Jeroen Baten
\r\n',369,0,0,'CC-BY-SA','odoo, writing, book',0,0,1),
(3223,'2020-12-09','My COVID year summary',1090,'I summarize what I\'ve been doing for the last year','
',300,100,0,'CC-BY-SA','covid,healthcare,coronavirus,laboratory',0,0,1),
(3224,'2020-12-10','Adventures in Retrocomputing with the Mac Plus',1479,'I talk more about my hobby with retrocomputing, and then Greensleeves.','
',383,71,0,'CC-BY-SA','Mac,Plus,Iomega,zip,drive,OS,7.5.5,6.0.8,retro,computing',0,0,1),
-(3501,'2022-01-03','HPR Community News for December 2021',4324,'HPR Volunteers talk about shows released and comments posted in December 2021','\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.
hpr3495\n(2021-12-24) \"Podcast Recommendation: The Retroist\"\nby Archer72.
\n
\n
Comment 1:\nTrey on 2021-12-24:\n\"Great recommendation\"
\n
hpr3496\n(2021-12-27) \"How I record HPR Episodes\"\nby norrist.
\n
\n
Comment 1:\nDave Morriss on 2021-12-30:\n\"Great show\"
\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 archive.org
\n
This month 125 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 244.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3526,'2022-02-07','HPR Community News for January 2022',2626,'HPR Volunteers talk about shows released and comments posted in January 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 9 comments in total.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr3322\n(2021-04-27) \"Tune system performance with tuned\"\nby klaatu.
\n
\n
\n
\nComment 1:\nWindigo on 2022-01-21:\n\"Lost udev episode\"\n I was surprised to hear you say you\'ve never done an episode on udev, because I distinctly remember that episode! You were discussing creating your own udev rules to automatically run tasks upon inserting a USB drive. \n \nIt may be that you\'ve never done an episode on HPR about it; I can\'t find it for the life of me. \n \nEither way, thank you - as always - for the excellent episode. :)\n
\n
hpr3485\n(2021-12-10) \"50 years since the 1st Edition of Unix was published\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nwynaut on 2022-01-07:\n\"thanks great show\"\n agree with prev comment, listener who just turned 51 :)\n
\n
hpr3496\n(2021-12-27) \"How I record HPR Episodes\"\nby norrist.
\n
\n
\n
\nComment 2:\nReto on 2022-01-09:\n\"a good idea\"\n Hi, \nThank you for this program and the introduction as a podcast. \n \nI just downloaded the .zip from GitLab and while trying the commands, I realize a section with dependencies is missing. I think pip is too large, so, I usually do run it in an virtualenv. \nIn other Phython projects like here: https://github.com/jonaswinkler/paperless-ng/blob/master/requirements.txt you find a requirements.txt. I was wondering if you add one too? \n \nBr, \nReto\n
\n
hpr3498\n(2021-12-29) \"Linux Inlaws S01E45: The Big Xmas New Year bash with the Grumpies\"\nby monochromec.
\n
\n
\n
\nComment 1:\noperat0r on 2022-01-09:\n\"Love this show\"\n reminds me a little bit of udev random podcast. this one had a lot of laughs! You guys are my friends for now. Mine won\'t do anything.. Holidays are hard for some/most people. Shooting the shit and ranting are my fav podcast eps! \n \nTake care of yourselves! your the only U you have!\n
Comment 1:\nJanedoc on 2022-01-26:\n\"empathize with you\"
\n
hpr3517\n(2022-01-25) \"Hp stream laptop with Lubuntu 20.04\"\nby JWP.
\n
\n
Comment 1:\nJesse on 2022-01-25:\n\"Monty Mint phone\"
\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 archive.org
\n
This month 120 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 124.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3501,'2022-01-03','HPR Community News for December 2021',4324,'HPR Volunteers talk about shows released and comments posted in December 2021','\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.
hpr3495\n(2021-12-24) \"Podcast Recommendation: The Retroist\"\nby Archer72.
\n
\n
Comment 1:\nTrey on 2021-12-24:\n\"Great recommendation\"
\n
hpr3496\n(2021-12-27) \"How I record HPR Episodes\"\nby norrist.
\n
\n
Comment 1:\nDave Morriss on 2021-12-30:\n\"Great show\"
\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 archive.org
\n
This month 125 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 244.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3526,'2022-02-07','HPR Community News for January 2022',2626,'HPR Volunteers talk about shows released and comments posted in January 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 9 comments in total.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr3322\n(2021-04-27) \"Tune system performance with tuned\"\nby klaatu.
\n
\n
\n
\nComment 1:\nWindigo on 2022-01-21:\n\"Lost udev episode\"\n I was surprised to hear you say you\'ve never done an episode on udev, because I distinctly remember that episode! You were discussing creating your own udev rules to automatically run tasks upon inserting a USB drive. \n \nIt may be that you\'ve never done an episode on HPR about it; I can\'t find it for the life of me. \n \nEither way, thank you - as always - for the excellent episode. :)\n
\n
hpr3485\n(2021-12-10) \"50 years since the 1st Edition of Unix was published\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nwynaut on 2022-01-07:\n\"thanks great show\"\n agree with prev comment, listener who just turned 51 :)\n
\n
hpr3496\n(2021-12-27) \"How I record HPR Episodes\"\nby norrist.
\n
\n
\n
\nComment 2:\nReto on 2022-01-09:\n\"a good idea\"\n Hi, \nThank you for this program and the introduction as a podcast. \n \nI just downloaded the .zip from GitLab and while trying the commands, I realize a section with dependencies is missing. I think pip is too large, so, I usually do run it in an virtualenv. \nIn other Phython projects like here: https://github.com/jonaswinkler/paperless-ng/blob/master/requirements.txt you find a requirements.txt. I was wondering if you add one too? \n \nBr, \nReto\n
\n
hpr3498\n(2021-12-29) \"Linux Inlaws S01E45: The Big Xmas New Year bash with the Grumpies\"\nby monochromec.
\n
\n
\n
\nComment 1:\noperat0r on 2022-01-09:\n\"Love this show\"\n reminds me a little bit of udev random podcast. this one had a lot of laughs! You guys are my friends for now. Mine won\'t do anything.. Holidays are hard for some/most people. Shooting the shit and ranting are my fav podcast eps! \n \nTake care of yourselves! your the only U you have!\n
Comment 1:\nJanedoc on 2022-01-26:\n\"empathize with you\"
\n
hpr3517\n(2022-01-25) \"Hp stream laptop with Lubuntu 20.04\"\nby JWP.
\n
\n
Comment 1:\nJesse on 2022-01-25:\n\"Monty Mint phone\"
\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 archive.org
\n
This month 120 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 124.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3227,'2020-12-15','Fresh water Aquarium Basics',1589,'Enigma discusses the high level basics of getting into the aquarium hobby','
Enigma discusses the high level basics of getting into the aquarium hobby and what to consider when purchasing your first aquarium.
',39,0,1,'CC-BY-SA','Aquariums',0,0,1),
(3229,'2020-12-17','Linux Inlaws S01E19: Redis',4418,'Our two chaps interview Itamar Haber of Redis fame','
In this episode our two heroes interview Itamar Haber, community liaison for Redis, a popular open-source\r\nin-memory NoSQL database. Technology prevails in this episode; communism, free love and drugs\r\ntake a backseat (but only for the moment! :-). The trio discuss the legacy of redis, bemoan their old age\r\nand reveal why Itamar initially wanted to be a mermaid. Listen to the episode\r\nfor more shocking epiphanies!
\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Redis, mermaids, communism, Israel',0,0,1),
(3239,'2020-12-31','New Community Project Proposal',516,'Enigma discusses a project proposal called Hacker exchange','
Enigma discusses a project proposal called Hacker exchange, a proposed content sharing site that would aggregate audio/video and text based tutorials.
\r\n
Come chat about this project on irc.freenode.net #hackerexchange
',39,0,1,'CC-BY-SA','hpr, community_projects, ddp, binrev',0,0,1),
@@ -19558,7 +19678,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3232,'2020-12-22','Nextcloud',1279,'Nextcloud is easy. You should try it.','
I've been running NextCloud since it was OwnCloud. In this episode, I encourage other people to install and run NextCloud. It\'s a great way to get out of the Google ecosystem, and it doesn\'t require much to set up or maintain.
\r\n\r\n
\r\nHere\'s the script I use to update one of the Nextcloud instances I maintain, running on a dirt-cheap VPS slice from Blue Host er something:
\r\n\r\n
\r\n#/test/before/using/bash\r\n# GNU All-Permissive License\r\n# Copying and distribution of this file, with or without modification,\r\n# are permitted in any medium without royalty provided the copyright\r\n# notice and this notice are preserved. This file is offered as-is,\r\n# without any warranty.\r\n\r\nif [ \"${1}\" == \"--help\" ]; then\r\n echo \"usage:\"\r\n echo \"$0 https://path-to-nextcloud.bz2\"\r\n echo \"WARNING: You MUST put your Nextcloud instance into maintenance mode first\"\r\n exit\r\nfi\r\n\r\nset -e\r\n\r\n# get rid of the old Nextcloud tarball from the last time you upgraded\r\ntrash nextcloud*bz2 || true\r\n\r\n# get rid of old backups as long as they are empty of actual data\r\n[[ -e cloud/data ]] && trash cloud-deleteme\r\n\r\n#download the source tarball\r\nwget \"${1}\"\r\n\r\n#rename old cloud\r\nmv nextcloud cloud-deleteme\r\n\r\n# untar source\r\n# grab your data from old cloud\r\ntar xvf nextcloud*bz2 && mv cloud-deleteme/data/ nextcloud/\r\n\r\n# copy your config\r\ncp cloud-deleteme/config/config.php nextcloud/config/\r\n\r\n# enter the cloud\r\npushd nextcloud\r\n\r\n# perform upgrade\r\nphp ./occ upgrade\r\n\r\n# leave the cloud\r\npopd\r\n
\r\n\r\n
\r\nDon\'t use my upgrade script blindly, and please do test first. It works for my setup, but has been tested ONLY on my setup. Also, it doesn\'t put your Nextcloud instance into maintenance mode (probably because I wrote it before I knew Awk...), so you must do that manually.\r\n
\r\n\r\n
\r\nHappy hacking!\r\n
\r\n',78,74,0,'CC-BY-SA','cloud,nextcloud,owncloud,server',0,0,1),
(3233,'2020-12-23','HPR RPG Club reviews Shadowrun 5e',3245,'Cyberpunk + Magic and a fistful of D6','
Beni, McNalu, Klaatu, and Philip review the Fifth Edition of the Shadowrun roleplaying game.\r\n
Finally, you can find lots of great Shadowrun fiction on drivethrurpg.com in EPUB format.\r\n
\r\n\r\n',78,95,0,'CC-BY-SA','rpg,cyberpunk,HPR RPG Club',0,0,1),
(3243,'2021-01-06','Pictor - free and open radio astronomy',2854,'Discussion with the people that created the Pictor radio telescope.','
In this show I talk with Apostolos and Vasilis who I met at FOSDEM 2020 about the Pictor radio telescope which they created and now maintain. Using free and open source software and hardware they have made a radio telescope that anyone can operate via a simple web page and which can return results to you within a minute or two. In fact you\'ll hear me get excited during the show when I realise this and submit an observation request, the results of which came back immediately and which you can see below.
\r\n
To date Pictor has performed 3,500 observations from over 700 users from all around the world. Additionally, the PICTOR web platform is now equipped with a 3.2m antenna, which is about 4 times more sensitive than the previous 1.5m antenna, so users can observe the radio sky for free with an even more sensitive instrument.
\r\n
On top of that, after 204 hours of integration time and over 3 TB of data, they have produced a Northern Sky Hydrogen (HI) Survey produced with the PICTOR Radio Telescope. This effort actually marks the very first radio-image obtained in Greece, shown here:
\r\n
Pictor all sky images of hydrogen in our galaxy \r\n
\r\n
Here are the results of the observation I performed during the show. The body of the email pictor sent back to me confirms the observation I requested:
\r\n
Your observation has been carried out by PICTOR successfully!\r\nObservation name: mcnalu first try\r\nObservation datetime: 2020-12-08 12:40:09 (UTC+2)\r\nCenter frequency: 1420000000.0 Hz\r\nBandwidth: 2400000 Hz\r\nSample rate: 2400000 samples/sec\r\nNumber of channels: 2048\r\nNumber of bins: 100\r\nObservation duration: 10 sec\r\nObservation ID: 82937104\r\nYour observation's averaged spectrum, dynamic spectrum (waterfall) and Power vs Time plot are attached in this email as an image.\r\n
\r\n
And this is the plot attached to that email:
\r\n
Graphs showing raw and corrected radio spectra for mcnalu\'s observation request \r\n
\r\n
Please do have a go at using Pictor and let us know how you got on by recording an HPR show.
\r\n',268,0,0,'CC-BY-SA','science,astronomy,hardware,radio,data',0,0,1),
-(3546,'2022-03-07','HPR Community News for February 2022',3665,'Dave, Roan and Ken talk about shows released and comments posted in February 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 29 comments in total.
\n
Past shows
\n
There are 9 comments on\n7 previous shows:
\n
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 4:\nKen Fallon on 2022-02-08:\n\"I knew I heard how to do this somewhere\"
Comment 1:\npublius on 2022-02-28:\n\"\"Have\" constructions\"
\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 archive.org
\n
This month 120 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 4.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3546,'2022-03-07','HPR Community News for February 2022',3665,'Dave, Roan and Ken talk about shows released and comments posted in February 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 29 comments in total.
\n
Past shows
\n
There are 9 comments on\n7 previous shows:
\n
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 4:\nKen Fallon on 2022-02-08:\n\"I knew I heard how to do this somewhere\"
Comment 1:\npublius on 2022-02-28:\n\"\"Have\" constructions\"
\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 archive.org
\n
This month 120 additional shows in the range 1-870 have been uploaded.
\n
The number of shows left to upload in this range is now: 4.
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3234,'2020-12-24','Apple products I have owned',1397,'I talk about Apple products that I have owned over the years','
\r\n
30\" Apple Cinema Display 2560x1600
\r\n
160 GB iPod Classic
\r\n
IPad 3
\r\n
Mac Pro 1.1
\r\n
iPhone 4s
\r\n
',297,0,0,'CC-BY-SA','apple, technology, Mac, OS X,iOS',0,0,1),
(3242,'2021-01-05','The eternal battle over how to run your chromebook is about to begin',8865,'Squirrel VS ALIEN Chromebook discussions','
As usual, I have botched up the show notes where they make absolutely no sense and I fully expect the ENTIRE HUMAN COMMUNITY from HPR to attack me endlessly over my incompetence. They just keep forgetting that I\'m a squirrel who lives in a magical forrest and not a human being and therefore does terrible show notes,
\r\n
There were so many issues brought up about chromebooks and chromiumOS that I could not prepare a detailed list of them all.
\r\n
This ENTIRE conversation was derived from the work found on GNU WORLD ORDER episode 383 for which you will find his show notes AS::: https://gnuworldorder.info/ \"Linux, Flatpaks, Android apps, and ChromiumOS on a Lenovo Chromebook.\"
\r\n
Now, if you don\'t like my show notes and you do like this aliens show notes, then may I suggest your anti-squirrel and you need to be sent to a de-programming camp for rehabilitation.
\r\n
Remember, squirrels represent planet earth.
\r\n',377,0,1,'CC-BY-SA','chromebooks,chromiumOS,Opensource,Freesoftware,cloud computing',0,0,1),
(3236,'2020-12-28','The State of Linux Audio Apps in 2020',3101,'Patrick Davila and Claudio Miranda discuss the current state of Linux Audio Application in 2020','
Pat and Claudio discuss the current state of Linux audio applications in 2020. The primary focus is applications to create music. We discuss Linux sound servers (Pulse, ALSA and Jack). Software synthesizers available in Linux. Midi, sequencers and drum machines. Digital Audio Workstation applications. Impulse Responses for guitar and bass speaker emulation. Commercial vendors that support the Linux platform. Music equipment vendors that use Linux as the basis of their products.
',11,0,0,'CC-BY-SA','Audio, music, recording, DAW, Ardour, Jack, Pulse, ALSA, Hydrogen, Odin2, Qtractor, Carla, VST',0,0,1),
@@ -19566,7 +19686,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3237,'2020-12-29','Cloning a Hard Drive with Clonezilla',1057,'I had some hard drive failures recently and am getting back to the habit of cloning for backups.','
I sneak back into the HPR community with an episode about cloning the hard drive on my laptop for a backup after some recent catastrophic drive failures.
\r\n\r\n
Links
\r\n\r\n
\r\n
Clonezilla: The Free and Open Source Software for Disk Imaging and Cloning
\r\n',238,0,0,'CC-BY-SA','clonezilla, backups, hard drives, cloning',0,0,1),
(3244,'2021-01-07','Interview with Anco Scholte ter Horst CEO of Freedom Internet',4223,'Could there be an ISP that wants free and open internet, for privacy, security and quality ?','
\r\nIn this interview with Anco Scholte ter Horst, CEO Freedom Internet, we discuss the history of Internet in the Netherlands. How inspired by the work as XS4All, a new ISP was founded with privacy, security and quality at its core.\r\n
\r\nXS4ALL was sold to KPN in December 1998, but remained an independent subsidiary. In January 2019, KPN announced that it would eventually phase out the XS4ALL brand and continue operations under the KPN brand. A petition and a special action commission was started to try to revert this decision, the petition has been signed over 50,000 times, signatories include ex-board members and founders of XS4ALL. In November 2019 the committee launched a new company named Freedom Internet, meant to serve as an ideological successor to XS4ALL, and supported by a crowdfunding action that raised 2.5 million euro. Freedom Internet initially offers e-mail hosting, and is meant to roll out its first DSL connections in early 2020.\r\n
\r\n',30,78,0,'CC-BY-SA','Freedom.nl,xs4all,ISP,crowdfunding',0,0,1),
(3275,'2021-02-19','D1 Mini Close Lid to Scan',430,'Use a Wemos to monitor if the lid is open or closed on a network scanner.','
wemos-close-to-scan
\r\n
Use a Wemos to monitor if the lid is open or closed on a network scanner.
In episode hpr2430 :: Scanning books, I had a bash file trigger a network scan. This required two steps, one to close the lid and the next to press a key for scantoimage.bash to trigger the next page of the scan.
\r\n
In the intervening time I looked at several solutions to improve this situation.
\r\n
The most obvious step was to put a magnetic switch on the scanner lid so that a device could detect the lid been closed.
\r\n
I tried a Raspberry PI but my scanner drivers are only available for Intel and not Arm. Then then accessing the pi using Remote GPIO, but it got very complex to setup and run.
\r\n
Inspired by hpr3077 :: Video conference Push to Talk Hosted by DanNixon on 2020-05-19, I tried using an arduino talking over serial to a Intel Compute Stick. But that was very flakey.
Plug in D1 Mini and monitor the serial port to get its IP Address.
\r\n
Change the server=\"YOUR-WEMOS-IP-ADDRESS\" in wemos-scantoimage.bash to the ip address.
\r\n
Change the image_path=\"/PATH/TO/YOUR/SCANS/\" in wemos-scantoimage.bash to where your want the files saved.
\r\n
Close scanner and scan.
\r\n\r\n',30,57,0,'CC-BY-SA','Wemos, D1 Mini, network scan',0,0,1),
-(3289,'2021-03-11','NextCloud the hard way',1933,'A private NextCloud instance on a Pi 4x8, with lets encrypt and wireguard vpn access','
NextCloud
\r\n
I want to install NextCloud for my family, but only for my family. This means making things hard for myself by installing it behind my firewall with a private nat ipaddress. That presented problems with getting a valid Let\'s encrypt cert.
\r\n
It all now works, and thanks to timttmy I was able to get the WireGuard VPN installed and working.
You can upgrade using the procedure described by klaatu in hpr3232 :: Nextcloud, or as admin via the UI https://nextcloud.example.com/nextcloud/index.php/settings/user, Administration, Overview.
\r\n
You will see a lot of Warnings on Admin Page, but don\'t panic. The server is not accessible on the Internet after all.
\r\n
The errors have links to how you can fix them and some are very easy to do.
\r\n
I got an error \"Error occurred while checking server setup\". I used this tip to move root owned files out of next cloud dir.
Then run the script manually specifying that the challenge should be over dns.
\r\n
# certbot certonly --manual --preferred-challenges dns \r\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\r\nPlugins selected: Authenticator manual, Installer None\r\nEnter email address (used for urgent renewal and security notices) (Enter 'c' to\r\ncancel): letsencrypt@example.com\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPlease read the Terms of Service at\r\nhttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must\r\nagree in order to register with the ACME server at\r\nhttps://acme-v02.api.letsencrypt.org/directory\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(A)gree/(C)ancel: A\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nWould you be willing to share your email address with the Electronic Frontier\r\nFoundation, a founding partner of the Let's Encrypt project and the non-profit\r\norganization that develops Certbot? We'd like to send you email about our work\r\nencrypting the web, EFF news, campaigns, and ways to support digital freedom.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es/(N)o: n\r\nPlease enter in your domain name(s) (comma and/or space separated) (Enter 'c'\r\nto cancel): nextcloud.example.com\r\nObtaining a new certificate\r\nPerforming the following challenges:\r\ndns-01 challenge for nextcloud.example.com\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nNOTE: The IP of this machine will be publicly logged as having requested this\r\ncertificate. If you're running certbot in manual mode on a machine that is not\r\nyour server, please ensure you're okay with that.\r\n\r\nAre you OK with your IP being logged?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es/(N)o: y\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPlease deploy a DNS TXT record under the name\r\n_acme-challenge.nextcloud.example.com with the following value:\r\n\r\n0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi\r\n\r\nBefore continuing, verify the record is deployed.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPress Enter to Continue
\r\n
It was at this point I went to my hosting companys page and created a subdomain called nextcloud. Then I added a TXT record called _acme-challenge with the text 0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi.
Now that the answer section is correct we can continue with the certbot script.
\r\n
Waiting for verification...\r\nCleaning up challenges\r\n\r\nIMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at:\r\n /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem\r\n Your key file has been saved at:\r\n /etc/letsencrypt/live/nextcloud.example.com/privkey.pem\r\n Your cert will expire on 2021-03-10. To obtain a new or tweaked\r\n version of this certificate in the future, simply run certbot\r\n again. To non-interactively renew *all* of your certificates, run\r\n "certbot renew"\r\n - If you like Certbot, please consider supporting our work by:\r\n\r\n Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\r\n Donating to EFF: https://eff.org/donate-le
To test the cert you can connect to the localhost on the server.
\r\n
root@nextcloud:/etc/apache2/sites-available# openssl s_client -crlf -debug -connect localhost:443 -status -servername nextcloud.example.com\r\nCONNECTED(00000003)\r\nwrite to 0x643cf8 [0x652568] (321 bytes => 321 (0x141))\r\n[snip...]\r\nread from 0x643cf8 [0x6492b3] (5 bytes => 5 (0x5))\r\n0000 - 48 54 54 50 2f HTTP/\r\n3069898768:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332:\r\n---\r\nno peer certificate available\r\n---\r\nNo client certificate CA names sent\r\n---\r\nSSL handshake has read 5 bytes and written 321 bytes\r\nVerification: OK\r\n---\r\nNew, (NONE), Cipher is (NONE)\r\nSecure Renegotiation IS NOT supported\r\nCompression: NONE\r\nExpansion: NONE\r\nNo ALPN negotiated\r\nEarly data was not sent\r\nVerify return code: 0 (ok)\r\n---\r\n[snip...]
\r\n
I had been using systemctl restart apache2.service to restart apache, but the recommended way is to use apache2ctl.
\r\n
root@nextcloud:/etc/apache2/sites-available# apache2ctl \r\nUsage: /usr/sbin/apache2ctl start|stop|restart|graceful|graceful-stop|configtest|status|fullstatus|help\r\n /usr/sbin/apache2ctl <apache2 args>\r\n /usr/sbin/apache2ctl -h (for help on <apache2 args>)\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# apache2ctl restart\r\nAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# apache2 -t\r\n[Thu Dec 10 18:18:49.187628 2020] [core:warn] [pid 4108] AH00111: Config variable ${APACHE_RUN_DIR} is not defined\r\napache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
Now that everything is up and running we just need to create a new A record pointing to our internal IP Address. Unfortunately while nextcloud.example.com resolves to 192.168.123.123 externally, it fails to return an answer internally.
\r\n
A little investigation lead to the fact that my firewall, was seeing this as a DNS Rebinding attack. It correctly blocks these DNS entires. I was able to add an exception under Network > DHCP > Rebind protection > Discard upstream RFC1918 responses.
\r\n
On your router you should check under DHCP/DNS entries for RFC1918 or DNS Rebinding.
Once that\'s done you should have the following commands available.
\r\n
# pivpn\r\n::: Control all PiVPN specific functions!\r\n:::\r\n::: Usage: pivpn <command> [option]\r\n:::\r\n::: Commands:\r\n::: -a, add Create a client conf profile\r\n::: -c, clients List any connected clients to the server\r\n::: -d, debug Start a debugging session if having trouble\r\n::: -l, list List all clients\r\n::: -qr, qrcode Show the qrcode of a client for use with the mobile app\r\n::: -r, remove Remove a client\r\n::: -h, help Show this help dialog\r\n::: -u, uninstall Uninstall pivpn from your system!\r\n::: -up, update Updates PiVPN Scripts\r\n::: -bk, backup Backup VPN configs and user profiles\r\n
\r\n
During the install process you will select a port to use. This port needs to be allowed in from the Internet to your internal server. Where this will be done is different for every router, but have a look around for port forwarding or permit access to do this.
\r\n
Setting up Client on LineageOS
\r\n
It is at this point that you will need to have accounts created in NextCloud.
You can do this under your profile > users in an admin account.
\r\n
I created an account for each of the family members, a generic one for the house, and a readonly one for the MagicMirror.
\r\n
The house account houses (pun intended) the shared calendar, files, and contacts. All the family accounts have read and write access to these, except for the MagicMirror one which only needs to read the calendar and contacts.
\r\n
Fdroid
\r\n
Now you can install the software you will need on your phones.
WireGuard Next generation secure VPN network tunnel
\r\n
\r\n
You will need to setup the NextCloud client using the url https://nextcloud.example.com/nextcloud/, username and password.
\r\n
Then you set up DAVx using another url https://nextcloud.example.com/nextcloud/remote.php/dav, but the same , username and password.
\r\n
By the way if you want to access files you can do so via davs://nextcloud.example.com/nextcloud/remote.php/dav/files/house/
\r\n
I set up the NextCloud client to automatically upload photos, and videos to the server.
\r\n
To set up WireGuard you need to create a connection for each device connecting
\r\n
root@nextcloud:~# pivpn add\r\nEnter a Name for the Client: Mobile_Worker\r\n::: Client Keys generated\r\n::: Client config generated\r\n::: Updated server config\r\n::: WireGuard reloaded\r\n======================================================================\r\n::: Done! Mobile_Worker.conf successfully created!\r\n::: Mobile_Worker.conf was copied to /home/ken/configs for easy transfer.\r\n::: Please use this profile only on one device and create additional\r\n::: profiles for other devices. You can also use pivpn -qr\r\n::: to generate a QR Code you can scan with the mobile app.\r\n======================================================================
\r\n
Then open display the qrcode as follows:
\r\n
root@nextcloud:~# pivpn qrcode\r\n:: Client list ::\r\n1) Mobile_Worker\r\nPlease enter the Index/Name of the Client to show:
\r\n
Pressing 1 in my case will display the QRCode.
\r\n
Open the WireGuard app on the phone and press + to add an account, and select scan from qr code.
\r\n
Point it to QRCode and that\'s it.
\r\n
If you want to remove a client, you can just use pivpn remove
\r\n
root@nextcloud:~# pivpn remove\r\n:: Client list ::\r\n1) Mobile_Worker\r\nPlease enter the Index/Name of the Client to be removed from the list above: 6\r\nDo you really want to delete Mobile_Worker? [Y/n] y\r\n::: Updated server config\r\n::: Client config for Mobile_Worker removed\r\n::: Client Keys for Mobile_Worker removed\r\n::: Successfully deleted Mobile_Worker\r\n::: WireGuard reloaded
\r\n
MagicMirror
\r\n
The final step is to have the MagicMirror in the living room display the shared calendar.
\r\n
To display your calendar there, you need to have an ics iCalendar file.
\r\n
You can get that by login into NextCloud as the MagicMirror user via the web, going to the calendar you desire to export. Click the ... menu and select \"Copy Private Link\".
\r\n
You can then add the ?export at the end of the url to get an ical export.
\r\n
Dave gave me a tip on how to have MagicMirror serve this file, by using its own local webserver. You point it to a local directory eg: https://localhost:8080/modules/.calendars/. Don\'t forget to create it.
\r\n
mkdir -p ~/MagicMirror/modules/.calendars/
\r\n
I wrote a script that would first get a new version of the ical file, and if it is downloaded correctly would immediately overwrite the previous one.
The final step was to update my Calendar entry in the ~/MagicMirror/config/config.js config file.
\r\n
// Calendar\r\n {\r\n module: "calendar",\r\n header: "Calendar",\r\n position: "top_center",\r\n config: {\r\n colored: true,\r\n maxTitleLength: 30,\r\n fade: false,\r\n calendars: [\r\n {\r\n name: "Family Calendar",\r\n url: "https://localhost:8080/modules/.calendars/home_calendar.ics",\r\n symbol: "calendar-check",\r\n color: "#825BFF" // violet-ish\r\n },\r\n {\r\n name: "Birthday Calendar",\r\n url: "https://localhost:8080/modules/.calendars/birthday_calendar.ics",\r\n symbol: "calendar-check",\r\n color: "#FFCC00" // violet-ish\r\n },\r\n {\r\n // Calendar uses repeated 'RDATE' entries, which this iCal parser\r\n // doesn't seem to recognise. Only the next event is visible, and\r\n // the calendar has to be refreshed *after* the event has passed.\r\n name: "HPR Community News recordings",\r\n url: "https://hackerpublicradio.org/HPR_Community_News_schedule.ics",\r\n symbol: "calendar-check",\r\n color: "#C465A7" // purple\r\n },\r\n {\r\n // https://inzamelkalender.gad.nl/ical-info\r\n name: "GAD Calendar",\r\n url: "https://inzamelkalender.gad.nl/ical/0381200000107654",\r\n symbol: "calendar-check",\r\n color: "#00CC00" // Green\r\n },\r\n ]\r\n }\r\n },
\r\n
The contacts birthday wasn\'t available to the MagicMirror user immediately after I created it, so I was able to force an update as follows:
\r\n
root@nextcloud:/var/www/html/nextcloud# sudo -u www-data php occ dav:sync-birthday-calendar\r\nStart birthday calendar sync for all users ...\r\n 7 [============================]
\r\n
Conclusion
\r\n
With that we have a family sharing solution just like other normal house holds. Yet with the security of knowing that the data doesn\'t leave the house, and is not being used without your approval.
\r\n
You can tell it\'s a hit, because now people are scheduling tech support tasks via the app.
\r\n
Ah well.
\r\n\r\n',30,0,1,'CC-BY-SA','NextCloud, Raspbian, Apache, mariadb, PHP, myphpadmin, wireguard, DNS Rebind, magicmirror2',0,0,1),
+(3289,'2021-03-11','NextCloud the hard way',1933,'A private NextCloud instance on a Pi 4x8, with lets encrypt and wireguard vpn access','
NextCloud
\r\n
I want to install NextCloud for my family, but only for my family. This means making things hard for myself by installing it behind my firewall with a private nat ipaddress. That presented problems with getting a valid Let\'s encrypt cert.
\r\n
It all now works, and thanks to timttmy I was able to get the WireGuard VPN installed and working.
You can upgrade using the procedure described by klaatu in hpr3232 :: Nextcloud, or as admin via the UI https://nextcloud.example.com/nextcloud/index.php/settings/user, Administration, Overview.
\r\n
You will see a lot of Warnings on Admin Page, but don\'t panic. The server is not accessible on the Internet after all.
\r\n
The errors have links to how you can fix them and some are very easy to do.
\r\n
I got an error \"Error occurred while checking server setup\". I used this tip to move root owned files out of next cloud dir.
Then run the script manually specifying that the challenge should be over dns.
\r\n
# certbot certonly --manual --preferred-challenges dns \r\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\r\nPlugins selected: Authenticator manual, Installer None\r\nEnter email address (used for urgent renewal and security notices) (Enter 'c' to\r\ncancel): letsencrypt@example.com\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPlease read the Terms of Service at\r\nhttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must\r\nagree in order to register with the ACME server at\r\nhttps://acme-v02.api.letsencrypt.org/directory\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(A)gree/(C)ancel: A\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nWould you be willing to share your email address with the Electronic Frontier\r\nFoundation, a founding partner of the Let's Encrypt project and the non-profit\r\norganization that develops Certbot? We'd like to send you email about our work\r\nencrypting the web, EFF news, campaigns, and ways to support digital freedom.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es/(N)o: n\r\nPlease enter in your domain name(s) (comma and/or space separated) (Enter 'c'\r\nto cancel): nextcloud.example.com\r\nObtaining a new certificate\r\nPerforming the following challenges:\r\ndns-01 challenge for nextcloud.example.com\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nNOTE: The IP of this machine will be publicly logged as having requested this\r\ncertificate. If you're running certbot in manual mode on a machine that is not\r\nyour server, please ensure you're okay with that.\r\n\r\nAre you OK with your IP being logged?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es/(N)o: y\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPlease deploy a DNS TXT record under the name\r\n_acme-challenge.nextcloud.example.com with the following value:\r\n\r\n0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi\r\n\r\nBefore continuing, verify the record is deployed.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPress Enter to Continue
\r\n
It was at this point I went to my hosting companys page and created a subdomain called nextcloud. Then I added a TXT record called _acme-challenge with the text 0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi.
Now that the answer section is correct we can continue with the certbot script.
\r\n
Waiting for verification...\r\nCleaning up challenges\r\n\r\nIMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at:\r\n /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem\r\n Your key file has been saved at:\r\n /etc/letsencrypt/live/nextcloud.example.com/privkey.pem\r\n Your cert will expire on 2021-03-10. To obtain a new or tweaked\r\n version of this certificate in the future, simply run certbot\r\n again. To non-interactively renew *all* of your certificates, run\r\n "certbot renew"\r\n - If you like Certbot, please consider supporting our work by:\r\n\r\n Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\r\n Donating to EFF: https://eff.org/donate-le
To test the cert you can connect to the localhost on the server.
\r\n
root@nextcloud:/etc/apache2/sites-available# openssl s_client -crlf -debug -connect localhost:443 -status -servername nextcloud.example.com\r\nCONNECTED(00000003)\r\nwrite to 0x643cf8 [0x652568] (321 bytes => 321 (0x141))\r\n[snip...]\r\nread from 0x643cf8 [0x6492b3] (5 bytes => 5 (0x5))\r\n0000 - 48 54 54 50 2f HTTP/\r\n3069898768:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332:\r\n---\r\nno peer certificate available\r\n---\r\nNo client certificate CA names sent\r\n---\r\nSSL handshake has read 5 bytes and written 321 bytes\r\nVerification: OK\r\n---\r\nNew, (NONE), Cipher is (NONE)\r\nSecure Renegotiation IS NOT supported\r\nCompression: NONE\r\nExpansion: NONE\r\nNo ALPN negotiated\r\nEarly data was not sent\r\nVerify return code: 0 (ok)\r\n---\r\n[snip...]
\r\n
I had been using systemctl restart apache2.service to restart apache, but the recommended way is to use apache2ctl.
\r\n
root@nextcloud:/etc/apache2/sites-available# apache2ctl \r\nUsage: /usr/sbin/apache2ctl start|stop|restart|graceful|graceful-stop|configtest|status|fullstatus|help\r\n /usr/sbin/apache2ctl <apache2 args>\r\n /usr/sbin/apache2ctl -h (for help on <apache2 args>)\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# apache2ctl restart\r\nAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# apache2 -t\r\n[Thu Dec 10 18:18:49.187628 2020] [core:warn] [pid 4108] AH00111: Config variable ${APACHE_RUN_DIR} is not defined\r\napache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
Now that everything is up and running we just need to create a new A record pointing to our internal IP Address. Unfortunately while nextcloud.example.com resolves to 192.168.123.123 externally, it fails to return an answer internally.
\r\n
A little investigation lead to the fact that my firewall, was seeing this as a DNS Rebinding attack. It correctly blocks these DNS entires. I was able to add an exception under Network > DHCP > Rebind protection > Discard upstream RFC1918 responses.
\r\n
On your router you should check under DHCP/DNS entries for RFC1918 or DNS Rebinding.
Once that\'s done you should have the following commands available.
\r\n
# pivpn\r\n::: Control all PiVPN specific functions!\r\n:::\r\n::: Usage: pivpn <command> [option]\r\n:::\r\n::: Commands:\r\n::: -a, add Create a client conf profile\r\n::: -c, clients List any connected clients to the server\r\n::: -d, debug Start a debugging session if having trouble\r\n::: -l, list List all clients\r\n::: -qr, qrcode Show the qrcode of a client for use with the mobile app\r\n::: -r, remove Remove a client\r\n::: -h, help Show this help dialog\r\n::: -u, uninstall Uninstall pivpn from your system!\r\n::: -up, update Updates PiVPN Scripts\r\n::: -bk, backup Backup VPN configs and user profiles\r\n
\r\n
During the install process you will select a port to use. This port needs to be allowed in from the Internet to your internal server. Where this will be done is different for every router, but have a look around for port forwarding or permit access to do this.
\r\n
Setting up Client on LineageOS
\r\n
It is at this point that you will need to have accounts created in NextCloud.
You can do this under your profile > users in an admin account.
\r\n
I created an account for each of the family members, a generic one for the house, and a readonly one for the MagicMirror.
\r\n
The house account houses (pun intended) the shared calendar, files, and contacts. All the family accounts have read and write access to these, except for the MagicMirror one which only needs to read the calendar and contacts.
\r\n
Fdroid
\r\n
Now you can install the software you will need on your phones.
WireGuard Next generation secure VPN network tunnel
\r\n
\r\n
You will need to setup the NextCloud client using the url https://nextcloud.example.com/nextcloud/, username and password.
\r\n
Then you set up DAVx using another url https://nextcloud.example.com/nextcloud/remote.php/dav, but the same , username and password.
\r\n
By the way if you want to access files you can do so via davs://nextcloud.example.com/nextcloud/remote.php/dav/files/house/
\r\n
I set up the NextCloud client to automatically upload photos, and videos to the server.
\r\n
To set up WireGuard you need to create a connection for each device connecting
\r\n
root@nextcloud:~# pivpn add\r\nEnter a Name for the Client: Mobile_Worker\r\n::: Client Keys generated\r\n::: Client config generated\r\n::: Updated server config\r\n::: WireGuard reloaded\r\n======================================================================\r\n::: Done! Mobile_Worker.conf successfully created!\r\n::: Mobile_Worker.conf was copied to /home/ken/configs for easy transfer.\r\n::: Please use this profile only on one device and create additional\r\n::: profiles for other devices. You can also use pivpn -qr\r\n::: to generate a QR Code you can scan with the mobile app.\r\n======================================================================
\r\n
Then open display the qrcode as follows:
\r\n
root@nextcloud:~# pivpn qrcode\r\n:: Client list ::\r\n1) Mobile_Worker\r\nPlease enter the Index/Name of the Client to show:
\r\n
Pressing 1 in my case will display the QRCode.
\r\n
Open the WireGuard app on the phone and press + to add an account, and select scan from qr code.
\r\n
Point it to QRCode and that\'s it.
\r\n
If you want to remove a client, you can just use pivpn remove
\r\n
root@nextcloud:~# pivpn remove\r\n:: Client list ::\r\n1) Mobile_Worker\r\nPlease enter the Index/Name of the Client to be removed from the list above: 6\r\nDo you really want to delete Mobile_Worker? [Y/n] y\r\n::: Updated server config\r\n::: Client config for Mobile_Worker removed\r\n::: Client Keys for Mobile_Worker removed\r\n::: Successfully deleted Mobile_Worker\r\n::: WireGuard reloaded
\r\n
MagicMirror
\r\n
The final step is to have the MagicMirror in the living room display the shared calendar.
\r\n
To display your calendar there, you need to have an ics iCalendar file.
\r\n
You can get that by login into NextCloud as the MagicMirror user via the web, going to the calendar you desire to export. Click the ... menu and select \"Copy Private Link\".
\r\n
You can then add the ?export at the end of the url to get an ical export.
\r\n
Dave gave me a tip on how to have MagicMirror serve this file, by using its own local webserver. You point it to a local directory eg: https://localhost:8080/modules/.calendars/. Don\'t forget to create it.
\r\n
mkdir -p ~/MagicMirror/modules/.calendars/
\r\n
I wrote a script that would first get a new version of the ical file, and if it is downloaded correctly would immediately overwrite the previous one.
The final step was to update my Calendar entry in the ~/MagicMirror/config/config.js config file.
\r\n
// Calendar\r\n {\r\n module: "calendar",\r\n header: "Calendar",\r\n position: "top_center",\r\n config: {\r\n colored: true,\r\n maxTitleLength: 30,\r\n fade: false,\r\n calendars: [\r\n {\r\n name: "Family Calendar",\r\n url: "https://localhost:8080/modules/.calendars/home_calendar.ics",\r\n symbol: "calendar-check",\r\n color: "#825BFF" // violet-ish\r\n },\r\n {\r\n name: "Birthday Calendar",\r\n url: "https://localhost:8080/modules/.calendars/birthday_calendar.ics",\r\n symbol: "calendar-check",\r\n color: "#FFCC00" // violet-ish\r\n },\r\n {\r\n // Calendar uses repeated 'RDATE' entries, which this iCal parser\r\n // doesn't seem to recognise. Only the next event is visible, and\r\n // the calendar has to be refreshed *after* the event has passed.\r\n name: "HPR Community News recordings",\r\n url: "https://hackerpublicradio.org/HPR_Community_News_schedule.ics",\r\n symbol: "calendar-check",\r\n color: "#C465A7" // purple\r\n },\r\n {\r\n // https://inzamelkalender.gad.nl/ical-info\r\n name: "GAD Calendar",\r\n url: "https://inzamelkalender.gad.nl/ical/0381200000107654",\r\n symbol: "calendar-check",\r\n color: "#00CC00" // Green\r\n },\r\n ]\r\n }\r\n },
\r\n
The contacts birthday wasn\'t available to the MagicMirror user immediately after I created it, so I was able to force an update as follows:
\r\n
root@nextcloud:/var/www/html/nextcloud# sudo -u www-data php occ dav:sync-birthday-calendar\r\nStart birthday calendar sync for all users ...\r\n 7 [============================]
\r\n
Conclusion
\r\n
With that we have a family sharing solution just like other normal house holds. Yet with the security of knowing that the data doesn\'t leave the house, and is not being used without your approval.
\r\n
You can tell it\'s a hit, because now people are scheduling tech support tasks via the app.
\r\n
Ah well.
\r\n\r\n',30,0,1,'CC-BY-SA','NextCloud, Raspbian, Apache, mariadb, PHP, myphpadmin, wireguard, DNS Rebind, magicmirror2',0,0,1),
(3246,'2021-01-11','LXCast: freeing the Fairphone 3 (and many other phones) ',1744,'We look at how to get a free smartphone operating system on the Fairphone 3 (and many other phones),','
the /e/ project !! A \"de-googled\" operating system - actually a fork of lineage OS - this is what I\'m going to talk about here. \r\nhttps://e.foundation/about-e/
Theme Music: Jazzhar, \"Room with a View\" CC-BY-SA, check him out on Jamendo and on Free Music Archive
\r\n',285,75,0,'CC-BY-SA','LXCast, Smartphone, Android, Fairphone, FOSS',0,0,1),
(3247,'2021-01-12','Saturday Morning Automotive Routine',1110,'I have developed a relaxing 10-step routine for keeping your car in running condition.','
\r\n',389,0,0,'CC-BY-SA','system,lifehack,automotive,routine maintenance',0,0,1),
(3255,'2021-01-22','garage door part 2',574,'tis teh season COUGH COUGH','
garage door part 2 \r\ntis teh season COUGH COUGH
',36,0,1,'CC-BY-SA','garage door,diy,home,repair',0,0,1),
@@ -19611,7 +19731,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3283,'2021-03-03','HPR RPG Club reviews Dead Earth',3150,'Escape reality by pretending you live in a dystopia','
\r\nNext up is Starfinder, a space-themed game using the 3.5 edition D&D rules.\r\nIf you\'re interested in playing, join the Hacker Public Radio mailing list or email Klaatu at this domain.\r\n
\r\n\r\n\r\n',78,95,0,'CC-BY-SA','rpg, cyberpunk, post-apocalyptic',0,0,1),
(3284,'2021-03-04','Introduction to gdb',1420,'A really friendly introduction to Gnu Debugger','
\r\nFrustrated by gdb tutorials that are either too complicated or too simple? I think this might be an actually-useful tutorial to help you see how and why gdb can be useful. Anyway, it\'s the path I followed to finding a use for the mysterious gdb, so maybe it will work for you.\r\n
\r\n\r\n
\r\nTo follow along with this episode, here\'s some simple yet buggy code. This compiles but crashes when run.\r\n
\r\n\r\n
\r\n#include <iostream>\r\n#include <stdlib.h> // rand\r\n#include <stdio.h> // printf\r\n\r\nusing namespace std;\r\n\r\nint main () {\r\n\r\nsrand (time(NULL));\r\nint penguin = rand() % 8;\r\ncout << "This is a message from your friendly coder\\n" << endl;\r\nint kiwi = 3;\r\n\r\nprintf(\"penguin is set to is %s\\n\", penguin);\r\nprintf(\"kiwi is set to is %s\\n\", kiwi);\r\n\r\n return 0;\r\n} // main\r\n\r\n
\r\n\r\n
\r\nTo compile it and see it crash, do this:\r\n
\r\n\r\n
\r\n$ g++ example.cpp\r\n$ ./a.out\r\n
\r\n\r\n
\r\nTo compile it with debug symbols so you can step through it in gdb, do this:\r\n
\r\nYou can now follow along with this tutorial.\r\n
\r\n\r\n
\r\nFor extra credit, try compiling this with clang++ instead!\r\n
\r\n\r\n\r\n\r\n',78,84,0,'CC-BY-SA','programming, cpp, gdb, gcc',0,0,1),
(3295,'2021-03-19','Renewing a Let\'s Encrypt cert for Home Network use',195,'How to update a cert when the automatic processes don\'t work','
\r\nBack in hpr3289 :: NextCloud the hard way, I showed you how to install a Let\'s Encrypt SSL cert for use on your home network. One of the problems was the fact that the automatic renew tools won\'t work.\r\n
\r\n
\r\nToday I got a reminder email from Let\'s Encrypt and I used the exact same command to renew it as I did to create it in the first place. The tool is smart enough to know this is a renewal process. \r\n
\r\n
\r\nOne thing I forgot to do last time was to remove the TXT record from DNS after I was done. So I had to delete the record and wait a while for the Time To Live (TTL) to expire.\r\n
\r\n
\r\nI set about doing a check list so the next time the process can be even faster.\r\n
\r\n\r\n
Run the command
certbot certonly --manual --preferred-challenges dns
\r\n
Deploy a DNS TXT record under the name _acme-challenge.nextcloud.example.com
\r\n
Finish the challenge.
\r\n
When successful, remove the DNS TXT record as it\'s not needed for another two months.
\r\n',30,0,0,'CC-BY-SA','SSL, Let\'s Encrypt, Intranet',0,0,1),
-(3566,'2022-04-04','HPR Community News for March 2022',5485,'Dave and Ken talk about shows released and comments posted in March 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 21 comments in total.
hpr3563\n(2022-03-30) \"Home Coffee Roasting, part 1\"\nby dnt.
\n
\n
Comment 1:\ntuturto on 2022-03-31:\n\"Very interesting\"
\n
hpr3564\n(2022-03-31) \"Removing EXIF data from an image\"\nby Dave Morriss.
\n
\n
Comment 1:\nSome Guy On The Internet on 2022-03-31:\n\"Much Respect\"
\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
Access problems from Argentina
\n
An HPR listener from Argentina reports that the HPR site is unavailable from there. This applies both to an ISP connection and on a mobile phone. It\'s not clear what is causing this.
\n
Reportedly the problem was resolved on March 30th but the next day it returned and at the time of writing the HPR site is still unavailable.
\n
Older HPR shows on archive.org
\n
As reported on the last Community News all shows in the range 1-870 had been uploaded except for shows hpr0001 - hpr0003. Shows hpr0001 and hpr0002 had been \"blocked\" by existing non-HPR items from over 8 years ago, with the names we were going to assign. Show hpr0003 seemed to have been an early attempt to upload blocks of shows since it contained the audio for shows 1-9, but no notes.
\n
We received help with clearing the slots for shows 1 and 2 from Jason Scott of the Internet Archive, and the correct shows have now been uploaded. Show hpr0003 has now been resolved by replacing the contents with the appropriate transcoded audio and the notes have been added to it.
\n
We can now consider this project to be complete!
\n\n\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3566,'2022-04-04','HPR Community News for March 2022',5485,'Dave and Ken talk about shows released and comments posted in March 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 21 comments in total.
hpr3563\n(2022-03-30) \"Home Coffee Roasting, part 1\"\nby dnt.
\n
\n
Comment 1:\nTuula on 2022-03-31:\n\"Very interesting\"
\n
hpr3564\n(2022-03-31) \"Removing EXIF data from an image\"\nby Dave Morriss.
\n
\n
Comment 1:\nSome Guy On The Internet on 2022-03-31:\n\"Much Respect\"
\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
Access problems from Argentina
\n
An HPR listener from Argentina reports that the HPR site is unavailable from there. This applies both to an ISP connection and on a mobile phone. It\'s not clear what is causing this.
\n
Reportedly the problem was resolved on March 30th but the next day it returned and at the time of writing the HPR site is still unavailable.
\n
Older HPR shows on archive.org
\n
As reported on the last Community News all shows in the range 1-870 had been uploaded except for shows hpr0001 - hpr0003. Shows hpr0001 and hpr0002 had been \"blocked\" by existing non-HPR items from over 8 years ago, with the names we were going to assign. Show hpr0003 seemed to have been an early attempt to upload blocks of shows since it contained the audio for shows 1-9, but no notes.
\n
We received help with clearing the slots for shows 1 and 2 from Jason Scott of the Internet Archive, and the correct shows have now been uploaded. Show hpr0003 has now been resolved by replacing the contents with the appropriate transcoded audio and the notes have been added to it.
\n
We can now consider this project to be complete!
\n\n\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3299,'2021-03-25','Linux Inlaws S01E26: Make your Linux harder',2985,'Ever wanted to know about AppArmor and SELinux? Then this is your show!','
In this episode our two aging heroes discuss the proper temperature to\r\ndrink beer at (spoiler: it\'s not 20 degrees as CAMRA would make you believe)\r\nand the ins and outs of basic and enhanced security on our beloved operating\r\nsystem. If you ever wanted to know more about Linux Security Modules, AppArmor\r\nand SELinux and how dames of negotiable affections relate to these concepts,\r\nthis show is for you.
\r\n',384,111,1,'CC-BY-SA','Linux Security Modules, DAC, MAC, AppArmor, SELinux, Plan 9',0,0,1),
(3285,'2021-03-05','Upgrading Lubuntu on my Samsung N150 Plus netbook',1079,'Lubuntu 16.04 LTS to 20.04.1 LTS upgrade on ageing Samsung N150 Plus netbook.','
Samsung N150 Plus upgrade from Lubuntu 16.04 LTS to Lubuntu 20.04.1 - performed 17/12/20
\r\n
Backup and prep process
\r\n
\r\n
Copied all documents and important files from Samsung laptop to removable hard drive. Used Lubuntu gui file manager which crashed at least twice, probably due to netbook limited RAM.
\r\n
Found out that a direct upgrade from 16.04 LTS to 20.04 LTS is not possible, refer to the following links.
Found a spare 32GB USB stick and copied all the files that were on it to a removable hard drive.
\r\n
Opened downloaded Lubuntu image using Disk Image writer (1st time I\'ve used this), wrote image to 32GB SD, found process very easy
\r\n
On Samsung netbook hit F2 at boot time to select boot from USB
\r\n
Booted from USB stick containing LUBUNTU 20.04.1
\r\n
\r\n
Live distro 1st boot.
\r\n
\r\n
Once booted I found the trackpad speed to be very slow and my first attempt at adjusting the speed in preferences made no difference.
\r\n
Connected to WiFi, setting this up seemed much more clunky than previous connection method, however it did work.
\r\n
Went to Youtube and played some video, everything worked fine, also found that volume keys on netbook worked.
\r\n
\r\n
Install Process
\r\n
\r\n
Went through install and selected manual partitioning,
\r\n
Used existing swap on sda6 and format and mounted new Lubuntu root filesystem on sda7 replacing 16.04 with 20.04.1
\r\n
\r\n
After first boot
\r\n
\r\n
Upon first boot was surprised that it had remembered my WiFi connection details and told me there were updates
\r\n
It asked if I wanted to perform a full upgrade without giving any details. At the time I didn\'t know what this meant. I wasn\'t sure I would remain on an LTS or upgrade to 20.10. After the full upgrade I check OS release using the following command. This confirmed I was still running 20.04 LTS
\r\n
cat /etc/os-release
\r\n
The logon screen has desktop options, by default it\'s set to Lubuntu, I found this to be a bit slow and unresponsive also the screen decoration on terminals was rather clunky taking up unnecessary screen space.
\r\n
The next time I entered the logon screen I selected LXQT. I was pleased to find that this option was remembered. The netbook was now a bit more responsive though not quite as good as it was before the upgrade. The terminal screen was now much tidier and more usable.
\r\n
Preferences / LXQT settings / Keyboard and mouse / Mouse and Touch Pad / Acceleration speed now 5.0 think was 0.1, also selected single click to activate item
\r\n
Installed mc, ncdu, screen, pv, moc, ssh
\r\n
Generated RSA ssh keys and copied them to Pi13, they installed with no problems and allowed me to SSH into my Pi13.
\r\n
Copied all my files and documents from my portable hard drive back onto the laptop. This time I used mc \"Midnight Commander\" to copy the files back which I found much easier than using the GUI file manager the first time around. Midnight commander is an Ncurses file manager.
\r\n
I had forgotten just how good the ncurses file manager Midnight commander is.
\r\n
Midnight Commander gave a constant percentage progress of each individual file being copied and the overall progress which was very useful and reassuring with such a slow laptop. The first time around the laptop actually crashed a couple of times when I was using the LUBUNTU GUI file manager to try and copy the files from the laptop to the hard drive.
\r\n
Also even though I generally use keyboard shortcuts for copy and paste operation I still tend to use the track pad at places when using a file manager. It\'s easy to limit yourself to keyboard navigation using mc. I found this to be greatly reassuring and I feel doing this makes the likelihood of disastrous errors much less likely.
\r\n
\r\n
General thoughts and Observations
\r\n
\r\n
The keyboard screen brightness buttons don\'t work however I can adjust it within preferences. Further investigation will be needed to resolve this minor annoyance if / when I get the time and inclination.
\r\n
The netbook now has a much slower boot time
\r\n
The netbook now feels a little sluggish but I think it\'s still perfectly usable. I have a feeling this might be the last upgrade this netbook sees as it\'s now getting a bit long in the tooth. It also has a broken power switch which I believe was a common fault. I have to use a pair of scissors to turn it on.
\r\n
\r\n',201,0,1,'CC-BY-SA','Linux, Distros, Netbook, Lubuntu',0,0,1),
(3286,'2021-03-08','Wireguard How To',574,'My findings setting up wireguard at home and in my office at work.','
Wireguard How To
\r\n
Firstly, I am not an expert. These are just my findings setting up wireguard at home and in my office at work.
\r\n
I\'ve used a program called sshuttle for 7/8 years to attach myself to my home and work networks when on public/untrusted networks or if I need to access some resource at work from home.
\r\n
Sshuttle for the main part works great and the main benefit is that the only port you ever need to open on the server network is whichever port you have your ssh server running on.
\r\n
The downside to sshuttle is that it won\'t work with my android devices so I\'ve been using a paid for VPN called PIA on untrusted networks or just staying on 3g/4g and not have any way to connect to my home or work network.
\r\n
Sshuttle is written in python and a few weeks ago Arch Linux moved to python 3.8 which broke sshuttle. There is a workaround using pyenv and a bug has been filled with the python team and a it\'s already been fixed upstream https://bugs.python.org/issue35415.
\r\n
Anyway.
\r\n
I thought it was about time I looked at setting up a proper VPN on my work network.
\r\n
So I spent a couple of hours reading up on openVPN and creating client and server certificates making a server config on the work server forwarding the port on the router to the server.
\r\n
Then I spent a couple more hours poking around trying to figure out why it wouldn\'t work.
\r\n
I eventually gave up frustrated.
\r\n
I\'m not blaming openVPN, I know it works for many many people, but I couldn\'t see what was wrong.
\r\n
So I did what we all do in a situation like this.
\r\n
I took to social media, which in my case is my pleroma server and posted a message to the fediverse.
\r\n
\"OpenVPN has fried my brain. Need booze\" \r\nThen I had a beer, a nice cold Stiegl goldbrau if I remember right.
\r\n
A few minutes later a message popped up from theru, it contained one word with a smiley face. Wireguard.
\r\n
Now I had looked at wireguard a while ago. You might remember it hit the headlines because Linus Torvalds had praised how beautifully written the code was for it. It turns out what he said was \"It\'s beautiful when compared to openVPN\'s code\". Back then the how to guides were really hard, for me anyway to follow.
\r\n
There were just examples of two machines on the same LAN connected together and I really struggled to get my head around it being serverless and both machines being peers to each other; after all openVPN has clients and servers and even sshuttle on my laptop connects to a server machine.
\r\n
There where a couple of wiki pages that I read on Christmas Eve that gave me a lightbulb moment and some clarity on the way it worked. So I decided to try and set it up.
\r\n
The articles acknowledge that it is a peer to peer technology and then go on to call one peer a server and the other peer the client.
\r\n
Also I would recommend for your first client use an android device with the wireguard app. It\'s more user friendly in that some of the config is auto filled for you and then you can export the config file and examine it in a text editor later to get a better handle on things.
\r\n
I\'m going to assume that you have installed the wireguard packages for your system and that you have given your server a static IP on your network.
\r\n
I\'m using Arch linux on my servers but I see the Linode Debian \'how to\' works in the same way.
\r\n
So we are going to log into the server and start the setup.
\r\n
1st create Private and Public keys
\r\n
Create directory for Keys
\r\n
cd ~\r\nmkdir wireguard\r\ncd wireguard
\r\n
Create Server Keys
\r\n
umask 077\r\nwg genkey | tee privatekey | wg pubkey > publickey
\r\n
Create sub directory for client1 keys
\r\n
mkdir client1\r\ncd client1\r\nwg genkey | tee privatekey | wg pubkey > publickey
\r\n
Repeat for as many clients as needed
\r\n
Create/edit wireguard config
\r\n
Check the interface name facing the internet is correct before copy/paste
\r\n
ifconfig
\r\n
Before you continue you will need to forwrd a port from your internet facing router to your server. Somewhere in your router settings you\'ll find a port forward setting. At home I have a Fritzbox and it\'s buried under network / permitted access. At work it\'s a Linksys ac1200 and it\'s under gaming / apps / single port forwarding. I\'m sure you will find it.
\r\n
The wireguard default port is 51820 and you\'ll find this port named in most of the how to\'s on the web. I use a different port number just to add a little bit of obsurity/security to my setup so if you choose to forward a different port from your router then remember to use that number in the configs.
\r\n
Below is the working wg0.conf file from my arch server with one client
\r\n\r\n',78,104,0,'CC-BY-SA','git,tree,trunk,branch',0,0,1),
(3311,'2021-04-12','Bradley M. Kuhn\'s article from 2019 on Richard M. Stallman',1584,'This text to speech article requires listener discretion.','\r\n
Warning This show contains information that may not be suitable for all. Listener discretion is advised.
\r\n
Recently Richard M. Stallman, announced that he has rejoined the Free Software Foundation’s board of directors. An open letter on github called for him to be removed again, and for the FSF’s entire board to resign.
\r\n
When he resigned in 2019, Bradley M. Kuhn (from the Free as in Freedom podcast) wrote an article titled \"On Recent Controversial Events\" about the issue. I am submitting that article here under the terms of the Creative Commons Attribution-Share Alike 3.0 United States License. The post contains many links and is available in the shownotes for this show. Some examples are included at the end of the blog post, and listener discretion is advised.
\r\nTuesday 15 October 2019 by Bradley M. Kuhn\r\n
\r\n
\r\nThe last 33 days have been unprecedentedly difficult for the software freedom community and for me personally. Folks have been emailing, phoning, texting, tagging me on social media (— the last of which has been funny, because all my social media accounts are placeholder accounts). But, just about everyone has urged me to comment on the serious issues that the software freedom community now faces. Until now, I have stayed silent regarding all these current topics: from Richard M. Stallman (RMS)’s public statements, to his resignation from the Free Software Foundation (FSF), to the Epstein scandal and its connection to MIT. I’ve also avoided generally commenting on software freedom organizational governance during this period. I did this for good reason, which is explained below. However, in this blog post, I now share my primary comments on the matters that seem to currently be of the utmost attention of the Open Source and Free Software communities.\r\n
\r\n
\r\nI have been silent the last month because, until two days ago, I was an at-large member of FSF’s Board of Directors, and a Voting Member of the FSF. As a member of FSF’s two leadership bodies, I was abiding by a reasonable request from the FSF management and my duty to the organization. Specifically, the FSF asked that all communication during the crisis comedirectly from FSF officers and not from at-large directors and/or Voting Members. Furthermore, the FSF management asked all Directors and Voting Members to remain silent on this entire matter — even on issues only tangentially related to the current situation, and even when speaking in our own capacity (e.g., on our own blogs like this one). The FSF is an important organization, and I take any request from the FSF seriously — so I abided fully with their request.\r\n
\r\n
\r\nThe situation was further complicated because folks at my employer, Software Freedom Conservancy (where I also serve on the Board of Directors) had strong opinions about this matter as well. Fortunately, the FSF and Conservancy both had already created clear protocols for what I should do if ever there was a disagreement or divergence of views between Conservancy and FSF. I therefore was recused fully from the planning, drafting, and timing of Conservancy’s statement on this matter. I thank my colleagues at the Conservancy for working so carefully to keep me entirely outside the loop on their statement and to diligently assure that it was straight-forward for me to manage any potential organizational disagreements. I also thank those at the FSF who outlined clear protocols (ahead of time, back in March 2019) in case a situation like this ever came up. I also know my colleagues at Conservancy care deeply, as I do, about the health and welfare of the FSF and its mission of fighting for universal software freedom for all. None of us want, nor have, any substantive disagreement over software freedom issues.\r\n
\r\n
\r\nI take very seriously my duty to the various organizations where I have (or have had) affiliations. More generally, I champion non-profit organizational transparency. Unfortunately, the current crisis left me in a quandary between the overarching goal of community transparency and abiding by FSF management’s directives. Now that I’ve left the FSF Board of Directors, FSF’s Voting Membership, and all my FSF volunteer roles (which ends my 22-year uninterrupted affiliation with the FSF), I can now comment on the substantive issues that face not just the FSF, but the Free Software community as a whole, while continuing to adhere to my past duty of acting in FSF’s best interest. In other words, my affiliation with the FSF has come to an end for many good and useful reasons. The end to this affiliation allows me to speak directly about the core issues at the heart of the community’s current crisis.\r\n
\r\n
\r\nFirstly, all these events — from RMS’ public comments on the MIT mailing list, to RMS’ resignation from the FSF to RMS’ discussions about the next steps for the GNU project — seem to many to have happened ridiculously quickly. But it wasn’t actually fast at all. In fact, these events were culmination of issues that were slowly growing in concern to many people, including me.\r\n
\r\n
\r\nFor the last two years, I had been a loud internal voice in the FSF leadership regarding RMS’ Free-Software-unrelated public statements; I felt strongly that it was in the best interest of the FSF to actively seek to limit such statements, and that it was my duty to FSF to speak out about this within the organization. Those who only learned of this story in the last month (understandably) believed Selam G.’s Medium post raised an entirely new issue. Infact, RMS’viewsandstatementspostedonstallman.orgaboutsexualmoralityescalatedfortheworseoverthelastfewyears. When the escalation started, I still considered RMS both a friend and colleague, and I attempted to argue with him at length to convince him that some of his positions were harmful to sexual assault survivors and those who are sex-trafficked, and to the people who devote their lives in service to such individuals. More importantly to the FSF, I attempted to persuade RMS that launching a controversial campaign on sexual behavior and morality was counter to his and FSF’s mission to advance software freedom, and told RMS that my duty as an FSF Director was to assure the best outcome for the FSF, which IMO didn’t include having a leader who made such statements. Not only is human sexual behavior not a topic on which RMS has adequate academic expertise, but also his positions appear to ignore significant research and widely available information on the subject. Many of his comments, while occasionally politically intriguing, lack empathy for people who experienced trauma.\r\n
\r\n
\r\nIMO, this is not and has never been a Free Speech issue. I do believe freedom of speech links directly to software freedom: indeed, I see the freedom to publish software under Free licenses as almost a corollary to the freedom of speech. However, we do not need to follow leadership from those whose views we fundamentally disagree. Moreover, organizations need not and should not elevate spokespeople and leaders who speak regularly on unrelated issues that organizations find do not advance their mission, and/or that alienate important constituents. I, like many other software freedom leaders, curtail my public comments on issues not related to FOSS. (Indeed, I would not even be commenting on this issue if it had not become a central issue of concern to the software freedom community.) Leaders have power, and they must exercise the power of their words with restraint, not with impunity.\r\n
\r\n
\r\nRMS has consistently argued that there was a campaign of \"prudish intimidation\" — seeking to keep him quiet about his views on sexuality. After years of conversing with RMS about how his non-software-freedom views were a distraction, an indulgence, and downright problematic, his general response was to make even more public comments of this nature. The issue is not about RMS’ right to say what he believes, nor is it even about whether or not you agree or disagree with RMS’ statements. The question is whether an organization should have a designated leader who is on a sustained, public campaign advocating about an unrelated issue that many consider controversial. It really doesn’t matter what your view about the controversial issue is; a leader who refuses to stop talking loudly about unrelated issues eventually creates an untenable distraction from the radical activism you’re actively trying to advance. The message of universal software freedom is a radical cause; it’s basically impossible for one individual to effectively push forward two unrelated controversial agendas at once. In short, the radical message of software freedom became overshadowed by RMS’ radical views about sexual morality.\r\n
\r\n
\r\nAnd here is where I say the thing that may infuriate many but it’s what I believe: I think RMS took a useful step by resigning some of his leadership roles at the FSF. I thank RMS for taking that step, and I wish the FSF Directors well in their efforts to assure that the FSF becomes a welcoming organization to all who care about universal software freedom. The FSF’s mission is essential to our technological future, and we should all support that mission. I care deeply about that mission myself and have worked and will continue to work in our community in the best interest of the mission.\r\n
\r\n
\r\nI’m admittedly struggling to find a way to work again with RMS, given his views on sexual morality and his behaviors stemming from those views. I explicitly do not agree with this \"(re-)definition\" of sexual assault. Furthermore, I believe uninformed statements about sexual assault are irresponsible and cause harm to victims. #MeToo is not a \"frenzy\"; it is a global movement by individuals who have been harmed seeking to hold both bad actors and society-at-large accountable for ignoring systemic wrongs. Nevertheless, I still am proud of the essay that I co-wrote with RMS and still find manyofRMS’otheressayscompelling, important, andrelevant.\r\n
\r\n
\r\nI want the FSF to succeed in its mission and enter a new era of accomplishments. I’ve spent the last 22 years, without a break, dedicating substantial time, effort, care and loyalty to the various FSF roles that I’ve had: including employee, volunteer, at-large Director, and Voting Member. Even though my duties to the FSF are done, and my relationship with the FSF is no longer formal, I still think the FSF is a valuable institution worth helping and saving, specifically because the FSF was founded for a mission that I deeply support. And we should also realize that RMS — a human being (who is flawed like the rest of us) — invented that mission.\r\n
\r\n
\r\nAs culture change becomes more rapid, I hope we can find reasonable nuance and moderation on our complex analysis about people and their disparate views, while we also hold individuals fully accountable for their actions. That’s the difficulty we face in the post-post-modern culture of the early twenty-first century. Most importantly, I believe we must find a way to stand firm for software freedom while also making a safe environment for victims of sexual assault, sexual abuse, gaslighting, and other deplorable actions.\r\n
\r\n
\r\n
\r\n
\r\nPosted on Tuesday 15 October 2019 at 09:11 by Bradley M. Kuhn.\r\n
The following posts are authored by Richard M. Stallman and are taken from his personal site stallman.org. They were linked to in the piece you have just heard.
\r\n
stallman.org 31 October 2016 (Down’s syndrome) A new noninvasive test for Down’s syndrome will eliminate the small risk of the current test. This might lead more women to get tested, and abort fetuses that have Down’s syndrome. Let’s hope so! If you’d like to love and care for a pet that doesn’t have normal human mental capacity, don’t create a handicapped human being to be your pet. Get a dog or a parrot. It will appreciate your love, and it will never feel bad for being less capable than normal humans.
\r\n
stallman.org 14 December 2016 (Campaign of bull-headed prudery) A national campaign seeks to make all US states prohibit sex between humans and nonhuman animals. This campaign seems to be sheer bull-headed prudery, using the perverse assumption that sex between a human and an animal hurts the animal. That’s true for some ways of having sex, and false for others. For instance, I’ve heard that some women get dogs to lick them off. That doesn’t hurt the dog at all. Why should it be prohibited? When male dolphins have sex with people, that doesn’t hurt the dolphins. Quite the contrary, they like it very much. Why should it be prohibited? I’ve also read that female gorillas sometimes express desire for sex with men. If they both like it, who is harmed? Why should this be prohibited? The proponents of this law claim that any kind of sex between humans and other species implies that the human is a \"predator\" that we need to lock up. That’s clearly false, for the cases listed above. Making a prohibition based on prejudice, writing it in an overbroad way, is what prissy governments tend to do where sex is concerned. The next step is to interpret it too strongly with \"zero tolerance\". Will people convicted of having dogs lick them off be required to live at least 1000 feet from any dogs? This law should be changed to prohibit only acts in which the animal is physically forced to have sex, or physically injured.
\r\n
stallman.org 23 February 2017 (A \"violent sex offender\") The teenager who will have to register as a \"violent sex offender\" had a sexual meeting with a younger teenager. Why do people think there is something wrong with a sexual relationship between people of ages 13 and 18? The principal activity of human adolescents is sex.
\r\n
stallman.org 26 May 2017 (Prudish ignorantism) A British woman is on trial for going to a park and inviting teenage boys to have sex with her there. Her husband acted as a lookout in case someone else passed by. One teenager allegedly visited her at her house repeatedly to have sex with her. None of these acts would be wrong in any sense, provided they took precautions against spreading infections. The idea that adolescents (of whatever sex) need to be \"protected\" from sexual experience they wish to have is prudish ignorantism, and making that experience a crime is perverse.
stallman.org 10 October 2017 (Laws against having sex with an animal) European countries are passing laws against having sex with an animal. (We are talking about sex practices that don’t physically hurt the animal.) These laws have no rational basis. We know that some animals enjoy sex with humans. Others don’t. But really, if you smear something on your genitals that tastes good to dogs, and have a dog lick you off, it harms no one. Why should this be illegal except mindless religion?
\r\n
stallman.org 27 November 2017 (Roy Moore’s relationships) Senate candidate Roy Moore tried to start dating/sexual relationships with teenagers some decades ago. He tried to lead Ms Corfman step by step into sex, but he always respected \"no\" from her and his other dates. Thus, Moore does not deserve the exaggerated condemnation that he is receiving for this. As an example of exaggeration: one mailing referred to these teenagers as \"children\", even the one that was 18 years old. Many teenagers are minors, but none of them are children. The condemnation is surely sparked by the political motive of wanting to defeat Moore in the coming election, but it draws fuel from ageism and the fashion for overprotectiveness of \"children\". I completely agree with the wish to defeat Moore. Political Christianists such as Moore hold views that conflict essentially with human rights, just as political Islamists do. If Moore, with his extremist policies, gains public office again, he will harm millions of American women, and secondarily society as a whole. Ms Corfman says she was hurt afterward, and attributes this to feelings of guilt based on the belief that she had done something wrong (which, of course, she had not). Is this is another sign of Christianity at work? I sent a check to Doug Jones US Senate a few weeks ago. Please support his campaign too. You can mail a check here: (Address available at original link)
\r\n
stallman.org 29 October 2017 (Pestering women) A famous theater director had a habit of pestering women, asking them for sex. As far as I can tell from this article, he didn’t try to force women into sex. When women persistently said no, he does not seem to have tried to punish them. The most he did was ask. He was a pest, but nothing worse than that.
\r\n
stallman.org 30 April 2018 (UN peacekeepers in South Sudan) It sounds horrible: \"UN peacekeepers accused of child rape in South Sudan.\" But the article makes it pretty clear that the \"children\" involved were not children. They were teenagers. What about \"rape\"? Was this really rape? Or did they have sex willingly, and prudes want to call it \"rape\" to make it sound like an injustice? We can’t tell from the article which one it is. Rape means coercing someone to have sex. Precisely because that is a grave and clear wrong, using the same name for something much less grave is a distortion.
\r\n
stallman.org 17 July 2018 (The bullshitter’s flirting) We are now invited to despise the bullshitter for telling a 17-year-old woman at a party that he found her attractive. We can hardly assume that the bullshitter’s boasts were true. Even men who are usually honest on other topics have been known to lie about their sexual achievements. However, I wouldn’t assume they were false, or that he did an injustice to anyone at these parties. In a group of 50 models, there could well be some that would eagerly go to bed with a rich man, either to boost their careers or for a lark. If you condemn men for finding teenage female models attractive, you might as well condemn men for being heterosexual. The bully may be predatory, but it appears he didn’t display this overtly at those parties. There are indications that he arbitrarily chose the winners of the Miss USA beauty contest while he owned it. That would be a real wrong, since it would have made the contest dishonest. I understand the desire to condemn the bullshitter on every aspect of his life, but it is no excuse for ageism. If you can understand that we shouldn’t dictate people’s gender preferences, you should understand that we shouldn’t dictate their age preferences either. There are plenty of tremendously important reasons to condemn the bully. He is attacking workers’ rights, abortion rights, non-rich people’s pensions and medical care, the environment, human rights, and democracy, even the idea of truth. Let’s focus on those real reasons.
\r\n
stallman.org 21 August 2018 (Age and attraction) Research found that men generally find females of age 18 the most attractive. This accords with the view that Stendhal reported in France in the 1800s, that a woman’s most beautiful years were from 16 to 20. Although this attitude on men’s part is normal, the author still wants to present it as wrong or perverted, and implicitly demands men somehow control their attraction to direct it elsewhere. Which is as absurd, and as potentially oppressive, as claiming that homosexuals should control their attraction and direct it towards to the other sex. Will men be pressured to undergo \"age conversion therapy\" intended to brainwash them to feel attracted mainly to women of their own age?
\r\n
stallman.org Anti-Glossary Sexual assault: this term is so broad that using it is misleading. The term includes rape, groping, sexual harassment, and other acts. These acts are not merely different in degree. They are different in kind. Rape is a grave crime. Being groped is unpleasant but not as grave as robbery. Sexual harassment is a not an action at all, but rather a pattern of actions that constitutes economic unfairness. How can it make sense to group these behaviors things together? It never makes sense. News articles, studies, and laws should avoid that term.
\r\n
stallman.org 23 September 2018 (Cody Wilson) Cody Wilson has been charged with hiring a \"child\" sex worker. Her age has not been announced, but I think she must surely be a teenager, not a child. Calling teenagers \"children\" in this context is a way of smearing people with normal sexual proclivities as \"perverts\". They have accused him of \"sexual assault\", a term so vague that it should never be used at all. With no details, we can’t tell whether the alleged actions deserve that term. What we do know is that the term is often used for a legal lie. She may have had — I expect, did have — entirely willing sex with him, and they would still call it \"assault\". I do not like the idea of 3D-printed guns, but that issue is entirely unrelated to this.
\r\n
stallman.org 6 November 2018 (Sex according to porn) The unrealistic picture of sex presented in most porn harms men as well as women in their sex lives (though in different ways). Their sexual miseducation starts in adolescence, but many never learn better. Our society’s taboo cuts adolescents off from any way to learn about sexual relationships and lovemaking other than from porn and from other confused adolescents. Everyone learns the hard way, often slowly, and in many cases learns bad lessons. The more effective the taboo, the deeper the ignorance. In 18th century France, teenage girls of good family emerged totally sexually innocent from education in a convent. Totally innocent and totally exploitable (see Dangerous Liaisons). Contrast this with Marquesan society, where adolescents are not kept ignorant by a taboo on sex. They have various relationships with lovers of their choice, so they have many opportunities to see what pleases and what doesn’t. Any one lover can please them more, or please them less, but can’t mislead them — they have standards for comparison. In that society, even adolescents understand lovemaking better than a lot of American adults. Inevitably, everyone starts out ignorant; the question is, how can society offer people a path which leads them to learn to do things well, rather than learning painfully to do them badly.
\r\n
stallman.org 14 February 2019 (Respecting people’s right to say no) Writer Yann Moix said that he cannot be attracted to women in their 50s, and people are condemning him, claiming he has an obligation to be attracted to them. You might as well demand that a homosexual be attracted to people not of the same sex. Or that a heterosexual be attracted to people that are of the same sex. There is no arguing about tastes. If we respect people’s right to say no, we should not rebuke them when they do. Of course, many people (especially men, but not only) despise those they find unattractive. That is a mean way to treat people who haven’t done anything wrong. But being unattracted by someone is not the same as despising per. Yann Moix understands this.
\r\n
stallman.org 12 June 2019 (Declining sex rates) Many demographic categories report having sex less now than in the past. It might be due to the general stress and anxiety of life in the advanced countries. I suspect it is also due to the lack of any generally accepted way for men to express romantic or sexual interest in women. By \"generally accepted\", I mean that he can count on a woman who declines his interest not to revile him for expressing it that way.
\r\n
stallman.org 30 July 2019 (Al Franken) Al Franken now regrets resigning from the Senate. Some senators that pushed him to resign now regret that too. The first (main) article does not state clearly whether Franken touched Tweeden in the process of making the photo, but it seems he did not. If that is correct, it was not a sexual act at all. It was self-mocking humor. The photograph depicted a fictional sexual act without her fictional consent, but making the photo wasn’t a sexual act. If it is true that he persistently pressured her to kiss him, on stage and off, if he stuck his tongue into her mouth despite her objections, that could well be sexual harassment. He should have accepted no for an answer the first time she said it. However, calling a kiss \"sexual assault\" is an exaggeration, an attempt to equate it to much graver acts, that are crimes. The term \"sexual assault\" encourages that injustice, and I believe it has been popularized specifically with that intention. That is why I reject that term. Meanwhile, Franken says he did not do those things, and the other actors he previously did the same USO skit with said it was not harassment, just acting. Tweeden’s store is clearly false in many details. Should we assume Tweeden was honest? With so many demonstrated falsehoods in her accusations, and given that she planned them with other right-wing activists, and that all of them follow a leader who lies as a tactic every day, I have to suspect that she decided to falsify accusations through exaggeration so as to kick a strong Democrat out of the Senate. I have no proof of that suspicion. It is possible that she made the accusations honestly. Also, in a hypothetical world, someone might really have done them. Supposing for the moment that those accusations were true, should Franken have resigned over them? I don’t think so. They are misjudgments, not crimes. Franken deserved the chance to learn from the criticism that surprised him. Zero tolerance is a very bad way to judge people. However, the most important point is to reject the position that if B feels hurt by what A said or did, then automatically A is wrong. People judged Franken that way, and he judged himself that way. But that way degrades the concept of \"wrong\" into a mere expression of subjective disapproval. What can legitimately be asserted subjectively can legitimately be ignored subjectively too. To judge A that way is to set B up as a tyrant. If B’s feelings were hurt, that’s unfortunate – but is that A’s fault? If so, was it culpable, or just a mistake? That is what we have to judge, and if we want others to think our judgments worth following, they must be based on objective facts and objective standards, including objective standards for what words and gestures objectively mean. Traister is wrestling with a solvable problem. She says, \"When you change rules, you end up penalizing people who were caught behaving according to the old rules.\" Maybe people do, but that is a sign of carelessness. It isn’t really hard to change the rules and then judge old actions by the old rules. We just have to remember to do so.
\r\n
stallman.org 27 August 2019 (Me-too frenzy) In \"me-too\" frenzy, crossed signals about sex can easily be inflated into \"rape\". If people rush to judgment, in an informal way, that can destroy a man’s career without any trial in which to clear his name.
\r\n
stallman.org 21 September 2019 (Sex workers) Today’s Sex Workers, Like Their Victorian Sisters, Don’t Want \"saving\". Feminism today is drifting off the track into a campaign of prudery that harms everyone, except those who are asexual.
\r\n\r\n',393,0,1,'CC-BY-SA','Bradley M. Kuhn, Richard M. Stallman, RMS, FSF, Free Software Foundation',0,0,1),
(3304,'2021-04-01','Newsflash 21/01/04',178,'An upgrade to some standard information formats','
Introduction
\r\n
After many years of confusion it has been decided to produce a common standard for dates and times between Europe and the United States of America.
\r\n
When encountering a USA date such as 03/14/2021 (known as Pi Day in the USA) there has been ambiguity over which part of the date is the day and which the month. There can also be confusion as to the year if the two-digit form is used.
\r\n
Standardisation is a way in which these sorts of ambiguities can be resolved. Having a common method of representation avoids confusion.
\r\n
Therefore, starting in 2021, in the spirit of clarity and prevention of misunderstanding, the EU has decided to standardise on compatible formats wherever possible.
\r\n
Dates
\r\n
Henceforward dates will be represented in one of the following forms:
\r\n
MM/DD/YY month/day of month/two-digit year\r\n\r\nYY/DD/MM two-digit year/day of month/month
\r\n
Thus, 21/14/03 or 03/14/21 will be universally recognised as Pi Day.
\r\n
Times
\r\n
The break from the previous tyranny of large|medium|small or small|medium|large formats has been extended to 24-hour time representations.
\r\n
Henceforward 24-hour times will be represented in one of the following forms:
Bash already introduced support last year. You will need to update to Ubuntu Falex to get the latest version.
\r\n
Future plans
\r\n
The Standardisation Working Group will be planning other measures.
\r\n
Forthcoming rationalisations will be:
\r\n
\r\n
Weights and Measures:\r\n
\r\n
Discrepancies such as the US pint (16 fluid ounces) versus the British pint (20 fluid ounces)
\r\n
\r\n
Temperature:\r\n
\r\n
Fahrenheit versus Centigrade, replaced by the new Eurotemp which straddles both ranges. The choice might be the Rankine scale (°R), but this has yet to be decided.
\r\n
\r\n
\r\n',393,0,0,'CC-BY-SA','date,time,formats',0,0,1),
-(3312,'2021-04-13','COVID Doldrums',4288,'MrX and Dave Morriss have a chat over Mumble in these trying times','
We had some issues with getting Mumble to work, for reasons we couldn’t quite fathom. Both ends needed to be restarted several times until all worked properly.
\r\n
We recorded this on Sunday March 7th 2021. The last time we set up a chat like this was back in August 2020, surprisingly!
\r\n
Note on the title: the term the doldrums refers to a belt around the equator where sailing ships used to be becalmed due to the lack of wind. It also means a state of inactivity or stagnation, or a dull, listless, depressed mood; low spirits.
\r\n
Topics discussed
\r\n
\r\n
Pandemic (1):\r\n
\r\n
Planning for pandemics
\r\n
Years ago parents used to let children catch chickenpox when it was known somebody had it (pox party).
Cooked a fancy vegetarian meal twice! On Boxing Day and New Years Day. Second time was a joint effort. Getting everything coordinated is easier when there are several contributors!
\r\n
\r\n
MrX:\r\n
\r\n
Had long break because like many I hadn’t taken many holidays
\r\n
Spent first part of holiday upgrading devices around the house
\r\n
I had a nice relaxing break and spent Christmas with my mother, she lives on her own.
\r\n
Visit to the dentist was interesting, wondering how they were going to cope with aerosol spray from the drill. The answer was they didn’t. Rough edge smoothed, they told me they will contact me when things settle down and said I was right to get it checked. If any pain or further break then will be moved into a different category where they do use drill with full PPE.
Probably getting second in late April or early May; not heard yet
\r\n
Still avoiding going out for the moment
\r\n
The deleterious effects of the lock down; trying to walk on a regular basis to counteract these and get exercise
\r\n
Meeting up with the rest of the family several times per week for dinner, etc.
\r\n
\r\n
MrX:\r\n
\r\n
Horizon things we now know about COVID
\r\n
Don’t know how long the vaccine protects against virus spreading but likely to protect against serious illness for a good long time.
\r\n
12 weeks between jabs: 2nd jab does not provoke a stronger response; it’s that the 1st jab produces good responses and poor responses but by waiting 12 weeks for the 2nd jab it only provokes the good responses.
\r\n
Think the UK has among the worst death rate in Europe
\r\n
Like Dave continuing to avoid the virus as before.
\r\n
Seems to be getting more difficult coping with lock down
\r\n
Haven’t been into work since last November, working from home
\r\n
Home working, clutter, stress, not taking enough breaks
\r\n
Glad I didn’t need to drive during all the bad weather
\r\n
Think I heard on a podcast recently that Linux use had dropped by 50%, could this be linked to people working from home. I would say this is true for myself
\r\n
Except for me all immediate family have been vaccinated
\r\n
Way to stay positive tip from something Mrs X read\r\n
\r\n
Three things at the end of each day that were a highlight or something that we are grateful for.
\r\n
This may say something about my personality but for me the highlights often relate to food.
\r\n
\r\n
Can’t go outside our own region.
\r\n
\r\n
\r\n
\r\n
\r\n
Weather in & around Edinburgh:\r\n
\r\n
Some snow in the past few months. More than Edinburgh tends to have.
\r\n
Methods of clearing snow on driveways. Snow shovels - mainly plastic unfortunately.
\r\n
Thoughts about making a home-made shovel out of metal for durability.
\r\n',225,0,1,'CC-BY-SA','COVID-19',0,0,1),
+(3312,'2021-04-13','COVID Doldrums',4288,'MrX and Dave Morriss have a chat over Mumble in these trying times','
We had some issues with getting Mumble to work, for reasons we couldn’t quite fathom. Both ends needed to be restarted several times until all worked properly.
\r\n
We recorded this on Sunday March 7th 2021. The last time we set up a chat like this was back in August 2020, surprisingly!
\r\n
Note on the title: the term the doldrums refers to a belt around the equator where sailing ships used to be becalmed due to the lack of wind. It also means a state of inactivity or stagnation, or a dull, listless, depressed mood; low spirits.
\r\n
Topics discussed
\r\n
\r\n
Pandemic (1):\r\n
\r\n
Planning for pandemics
\r\n
Years ago parents used to let children catch chickenpox when it was known somebody had it (pox party).
Cooked a fancy vegetarian meal twice! On Boxing Day and New Years Day. Second time was a joint effort. Getting everything coordinated is easier when there are several contributors!
\r\n
\r\n
MrX:\r\n
\r\n
Had long break because like many I hadn’t taken many holidays
\r\n
Spent first part of holiday upgrading devices around the house
\r\n
I had a nice relaxing break and spent Christmas with my mother, she lives on her own.
\r\n
Visit to the dentist was interesting, wondering how they were going to cope with aerosol spray from the drill. The answer was they didn’t. Rough edge smoothed, they told me they will contact me when things settle down and said I was right to get it checked. If any pain or further break then will be moved into a different category where they do use drill with full PPE.
Probably getting second in late April or early May; not heard yet
\r\n
Still avoiding going out for the moment
\r\n
The deleterious effects of the lock down; trying to walk on a regular basis to counteract these and get exercise
\r\n
Meeting up with the rest of the family several times per week for dinner, etc.
\r\n
\r\n
MrX:\r\n
\r\n
Horizon things we now know about COVID
\r\n
Don’t know how long the vaccine protects against virus spreading but likely to protect against serious illness for a good long time.
\r\n
12 weeks between jabs: 2nd jab does not provoke a stronger response; it’s that the 1st jab produces good responses and poor responses but by waiting 12 weeks for the 2nd jab it only provokes the good responses.
\r\n
Think the UK has among the worst death rate in Europe
\r\n
Like Dave continuing to avoid the virus as before.
\r\n
Seems to be getting more difficult coping with lock down
\r\n
Haven’t been into work since last November, working from home
\r\n
Home working, clutter, stress, not taking enough breaks
\r\n
Glad I didn’t need to drive during all the bad weather
\r\n
Think I heard on a podcast recently that Linux use had dropped by 50%, could this be linked to people working from home. I would say this is true for myself
\r\n
Except for me all immediate family have been vaccinated
\r\n
Way to stay positive tip from something Mrs X read\r\n
\r\n
Three things at the end of each day that were a highlight or something that we are grateful for.
\r\n
This may say something about my personality but for me the highlights often relate to food.
\r\n
\r\n
Can’t go outside our own region.
\r\n
\r\n
\r\n
\r\n
\r\n
Weather in & around Edinburgh:\r\n
\r\n
Some snow in the past few months. More than Edinburgh tends to have.
\r\n
Methods of clearing snow on driveways. Snow shovels - mainly plastic unfortunately.
\r\n
Thoughts about making a home-made shovel out of metal for durability.
\r\n',225,0,1,'CC-BY-SA','COVID-19',0,0,1),
(3317,'2021-04-20','Reading a manifesto: Towards A Cooperative Technology Movement',1015,'If open source misses the point of free software philosophy, what point is free software missing?','
Three good decades ago, Richard Stallman founded the free software movement and gave it a name.
\r\n
Two good decades ago there was a fork and Eric S. Raymond, Bruce Perens and others founded the open\r\nsource software movement, and neglected to tell us who gave it a name.\r\n(it was Christine Peterson[0])
\r\n
Ever since then, the free software side of the two movements has been careful to guard the boundary\r\nbetween the two, see Richard Stallman\'s essay \"Open Source Misses the Point\".[1]
\r\n
But lately a lot of people have increasingly been feeling that free software misses the point.\r\nIronically a lot of this has been coming from the open source side of things, as the official free\r\nsoftware philosophy has been firmly anchored with Stallman, and he hasn\'t been interested in moving\r\nhis philosophy in more inclusive directions.
\r\n
For sure, there are a lot of people in free software who have been wanting to go in this direction\r\nas well. I\'ve been thinking of it as a \"free software plus\", as it builds on the free software\r\nphilosophy, but adds aspects of social responsibility. The fact that Stallman was forced to resign\r\nfrom being Free Software Foundation president two years ago was a sign that people inside free\r\nsoftware cared about more than just the code and what freedoms it gives the recipient.
\r\n
A month ago, if you are listening to this on April the 20th 2021,\r\na manifesto was published called \"Towards A Communal Software Movement\", and I\'ll get to\r\nthat in a minute. I mentioned the names of the drivers of the previous movements, but this author\r\nhas said \"I intentionally left authors\' names out of it\"[2], and I think that makes sense. Part of the\r\nproblems with previous movements has been this Great Man of History fallacy, which may have kept\r\nthem focused and on track, but it has also held them back.
\r\n
The movement is young and has already changed names once as I was writing about it. The manifesto is\r\nnow \"Towards A Cooperative Technology Movement\", and I have updated the shownotes and my commentary\r\nto reflect that.
I see the difference between free software and cooperative technology similarly as the difference\r\nbetween open source and free software.
\r\n
There are certainly people within open source and on the Open Source Initiative board that look\r\nfurther than just the license, and treat open source like just another brand name for free software.
\r\n
But at its core, the Open Source Definition is all about the licensing and that document is the\r\nshared common ground for all open source. People write code for different reasons and there\'s a\r\nlicense and contribution model that allow them to come together without those differences of purpose\r\ngetting too much in the way.
\r\n
So if the software and the license is \"what\" we\'re building, the philosophical documents of free\r\nsoftware provide the guidance on \"why\" we are building it: We want to get away from proprietary\r\nsoftware, we want to control our own computing, we want the freedoms to use, learn, modify and\r\nshare, etc. Free software is about our freedoms.
\r\n
So just like \"free\" is right there in the name, maybe the \"community\" in \"communal software\" or\r\nthe \"cooperative\" in \"cooperative technology\" is\r\nall about the \"who\": Who gets the freedom, who has the influence, who is affected.
\r\n
And again, lots of people in free software do care about community principles beyond code, care about\r\nsocial responsibility, but the shared baseline is the care for formal, technical and individual user\r\nfreedom: If you receive the code, you are allowed the technical rights to update the code, the\r\ncode or license should not restrict your freedoms, you, the recipient of the software, the hacker,\r\nthe code contributor. It says nothing about practical user freedom and it says nothing about the\r\ncommunity beyond the immediate user.
\r\n\r\n
That was my commentary. Now let\'s read the manifesto.
In response to the surprise, undemocratic reinstatement of Richard Stallman to the board of directors of the Free Software Foundation after his resignation in September 2019, the Free and Open Source Software movement is in the midst of a reckoning.\r\nThe authors of this document recognize and honor the contributions Richard Stallman has made to this movement while unequivocally condemning his harmful behavior which has pushed many capable, dedicated people away from the movement.
\r\n
Regardless of what happens in the Free Software Foundation, we believe it is time to reflect on the shortcomings of our advocacy so we can grow into a more effective and inclusive movement for justice.\r\nTowards this end, we believe the movement will benefit from new terminology to describe what we do and what we aim for.\r\nRichard Stallman authored the free software definition in 1986.\r\nThis term has always created difficulties communicating the ideas behind it because of the different meanings of the word \"free\" in English.\r\nMoreover, it is not the freedom of machines we are concerned with, but the freedom of humans.\r\nIn response to this and other issues, in 1998, the term open source was promoted using an adapted version of the Debian Free Software Guidelines.\r\nThe history of computing in the past 23 years have validated critiques that the term \"open source\" is insufficient for communicating the values behind it.\r\nThe term \"open source\" and the ecosystem of Free and Open Source Software (FOSS) is today used by powerful companies, governments, and other institutions to harm people on enormous scales through surveillance and violence.\r\nThese institutions use FOSS to minimize economic costs by benefitting from decades of work done by others, much of which was done by unpaid volunteers motivated by curiosity, passion, and the ideals of the FOSS movement.
\r\n
We believe a significant reason for the failures of both \"free software\" and \"open source\" to prevent this cooptation is that the men who coined and initially promoted these terms did not and do not critique capitalism.\r\nRichard Stallman has generally dodgedthequestion of whether free software is opposed to capitalism.\r\nIn the historical context of the United States in the 1980s, that may have been a wise decision.\r\nBut that was then, and now it is 2021.\r\nThe promoters of \"open source\" emphasize its compatibility with capitalism and go out of their way to distance \"open source\" from critiques of capitalism.\r\nWe believe we need to build on the FOSS movement with an explicitly anticapitalist political movement which proactively collaborates with other movements for justice.
\r\n
We propose the term \"cooperative technology\" for this movement.\r\nBy \"cooperative technology\", we mean technology that is constructed by and for the people whose lives are affected by its use.\r\nWhile this builds on the Free and Open Source Software movement, we aim to apply the same principles to hardware as well, although the criteria by which we evaluate hardware and software will of course not be identical.\r\nIt is not sufficient to narrowly focus on the people who directly interact with computers.\r\nCooperative software which is run on a server should not be controlled solely by the administrator of the server, but also by the people who interact with the server over a network.\r\nSimilarly, the data generated by the technology and the data which it requires to function should be in the control of the people who are affected by the technology.\r\nCooperative software that uses cameras should not be controlled solely by the people who own the cameras, but also the people who are observed by the cameras.\r\nCooperative electronic medical record systems should not be designed for the interests of insurance companies or hospital administrators, but for the interests of patients and the clinicians who directly use it.
\r\n
We aim for a world in which all technology is cooperative technology and recognize that any amount of proprietary technology is in conflict with this goal.\r\nAs an anticapitalist movement, we recognize that any institution which motivates people to put money, power, or self-interest above the welfare of humans is in conflict with our goals.\r\nCorporations are beholden to their shareholders who can hold the corporation legally liable for spending money in a way that is not intended to further enrich the shareholders.\r\nOther capitalist forms of enterprise have similar problems, incentivizing the profit of an elite few over the impact their activities have on others.
\r\n
We are not opposed to exchanges of money being involved in the creation or distribution of software or hardware.\r\nHowever, we should carefully consider the motivational structures of the institutions which fund technology development.\r\nWho benefits from the technology and who determines the priorities of its development and design?\r\nThese are questions we ask about technology whether money is involved or not.\r\nIt is in our interest to use safeguards to ensure that technology always remains controlled by the community which develops and uses it.\r\nCopyleft is one such safeguard, but it is insufficient on its own to prevent cooptation of our movement.\r\nAny cooperative technology project that receives funding from a for-profit enterprise must institute governance structures which prioritize community interests over profit in case there is a conflict between the two.\r\nWe oppose business models which are in conflict with community interests such as \"open core\"/proprietary relicensing.
\r\n
Similarly, we are opposed to authoritarian and hierarchical governance structures of technology projects such as \"benevolent dictators for life\".\r\nCooperative technology is developed democratically; no single individual should have ultimate authority in cooperative projects.\r\nWhile we recognize the need for leadership and private communication, discussions regarding cooperative technology should take place in public unless there is a specific reason for communications to be private.\r\nOrganizations which advocate for cooperative technology should likewise operate democratically and transparently.
\r\n
We recognize that creating high quality technology requires much more than engineering skills.\r\nCooperative technology is not only for people who have the skills of writing code (unless the software is for writing code such as a compiler) nor the skills to design hardware.\r\nCooperative technology strives to be easy to use, including for people with disabilities, and acknowledges that this is best accomplished by continual dialog between engineers and users.\r\nProviding such feedback is a valuable way to contribute to the construction of cooperative technology without needing engineering skills.\r\nIdeally, the engineers of the technology should also be using it themselves.\r\nMoreover, there are many ways to contribute to cooperative technology without programming skills such as imagining ideas for new features, reporting bugs, writing documentation, graphic design, translation, promotion, and financial support.
\r\n
The free software movement has failed to create a world in which humans in technological societies can live without using proprietary software unless one chooses to live the ascetic lifestyle of Richard Stallman.\r\nExpecting people to not use any proprietary technology and judging people for not meeting this standard pushes people away from our movement.\r\nPeople who are coerced into using proprietary technology deserve our empathy and invitation into our movement, not condescension.\r\nLet us criticize institutions which pressure people into using proprietary technology, not the people who choose to use it.\r\nTo that end, we strive to use cooperative technology tools as much as possible in our efforts to build cooperative technology.
\r\n
The purpose of this document is not to proclaim a legalistic set of criteria for determining what technology is cooperative and what technology is not.\r\nHistory has demonstrated that this is not an effective political tactic for the reasons explained above.\r\nThe free software definition and the open source definition are useful criteria for evaluating copyright licenses for code, but an effective political movement cannot be so narrowly focused on legalistic and binary judgements of copyright licenses to judge whether certain technology aligns with our goals.\r\nWe believe the focus of the cooperative technology movement should be on the practical impacts that the use of technology has on humans and the universe we inhabit.\r\nThe scope of this extends beyond humans and must consider the environment around us.\r\nMoreover, we believe it is counterproductive to have a small self-appointed group of privileged men determine what our movement\'s terminology, goals, and tactics are.\r\nWe encourage anyone interested in building a better world through technology to engage in discussions with your own communities about what you want \"cooperative technology\" to mean.
\r\n
While we agree with the Ethical Software Movement that we must resist when our efforts are coopted for unjust purposes, we reject putting restrictions on the ways people may use software through copyright licenses as a wise tactic for achieving our goals.\r\nThe history of the Free and Open Source Software movement has shown that the proliferation of incompatible copyright licenses which prohibit software from being legally combined creates more obstacles than opportunities for our movement.\r\nAny new copyright licenses for use with cooperative software must be written with this consideration in mind to intentionally avoid fracturing the software ecosystem.\r\nAdopting incompatible copyright licenses for different software would make it easy for our adversaries to divide and suppress the movement.
\r\n
Language is constructed collectively and is always evolving.\r\nIt is counterproductive to our movement to refuse to collaborate with people because they use the words \"open source\" or \"free software\" to describe their work.\r\nThey may even disagree with the entire premise of this document.\r\nThat does not mean we should not work together towards shared goals, but we should be conscious that our goals may not perfectly align and this may cause tension in our communities from time to time.\r\nWe invite anyone to collaborate with us who is interested in building a better world and treats us and others in our communities with dignity and respect.
\r\n
This document is licensed under the CC0 license. Contributions are welcome on Codeberg. If you disagree with parts of this, feel free to fork it and say what you want to say.
\r\n',311,0,0,'CC-0','open source, free software, communal software, cooperative technology, politics, philosophy',0,0,1),
(3315,'2021-04-16','tesseract optical character recognition',128,'How to use this amazing tool','
Tesseract (software)
\r\nFrom Wikipedia, the free encyclopedia\r\n
\r\nTesseract is an optical character recognition engine for various operating systems. It is free software, released under the Apache License. Originally developed by Hewlett-Packard as proprietary software in the 1980s, it was released as open source in 2005 and development has been sponsored by Google since 2006. \r\nIn 2006, Tesseract was considered one of the most accurate open-source OCR engines then available.\r\n
',30,0,0,'CC-BY-SA','Tesseract, OCR, optical character recognition',0,0,1),
(3319,'2021-04-22','Linux Inlaws S01E28: Politicians and artificial intelligence part 1',4023,'Part 1 of a miniseries on AI, ML, DL and other fun','
In this episode, our two heroes explore the realm of artificial intelligence, paying special attention to deep learning (hoping that some\r\nof the stuff may rub on them :-). In this first part of a three-part mini-series the chaps discuss the foundation including networks, neurons\r\nand other topics of advanced black magic, carefully avoiding the temptations of introducing too much maths (we\'ll leave this to the Grumpy Old Coders :-).
\r\n',384,111,1,'CC-BY-SA','Policitians, artificial intelligence, deep learning, convolutions',0,0,1),
@@ -19653,7 +19773,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3329,'2021-05-06','Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel',5069,'An eclectic panel of Linux contributors discuss technology, anger management and other things','
In this episode, our two ageing heroes host an eclectic panel of kernel\r\ncontributors of a small, mostly unknown operating system called \"Linux\".\r\nThe panelists hail from all over the planet (sadly, no money or love would\r\nbuy Richard\'s or Linus\' way onto that panel :-) but the discussion proves\r\nmore than interesting regardless of these uber-nerds being absent. All\r\nwill be revealed including the true age of Linux, one of Chris\' secret\r\nobsessions (hint: it\'s not software bugs), Linus Torvald\'s thought process\r\nand evolution as such. Never mind Linux\'s second future high-level\r\nprogramming language... Plus: a philosophical discussion of the social\r\nimpact of insulting from a pan-cultural perspective. Don\'t miss out on\r\nthis!
\r\n',384,111,1,'CC-BY-SA','Linux Kernel',0,0,1),
(3327,'2021-05-04','Looking into Ceph storage solution',818,'We look into what a Ceph implementation entails, what specific use-cases it excels at. ','
We look into what a Ceph implementation entails, what specific use-cases it excels at.
\r\n
And we also talk about the building blocks of the system. What kind of hosts is required for different Ceph daemons and the requirements regarding disk space, CPU, and memory.
\r\n
The services we are talking about are OSD (Object storage daemon), Monitors, Managers, and MDS (MetaData Services).
\r\n
Ceph can be used as an S3 compatible object store, disk storage, and even a file system, depending on your setup.
\r\n
If you are interested in diving deeper into the topic, I have created a couple of videos on the subject that might interest you.
\r\n',382,0,0,'CC-BY-SA','ceph, storage solution, amazon s3',0,0,1),
(3335,'2021-05-14','For your consideration, the Anarcho Book Club',1348,'This is an example of the podcast that was featured on GNU World Order','
',30,75,1,'CC-BY-SA','Anarcho Book Club,anarchism,gnuWorldOrder,gwo',0,0,1),
-(3586,'2022-05-02','HPR Community News for April 2022',3986,'HPR Volunteers talk about shows released and comments posted in April 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 41 comments in total.
\n
Past shows
\n
There are 10 comments on\n7 previous shows:
\n
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 5:\nArcher72 on 2022-04-25:\n\"And now I know, and will forget again\"
\n
hpr3378\n(2021-07-14) \"A bit of my experience with Starlink internet service\"\nby Jezra.
\n
\n
\n
\nComment 1:\nWindigo on 2022-04-06:\n\"Congratulations!\"
Comment 3:\nLurking Prion on 2022-04-23:\n\"Welcome!\"
Comment 4:\nKevin O'Brien on 2022-04-24:\n\"Great show\"
Comment 5:\nSarah on 2022-04-25:\n\"@Kevin O\'Brien\"
Comment 6:\nKevin O'Brien on 2022-04-25:\n\"@Sarah\"
\n
hpr3578\n(2022-04-20) \"Linux Inlaws S01E54: Electronic Freedom Never Mind the Civil Rest\"\nby monochromec.
\n
\n
Comment 1:\nbittin on 2022-04-11:\n\"More Europe Centric\"
Comment 2:\nzen_floater2 on 2022-04-24:\n\"centralized federal power\"
\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
Reminders about show submission
\n
Show spacing
\n
Please remember that we normally ask that shows submitted by a host be spaced out by at least two weeks - unless the queue is extremely short of shows of course!
\n
Commas between tags
\n
A number of shows in recent weeks have been arriving with tags lists missing the requested commas. Hosts are requested to use these to separate tags, otherwise it can be difficult to work out where one tag ends and the next begins. How to interpret the following list, for example:
\n
dog fish custard
\n
Does it mean: \'dog fish, custard\', \'dog, fish custard\' or \'dog,fish,custard\'?
\n
Host names/handles or series names as tags
\n
Next, a recommendation about the host name/handle or the series name as a tag. Tags are intended to help with finding shows.
\n
We have another way of finding shows by host; the host name or handle is a link at the top of the show page which can be clicked to go to a list of all of the shows ever submitted by that host.
\n
Also, if a show is part of a series, clicking on the series title on the show page will take you to all the shows in that series.
\n
So, two tags best avoided are: the host name and the series name.
\n
Use of Explicit only covers audio
\n
Be aware that the selection made during the submission of a new show between \'Explicit\' and \'Clean\' only relates to the audio. Due to the world-wide distribution of shows we need to be sensitive to potential offense caused by swearwords and the like in the notes themselves. We would appreciate all HPR hosts being aware of these issues.
\n
Please do not add your own intro and outro
\n
A final reminder: it was decided via discussion on the HPR mailing list that we would automate the addition of the intro and outro to show audio. We would appreciate it if hosts did not add these themselves because work is then required to remove them before preparing the show for release.
\n
Developments on HPR
\n
Some work has been going on behind the scenes to improve the workflow which handles incoming shows and adds them to the database.
\n
We have added a set of state values which indicate the processing flow so that people and software can track progress.
\n
The calendar page has been adjusted to show some of these state mnemonics in addition to the Locked and Processing indicators we have had before.
\n
The status mnemonics likely to be seen are:
\n
\n
SHOW_SUBMITTED - upload complete
\n
METADATA_PROCESSED - shownotes processed to html
\n
SHOW_POSTED - show in the database
\n
MEDIA_TRANSCODED - audio all generated
\n
UPLOADED_TO_IA - on the IA and visible
\n
UPLOADED_TO_RSYNC_NET - archived on rsync.net
\n
\n
The steps required to move from one state to another have been streamlined as much as possible but they still require the intervention of the Janitors, so there is no guarantee about the time between arrival and the availability of shows on the HPR server or archive.org.
\n
Access to HPR from Argentina
\n
The problems reported in the last Community News have now been resolved.
\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.
\n
During the uploading of shows in the range 1-870 we uploaded all the audio versions: wav, ogg, mp3, etc. We also uploaded any other files such as pictures or documentation. We do this for new shows as well.
\n
The reason for this is to make self-contained shows on the Internet Archive, where previously such shows referred to the HPR server for various components.
\n
The shows that had been uploaded during 2017 in the range 871 to 2429 did not include all these files. At that point we only had the mp3 versions of the audio, and these were what were uploaded, along with the notes.
\n
During phase 1 of the upload process a method of turning the mp3 audio into all of the other formats was included, and this method is now being used to re-process shows 871 to 2429.
\n
Statistics
\n
We will keep a record of progress here as we re-upload shows numbered between 871 and 2429:
\n
\n
Re-uploads done so far: 131
\n
Shows remaining to be done: 1428
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3586,'2022-05-02','HPR Community News for April 2022',3986,'HPR Volunteers talk about shows released and comments posted in April 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 41 comments in total.
\n
Past shows
\n
There are 10 comments on\n7 previous shows:
\n
\n
hpr2881\n(2019-08-19) \"Automatically split album into tracks in Audacity\"\nby Ken Fallon.
\n
\n
\n
\nComment 5:\nArcher72 on 2022-04-25:\n\"And now I know, and will forget again\"
\n
hpr3378\n(2021-07-14) \"A bit of my experience with Starlink internet service\"\nby Jezra.
\n
\n
\n
\nComment 1:\nWindigo on 2022-04-06:\n\"Congratulations!\"
Comment 3:\nLurking Prion on 2022-04-23:\n\"Welcome!\"
Comment 4:\nKevin O'Brien on 2022-04-24:\n\"Great show\"
Comment 5:\nSarah on 2022-04-25:\n\"@Kevin O\'Brien\"
Comment 6:\nKevin O'Brien on 2022-04-25:\n\"@Sarah\"
\n
hpr3578\n(2022-04-20) \"Linux Inlaws S01E54: Electronic Freedom Never Mind the Civil Rest\"\nby monochromec.
\n
\n
Comment 1:\nbittin on 2022-04-11:\n\"More Europe Centric\"
Comment 2:\nzen_floater2 on 2022-04-24:\n\"centralized federal power\"
\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
Reminders about show submission
\n
Show spacing
\n
Please remember that we normally ask that shows submitted by a host be spaced out by at least two weeks - unless the queue is extremely short of shows of course!
\n
Commas between tags
\n
A number of shows in recent weeks have been arriving with tags lists missing the requested commas. Hosts are requested to use these to separate tags, otherwise it can be difficult to work out where one tag ends and the next begins. How to interpret the following list, for example:
\n
dog fish custard
\n
Does it mean: \'dog fish, custard\', \'dog, fish custard\' or \'dog,fish,custard\'?
\n
Host names/handles or series names as tags
\n
Next, a recommendation about the host name/handle or the series name as a tag. Tags are intended to help with finding shows.
\n
We have another way of finding shows by host; the host name or handle is a link at the top of the show page which can be clicked to go to a list of all of the shows ever submitted by that host.
\n
Also, if a show is part of a series, clicking on the series title on the show page will take you to all the shows in that series.
\n
So, two tags best avoided are: the host name and the series name.
\n
Use of Explicit only covers audio
\n
Be aware that the selection made during the submission of a new show between \'Explicit\' and \'Clean\' only relates to the audio. Due to the world-wide distribution of shows we need to be sensitive to potential offense caused by swearwords and the like in the notes themselves. We would appreciate all HPR hosts being aware of these issues.
\n
Please do not add your own intro and outro
\n
A final reminder: it was decided via discussion on the HPR mailing list that we would automate the addition of the intro and outro to show audio. We would appreciate it if hosts did not add these themselves because work is then required to remove them before preparing the show for release.
\n
Developments on HPR
\n
Some work has been going on behind the scenes to improve the workflow which handles incoming shows and adds them to the database.
\n
We have added a set of state values which indicate the processing flow so that people and software can track progress.
\n
The calendar page has been adjusted to show some of these state mnemonics in addition to the Locked and Processing indicators we have had before.
\n
The status mnemonics likely to be seen are:
\n
\n
SHOW_SUBMITTED - upload complete
\n
METADATA_PROCESSED - shownotes processed to html
\n
SHOW_POSTED - show in the database
\n
MEDIA_TRANSCODED - audio all generated
\n
UPLOADED_TO_IA - on the IA and visible
\n
UPLOADED_TO_RSYNC_NET - archived on rsync.net
\n
\n
The steps required to move from one state to another have been streamlined as much as possible but they still require the intervention of the Janitors, so there is no guarantee about the time between arrival and the availability of shows on the HPR server or archive.org.
\n
Access to HPR from Argentina
\n
The problems reported in the last Community News have now been resolved.
\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.
\n
During the uploading of shows in the range 1-870 we uploaded all the audio versions: wav, ogg, mp3, etc. We also uploaded any other files such as pictures or documentation. We do this for new shows as well.
\n
The reason for this is to make self-contained shows on the Internet Archive, where previously such shows referred to the HPR server for various components.
\n
The shows that had been uploaded during 2017 in the range 871 to 2429 did not include all these files. At that point we only had the mp3 versions of the audio, and these were what were uploaded, along with the notes.
\n
During phase 1 of the upload process a method of turning the mp3 audio into all of the other formats was included, and this method is now being used to re-process shows 871 to 2429.
\n
Statistics
\n
We will keep a record of progress here as we re-upload shows numbered between 871 and 2429:
\n
\n
Re-uploads done so far: 131
\n
Shows remaining to be done: 1428
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3328,'2021-05-05','Pandas Part 2',719,'Enigma continues his discussion about his favorite Python module Pandas','
\r\nPart two in the For the Love of Data series. Enigma covers part 2 of Pandas \r\nThe following topics are discussed \r\n \r\n1) Another way to apply a condition to a field \r\n2) Creating a DataFrame from a dictionary \r\n3) Appending a data frame with another DataFrame \r\n4) Joining DataFrames with merge and join \r\n5) Writing an output to csv \r\n \r\n Part 2 Sample code \r\n \r\nFollow me on twitter @Ed_N1gma \r\n \r\nCome chat on irc.freenode.net #hackerexchange\r\n
',39,38,0,'CC-BY-SA','python, pandas, Data, Data Science',0,0,1),
(3334,'2021-05-13','Infosec Podcasts Part 2 - General Information Security',520,'Presenting my favorite general information security podcasts','
Inoffensive in every region of the world
\r\n
Hello, again. My name is Trey. This is part 2 of a 6 part series related to information security podcasts.
\r\n
To recap Why am I recording this series?
\r\n
\"What podcasts you listen to\" was on the list of recommended topics
\r\n
I am passionate about information security
\r\n
We desperately need people to fill infosec jobs in many different specialties
\r\n
Infosec is a rapidly changing field, and it is critical to stay current
\r\n
As a result I listen to TONS of infosec related podcasts
\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 2
\r\n
\r\n
General Information Security \r\nCaveat – Dave Bittner & Ben Yelin (Weekly) \r\nWeekly discussion of cybersecurity law and policy, with a particular focus on surveillance and digital privacy \r\nhttps://thecyberwire.com/podcasts/caveat.html
\r\n
Defense in Depth - David Spark & Guests (Weekly) \r\nWeekly podcast digging deeper into a currently trending infosec topic \r\nhttps://cisoseries.com/subscribe-podcast/
Brakeing Down Security - Bryan Brake, Brian Boettcher, and Amanda Berlin (Weekly) \r\nA weekly discussion of current infosec topics and events \r\nCovers concepts that aspiring Information Security Professionals need to know, or refresh the memories of the seasoned veterans. \r\nhttps://www.brakeingsecurity.com/
\r\n
Down the Security Rabbit Hole - Rafal Los (Weekly) \r\nA weekly interview based podcast discussing various challenges of implementing infosec \r\nhttps://podcast.wh1t3rabbit.net/
\r\n
Security Weekly Podcast Network - Network of shows with various hosts \r\nA collection of podcasts including: Paul\'s Security Weekly, Enterprise Security Weekly, Business Security Weekly, Application Security Weekly, Security & Compliance Weekly, Security Weekly News, Tradecraft Security Weekly, & Secure Digital Life. Interesting and diverse discussions. \r\nWarning: Discussions sometimes promote the consumption of alcohol and smoking cigars \r\nThese podcasts are long \r\nhttps://securityweekly.com/
The Confident Defense Podcast - Conor Sherman (Weekly) \r\nInterviews with influential and inspirational people in all areas of security \r\nhttps://linktr.ee/ConfidentDefense
\r\n
Open Source Security Podcast - Kurt Seifried & Josh Bressers (Weekly) \r\nLighthearted discussions of information security topics related to open source \r\nhttps://opensourcesecurity.io/category/podcast/
\r\n
\r\n
See? I told you I listen to lots of podcasts!
\r\n
I hope that this episode has introduced you to some new sources of information. Give some of them a try, and I would love to get your feedback.
\r\n
The next episode will be about Information Security Careers & Personal Development
\r\n
Thank you for listening.
\r\n',394,74,0,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3331,'2021-05-10','Audio for Podcasting: Episode 1 - The Microphone',1399,'Thaj shares tips and tricks on producing quality audio for HPR episodes','
The first in a series of episodes concerning recording and audio quality. For this episode I focus on the beginning of the signal chain, the microphone. Tips on choosing a microphone, and how to use it to get the sound you want.
\r\n',270,45,1,'CC-BY-SA','audio production, microphones, audio quality',0,0,1),
@@ -19663,7 +19783,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3341,'2021-05-24','Linux on a serial Terminal - And Jorome\'s MainFrame Challenge',314,'My experiment with Getty and A Getty Ansi - And wanting to have a Serial Terminal Mainframe','
\r\n',129,0,0,'CC-BY-SA','Terminal, Mainframe, Raspberry PI',0,0,1),
(3336,'2021-05-17','2020-2021 New Years Eve Show Episode 1',6241,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio show
\r\n
It is December the 31st 2020 and the time is 10 hundred hours UTC. We start the show by sending Greetings to Christmas Island/Kiribati and Samoa Kiritimati, Apia.
\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3342,'2021-05-25','2020-2021 New Years Eve Show Episode 2',3672,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
\r\n
\r\n
heated roads and driveways
\r\n
talking about distilling spirits
\r\n
geek talk
\r\n
single board computers
\r\n
',159,121,0,'CC-BY-SA','HPR,community,new years eve',0,0,1),
-(3346,'2021-05-31','2020-2021 New Years Eve Show Episode 3',10488,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
\r\n
\r\n
adjusting nextcloud time and date. Why can\'t I do it? Bug? yes or no?
\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
+(3346,'2021-05-31','2020-2021 New Years Eve Show Episode 3',10488,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
\r\n
\r\n
adjusting nextcloud time and date. Why can\'t I do it? Bug? yes or no?
\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3352,'2021-06-08','2020-2021 New Years Eve Show Episode 4',3993,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
Filk Music discussion: Filk music is a musical culture, genre, and community tied to science fiction, fantasy and horror fandom and a type of fan labor. The genre has been active since the early 1950s, and played primarily since the mid-1970s.
\r\n
Dresden Files and books
\r\n
happy new year from the Fallon family
\r\n
\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3356,'2021-06-14','2020-2021 New Years Eve Show Episode 5',16905,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
\r\n
\r\n
Vacinations
\r\n
covid lock downs
\r\n
covid covid covid (no suprise)
\r\n
virtual confrences
\r\n
Virtual life
\r\n
programing languages
\r\n
the size of texas - Even the Skunks are Large!
\r\n
Religion
\r\n
Linux
\r\n
',159,121,1,'CC-BY-SA','HPR,community,New Years Eve',0,0,1),
(3361,'2021-06-21','2020-2021 New Years Eve Show Episode 6',12738,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
\r\n
\r\n
Vaccines
\r\n
Discussion about the movies: Jumanji, Wizard of Oz.
\r\n
Discussion about facebook, whatsapp, and social networks.
\r\n
Filk
\r\n
Performance of \"Alice the first woman on the moon\" written by Blind Lemon Chiffon.
\r\n
podcasting
\r\n
Dungeons and Dragons talk
\r\n
History
\r\n
staying awake for many hours
\r\n
geography
\r\n
geology
\r\n
languages
\r\n
food
\r\n
minecraft
\r\n
schools
\r\n
language
\r\n
\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
@@ -19671,7 +19791,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3372,'2021-07-06','2020-2021 New Years Eve Show Episode 8',5947,'the hpr community stops by for a chat','
Welcome to the 9th Annual Hacker Public Radio New Years Eve Show
\r\n
\r\n
Hunting
\r\n
food
\r\n
cpap machines
\r\n
Music
\r\n
Audio books
\r\n
podcasts
\r\n
Archive.org is great (support if possible please)
\r\n
Moss has a fun 2020
\r\n
Politics
\r\n
Health care
\r\n
grey hat
\r\n
\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3345,'2021-05-28','Audio for Podcasting: Episode 2 - Equalization',965,'Thaj shares tips and tricks on producing quality audio for HPR episodes','
In this episode we discuss equalization in order to improve our audio quality for podcasting. We will use Audacity to manipulate our equalization.
\r\n
The best method of achieving this is to use the Graphic EQ plugin. To use this select the audio you wish to process, then use the \"Effect\" menu to select the Graphic EQ plugin.
\r\n
',270,45,1,'CC-BY-SA','audio production, equalization, audio quality',0,0,1),
(3337,'2021-05-18','I like that the boat is stuck',527,'A dramatic reading of a work by Gailey','
The episode is released under a Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0). HPR has been given non-exclusive rights to create and distribute audio narration with kind permission of the Author. For clarity, permission has not been granted for derivative works, commercial or otherwise, to be created from this narration. This license only applies to the audio narration, not the print version of the essay.
\r\n
I found this piece really fascinating and I like that you can take a huge problem and still consider it simple. It puts a lot of other problems into perspective and I like how this piece is written.
\r\n\r\n',382,0,0,'CC-BY-NC-ND','news, boat, stuck',0,0,1),
-(3611,'2022-06-06','HPR Community News for May 2022',3341,'HPR Volunteers talk about shows released and comments posted in May 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 24 comments in total.
\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 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
Re-uploads done so far: 271
\n
Shows remaining to be done: 1288
\n
Shows uploaded by last Community News recording: 131
\n
Shows added since last recording: 140
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3611,'2022-06-06','HPR Community News for May 2022',3341,'HPR Volunteers talk about shows released and comments posted in May 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 24 comments in total.
\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 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
Re-uploads done so far: 271
\n
Shows remaining to be done: 1288
\n
Shows uploaded by last Community News recording: 131
\n
Shows added since last recording: 140
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3339,'2021-05-20','Linux Inlaws S01E30: Politicians and artificial intelligence part 2',3453,'Part 2 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)','
After successfully navigating through the shallow (or not-so-shallow) depths of the first episode on deep learning fundamentals, our two heroes tackle a more concrete topic in this episode: How to use the damn stuff! No expenses will be spared to bring to the listeners the finer details of tensors, TensorFlow and other frameworks which serve as the basis for modern artificial intelligence / machine learning applications running on back-propagation networks (see the first episode on the foundations). Lifting the curtain even more, all will be revealed about a little corner shop called \"Google\" (well, almost all :-).\r\n
\r\n',384,111,1,'CC-BY-SA','Policitians, artificial intelligence, deep learning',0,0,1),
(3343,'2021-05-26','The Forth programming language',761,'A less than complete history of Forth','
\r\n',326,0,0,'CC-BY-SA','programming, history',0,0,1),
(3440,'2021-10-08','Lighten Layer Modes',1168,'We continue our look at the Layer Modes in GIMP with the Lighten Modes','
Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Lighten Modes, except for Dodge which we will cover in the next tutorial along with Burn. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.
\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Lighten',0,0,1),
@@ -19688,9 +19808,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3510,'2022-01-14','Syntax, Switches, and Help',1215,'We continue our look the old warhorse, DOS. This time it is Syntax, Switches, and Help.','
Since DOS is a command line type of operating system, it is really important that you understand the syntax of commands. The good news is that the system will do what you tell it to do. But the bad news is that it will do what you tell it to do. You have to tell it in the precisely correct way, and that means Syntax. And with a number of commands you can modify them using Switches. And where do you learn all about Syntax and Switches? Why, in the HELP system, of course!
\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, syntax, switches, help',0,0,1),
(3520,'2022-01-28','Inversion Layer Modes',1064,'More on Layer Modes in GIMP with the Inversion Modes','
Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Inversion Modes, which in various ways invert the lightness and the color values of the component layers. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.
',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Inversion Modes',0,0,1),
(3530,'2022-02-11','Filenames and ASCII',875,'We continue our look at the old warhorse, DOS. This time it is DOS filenames and ASCII','
In a purely text-based operating system you need to pay special attention to naming files. You won\'t have any helpful icons or thumbnails to help you locate things. So we dig into the file naming conventions in DOS, including forbidden characters. And since the possible characters all come from the ASCII character set, we do a small look at that as well.
\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, filenames, ASCII',0,0,1),
-(3353,'2021-06-09','My terminal journey, part 01.',2814,'Becoming terminal friendly.','
#!/bin/bash\r\n\r\ndump=dump$(date +%m-%d-%Y).txt\r\npdat=$(date +%a_%b_%d_%Y_%T)\r\n\r\ntouch $dump;\r\n\r\necho -e "$pdat" > $dump; echo -e "\\n\\nThis file is used to store terminal output for later use; now get out!\\n\\n" >> $dump;\r\n\r\necho -e "\\n\\nDump file $dump is ready for use (created on $(date +%m-%d-%Y_%T)).\\n\\n"\r\n
\r\n
My Upgrade script
\r\n
#!/bin/bash\r\n\r\ndp=dump$(date +%m-%d-%Y).txt\r\n\r\ndate | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n\r\nsudo apt-get update | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\necho -e "System Update Completed." | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n\r\nsudo apt-get upgrade --yes | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\necho -e "System Upgrade Completed." | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n
\r\n
Commands
\r\n\r\n
the upgrade example sudo apt-get update | tee -a ~/Documents/.dump/dump05-05-2021.txt; nrpt >> ./dump05-05-2021.txt;
\r\n
the nmap example (plus the other command I couldn\'t remember while recording) apt-cache search nmap >> ./dump05-05-2021.txt; nrpt >> ./dump05-05-2021.txt;apt-cache showpkg nmap
\r\n
the depends example apt-cache depends nmap >> ./dump05-05-2021.txt;
\r\n
the download example sudo apt-get download dict dictd dict-wn dict-gcide artha
\r\n
vim sudo apt-get vim; vimtutor
\r\n
Terminal examples ~= home folder, CTRL + R= command search , CTRL + L= clear terminal, xdg-open= open files with default app.
\r\n
Searching with grep example ls -lhAr ~ | grep -i bash >> ./dump05-05-2021.txt
\r\n
the dump05-05-2021.txt file
\r\n\r\n
Wed_May_05_2021_12:22:43\r\n\r\nThis file is used to store terminal output for later use; now get out!\r\n\r\n\r\nHit:1 https://dl.google.com/linux/chrome/deb stable InRelease\r\nIgn:2 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana InRelease\r\nGet:3 https://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]\r\nHit:4 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana Release\r\nHit:5 https://mirror.cogentco.com/pub/linux/ubuntu focal InRelease\r\nHit:6 https://mirror.cogentco.com/pub/linux/ubuntu focal-updates InRelease\r\nHit:7 https://archive.canonical.com/ubuntu focal InRelease\r\nHit:8 https://mirror.cogentco.com/pub/linux/ubuntu focal-backports InRelease\r\nFetched 109 kB in 1s (158 kB/s)\r\nReading package lists...\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nbrutespray - Python bruteforce tool\r\ndindel - determines indel calls from short-read data\r\ndoscan - port scanner for discovering services on large networks\r\nforensics-all - Debian Forensics Environment - essential components (metapackage)\r\nforensics-all-gui - Debian Forensics Environment - GUI components (metapackage)\r\nlibfile-map-perl - Perl module providing simple and safe memory mapping\r\nlibnmap-parser-perl - module to parse nmap scan results with perl\r\nlibwlocate-dev - Library for doing location lookup based on free openwlanmap.org data\r\nlibwlocate0 - Library for doing location lookup based on free openwlanmap.org data\r\nmapsembler2 - bioinformatics targeted assembly software\r\nmasscan - TCP port scanner\r\nncat - NMAP netcat reimplementation\r\nncrack - High-speed network authentication cracking tool\r\nndiff - The Network Mapper - result compare utility\r\nnmap - The Network Mapper\r\nnmap-common - Architecture independent files for nmap\r\nnmapsi4 - graphical interface to nmap, the network scanner\r\np0f - Passive OS fingerprinting tool\r\npads - Passive Asset Detection System\r\npnscan - Multi threaded port scanner\r\npsad - Port Scan Attack Detector\r\npython-libnmap-doc - Python NMAP Library (common documentation)\r\npython3-libnmap - Python 3 NMAP library\r\npython3-nmap - Python3 interface to the Nmap port scanner\r\npython3-scapy - Packet generator/sniffer and network scanner/discovery (Python 3)\r\nsamblaster - marks duplicates, extracts discordant/split reads\r\ntophat-recondition - post-processor for TopHat unmapped reads\r\nxprobe - Remote OS identification\r\nxscreensaver-gl - GL(Mesa) screen saver modules for screensaver frontends\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nnmap\r\n Depends: nmap-common\r\n Depends: libc6\r\n Depends: libgcc-s1\r\n Depends: liblinear4\r\n Depends: liblua5.3-0\r\n Depends: libpcap0.8\r\n Depends: libpcre3\r\n Depends: libssl1.1\r\n Depends: libstdc++6\r\n Depends: lua-lpeg\r\n Depends: zlib1g\r\n Suggests: ncat\r\n Suggests: ndiff\r\n Suggests: <zenmap>\r\n
\r\n
NATO Phonetic Alphabet
\r\n
The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.
\r\n
(pronunciation)
\r\n
A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n
#!/bin/bash\r\n\r\ndump=dump$(date +%m-%d-%Y).txt\r\npdat=$(date +%a_%b_%d_%Y_%T)\r\n\r\ntouch $dump;\r\n\r\necho -e "$pdat" > $dump; echo -e "\\n\\nThis file is used to store terminal output for later use; now get out!\\n\\n" >> $dump;\r\n\r\necho -e "\\n\\nDump file $dump is ready for use (created on $(date +%m-%d-%Y_%T)).\\n\\n"\r\n
\r\n
My Upgrade script
\r\n
#!/bin/bash\r\n\r\ndp=dump$(date +%m-%d-%Y).txt\r\n\r\ndate | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n\r\nsudo apt-get update | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\necho -e "System Update Completed." | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n\r\nsudo apt-get upgrade --yes | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\necho -e "System Upgrade Completed." | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n
\r\n
Commands
\r\n\r\n
the upgrade example sudo apt-get update | tee -a ~/Documents/.dump/dump05-05-2021.txt; nrpt >> ./dump05-05-2021.txt;
\r\n
the nmap example (plus the other command I couldn\'t remember while recording) apt-cache search nmap >> ./dump05-05-2021.txt; nrpt >> ./dump05-05-2021.txt;apt-cache showpkg nmap
\r\n
the depends example apt-cache depends nmap >> ./dump05-05-2021.txt;
\r\n
the download example sudo apt-get download dict dictd dict-wn dict-gcide artha
\r\n
vim sudo apt-get vim; vimtutor
\r\n
Terminal examples ~= home folder, CTRL + R= command search , CTRL + L= clear terminal, xdg-open= open files with default app.
\r\n
Searching with grep example ls -lhAr ~ | grep -i bash >> ./dump05-05-2021.txt
\r\n
the dump05-05-2021.txt file
\r\n\r\n
Wed_May_05_2021_12:22:43\r\n\r\nThis file is used to store terminal output for later use; now get out!\r\n\r\n\r\nHit:1 https://dl.google.com/linux/chrome/deb stable InRelease\r\nIgn:2 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana InRelease\r\nGet:3 https://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]\r\nHit:4 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana Release\r\nHit:5 https://mirror.cogentco.com/pub/linux/ubuntu focal InRelease\r\nHit:6 https://mirror.cogentco.com/pub/linux/ubuntu focal-updates InRelease\r\nHit:7 https://archive.canonical.com/ubuntu focal InRelease\r\nHit:8 https://mirror.cogentco.com/pub/linux/ubuntu focal-backports InRelease\r\nFetched 109 kB in 1s (158 kB/s)\r\nReading package lists...\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nbrutespray - Python bruteforce tool\r\ndindel - determines indel calls from short-read data\r\ndoscan - port scanner for discovering services on large networks\r\nforensics-all - Debian Forensics Environment - essential components (metapackage)\r\nforensics-all-gui - Debian Forensics Environment - GUI components (metapackage)\r\nlibfile-map-perl - Perl module providing simple and safe memory mapping\r\nlibnmap-parser-perl - module to parse nmap scan results with perl\r\nlibwlocate-dev - Library for doing location lookup based on free openwlanmap.org data\r\nlibwlocate0 - Library for doing location lookup based on free openwlanmap.org data\r\nmapsembler2 - bioinformatics targeted assembly software\r\nmasscan - TCP port scanner\r\nncat - NMAP netcat reimplementation\r\nncrack - High-speed network authentication cracking tool\r\nndiff - The Network Mapper - result compare utility\r\nnmap - The Network Mapper\r\nnmap-common - Architecture independent files for nmap\r\nnmapsi4 - graphical interface to nmap, the network scanner\r\np0f - Passive OS fingerprinting tool\r\npads - Passive Asset Detection System\r\npnscan - Multi threaded port scanner\r\npsad - Port Scan Attack Detector\r\npython-libnmap-doc - Python NMAP Library (common documentation)\r\npython3-libnmap - Python 3 NMAP library\r\npython3-nmap - Python3 interface to the Nmap port scanner\r\npython3-scapy - Packet generator/sniffer and network scanner/discovery (Python 3)\r\nsamblaster - marks duplicates, extracts discordant/split reads\r\ntophat-recondition - post-processor for TopHat unmapped reads\r\nxprobe - Remote OS identification\r\nxscreensaver-gl - GL(Mesa) screen saver modules for screensaver frontends\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nnmap\r\n Depends: nmap-common\r\n Depends: libc6\r\n Depends: libgcc-s1\r\n Depends: liblinear4\r\n Depends: liblua5.3-0\r\n Depends: libpcap0.8\r\n Depends: libpcre3\r\n Depends: libssl1.1\r\n Depends: libstdc++6\r\n Depends: lua-lpeg\r\n Depends: zlib1g\r\n Suggests: ncat\r\n Suggests: ndiff\r\n Suggests: <zenmap>\r\n
\r\n
NATO Phonetic Alphabet
\r\n
The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.
\r\n
(pronunciation)
\r\n
A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n
\r\n',391,98,0,'CC-BY-SA','terminal, apt-get, apt-cache, .bashrc',0,0,1),
(3354,'2021-06-10','My Devices',1455,'I walk around my house and talk about any interesting Devices i have','N/A\r\n\r\n\r\n
\r\nAdded by Ken \r\noperat0r and Son walk around the house talking about the devices that he has.\r\n
Second Command:sudo apt-get -u upgrade --assume-no
\r\n
Command Breakdown:
\r\n
\r\n
sudo is root privileges (to become admin for a single command).
\r\n
apt-get is the Command Name.
\r\n
-u or --show-upgraded list of packages that are to be upgraded; must be used with upgrade.
\r\n
upgrade is used to install the newest versions of all packages currently installed.
\r\n
--assume-no Automatically answers \"No\" when the command asks, “Do you want to continue? [Y/n]”. (Do you want to upgrade at this moment? No. You get it).
\r\n
\r\n
Note: Linux Mint 20 manpage for apt-get does not include the -u option or description.
\r\n
-u, --show-upgraded\r\nShow upgraded packages. Print out a list of all packages that are to be upgraded.\r\n
\r\n
Command Standard Output:
\r\n
Reading package lists...\r\nBuilding dependency tree...\r\nReading state information...\r\nCalculating upgrade...\r\nThe following packages were automatically installed and are no longer required:\r\n libllvm10 libllvm10:i386 libnvidia-common-450 libnvidia-compute-455:i386\r\n libnvidia-decode-455:i386 libnvidia-encode-455:i386 libnvidia-fbc1-455:i386\r\n libnvidia-gl-455:i386 libnvidia-ifr1-455:i386 nvidia-kernel-common-455\r\n nvidia-kernel-source-455 nvidia-utils-455 xserver-xorg-video-nvidia-455\r\nUse 'sudo apt autoremove' to remove them.\r\nThe following packages have been kept back:\r\n libnvidia-common-450 libnvidia-common-460 linux-generic\r\n linux-headers-generic linux-image-generic\r\nThe following packages will be upgraded:\r\n alsa-ucm-conf alsa-utils bluetooth bluez bluez-cups bluez-obexd firefox\r\n firefox-locale-en flatpak gir1.2-flatpak-1.0 gir1.2-javascriptcoregtk-4.0\r\n gir1.2-webkit2-4.0 google-chrome-stable iio-sensor-proxy libasound2\r\n libasound2-data libatopology2 libbluetooth3 libexiv2-27 libflatpak0\r\n libjavascriptcoregtk-4.0-18 liblightdm-gobject-1-0 libmysqlclient21\r\n libnetplan0 libsmbclient libvirt-clients libvirt-daemon\r\n libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-rbd\r\n libvirt-daemon-system libvirt-daemon-system-systemd libvirt0 libwacom-bin\r\n libwacom-common libwacom2 libwbclient0 libwebkit2gtk-4.0-37 libxmlb1 lightdm\r\n linux-firmware linux-libc-dev netplan.io openvpn python3-apport\r\n python3-problem-report python3-samba python3-yaml qemu-block-extra qemu-kvm\r\n qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86\r\n qemu-utils samba-common samba-common-bin samba-libs smbclient thermald\r\n xul-ext-lightning\r\n60 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.\r\nNeed to get 295 MB of archives.\r\nAfter this operation, 4,023 kB of additional disk space will be used.\r\nDo you want to continue? [Y/n] N\r\nAbort.\r\n
-l or --list list all installed packages on your system.
\r\n
\r\n
Fourth Command:dpkg-query -L add-apt-key
\r\n
Command Breakdown:
\r\n
\r\n
dpkg-query is the Command Name.
\r\n
-L or --listfiles list specific package, add-apt-key in this example, installed on your system.
\r\n
\r\n
Command Standard Output: (abridged)
\r\n
\r\n
dpkg-query -l all installed packages.\r\n
Desired=Unknown/Install/Remove/Purge/Hold\r\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\r\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\r\n||/ Name Version Architecture Description\r\n+++-=================================================-=====================================-============-======================================================================================================\r\nii accountsservice 0.6.55-0ubuntu12~20.04.4 amd64 query and manipulate user account information\r\nii acl 2.2.53-6 amd64 access control list - utilities\r\nii acpi-support 0.143 amd64 scripts for handling many ACPI events\r\nii acpid 1:2.0.32-1ubuntu1 amd64 Advanced Configuration and Power Interface event daemon\r\nii add-apt-key 1.0-0.5 all Command line tool to add GPG keys to the APT keyring\r\nii adduser 3.118ubuntu2 all add and remove users and groups\r\nii adwaita-icon-theme 3.36.1-2ubuntu0.20.04.2 all default icon theme of GNOME (small subset)\r\nii adwaita-icon-theme-full 3.36.1-2ubuntu0.20.04.2 all default icon theme of GNOME\r\n
touch apt-get01.txt; this command will create the \"apt-get01.txt\" file.
\r\n
date > ~/Documents/apt-get01.txt; this command stores the date and time with the \"apt-get01.txt\" file.
\r\n
echo -e \"\\n\" >> ~/Documents/apt-get01.txt; this command gives us a blank line or new line within the \"apt-get01.txt\" file.
\r\n
apt-get --version >> ~/Documents/apt-get01.txt; this command adds the version of apt-get we have installed to the \"apt-get01.txt\" file.
\r\n
echo -e \"\\n\\napt-get --help\\n\\n\" >> ~/Documents/apt-get01.txt; this command adds to new lines or blank lines to the file then, adds the label \"apt-get -- help\" to the \"apt-get01.txt\" file.
\r\n
apt-get --help >> ~/Documents/apt-get01.txt; this command adds the standard output of apt-get --help to the \"apt-get01.txt\" file.
\r\n
echo -e \"\\n\\nman apt-get\\n\\n\" >> ~/Documents/apt-get01.txt; intentionally left blank.
\r\n
man apt-get >> ~/Documents/apt-get01.txt; intentionally left blank.
\r\n
echo -e \"\\n\\nCompleted.\"; intentionally left blank.
\r\n
\r\n
\r\n
NATO Phonetic Alphabet
\r\n
The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.
\r\n
(pronunciation)
\r\n
A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n
Second Command:sudo apt-get -u upgrade --assume-no
\r\n
Command Breakdown:
\r\n
\r\n
sudo is root privileges (to become admin for a single command).
\r\n
apt-get is the Command Name.
\r\n
-u or --show-upgraded list of packages that are to be upgraded; must be used with upgrade.
\r\n
upgrade is used to install the newest versions of all packages currently installed.
\r\n
--assume-no Automatically answers \"No\" when the command asks, “Do you want to continue? [Y/n]”. (Do you want to upgrade at this moment? No. You get it).
\r\n
\r\n
Note: Linux Mint 20 manpage for apt-get does not include the -u option or description.
\r\n
-u, --show-upgraded\r\nShow upgraded packages. Print out a list of all packages that are to be upgraded.\r\n
\r\n
Command Standard Output:
\r\n
Reading package lists...\r\nBuilding dependency tree...\r\nReading state information...\r\nCalculating upgrade...\r\nThe following packages were automatically installed and are no longer required:\r\n libllvm10 libllvm10:i386 libnvidia-common-450 libnvidia-compute-455:i386\r\n libnvidia-decode-455:i386 libnvidia-encode-455:i386 libnvidia-fbc1-455:i386\r\n libnvidia-gl-455:i386 libnvidia-ifr1-455:i386 nvidia-kernel-common-455\r\n nvidia-kernel-source-455 nvidia-utils-455 xserver-xorg-video-nvidia-455\r\nUse 'sudo apt autoremove' to remove them.\r\nThe following packages have been kept back:\r\n libnvidia-common-450 libnvidia-common-460 linux-generic\r\n linux-headers-generic linux-image-generic\r\nThe following packages will be upgraded:\r\n alsa-ucm-conf alsa-utils bluetooth bluez bluez-cups bluez-obexd firefox\r\n firefox-locale-en flatpak gir1.2-flatpak-1.0 gir1.2-javascriptcoregtk-4.0\r\n gir1.2-webkit2-4.0 google-chrome-stable iio-sensor-proxy libasound2\r\n libasound2-data libatopology2 libbluetooth3 libexiv2-27 libflatpak0\r\n libjavascriptcoregtk-4.0-18 liblightdm-gobject-1-0 libmysqlclient21\r\n libnetplan0 libsmbclient libvirt-clients libvirt-daemon\r\n libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-rbd\r\n libvirt-daemon-system libvirt-daemon-system-systemd libvirt0 libwacom-bin\r\n libwacom-common libwacom2 libwbclient0 libwebkit2gtk-4.0-37 libxmlb1 lightdm\r\n linux-firmware linux-libc-dev netplan.io openvpn python3-apport\r\n python3-problem-report python3-samba python3-yaml qemu-block-extra qemu-kvm\r\n qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86\r\n qemu-utils samba-common samba-common-bin samba-libs smbclient thermald\r\n xul-ext-lightning\r\n60 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.\r\nNeed to get 295 MB of archives.\r\nAfter this operation, 4,023 kB of additional disk space will be used.\r\nDo you want to continue? [Y/n] N\r\nAbort.\r\n
-l or --list list all installed packages on your system.
\r\n
\r\n
Fourth Command:dpkg-query -L add-apt-key
\r\n
Command Breakdown:
\r\n
\r\n
dpkg-query is the Command Name.
\r\n
-L or --listfiles list specific package, add-apt-key in this example, installed on your system.
\r\n
\r\n
Command Standard Output: (abridged)
\r\n
\r\n
dpkg-query -l all installed packages.\r\n
Desired=Unknown/Install/Remove/Purge/Hold\r\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\r\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\r\n||/ Name Version Architecture Description\r\n+++-=================================================-=====================================-============-======================================================================================================\r\nii accountsservice 0.6.55-0ubuntu12~20.04.4 amd64 query and manipulate user account information\r\nii acl 2.2.53-6 amd64 access control list - utilities\r\nii acpi-support 0.143 amd64 scripts for handling many ACPI events\r\nii acpid 1:2.0.32-1ubuntu1 amd64 Advanced Configuration and Power Interface event daemon\r\nii add-apt-key 1.0-0.5 all Command line tool to add GPG keys to the APT keyring\r\nii adduser 3.118ubuntu2 all add and remove users and groups\r\nii adwaita-icon-theme 3.36.1-2ubuntu0.20.04.2 all default icon theme of GNOME (small subset)\r\nii adwaita-icon-theme-full 3.36.1-2ubuntu0.20.04.2 all default icon theme of GNOME\r\n
touch apt-get01.txt; this command will create the \"apt-get01.txt\" file.
\r\n
date > ~/Documents/apt-get01.txt; this command stores the date and time with the \"apt-get01.txt\" file.
\r\n
echo -e \"\\n\" >> ~/Documents/apt-get01.txt; this command gives us a blank line or new line within the \"apt-get01.txt\" file.
\r\n
apt-get --version >> ~/Documents/apt-get01.txt; this command adds the version of apt-get we have installed to the \"apt-get01.txt\" file.
\r\n
echo -e \"\\n\\napt-get --help\\n\\n\" >> ~/Documents/apt-get01.txt; this command adds to new lines or blank lines to the file then, adds the label \"apt-get -- help\" to the \"apt-get01.txt\" file.
\r\n
apt-get --help >> ~/Documents/apt-get01.txt; this command adds the standard output of apt-get --help to the \"apt-get01.txt\" file.
\r\n
echo -e \"\\n\\nman apt-get\\n\\n\" >> ~/Documents/apt-get01.txt; intentionally left blank.
\r\n
man apt-get >> ~/Documents/apt-get01.txt; intentionally left blank.
\r\n
echo -e \"\\n\\nCompleted.\"; intentionally left blank.
\r\n
\r\n
\r\n
NATO Phonetic Alphabet
\r\n
The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.
\r\n
(pronunciation)
\r\n
A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n
\r\n',391,98,0,'CC-BY-SA','terminal, apt-get, apt-cache, apt-mark, dpkg',0,0,1),
(3358,'2021-06-16','BlastEm! A wicked awesome Sega Genesis/Megadrive emulator',1320,'This is an interview with the author of BlastEm, a Sega Genesis/Megadrive emulator','
In this Hacker Public Radio we talk to Mike about his emulator, BlastEm.
\r\n',115,0,0,'CC-BY-SA','genesis megadrive emulation',0,0,1),
(3355,'2021-06-11','Tiki Hell',761,'I talk about my thoughts on outdoor torches','
Don\'t buy Tiki anything...
\r\n',36,0,0,'CC-BY-SA','outdoor, tiki',0,0,1),
(3367,'2021-06-29','Making books with linux - part 1',3367,'A discussion about assembling books using simple tools commonly found in most linux distros.','
Andrew and Dave describe a common itch they have been scratching. Andrew talks through his approach to document creation in this episode and Dave will describe his in the next episode.
\r\n
Andrew was inspired by a simple and elegant approach to eBook creation by Jon Kulp, possibly from listening to HPR 1909 several years ago.
\r\n
In Andrew\'s approach, bash and python scripts assemble various text files into the book, inserting figures and tables using a simple home-brew tag system to generate reference numbers such as Figure 3.7 or Table 2.2. Such auto-numbering functionality is of course provided by many other document authoring systems, such as LaTeX, but the script also uses the tags to hunt down data in CSV files and convert them into the figures. In this way, nearly all information in the book can start off as text and then be processed into anything — prose, graphics, sound or even movies — that can be included with HTML. Also a clean separation between content and appearance is kept by using a CSS file.
\r\n
This is not WYSIWYG (what you see is what you get) but using the entr command to monitor file changes can allow auto-generation of the HTML and even a browser refresh (using a feature found in Midori and Falkon but not many other browsers).
\r\n
Dave describes how he achieves something similar to what Andrew has created by using make to co-ordinate the processing. The process of compiling the source text files into a final document does have some similarities with code compilation.
\r\n
Dave and Andrew discuss how useful their methods might be to others. Some of Andrew\'s scripts are too bespoke to his use for wider consumption but the figure processing code is available online as part of the content and code of his book How Scotland Works.
\r\n
Andrew describes the horror of the suggestion that a non-fiction book does not need an index which prompted him to create his simple code to generate an index from a PDF. This was also motivated by laziness and a reluctance to read his own writing for the umpteenth time. Andrew then describes how this code works. The code itself can be found here.
\r\n
Dave brings up the issue of other formats such as epub which have no concept of pages, or at least do not insist on it natively.
\r\n
The discussion moves on to other tools for document and text processing that are relevant to the tasks involved such as pandoc, LaTex and ASCIIdoc. In particular, Dave mentions that the \"look\" of LaTeX is simpler to control these days, at least as compared to the 1990s!
\r\n',268,0,0,'CC-BY-SA','linux,books,ebooks,scripts',0,0,1),
@@ -19698,9 +19818,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3363,'2021-06-23','Electronics podcasts I listen to',319,'I go over the 4 electronics podcasts I am currently listening to.','
Electronics podcasts
\r\n\r\n
Hackaday podcast
\r\n
Hackaday Editors take a look at all of the interesting uses of technology that pop up on the internet each week. Topics cover a wide range like bending consumer electronics to your will, designing circuit boards, building robots, writing software, 3D printing interesting objects, and using machine tools. Get your fix of geeky goodness from new episodes every Friday morning.
\r\n
Ep 117: Chiptunes in an RCA Plug, an Arduino Floppy Drive, $50 CNC, and Wireless Switches
Embedded.fm is a site dedicated to the many aspects of engineering. We talk about the how, why, and what of engineering, usually devices.
\r\n
The site includes a weekly audio show created and hosted by Elecia White and Christopher White. Our guests include makers, entrepreneurs, educators, and normal, traditional engineers. The show is a product of Logical Elegance, an embedded software consulting company.
\r\n
The site also includes a blog written by Elecia White, Christopher White, Andrei Chichak, and Chris Svec.
Sarah is a kinetic artist and some of her projects include a robot army (built your own from parts printed out or purchased at robot-army.com) https://robot-army.com/
\r\n
The Amp Hour Electronics Podcast
\r\n
Dave Jones from the EEVblog in Sydney (Australia), and Chris Gammell from Contextual Electronics in Chicago (USA) discuss the world of electronics design in an hour long(ish) weekly show, recorded “live” without editing or a mute button! We are also joined every other week by guests throughout the electronics industry.
\r\n
The Amp Hour is a non-scripted off-the-cuff format show that usually airs every Sunday evening US time (recorded earlier in the week). It is the worlds largest and most respected electronics oriented radio show. Discussions range from hobbyist electronics to the state of the electronics industry, components, circuit design, and general on and off-topic rants.
The CE Podcast is a video and audio podcast that posts twice per month. We discuss more than how electronics work and talk to our guests about why they are building them in the first place. we cover topics inside and outside the field of electronics and try to bring more context to the field.
Becky is an artist and content producer who works electronics into projects using a wide variety of media and construction techniques. Becky also teaches a class on electronics at SVA in NYC. She is a product manager at Instructables.
\r\n\r\n',318,75,0,'CC-BY-SA','electronics, robots, space exploration, engineering',0,0,1),
(3362,'2021-06-22','Spam Bot Honey Pot: Eating your own dog food',1148,'Reviewing some stats and the accessibility by screen reader of this spam filter method.','
\r\nIn this episode, I revisit my spam bot honey pot method of spam detection for \r\nweb forms. The first part of the episode is a response to rtsn comment asking \r\nfor a follow up on how the method worked out. In the second part of the podcast \r\nI use the built-in screen reader of my Pop_OS system to review my test form and \r\nmy work form for audible accessibility and to check that the spam catching URL \r\nfield is not reveled by a screen reader. \r\n
\r\n
\r\nFor my work site, I pushed the spam catcher to production on 16 February 2021. \r\nThe total submitted form messages from that day until today, 29 May 2021, is 661.\r\nOf the total submitted, the method identified 527 spam messages, and passed \r\nalong 134 messages. Of those 134, 38 messages were uncaught spam--while the \r\nremaining 96 messages were valid inquiries. Overall, it seems to be doing a \r\ngood job. At one point, I thought about closing down the form, but the data \r\ndoes show we are receiving enough valid messages to make it worth keeping around \r\nand this method makes finding the good messages much easier.\r\n
\r\n
\r\nDuring the second part of the podcast, I find using a screen reader, like any \r\ntool, takes some practice. It also reveals that making a form audibly accessible \r\ndoes take some care, and should be reviewed with a screen reader. My method \r\nfor hiding the honey pot URL field from the screen reader was effective, but my \r\noverall implementation to make it accessible needs more work.\r\n
',293,0,0,'CC-BY-SA','Spam,HTML,Forms,accessibility,screen reader',0,0,1),
(3369,'2021-07-01','Linux Inlaws S01E33: The Return of the Rust',3869,'A show with Steve Klabnik on corroded metal, hipster programming languages and the analogue world','
In this episode - aptly named \"The return of the Rust\" our two heroes host\r\na very special guest: no other than Steve Klabnik of Rust fame himself.\r\nNeedless to say, this hipster programming language which is on everbody\'s mind\r\nat the moment (apart maybe from a few lost souls still crying over spilled\r\ncoffee) plays a very important role in this show in addition to the newly\r\nfounded Rust Foundation hosting such eclectic members such as Microsoft,\r\nMozilla, Google and Facebook just to name a few looking after the language.
\r\n',384,111,1,'CC-BY-SA','Rust, actix, unsafe code, bulleted lists, pubs, OpenSearch',0,0,1),
-(3631,'2022-07-04','HPR Community News for June 2022',7033,'HPR Volunteers talk about shows released and comments posted in June 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.
\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
Publishing code for the HPR site
\n
The question came up during the month - is the HPR site code open source, and if so where is it?
\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
Re-uploads done so far: 431
\n
Shows remaining to be done: 1128
\n
Shows uploaded by last Community News recording: 271
\n
Shows added since last recording: 160
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
-(3651,'2022-08-01','HPR Community News for July 2022',2963,'HPR Volunteers talk about shows released and comments posted in July 2022','\n\n
New hosts
\n
\nWelcome to our new hosts: \n\n binrc, \n Celeste.\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 18 comments in total.
\n
Past shows
\n
There are 2 comments on\n2 previous shows:
\n
\n
hpr3226\n(2020-12-14) \"Using taskwarrior to structurize your work\"\nby Jeroen Baten.
Comment 3:\nbrian-in-ohio on 2022-07-24:\n\"soundscape\"
\n
hpr3648\n(2022-07-27) \"A response to tomorrows show\"\nby Ken Fallon.
\n
\n
Comment 1:\nLongTimeLurker on 2022-07-27:\n\"Known Unknowns\"
Comment 2:\nE-/-y on 2022-07-28:\n\"Only the Interviews\"
\n
hpr3649\n(2022-07-28) \"Linux Inlaws S01E61: 20 years in review\"\nby monochromec.
\n
\n
Comment 1:\nKen Fallon on 2022-06-24:\n\"response show\"
\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
Olly Clark
\n
The UK Tech community has been saddened to hear of the death of Oliver (Olly) Clark, a well known presence at OggCamp, Barcamp and Raspberry Pi meetings. He apparently died in November 2021 as a consequence of COVID-19. His family did not know who to contact in the wider community, so this news only became apparent recently.
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
Re-uploads done so far: 576
\n
Shows remaining to be done: 983
\n
Shows uploaded by last Community News recording: 431
\n
Shows added since last recording: 145
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3540,'2022-02-25','HSV Components Layer Modes',1216,'More on Layer Modes in GIMP with the HSV Components Modes','
Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the HSV Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.
\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, HSV Components Modes',0,0,1),
+(3631,'2022-07-04','HPR Community News for June 2022',7033,'HPR Volunteers talk about shows released and comments posted in June 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.
\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
Publishing code for the HPR site
\n
The question came up during the month - is the HPR site code open source, and if so where is it?
\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
Re-uploads done so far: 431
\n
Shows remaining to be done: 1128
\n
Shows uploaded by last Community News recording: 271
\n
Shows added since last recording: 160
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3651,'2022-08-01','HPR Community News for July 2022',2963,'HPR Volunteers talk about shows released and comments posted in July 2022','\n\n
New hosts
\n
\nWelcome to our new hosts: \n\n binrc, \n Celeste.\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 18 comments in total.
\n
Past shows
\n
There are 2 comments on\n2 previous shows:
\n
\n
hpr3226\n(2020-12-14) \"Using taskwarrior to structurize your work\"\nby Jeroen Baten.
Comment 3:\nbrian-in-ohio on 2022-07-24:\n\"soundscape\"
\n
hpr3648\n(2022-07-27) \"A response to tomorrows show\"\nby Ken Fallon.
\n
\n
Comment 1:\nLongTimeLurker on 2022-07-27:\n\"Known Unknowns\"
Comment 2:\nE-/-y on 2022-07-28:\n\"Only the Interviews\"
\n
hpr3649\n(2022-07-28) \"Linux Inlaws S01E61: 20 years in review\"\nby monochromec.
\n
\n
Comment 1:\nKen Fallon on 2022-06-24:\n\"response show\"
\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
Olly Clark
\n
The UK Tech community has been saddened to hear of the death of Oliver (Olly) Clark, a well known presence at OggCamp, Barcamp and Raspberry Pi meetings. He apparently died in November 2021 as a consequence of COVID-19. His family did not know who to contact in the wider community, so this news only became apparent recently.
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
Re-uploads done so far: 576
\n
Shows remaining to be done: 983
\n
Shows uploaded by last Community News recording: 431
\n
Shows added since last recording: 145
\n
\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3540,'2022-02-25','HSV Components Layer Modes',1216,'More on Layer Modes in GIMP with the HSV Components Modes','
Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the HSV Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.
\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, HSV Components Modes',0,0,1),
(3550,'2022-03-11','Format; Copy; Diskcopy; Xcopy',1202,'We continue our look at the old warhorse, DOS. This time it is Format and Copy commands','
This tutorial is mostly about working with floppy disks, or diskettes, though we also mention the formatting of hard drives, which generally required the use of a floppy drive and diskette to accomplish.
\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Format, Copy, Diskcopy, Xcopy',0,0,1),
(3560,'2022-03-25','LCh Components Layer Modes',758,'More on Layer Modes in GIMP with the LCh Components Modes','
Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the LCh Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing, and in the previous tutorial we looked at the HSV model. This wraps up our look at color models, and also concluded our look at Layer Modes (or Blending Modes). These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.
\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, LCh Components Modes',0,0,1),
(3570,'2022-04-08','The Filesystem',1412,'We continue our look at the old warhorse, DOS. This time it is the file system.','
One key to working with DOS is to understand the file system. This is not just about organizing files, though that is certainly a part of it, but also about keeping your system running smoothly and recovering lost files in some circumstances.
\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, file system',0,0,1),
@@ -19713,10 +19833,10 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(3415,'2021-09-03','Hacking Stories with Reacted: part 3',836,'I talk about some old old old pentesting stories from days old!','
\r\nI talk about some old old old pentesting stories from days old!\r\n
',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3425,'2021-09-17','Hacking Stories with Reacted: part 4',1055,'I talk about some old old old pentesting stories from days old!','
\r\nI talk about some old old old pentesting stories from days old!\r\n
',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3435,'2021-10-01','Hacking Stories with Reacted: part 5',1060,'I talk about some old old old pentesting stories from days old!','
I talk about some old old old pentesting stories from days old!
',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
-(3376,'2021-07-12','Making books with Linux - part 2',2919,'Part 2 of a discussion about how two HPR hosts create books','
Plain text is turned to Markdown. Otherwise various Markdown flavours are acceptable, or an HTML5 fragment
\r\n
If images are included the Markdown can refer to them with URLs such as: https://hackerpublicradio.org/eps/hprNNNN/name.jpg\r\n
\r\n
The hprNNNN element is a directory using the number you chose for your show.
\r\n
In the directory will be the images you sent.
\r\n
Other assets will go there too so you can refer to these in your notes as well.
\r\n
If you’re sending plain text, then markers such as >> Picture name.jpg here << will let me make the appropriate Markdown.
\r\n
\r\n
The directory also needs an index.html file, but my scripts will generate this if needed.
\r\n
I intend to document this soon.
\r\n
\r\n
\r\n
How Dave makes HPR shownotes
\r\n
\r\n
Uses scripts to manage show note generation
\r\n
Uses Markdown when writing the notes\r\n
\r\n
Scripts generate note templates and a Makefile
\r\n
Automation using make
\r\n
\r\n
Uses Template Toolkit features inside notes to allow extra features\r\n
\r\n
Notes go through a pre-processor (a script with access to the show metadata)
\r\n
The end product is Markdown which is processed with Pandoc
\r\n
\r\n
Template Toolkit (TT2)\r\n
\r\n
A Perl (and Python) tool kit for making templates
\r\n
Good for generating HTML, but can generate any text
\r\n
\r\n
TT2 macros can be used to display scripts in shows relating to the subject, and to run them and capture the output. This makes it certain that the script on display really generated the output shown!
\r\n
The \'Falkon\' browser (originally called QupZilla) is great for monitoring notes since it updates when the HTML changes.\r\n
\r\n
Dave confused it with Pale Moon (a fork of Firefox/Mozilla) when talking about tab grouping features
\r\n
\r\n
Should this (personalised) bundle of software be released to the world?\r\n
\r\n
Probably yes, since the thoughts in it may be useful even if the code is not.
\r\n
\r\n
\r\n
Consolidating show notes into a book
\r\n
\r\n
We had discussed the following topic a little in other contexts, and offline, but didn’t really look at it in this show. In brief, and for the record, the plans are:\r\n
\r\n
There was a series on \'sed\', the stream editor from the GNU project. It was called “Introduction to sed”, and consisted of 5 parts, which ran through 2016.
\r\n
Each episode had short and long notes as well as several examples.
\r\n
Work has begun on consolidating all of the long notes into a single document which will be released on the HPR site, in HTML and PDF formats. Perhaps ePub will be included if feasible.
\r\n
It’s seen as critical that an index be provided so that topics can be found easily. At the moment this is simplest to achieve with the PDF version, using Andrew’s index generator as discussed in part 1 of this pair of shows.
\r\n
\r\n
\r\n
Digression about experiences in UK Higher Education
\r\n
\r\n
Change of funding through the 1980’s to the 2000’s, particularly in IT
\r\n
Moving from (often very clever) “home-brew” solutions to products from the big players like Microsoft and Oracle.
\r\n
The change of management style to something more like the industry methods of earlier times, many of which had been discarded.
\r\n
Perhaps there is scope for more discussion on this subject in another HPR show!
\r\n
',225,0,1,'CC-BY-SA','Markdown,Pandoc,Template Toolkit,PDF',0,0,1),
+(3376,'2021-07-12','Making books with Linux - part 2',2919,'Part 2 of a discussion about how two HPR hosts create books','
Plain text is turned to Markdown. Otherwise various Markdown flavours are acceptable, or an HTML5 fragment
\r\n
If images are included the Markdown can refer to them with URLs such as: https://hackerpublicradio.org/eps/hprNNNN/name.jpg\r\n
\r\n
The hprNNNN element is a directory using the number you chose for your show.
\r\n
In the directory will be the images you sent.
\r\n
Other assets will go there too so you can refer to these in your notes as well.
\r\n
If you’re sending plain text, then markers such as >> Picture name.jpg here << will let me make the appropriate Markdown.
\r\n
\r\n
The directory also needs an index.html file, but my scripts will generate this if needed.
\r\n
I intend to document this soon.
\r\n
\r\n
\r\n
How Dave makes HPR shownotes
\r\n
\r\n
Uses scripts to manage show note generation
\r\n
Uses Markdown when writing the notes\r\n
\r\n
Scripts generate note templates and a Makefile
\r\n
Automation using make
\r\n
\r\n
Uses Template Toolkit features inside notes to allow extra features\r\n
\r\n
Notes go through a pre-processor (a script with access to the show metadata)
\r\n
The end product is Markdown which is processed with Pandoc
\r\n
\r\n
Template Toolkit (TT2)\r\n
\r\n
A Perl (and Python) tool kit for making templates
\r\n
Good for generating HTML, but can generate any text
\r\n
\r\n
TT2 macros can be used to display scripts in shows relating to the subject, and to run them and capture the output. This makes it certain that the script on display really generated the output shown!
\r\n
The \'Falkon\' browser (originally called QupZilla) is great for monitoring notes since it updates when the HTML changes.\r\n
\r\n
Dave confused it with Pale Moon (a fork of Firefox/Mozilla) when talking about tab grouping features
\r\n
\r\n
Should this (personalised) bundle of software be released to the world?\r\n
\r\n
Probably yes, since the thoughts in it may be useful even if the code is not.
\r\n
\r\n
\r\n
Consolidating show notes into a book
\r\n
\r\n
We had discussed the following topic a little in other contexts, and offline, but didn’t really look at it in this show. In brief, and for the record, the plans are:\r\n
\r\n
There was a series on \'sed\', the stream editor from the GNU project. It was called “Introduction to sed”, and consisted of 5 parts, which ran through 2016.
\r\n
Each episode had short and long notes as well as several examples.
\r\n
Work has begun on consolidating all of the long notes into a single document which will be released on the HPR site, in HTML and PDF formats. Perhaps ePub will be included if feasible.
\r\n
It’s seen as critical that an index be provided so that topics can be found easily. At the moment this is simplest to achieve with the PDF version, using Andrew’s index generator as discussed in part 1 of this pair of shows.
\r\n
\r\n
\r\n
Digression about experiences in UK Higher Education
\r\n
\r\n
Change of funding through the 1980’s to the 2000’s, particularly in IT
\r\n
Moving from (often very clever) “home-brew” solutions to products from the big players like Microsoft and Oracle.
\r\n
The change of management style to something more like the industry methods of earlier times, many of which had been discarded.
\r\n
Perhaps there is scope for more discussion on this subject in another HPR show!
\r\n
',225,0,1,'CC-BY-SA','Markdown,Pandoc,Template Toolkit,PDF',0,0,1),
(3373,'2021-07-07','HPR RPG Club reviews Starfinder',5175,'Starfinder is a sci-fi RPG using Dungeons & Dragons 3.5 rules','
\r\nThe alternate starship combat rules mentioned in this episode are available from drivethrurpg.com (warning: this is an affiliate link, but any purchases made through it provide Klaatu with store credit so he can buy more RPG books for future HPR Club reviews).\r\n
\r\n',78,95,1,'CC-BY-SA','rpg, cyberpunk, science fiction',0,0,1),
-(3374,'2021-07-08','Why I love the MacBook Mid 2010',1431,'I talk about the upgrades I made to the machine and how it\'s benefited me since I got it','
The upgrades made to the machine were a 500 GB ssd, 16 GB of ram, and went from El Capitan to Catalina.
',297,0,0,'CC-BY-SA','technology,Apple,MacBook,laptop',0,0,1),
-(3676,'2022-09-05','HPR Community News for August 2022',9576,'HPR Volunteers talk about shows released and comments posted in August 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 28 comments in total.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr3606\n(2022-05-30) \"Infinity is just a big number and other proofs\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nKen Fallon on 2022-08-12:\n\"You see\"
\n
hpr3629\n(2022-06-30) \"Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion\"\nby monochromec.
\n
\n
\n
\nComment 1:\nAaron on 2022-08-12:\n\"Excellent interview\"
\n
hpr3643\n(2022-07-20) \"My computing history and the software I use\"\nby binrc.
\n
\n
\n
\nComment 5:\nShawn on 2022-08-08:\n\"Key bindings\"
\n
hpr3648\n(2022-07-27) \"A response to tomorrows show\"\nby Ken Fallon.
\n
\n
\n
\nComment 3:\nfolky on 2022-08-10:\n\"Known Unknowns 2.0\"
\n
\n
This month\'s shows
\n
There are 24 comments on 13 of this month\'s shows:
\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
Git repository for HPR development
\n
For security reasons the Gitea service running on https://repo.anhonesthost.net requires people to log in with an account to view the repositories.
\n
Is this acceptable or do we need to move the code to another location?
\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\n
Updated: 2022-09-03 18:34:16
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3374,'2021-07-08','Why I love the MacBook Mid 2010',1431,'I talk about the upgrades I made to the machine and how it\'s benefited me since I got it','
The upgrades made to the machine were a 500 GB ssd, 16 GB of ram, and went from El Capitan to Catalina.
',297,0,0,'CC-BY-SA','technology,Apple,MacBook,laptop',0,0,1);
+INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3676,'2022-09-05','HPR Community News for August 2022',9576,'HPR Volunteers talk about shows released and comments posted in August 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 28 comments in total.
\n
Past shows
\n
There are 4 comments on\n4 previous shows:
\n
\n
hpr3606\n(2022-05-30) \"Infinity is just a big number and other proofs\"\nby Ken Fallon.
\n
\n
\n
\nComment 2:\nKen Fallon on 2022-08-12:\n\"You see\"
\n
hpr3629\n(2022-06-30) \"Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion\"\nby monochromec.
\n
\n
\n
\nComment 1:\nAaron on 2022-08-12:\n\"Excellent interview\"
\n
hpr3643\n(2022-07-20) \"My computing history and the software I use\"\nby binrc.
\n
\n
\n
\nComment 5:\nShawn on 2022-08-08:\n\"Key bindings\"
\n
hpr3648\n(2022-07-27) \"A response to tomorrows show\"\nby Ken Fallon.
\n
\n
\n
\nComment 3:\nfolky on 2022-08-10:\n\"Known Unknowns 2.0\"
\n
\n
This month\'s shows
\n
There are 24 comments on 13 of this month\'s shows:
\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
Git repository for HPR development
\n
For security reasons the Gitea service running on https://repo.anhonesthost.net requires people to log in with an account to view the repositories.
\n
Is this acceptable or do we need to move the code to another location?
\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\n
Updated: 2022-09-03 18:34:16
\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3377,'2021-07-13','Chromebook support and more',994,'I\'ve run into disaster using my chrome book','
\r\nI\'ve made a special show covering the problem with chromebook support. \r\nI cover the latest AntiX release. \r\nI cover the latest NomadBSD release and I cover GUIX 1.3 and what I ended up using GUIX for.\r\n
',377,0,1,'CC-BY-SA','chromebook, AntiX, NomadBSD, GUIX, bath',0,0,1),
(3389,'2021-07-29','Tales of a Tagger',366,'Adventures and mishaps tagging past shows','
Check in the list which attributes are missing: summary and/or tags
\r\n
Click the show number or title to visit the show page
\r\n
Read the show notes and listen to the show to determine the missing information
\r\n
Submit your updates by email to tags at hackerpublicradio.org
\r\n\r\n
Please send simple ASCII email. No HTML please, and no multipart, encrypted or signed messages; the script can\'t handle them at the moment! (We are working on a solution to some of this though). Remember, the internals of an email are complex and the script isn\'t clever enough to deal with all the many possible formats. Please be gentle with it!
\r\n
Format the message as follows:
\r\n
show:12345\r\nsummary:Using Linux at Christmas to make tomato soup in a sporran\r\ntags:linux,christmas,sporran,tomato soup\r\n\r\nshow: 12346\r\ntags: sausage,clothing,hairpiece
\r\n
\r\n
Start with the show:XXXX line (just the show number, no \'hpr\')
\r\n
If either the summary or the tags are already present on the show you can omit them from the group
\r\n
It\'s not possible to change existing summaries or tags by this route, only to add missing ones
\r\n
Ensure the summary text isn\'t longer than 100 characters
\r\n
The tags need to be separated by commas
\r\n
If you need to add a tag with a comma in it enclose the tag in double quotes
\r\n
The length of the tag list can\'t exceed 200 characters
\r\n
You can update more than one show per email if you want
\r\n
Blank lines between the groups of show/summary/tags lines are fine (as shown), as are comment lines beginning with \'#\'
\r\n
\r\n
Updates will be processed with a script, which is run manually, and this page will be refreshed once the changes have been made. The timestamp above shows when it was last refreshed.
\r\n\r\n
Got carried away and broke the 100 character rule\r\n
\r\n
can be checked in vim by hitting \'$\', goes to the last character in the line. Observe the character count at the bottom of the screen to verify this is less than 100.
\r\n
\r\n
Went a little too far with tags, and went pretty far beyond the 200 character
\r\n
Found that these are reasonable limits, that if not followed, break the script
\r\n
Don\'t be like me. Gently use these tools and they will serve you well.
\r\n
Here are some of the tools I used when tagging was done right.\r\n\r\n
i3 window manager\r\n
\r\n
Use mplayer and vim
\r\n
\r\n
Mplayer\r\n
\r\n
Play audio file faster without pitch increase
\r\n
https://kenfallon.com/speeding-up-speech-with-mplayer \r\n{ key will slow down by 50% of the current rate \r\n[ key will slow down by 10% of the current rate \r\nBackspace will return the speed to normal \r\n] key will speed up 10% of the current rate \r\n} key will speed up by 50% of the current rate \r\n9 key will decrease the volume \r\n0 key will increase the volume \r\n
\r\n
alias mplayer=\'mplayer -af scaletempo\'
\r\n
\r\n
Android - Termux\r\n
\r\n
Download a show via wget (Doing this on Firefox does not show progress bar)\r\n
Enjoy old shows and lend a hand at the same time. :)
\r\n\r\n',318,0,0,'CC-BY-SA','tags,mplayer,Android,Termux,vim,i3 window manager',0,0,1),
(3388,'2021-07-28','Linux Inlaws S01E35: The Free Software Foundation Europe',4695,'An interview with Matthias Kirschner, Free Software Foundation Europe','
In this episode our aging heroes host the Free Software Foundation Europe (FSFE). Its president, Matthias\r\nKirschner talk about the past, the present and the future of free and open source software not only\r\nfrom an FSFE perspective. Never mind how he got into computers in the first place. Also, different opinions\r\nabout communism in general and its implementations (and the flaws of the first rounds of implementations)\r\nare touched upon. So historians, FLOSS users and enthusiasts, communists and free spirits: This is your episode!\r\nPlus: Ever wondered what the Towel Day is all about? Check out the second half of the episode! At our guest\'s\r\nrequest: Please note that this episode was recorded on June 1st 2021.
\r\n',384,111,1,'CC-BY-SA','FSFE, FSF, Stallman, Hackathon, Communism, Towel Day',0,0,1),
@@ -19734,8 +19854,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto 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),
+(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',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),
+(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),
+(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.
',129,0,0,'CC-BY-SA','Android, phone, Linux, Pine64, Smart Watch',0,0,1),
@@ -19768,11 +19888,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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
',377,0,1,'CC-BY-SA','RMS,Pedophilia,BEER',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),
+(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
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),
+(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),
@@ -19799,7 +19919,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
@@ -19815,11 +19935,11 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto 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 tuturto@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),
+(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\r\n
\r\n\r\n \r\n Basement door laid out on a table with the cat door template applied\r\n\r\n\r\n \r\n Basement door after cutting a hole through it. Showing the hole and the interior of the door.\r\n\r\n\r\n \r\n View from the finished side of the basement showing the installed cat door.\r\n\r\n\r\n \r\n View from the utility side of the basement showing the installed cat door.\r\n\r\n
\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,'tuturto 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 tuturto@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),
+(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),
@@ -19831,12 +19951,12 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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.
\r\n',225,0,1,'CC-BY-SA','astronomy,telescope,rocket launch,JWST,NASA,ESA,CSA',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 tuturto@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),
+(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),
@@ -19865,8 +19985,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
@@ -19877,14 +19997,14 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto 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),
+(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),
@@ -19892,9 +20012,9 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
+(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),
@@ -19905,12 +20025,12 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto 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),
+(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),
+(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),
@@ -19933,7 +20053,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
@@ -19971,7 +20091,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
@@ -19989,14 +20109,14 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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);
-INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (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),
-(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),
+(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:\ntuturto 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),
+(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.
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',0,'HPR Volunteers talk about shows released and comments posted in September 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 is 1 comment in total.
\n
Past shows
\n
There is 1 comment on\n1 previous show:
\n
\n
hpr3934\n(2023-08-31) \"Crusader Kings II\"\nby Tuula. Summary: \"tuturto rambles about her all time favourite strategy game Crusader Kings II\"
\n
\n
\n
\nComment 1:\nKevin O'Brien on 2023-09-04:\n\"Loved the show\"\n I was really happy to listen to this show. This is a kind of game I need to explore more.\n
\n
Updated on 2023-09-05 22:28:25
\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\n\n\n',159,47,1,'CC-BY-SA','Community News',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),
@@ -20024,8 +20144,8 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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.
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),
@@ -20033,7 +20153,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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',0,'HPR Volunteers talk about shows released and comments posted in October 2023','',159,47,1,'CC-BY-SA','Community News',0,0,1),
+(3981,'2023-11-06','HPR Community News for October 2023',0,'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 6 comments in total.
\n
Past shows
\n
There are 3 comments on\n3 previous shows:
\n
\n
hpr3941\n(2023-09-11) \"Interview with Yosef Kerzner\"\nby operat0r. Summary: \"Interview with Yosef Kerzner\"
\n
\n
\n
\nComment 2:\ndnt on 2023-10-02:\n\"Great interview!\"\n Thank you for this, it was a great listen. I used to brew kefir and would love to start doing it again. At one of my former jobs there were a few people who made kefir so we could get each other fresh grains all the time, but without a local group it can be hard.\n
\n
hpr3947\n(2023-09-19) \"Archiving Floppy Disks\"\nby Steve Saner. Summary: \"This show describes how I go about archiving old floppy disks.\"
\n
\n
\n
\nComment 1:\nbrian-in-ohio on 2023-10-09:\n\"feedback\"\n Really liked this show. Entertaining and informative!\n
\n
hpr3953\n(2023-09-27) \"Large language models and AI don\'t have any common sense\"\nby hobs. Summary: \"Learn how to load and run GPT-2 or Llama2 to test it with common sense questions.\"
\n
\n
\n
\nComment 1:\nMr Young on 2023-10-01:\n\"LLMs are great if you use them right\"\n Great show. I\'ve been using LLMs for work lately, and they are great at certain activities, as long as you don\'t expect them to act like humans with common sense. There are certain NLP tasks like document Q&A that were near impossible before LLMs that are a few lines of code now. \n \nFor a lay-person interacting with Bard, ChatGPT, etc. I recommend the following sites for understanding how to ask LLMs good prompts: \n \nhttps://docs.google.com/presentation/d/17b_ocq-GL5lhV_bYSShzUgxL02mtWDoiw9xEroJ5m3Q/edit?pli=1#slide=id.gc6f83aa91_0_79 \n \nhttps://learnprompting.org/docs/intro \nhttps://www.promptingguide.ai/\n
Comment 1:\nWindigo on 2023-10-17:\n\"It\'s all relative\"
\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
TBA
\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.
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),
+(3759,'2022-12-29','Chatting with dnt.',2629,'Small talk on SBCs and free software.','
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),
@@ -20112,7 +20232,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
@@ -20126,7 +20246,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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\n
\n\n \n \n The MacBook Pro with the broken display removed.\n To the left are they small plastic cups containg the screws\n and other small parts that were removed for dissembly.\n \n\n\n \n \n The new laptop display not completely removed from its packaging. \n\n\n \n \n The repaired laptop booted to its login screen \n\n
\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)
\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),
+(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),
@@ -20210,7 +20330,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
@@ -20228,15 +20348,15 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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),
+(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),
+(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),
+(3905,'2023-07-21','Presenting Fred Black',1105,'I have a short talk to present Fred Black.','
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),
@@ -20248,7 +20368,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto talks about what she\'s doing to change her voice','
\n',364,0,0,'CC-BY-SA','voice, trans',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),
@@ -20256,7 +20376,7 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto 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),
+(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),
@@ -20270,14 +20390,27 @@ INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hosti
(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,'tuturto 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),
+(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);
+(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.','
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.
','CC-BY-SA',1,'',1,'handsome_pirate'),
@@ -21199,4 +21334,4 @@ UNLOCK TABLES;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2023-09-06 7:38:27
+-- Dump completed on 2023-10-22 13:22:03