Compare commits
10 Commits
ed06ba954b
...
37e8274bff
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
37e8274bff | ||
|
|
8924bb489f | ||
|
|
020d324edb | ||
|
|
98177f3fd5 | ||
|
|
36aa12acb5 | ||
|
|
931ef0335f | ||
|
|
43590c1778 | ||
|
|
eef88341f7 | ||
|
|
41464a1244 | ||
|
|
c52aefc785 |
270
CONFIGURATION.md
270
CONFIGURATION.md
@@ -2,6 +2,10 @@
|
||||
|
||||
This guide explains how to connect various AI tools to the HPR Knowledge Base MCP Server.
|
||||
|
||||
**Last Updated**: October 2025
|
||||
|
||||
**Major Update**: MCP adoption has accelerated significantly in 2025! Most major AI tools now support the Model Context Protocol, with many supporting remote HTTP/SSE connections.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Connection Methods](#connection-methods)
|
||||
@@ -19,27 +23,39 @@ This guide explains how to connect various AI tools to the HPR Knowledge Base MC
|
||||
|
||||
The HPR Knowledge Base MCP Server supports two connection methods:
|
||||
|
||||
### 1. Local (Stdio) - **Recommended for now**
|
||||
### 1. Local (Stdio) - **Fastest performance**
|
||||
|
||||
- **How it works**: AI tool spawns the Node.js server as a child process
|
||||
- **Pros**: Faster, more reliable, works with all MCP clients
|
||||
- **Pros**: Fastest, no network latency, full offline access
|
||||
- **Cons**: Requires Node.js installed locally, data files on your machine
|
||||
- **Setup**: Point to `index.js` in your config
|
||||
- **Supported by**: Claude Desktop, GitHub Copilot (via extensions), custom clients
|
||||
|
||||
### 2. Remote (HTTP/SSE) - **Future-ready**
|
||||
### 2. Remote (HTTP/SSE + Streamable HTTP) - **✨ NOW WIDELY SUPPORTED!**
|
||||
|
||||
- **How it works**: AI tool connects to deployed server via HTTPS
|
||||
- **Pros**: No local setup, access from anywhere, shared deployment
|
||||
- **Cons**: Limited client support currently, network latency
|
||||
- **Pros**: No local setup, access from anywhere, shared deployment, multi-user
|
||||
- **Cons**: Network latency (minimal), requires internet connection
|
||||
- **Setup**: Point to `https://hpr-knowledge-base.onrender.com/sse`
|
||||
- **Supported by**: Claude Desktop (Pro/Team/Enterprise), ChatGPT (all paid plans), custom clients
|
||||
- **Note**: Some clients support newer Streamable HTTP protocol (superior to SSE)
|
||||
|
||||
---
|
||||
|
||||
## Claude Desktop
|
||||
|
||||
### Status: ✅ Supported (Stdio only)
|
||||
### Status: ✅ Fully Supported (Both Stdio and Remote HTTP/SSE)
|
||||
|
||||
Claude Desktop currently **only supports local stdio connections**. Remote HTTP/SSE support may be added in future versions.
|
||||
**Major Update (June 2025)**: Claude Desktop now supports **remote MCP servers** via HTTP/SSE and Streamable HTTP!
|
||||
|
||||
**Availability**:
|
||||
- Remote MCP support: Claude Pro, Team, and Enterprise plans (currently in beta)
|
||||
- Local stdio support: All plans including Free
|
||||
|
||||
**Supported Protocols**:
|
||||
- SSE (Server-Sent Events) - Original remote transport
|
||||
- Streamable HTTP - New protocol (superior performance, added July 2025)
|
||||
- OAuth authentication supported for secure remote servers
|
||||
|
||||
### Configuration
|
||||
|
||||
@@ -85,17 +101,21 @@ Claude Desktop currently **only supports local stdio connections**. Remote HTTP/
|
||||
- Look for MCP indicator (usually bottom-left)
|
||||
- Try asking: "Search HPR episodes about Linux"
|
||||
|
||||
**Remote Configuration (Not supported yet)**:
|
||||
**Remote Configuration (✅ NOW SUPPORTED - Pro/Team/Enterprise)**:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"hpr-knowledge-base": {
|
||||
"url": "https://hpr-knowledge-base.onrender.com/sse"
|
||||
"url": "https://hpr-knowledge-base.onrender.com/sse",
|
||||
"transport": "sse"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
*This will show an error: "expected string, received undefined" because Claude Desktop requires the `command` field.*
|
||||
|
||||
**Note**: Remote MCP support requires Claude Pro, Team, or Enterprise plan. Free plan users should use local (stdio) configuration above.
|
||||
|
||||
**Official Documentation**: See [Building Custom Connectors via Remote MCP Servers](https://support.anthropic.com/en/articles/11503834-building-custom-connectors-via-remote-mcp-servers) for more details.
|
||||
|
||||
---
|
||||
|
||||
@@ -163,90 +183,178 @@ curl https://hpr-knowledge-base.onrender.com/health
|
||||
|
||||
## ChatGPT
|
||||
|
||||
### Status: ❌ Not supported
|
||||
### Status: ✅ Supported (Remote HTTP/SSE only - October 2025)
|
||||
|
||||
**Current State**: OpenAI's ChatGPT does not support the Model Context Protocol (MCP) as of January 2025.
|
||||
**Major Update**: OpenAI added full MCP support across ChatGPT in 2025!
|
||||
|
||||
**Alternative Options**:
|
||||
**Timeline**:
|
||||
- **March 2025**: OpenAI officially adopted MCP standard
|
||||
- **September 2025**: Developer mode beta with read/write MCP support
|
||||
- **October 2025**: Full MCP support rolled out to all paid plans
|
||||
|
||||
1. **Use OpenAI API with MCP Client**:
|
||||
- Use a third-party MCP client that supports OpenAI models
|
||||
- Connect that client to this MCP server
|
||||
- Example: [mcp-cli](https://github.com/modelcontextprotocol/cli) (hypothetical)
|
||||
**Availability**:
|
||||
- Pro, Plus, Business, Enterprise, and Education accounts (web only)
|
||||
- Developer mode for Plus and Pro users (beta)
|
||||
|
||||
2. **Wait for Official Support**:
|
||||
- OpenAI may add MCP support in future
|
||||
- Check [OpenAI's documentation](https://platform.openai.com/docs) for updates
|
||||
**Supported Protocols**:
|
||||
- Remote servers only (HTTP/SSE and Streamable HTTP)
|
||||
- **Does NOT support local stdio servers** (different from Claude Desktop)
|
||||
|
||||
3. **Export Data**:
|
||||
- Access the HPR data directly from `hpr_metadata/` and `hpr_transcripts/`
|
||||
- Use custom scripts to query and provide context to ChatGPT
|
||||
**Capabilities**:
|
||||
- Read operations (search, document retrieval) via Deep Research feature
|
||||
- Write operations (updates, triggers) in Developer mode beta
|
||||
- Currently limited compared to Claude's implementation (no local servers, basic UI)
|
||||
|
||||
### Configuration
|
||||
|
||||
**Adding Remote MCP Server to ChatGPT**:
|
||||
|
||||
1. Go to Settings → Connectors (on web ChatGPT)
|
||||
2. Click "Add Connector" or "Add MCP Server"
|
||||
3. Enter server details:
|
||||
- **Name**: HPR Knowledge Base
|
||||
- **URL**: `https://hpr-knowledge-base.onrender.com/sse`
|
||||
- **Type**: Remote MCP Server (SSE)
|
||||
4. Save and enable the connector
|
||||
|
||||
**Developer Mode** (for write operations):
|
||||
1. Go to Settings → Connectors → Advanced
|
||||
2. Enable "Developer mode"
|
||||
3. Add your MCP server as above
|
||||
4. Now you can perform write actions
|
||||
|
||||
**Limitations**:
|
||||
- No local stdio support (must use remote servers)
|
||||
- No MCP server catalog (manual configuration only)
|
||||
- Basic implementation compared to Claude Desktop
|
||||
- Web-only (no desktop app MCP support)
|
||||
|
||||
---
|
||||
|
||||
## GitHub Copilot
|
||||
|
||||
### Status: ❌ Not supported
|
||||
### Status: ✅ Supported (MCP Tools - October 2025)
|
||||
|
||||
**Current State**: GitHub Copilot does not support the Model Context Protocol (MCP) as of January 2025.
|
||||
**Major Update**: GitHub Copilot has rolled out MCP support with Agent Mode in VS Code!
|
||||
|
||||
**Alternative Options**:
|
||||
**Timeline**:
|
||||
- **June 2025**: Remote GitHub MCP Server in public preview
|
||||
- **September 2025**: Deprecation of GitHub App-based Copilot Extensions in favor of MCP
|
||||
- **October 2025**: Agent mode with MCP support rolled out to all VS Code users
|
||||
- **October 17, 2025**: Enhanced MCP support in Copilot CLI with better local server setup
|
||||
- **October 28, 2025**: Per-server allowlist functionality rolling out to IDEs
|
||||
|
||||
1. **Use Copilot Chat Extensions** (if available):
|
||||
- Check if VS Code extensions exist that bridge MCP servers
|
||||
- Not currently available but may be developed
|
||||
**Availability**:
|
||||
- All GitHub Copilot subscribers in VS Code and Visual Studio
|
||||
- Copilot CLI with enhanced MCP support
|
||||
|
||||
2. **Use Local Search Script**:
|
||||
- Create a VS Code task that searches HPR data
|
||||
- Manually copy results into Copilot chat
|
||||
**Important Limitations**:
|
||||
- **MCP Tools**: ✅ Fully supported
|
||||
- **MCP Resources**: ❌ Not yet supported (unlike Claude Desktop)
|
||||
- This means Copilot can call MCP tools but can't directly access MCP resources
|
||||
|
||||
Example task (`.vscode/tasks.json`):
|
||||
### Configuration
|
||||
|
||||
**Adding MCP Server to GitHub Copilot (VS Code)**:
|
||||
|
||||
The exact configuration method varies, but here's the general approach based on October 2025 documentation:
|
||||
|
||||
1. **Enable Agent Mode** in VS Code settings
|
||||
2. **Configure MCP Server** via VS Code settings or config file
|
||||
3. **Allow the Server** using the per-server allowlist (rolling out Oct 28+)
|
||||
|
||||
**For Remote Server** (Recommended):
|
||||
```json
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Search HPR",
|
||||
"type": "shell",
|
||||
"command": "node",
|
||||
"args": [
|
||||
"${workspaceFolder}/knowledge_base/search-cli.js",
|
||||
"${input:query}"
|
||||
]
|
||||
"github.copilot.mcp.servers": {
|
||||
"hpr-knowledge-base": {
|
||||
"url": "https://hpr-knowledge-base.onrender.com/sse",
|
||||
"transport": "sse"
|
||||
}
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"id": "query",
|
||||
"description": "Search query",
|
||||
"type": "promptString"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**For Local Server**:
|
||||
```json
|
||||
{
|
||||
"github.copilot.mcp.servers": {
|
||||
"hpr-knowledge-base": {
|
||||
"command": "node",
|
||||
"args": ["/absolute/path/to/knowledge_base/index.js"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Note**: Configuration format may vary. Refer to official GitHub Copilot documentation for exact syntax as MCP integration is actively being enhanced.
|
||||
|
||||
**Resources**:
|
||||
- [Extending GitHub Copilot Chat with MCP](https://docs.github.com/copilot/customizing-copilot/using-model-context-protocol/extending-copilot-chat-with-mcp)
|
||||
- [GitHub Copilot Changelog](https://github.blog/changelog/)
|
||||
|
||||
---
|
||||
|
||||
## Google Gemini
|
||||
|
||||
### Status: ❌ Not supported
|
||||
### Status: ✅ Supported (Via SDK Integration - April 2025)
|
||||
|
||||
**Current State**: Google Gemini does not support the Model Context Protocol (MCP) as of January 2025.
|
||||
**Major Update**: Google officially announced MCP support for Gemini in April 2025!
|
||||
|
||||
**Alternative Options**:
|
||||
**Timeline**:
|
||||
- **March 31, 2025**: Google CEO Sundar Pichai confirms MCP support plans
|
||||
- **April 2025**: Official MCP compatibility announced for Gemini ecosystem
|
||||
- **2025**: Active integration with Google DeepMind engineers
|
||||
|
||||
1. **Use Gemini API with Custom Integration**:
|
||||
- Query the HPR MCP server via HTTP
|
||||
- Format results for Gemini API
|
||||
- Example in [Custom Integration](#custom-integration) section
|
||||
**Availability**:
|
||||
- MCP integration via Google Gemini SDK
|
||||
- Support for major LLM provider integration (Anthropic, OpenAI, Google Gemini)
|
||||
- Multiple community-built MCP servers for Gemini available
|
||||
|
||||
2. **Wait for Extensions Support**:
|
||||
- Google may add extension/tool support to Gemini
|
||||
- MCP could be integrated when available
|
||||
**Current Status**:
|
||||
- SDK-level integration (not direct UI integration like ChatGPT/Claude)
|
||||
- Requires developer implementation using FastMCP or similar libraries
|
||||
- Can be integrated with Claude Desktop, Cursor, Windsurf, and other MCP clients
|
||||
|
||||
3. **Use Vertex AI** (for enterprises):
|
||||
- Vertex AI may support custom data sources
|
||||
- Load HPR data into Vertex AI knowledge base
|
||||
### Integration Options
|
||||
|
||||
**Option 1: Use Gemini with MCP-Compatible IDE** (Recommended):
|
||||
|
||||
Many IDEs that support MCP can use Gemini as the LLM backend:
|
||||
- Configure HPR MCP server in the IDE
|
||||
- Select Gemini as your LLM
|
||||
- IDE routes MCP tool calls through Gemini
|
||||
|
||||
**Option 2: SDK Integration** (Developers):
|
||||
|
||||
Use FastMCP or Google's Gemini SDK to integrate:
|
||||
```python
|
||||
from google.generativeai import gemini
|
||||
from fastmcp import FastMCP
|
||||
|
||||
# Configure Gemini model
|
||||
model = gemini.GenerativeModel('gemini-2.5-pro')
|
||||
|
||||
# Connect to HPR MCP server
|
||||
mcp = FastMCP(server_url='https://hpr-knowledge-base.onrender.com/sse')
|
||||
|
||||
# Use Gemini with MCP tools
|
||||
response = model.generate_content(
|
||||
"Search HPR for Linux episodes",
|
||||
tools=mcp.get_tools()
|
||||
)
|
||||
```
|
||||
|
||||
**Option 3: Community MCP Servers**:
|
||||
|
||||
Several community-built Gemini MCP servers are available:
|
||||
- [mcp-gemini-server](https://github.com/bsmi021/mcp-gemini-server)
|
||||
- [Gemini MCP Tool](https://lobehub.com/mcp/jamubc-gemini-mcp-tool)
|
||||
- Check [Glama](https://glama.ai/mcp/servers) for more
|
||||
|
||||
**Resources**:
|
||||
- [Google Gemini MCP Integration Guide](https://medium.com/google-cloud/model-context-protocol-mcp-with-google-gemini-llm-a-deep-dive-full-code-ea16e3fac9a3)
|
||||
- [FastMCP with Gemini 2.0](https://www.marktechpost.com/2025/04/21/a-step-by-step-coding-guide-to-defining-custom-model-context-protocol-mcp-server-and-client-tools-with-fastmcp-and-integrating-them-into-google-gemini-2-0s-function%E2%80%91calling-workflow/)
|
||||
|
||||
---
|
||||
|
||||
@@ -555,16 +663,28 @@ As the Model Context Protocol gains adoption:
|
||||
|
||||
---
|
||||
|
||||
## Summary Table
|
||||
## Summary Table (October 2025)
|
||||
|
||||
| AI Tool | MCP Support | Stdio | HTTP/SSE | Notes |
|
||||
|---------|-------------|-------|----------|-------|
|
||||
| **Claude Desktop** | ✅ Yes | ✅ Yes | ❌ No | Official MCP support, stdio only |
|
||||
| **Claude API** | ⚠️ Custom | ✅ Via wrapper | ✅ Via wrapper | Requires custom integration |
|
||||
| **ChatGPT** | ❌ No | ❌ No | ❌ No | No MCP support yet |
|
||||
| **GitHub Copilot** | ❌ No | ❌ No | ❌ No | No MCP support yet |
|
||||
| **Google Gemini** | ❌ No | ❌ No | ❌ No | No MCP support yet |
|
||||
| **Custom MCP Client** | ✅ Yes | ✅ Yes | ✅ Yes | Full support with MCP SDK |
|
||||
| AI Tool | MCP Support | Stdio | HTTP/SSE | Streamable HTTP | Notes |
|
||||
|---------|-------------|-------|----------|-----------------|-------|
|
||||
| **Claude Desktop** | ✅ Full | ✅ Yes (All plans) | ✅ Yes (Pro/Team/Enterprise) | ✅ Yes | Most comprehensive MCP implementation |
|
||||
| **ChatGPT** | ✅ Yes | ❌ No | ✅ Yes (Paid plans) | ✅ Yes | Web only, basic implementation, Developer mode for writes |
|
||||
| **GitHub Copilot** | ⚠️ Partial | ✅ Yes | ✅ Yes | ⚠️ Unknown | MCP Tools supported, Resources not yet supported |
|
||||
| **Google Gemini** | ⚠️ SDK only | ⚠️ Via integration | ⚠️ Via integration | ⚠️ Via integration | Requires SDK integration, no direct UI support |
|
||||
| **Custom MCP Client** | ✅ Full | ✅ Yes | ✅ Yes | ✅ Yes | Full support with MCP SDK |
|
||||
|
||||
**Legend**:
|
||||
- ✅ = Fully supported
|
||||
- ⚠️ = Partially supported or requires additional setup
|
||||
- ❌ = Not supported
|
||||
|
||||
**Key Changes Since January 2025**:
|
||||
- **March 2025**: OpenAI officially adopted MCP
|
||||
- **April 2025**: Google announced Gemini MCP support
|
||||
- **June 2025**: Claude Desktop added remote MCP servers (beta)
|
||||
- **September 2025**: GitHub deprecated Copilot Extensions in favor of MCP
|
||||
- **October 2025**: ChatGPT rolled out full MCP support to all paid plans
|
||||
- **October 2025**: GitHub Copilot Agent Mode with MCP launched to all VS Code users
|
||||
|
||||
---
|
||||
|
||||
@@ -613,6 +733,8 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: January 2025
|
||||
**MCP Version**: 0.1.0
|
||||
**Last Updated**: October 2025
|
||||
**MCP Specification**: 2025-03-26 (with Streamable HTTP extension)
|
||||
**Server Version**: 1.0.0
|
||||
|
||||
**Note**: MCP is rapidly evolving. Check tool-specific documentation for latest configuration details.
|
||||
|
||||
70
README.md
70
README.md
@@ -11,9 +11,11 @@ Hacker Public Radio is a community-driven podcast where hosts contribute content
|
||||
This MCP server provides:
|
||||
|
||||
- **Episode Search**: Search through thousands of HPR episodes by title, summary, tags, or host notes
|
||||
- **Transcript Search**: Full-text search across all episode transcripts
|
||||
- **Fuzzy Matching**: Automatically handles typos and misspellings (e.g., "linx" finds "linux", "pythoon" finds "python")
|
||||
- **Transcript Search**: Full-text search across all episode transcripts with flexible matching modes
|
||||
- **Episode Details**: Get complete information about any episode including transcript and comments
|
||||
- **Host Information**: Look up hosts and see all their contributions
|
||||
- **Fuzzy Matching**: Handles name variations and typos (e.g., "klattu" finds "Klaatu")
|
||||
- **Series Browsing**: Explore mini-series of related episodes
|
||||
- **Statistics**: View overall HPR statistics and recent episodes
|
||||
|
||||
@@ -138,16 +140,29 @@ Get details for episode 16 including transcript and comments
|
||||
|
||||
### 3. `search_transcripts`
|
||||
|
||||
Search through episode transcripts for specific keywords.
|
||||
Search through episode transcripts for phrases or multiple terms with flexible matching.
|
||||
|
||||
**Parameters:**
|
||||
- `query` (string, required): Search query
|
||||
- `limit` (number, optional): Maximum episodes to return (default: 20)
|
||||
- `contextLines` (number, optional): Lines of context around matches (default: 3)
|
||||
- `query` (string, optional): Phrase to search for. Useful for exact-phrase lookups.
|
||||
- `terms` (string[], optional): Explicit list of terms to search for; combine with `matchMode` for logical AND/OR searches.
|
||||
- `matchMode` (`'phrase' | 'any' | 'all'`, optional): How to combine `query`/`terms`. Defaults to `'phrase'`. Use `'any'` to match if any term is present, `'all'` to require every term somewhere in the transcript.
|
||||
- `limit` (number, optional): Maximum episodes to return (default: 20).
|
||||
- `contextLines` (number, optional): Lines of context to include around each match (default: 3).
|
||||
- `hostId` (number, optional): Only return matches for this host ID.
|
||||
- `hostName` (string, optional): Only return matches for hosts whose name includes this value.
|
||||
- `caseSensitive` (boolean, optional): Treat terms as case-sensitive (default: false).
|
||||
- `wholeWord` (boolean, optional): Match whole words only (default: false).
|
||||
- `maxMatchesPerEpisode` (number, optional): Maximum number of excerpts per episode (default: 5).
|
||||
|
||||
**Example:**
|
||||
**Example queries:**
|
||||
```
|
||||
Search transcripts for mentions of "virtual machine"
|
||||
Find transcripts mentioning "virtual machine"
|
||||
```
|
||||
```
|
||||
Find transcripts where klaatu talks about bash or python
|
||||
```
|
||||
```
|
||||
List episodes where host ID 123 mentions "encryption" and "privacy" (require all terms)
|
||||
```
|
||||
|
||||
### 4. `get_host_info`
|
||||
@@ -176,6 +191,45 @@ Get information about a series and all its episodes.
|
||||
Get information about series 4 (Databases series)
|
||||
```
|
||||
|
||||
## Fuzzy Matching
|
||||
|
||||
The server includes intelligent fuzzy matching for episode and host searches to handle typos and misspellings.
|
||||
|
||||
### How It Works
|
||||
|
||||
1. **Exact Match First**: The server always tries exact substring matching first for speed
|
||||
2. **Fuzzy Fallback**: If no exact matches are found, it falls back to fuzzy matching using Levenshtein distance
|
||||
3. **Match Indicators**: Results include indicators showing whether they're exact or fuzzy matches
|
||||
|
||||
### Examples
|
||||
|
||||
**Host Search:**
|
||||
- Query: `"klattu"` → Finds: **Klaatu** *(fuzzy match, distance: 1)*
|
||||
- Query: `"ken"` → Finds: **Ken Fallon** *(exact match)*
|
||||
|
||||
**Episode Search:**
|
||||
- Query: `"pythoon"` → Finds episodes with **python** in the title *(fuzzy match, distance: 1)*
|
||||
- Query: `"linx"` → Finds episodes with **linux** *(may match exactly in summary/tags, or fuzzy in title)*
|
||||
|
||||
### Distance Thresholds
|
||||
|
||||
- **Hosts**: Maximum distance of 2 characters (handles 1-2 typos)
|
||||
- **Episodes**: Maximum distance of 3 characters (more lenient for longer titles)
|
||||
|
||||
### What the AI Agent Sees
|
||||
|
||||
When fuzzy matching is used, results include:
|
||||
- `matchType: 'exact'` or `matchType: 'fuzzy'`
|
||||
- `matchDistance: N` (for fuzzy matches, indicating how many character edits were needed)
|
||||
|
||||
This allows AI agents to provide context to users, such as: *"I found results for 'klaatu' (you typed 'klattu')"*
|
||||
|
||||
### Technical Details
|
||||
|
||||
The fuzzy matching uses the **Levenshtein distance algorithm**, which counts the minimum number of single-character edits (insertions, deletions, substitutions) needed to change one string into another.
|
||||
|
||||
**Note**: Transcript search uses regex-based matching and does not use fuzzy matching, as the flexible regex patterns already handle many variations.
|
||||
|
||||
## Available Resources
|
||||
|
||||
### `hpr://stats`
|
||||
@@ -301,7 +355,7 @@ The Hacker Public Radio content itself is released under various Creative Common
|
||||
|
||||
Contributions are welcome! This server can be extended with:
|
||||
|
||||
- Advanced search features (fuzzy matching, relevance ranking)
|
||||
- Advanced search features (relevance ranking, semantic search)
|
||||
- Tag cloud generation
|
||||
- Episode recommendations
|
||||
- Audio file access
|
||||
|
||||
304
data-loader.js
304
data-loader.js
@@ -5,6 +5,49 @@ import { fileURLToPath } from 'url';
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
function escapeRegExp(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate Levenshtein distance between two strings
|
||||
* Returns the minimum number of single-character edits (insertions, deletions, substitutions)
|
||||
* needed to change one string into the other.
|
||||
*/
|
||||
function levenshteinDistance(a, b) {
|
||||
if (a.length === 0) return b.length;
|
||||
if (b.length === 0) return a.length;
|
||||
|
||||
const matrix = [];
|
||||
|
||||
// Initialize first column
|
||||
for (let i = 0; i <= b.length; i++) {
|
||||
matrix[i] = [i];
|
||||
}
|
||||
|
||||
// Initialize first row
|
||||
for (let j = 0; j <= a.length; j++) {
|
||||
matrix[0][j] = j;
|
||||
}
|
||||
|
||||
// Fill in the rest of the matrix
|
||||
for (let i = 1; i <= b.length; i++) {
|
||||
for (let j = 1; j <= a.length; j++) {
|
||||
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
||||
matrix[i][j] = matrix[i - 1][j - 1];
|
||||
} else {
|
||||
matrix[i][j] = Math.min(
|
||||
matrix[i - 1][j - 1] + 1, // substitution
|
||||
matrix[i][j - 1] + 1, // insertion
|
||||
matrix[i - 1][j] + 1 // deletion
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return matrix[b.length][a.length];
|
||||
}
|
||||
|
||||
class HPRDataLoader {
|
||||
constructor() {
|
||||
this.episodes = [];
|
||||
@@ -131,7 +174,8 @@ class HPRDataLoader {
|
||||
}
|
||||
|
||||
/**
|
||||
* Search episodes by keyword in title, summary, or tags
|
||||
* Search episodes by keyword in title, summary, or tags with fuzzy matching fallback
|
||||
* Returns episodes with matchType indicator ('exact' or 'fuzzy')
|
||||
*/
|
||||
searchEpisodes(query, options = {}) {
|
||||
const {
|
||||
@@ -140,37 +184,78 @@ class HPRDataLoader {
|
||||
seriesId = null,
|
||||
tag = null,
|
||||
fromDate = null,
|
||||
toDate = null
|
||||
toDate = null,
|
||||
maxDistance = 3 // More lenient for longer episode titles
|
||||
} = options;
|
||||
|
||||
const queryLower = query.toLowerCase();
|
||||
|
||||
// Helper to check if episode matches filters (excluding query)
|
||||
const matchesFilters = (ep) => {
|
||||
const matchesHost = !hostId || ep.hostid === hostId;
|
||||
const matchesSeries = seriesId === null || ep.series === seriesId;
|
||||
const matchesTag = !tag || ep.tags.toLowerCase().includes(tag.toLowerCase());
|
||||
const matchesDateRange = (!fromDate || ep.date >= fromDate) &&
|
||||
(!toDate || ep.date <= toDate);
|
||||
return matchesHost && matchesSeries && matchesTag && matchesDateRange;
|
||||
};
|
||||
|
||||
// Try exact substring match first (fast path)
|
||||
let results = this.episodes.filter(ep => {
|
||||
// Basic text search
|
||||
const matchesQuery = !query ||
|
||||
ep.title.toLowerCase().includes(queryLower) ||
|
||||
ep.summary.toLowerCase().includes(queryLower) ||
|
||||
ep.tags.toLowerCase().includes(queryLower) ||
|
||||
ep.notes.toLowerCase().includes(queryLower);
|
||||
|
||||
// Filter by host
|
||||
const matchesHost = !hostId || ep.hostid === hostId;
|
||||
return matchesQuery && matchesFilters(ep);
|
||||
}).map(ep => ({
|
||||
...ep,
|
||||
matchType: 'exact'
|
||||
}));
|
||||
|
||||
// Filter by series
|
||||
const matchesSeries = seriesId === null || ep.series === seriesId;
|
||||
// If no exact matches and we have a query, try fuzzy match on title
|
||||
if (results.length === 0 && query && query.trim().length > 0) {
|
||||
const fuzzyResults = this.episodes
|
||||
.filter(matchesFilters)
|
||||
.map(ep => {
|
||||
// Check if any word in the title is close to the query
|
||||
const titleWords = ep.title.toLowerCase().split(/\s+/);
|
||||
let minDistance = Infinity;
|
||||
|
||||
// Filter by tag
|
||||
const matchesTag = !tag || ep.tags.toLowerCase().includes(tag.toLowerCase());
|
||||
for (const word of titleWords) {
|
||||
const distance = levenshteinDistance(queryLower, word);
|
||||
if (distance < minDistance) {
|
||||
minDistance = distance;
|
||||
}
|
||||
}
|
||||
|
||||
// Filter by date range
|
||||
const matchesDateRange = (!fromDate || ep.date >= fromDate) &&
|
||||
(!toDate || ep.date <= toDate);
|
||||
return {
|
||||
episode: ep,
|
||||
distance: minDistance
|
||||
};
|
||||
})
|
||||
.filter(result => result.distance <= maxDistance)
|
||||
.sort((a, b) => a.distance - b.distance)
|
||||
.map(result => ({
|
||||
...result.episode,
|
||||
matchType: 'fuzzy',
|
||||
matchDistance: result.distance
|
||||
}));
|
||||
|
||||
return matchesQuery && matchesHost && matchesSeries && matchesTag && matchesDateRange;
|
||||
results = fuzzyResults;
|
||||
}
|
||||
|
||||
// Sort by date (newest first), maintaining match quality
|
||||
results.sort((a, b) => {
|
||||
// If both are fuzzy matches, sort by distance first, then date
|
||||
if (a.matchType === 'fuzzy' && b.matchType === 'fuzzy') {
|
||||
const distDiff = (a.matchDistance || 0) - (b.matchDistance || 0);
|
||||
if (distDiff !== 0) return distDiff;
|
||||
}
|
||||
return b.date.localeCompare(a.date);
|
||||
});
|
||||
|
||||
// Sort by date (newest first)
|
||||
results.sort((a, b) => b.date.localeCompare(a.date));
|
||||
|
||||
return results.slice(0, limit);
|
||||
}
|
||||
|
||||
@@ -178,55 +263,196 @@ class HPRDataLoader {
|
||||
* Search transcripts by keyword
|
||||
*/
|
||||
searchTranscripts(query, options = {}) {
|
||||
const { limit = 20, contextLines = 3 } = options;
|
||||
const queryLower = query.toLowerCase();
|
||||
const {
|
||||
limit = 20,
|
||||
contextLines = 3,
|
||||
terms = [],
|
||||
matchMode = 'auto',
|
||||
hostId = null,
|
||||
hostName = null,
|
||||
caseSensitive = false,
|
||||
wholeWord = false,
|
||||
maxMatchesPerEpisode = 5,
|
||||
} = options;
|
||||
|
||||
const resolvedHostIds = new Set();
|
||||
if (hostId) {
|
||||
resolvedHostIds.add(Number(hostId));
|
||||
}
|
||||
if (hostName) {
|
||||
const hostMatches = this.searchHosts(hostName);
|
||||
hostMatches.forEach(host => resolvedHostIds.add(host.hostid));
|
||||
}
|
||||
const filterByHost = resolvedHostIds.size > 0;
|
||||
|
||||
const explicitTerms = Array.isArray(terms)
|
||||
? terms.map(t => (t ?? '').toString().trim()).filter(Boolean)
|
||||
: [];
|
||||
|
||||
const splitQueryTerms = (matchMode === 'any' || matchMode === 'all')
|
||||
? (query || '')
|
||||
.split(/[|,;\n]/)
|
||||
.map(part => part.trim())
|
||||
.filter(Boolean)
|
||||
: [];
|
||||
|
||||
const hasQuery = typeof query === 'string' && query.trim().length > 0;
|
||||
|
||||
let searchTerms = explicitTerms.length > 0 ? explicitTerms : splitQueryTerms;
|
||||
if (searchTerms.length === 0 && hasQuery) {
|
||||
searchTerms = [query.trim()];
|
||||
}
|
||||
|
||||
let resolvedMatchMode = matchMode;
|
||||
if (!['any', 'all', 'phrase'].includes(resolvedMatchMode)) {
|
||||
resolvedMatchMode = searchTerms.length > 1 ? 'any' : 'phrase';
|
||||
}
|
||||
|
||||
const effectiveTerms = resolvedMatchMode === 'phrase'
|
||||
? [(hasQuery ? query.trim() : searchTerms[0] || '')].filter(Boolean)
|
||||
: searchTerms;
|
||||
|
||||
if (effectiveTerms.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const regexFlags = caseSensitive ? 'g' : 'gi';
|
||||
const matchers = effectiveTerms.map(term => {
|
||||
if (!term) return null;
|
||||
const escaped = escapeRegExp(term);
|
||||
const pattern = wholeWord ? `\\b${escaped}\\b` : escaped;
|
||||
try {
|
||||
return {
|
||||
term,
|
||||
regex: new RegExp(pattern, regexFlags),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error(`Invalid search pattern for term "${term}":`, error.message);
|
||||
return null;
|
||||
}
|
||||
}).filter(Boolean);
|
||||
|
||||
if (matchers.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const results = [];
|
||||
|
||||
for (const [episodeId, transcript] of this.transcripts) {
|
||||
const lines = transcript.split('\n');
|
||||
const matches = [];
|
||||
if (results.length >= limit) break;
|
||||
|
||||
// Find all matching lines
|
||||
lines.forEach((line, index) => {
|
||||
if (line.toLowerCase().includes(queryLower)) {
|
||||
// Get context around the match
|
||||
const episode = this.getEpisode(episodeId);
|
||||
if (!episode) continue;
|
||||
|
||||
if (filterByHost && !resolvedHostIds.has(episode.hostid)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const lines = transcript.split(/\r?\n/);
|
||||
const matches = [];
|
||||
const matchedTerms = new Set();
|
||||
const termHitCounts = new Map();
|
||||
let truncated = false;
|
||||
|
||||
for (let index = 0; index < lines.length; index++) {
|
||||
const line = lines[index];
|
||||
const matchedOnLine = [];
|
||||
|
||||
for (const matcher of matchers) {
|
||||
matcher.regex.lastIndex = 0;
|
||||
if (matcher.regex.test(line)) {
|
||||
matchedOnLine.push(matcher.term);
|
||||
matchedTerms.add(matcher.term);
|
||||
termHitCounts.set(matcher.term, (termHitCounts.get(matcher.term) || 0) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (matchedOnLine.length > 0) {
|
||||
const start = Math.max(0, index - contextLines);
|
||||
const end = Math.min(lines.length, index + contextLines + 1);
|
||||
const context = lines.slice(start, end).join('\n');
|
||||
|
||||
matches.push({
|
||||
lineNumber: index + 1,
|
||||
line: line.trim(),
|
||||
context: context
|
||||
terms: [...new Set(matchedOnLine)],
|
||||
context,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (matches.length > 0) {
|
||||
const episode = this.getEpisode(episodeId);
|
||||
if (episode) {
|
||||
if (matches.length >= maxMatchesPerEpisode) {
|
||||
truncated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.length === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (resolvedMatchMode === 'all' && matchedTerms.size < matchers.length) {
|
||||
continue;
|
||||
}
|
||||
|
||||
results.push({
|
||||
episode,
|
||||
matches: matches.slice(0, 5) // Limit matches per episode
|
||||
matches,
|
||||
matchSummary: {
|
||||
matchMode: resolvedMatchMode,
|
||||
matchedTerms: [...matchedTerms],
|
||||
totalMatches: matches.length,
|
||||
termHitCounts: Object.fromEntries(termHitCounts),
|
||||
truncated,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (results.length >= limit) break;
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Search hosts by name or email
|
||||
* Search hosts by name or email with fuzzy matching fallback
|
||||
* Returns hosts with matchType indicator ('exact' or 'fuzzy')
|
||||
*/
|
||||
searchHosts(query) {
|
||||
searchHosts(query, options = {}) {
|
||||
const { maxDistance = 2 } = options;
|
||||
const queryLower = query.toLowerCase();
|
||||
return this.hosts.filter(host =>
|
||||
|
||||
// Try exact substring match first (fast path)
|
||||
const exactMatches = this.hosts.filter(host =>
|
||||
host.host.toLowerCase().includes(queryLower) ||
|
||||
host.email.toLowerCase().includes(queryLower)
|
||||
);
|
||||
).map(host => ({
|
||||
...host,
|
||||
matchType: 'exact'
|
||||
}));
|
||||
|
||||
if (exactMatches.length > 0) {
|
||||
return exactMatches;
|
||||
}
|
||||
|
||||
// Fall back to fuzzy match if no exact matches
|
||||
const fuzzyMatches = this.hosts
|
||||
.map(host => {
|
||||
const hostLower = host.host.toLowerCase();
|
||||
const emailLower = host.email.toLowerCase();
|
||||
const hostDistance = levenshteinDistance(queryLower, hostLower);
|
||||
const emailDistance = levenshteinDistance(queryLower, emailLower);
|
||||
const minDistance = Math.min(hostDistance, emailDistance);
|
||||
|
||||
return {
|
||||
host,
|
||||
distance: minDistance
|
||||
};
|
||||
})
|
||||
.filter(result => result.distance <= maxDistance)
|
||||
.sort((a, b) => a.distance - b.distance)
|
||||
.map(result => ({
|
||||
...result.host,
|
||||
matchType: 'fuzzy',
|
||||
matchDistance: result.distance
|
||||
}));
|
||||
|
||||
return fuzzyMatches;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
[
|
||||
{"id":1,"eps_id":8,"comment_timestamp":"2013-12-20 03:27:16","comment_author_name":"redanthrax","comment_title":"this is dumb","comment_text":"who even made this","last_changed":"2025-02-24 14:50:53"},
|
||||
[{"id":1,"eps_id":8,"comment_timestamp":"2013-12-20 03:27:16","comment_author_name":"redanthrax","comment_title":"this is dumb","comment_text":"who even made this","last_changed":"2025-02-24 14:50:53"},
|
||||
{"id":2,"eps_id":8,"comment_timestamp":"2013-12-21 01:08:02","comment_author_name":"Ken Fallon","comment_title":"Actually, no","comment_text":"Hi redanthrax,\n\nAnd the show was by Mubix and Redanthrax. If that is you then I assume you are being vicious. If not you are been less than constructive, for no other reason than someone is using the same handle as yourself. \n\nKen.","last_changed":"2025-02-24 14:50:53"},
|
||||
{"id":3,"eps_id":21,"comment_timestamp":"2011-10-16 16:36:01","comment_author_name":"Ken Fallon","comment_title":"Found it !!!","comment_text":"After months of trawling through old episodes of lottalinuxlinks.com for Daves howto on festival. I found it here in our own back yard\n","last_changed":"2025-02-24 14:50:53"},
|
||||
{"id":4,"eps_id":23,"comment_timestamp":"2011-08-25 19:41:48","comment_author_name":"jogos de motos","comment_title":"","comment_text":"To add the new PPA open the Ubuntu Program Middle, go to the Edit Menu, and select Program Sources. Access the Other Program Tab in the Program Sources Window and add the first of the PPAs shown below (outlined in red). The second PPA will be automatically added to your technique.\n\nHave you been wanting an simple way to set KeePass Password Safe two up on your Linux systems? Then get prepared to rejoice. Now you can get that KeePass goodness on your Ubuntu or Debian-Based Linux technique using a PPA, the Command Line, or manual installation files.","last_changed":"2025-02-24 14:50:53"},
|
||||
@@ -4460,4 +4459,31 @@
|
||||
{"id":4483,"eps_id":4489,"comment_timestamp":"2025-10-22 03:22:17","comment_author_name":"brian-in-ohio","comment_title":"Don't burn out","comment_text":"I loved this show! The poem about getting fiber at the vacation spot was well done. I hope that Kirbotica doesn't do to many at first and run out of steam. That being said, looking forward to the next show","last_changed":"2025-10-22 04:48:31"},
|
||||
{"id":4484,"eps_id":4453,"comment_timestamp":"2025-10-22 09:28:41","comment_author_name":"Beni","comment_title":"Link to the mentioned IPv6 talk on EuroBSDcon 2025","comment_text":"Hey all, some of you requested a link to the recording of my talk at EuroBSDcon about setting up an OpenBSD router for an IPv6 only network. Here is the link to the correct time in the video (sorry, couldn't find a source other than YouTube)\n\nhttps://youtu.be/wEM-E-IJ6sY?t=7454","last_changed":"2025-10-22 11:57:25"},
|
||||
{"id":4485,"eps_id":4493,"comment_timestamp":"2025-10-22 10:24:18","comment_author_name":"folky","comment_title":"Hefeweizen is best ;-) ","comment_text":"Coming from the northeastern part of Germany from the beginning, that means former GDR, I believed I hated beer because we only had Pilsner- and Lager-styled and they all aren't in my taste in any way - just disgusting and repulsive bitter. But then after the reunification someone from the southern part of Germany introduced me to Hefeweizen, and wow, beer CAN taste good.\n\nErdinger is good, but when you sometime get the chance, you should test Schöfferhofer, Störterbecker or the dark variant of Franziskaner.\nAnd, don't believe, they all come from Bavaria! Two of those I named aren't from the home of Oktoberfest.","last_changed":"2025-10-22 11:57:57"},
|
||||
{"id":4486,"eps_id":4493,"comment_timestamp":"2025-10-22 12:55:24","comment_author_name":"paulj","comment_title":"Great Episode!","comment_text":"Thanks gents - great show!\nSome comments:\n- Franziskaner is definitely a Hefeweizenbier. \n- Did you chill them? They should be drunk from the fridge (or if draft they are served chilled). Great for a summer evening in the Biergarten!\nIn my opinion, all german weizenbiers of this type are hefeweizen. Based on my experience in Germany (my wife is German and comes from the south), if you ask for a Weizenbier, you will get a helleshefeweizen beer. Often you will get beer from a local brewery, and not from the big brewers. That beer doesn't make it to the UK (sadly).\nThere are actually three types of hefeweizen:\n- Dunkel (dark)\n- Helles (light - what you have both drunk)\n- Krystall - this is Helleshefeweizen with the yeast and wheat proteins filtered out. Often drunk with a slice of lemon in the top.\nI agree with your comment about not mixing it- I have had many great evenings treating these as a session beer!\n\nLooking forward to the next episode!","last_changed":"2025-10-22 18:00:30"}]
|
||||
{"id":4486,"eps_id":4493,"comment_timestamp":"2025-10-22 12:55:24","comment_author_name":"paulj","comment_title":"Great Episode!","comment_text":"Thanks gents - great show!\nSome comments:\n- Franziskaner is definitely a Hefeweizenbier. \n- Did you chill them? They should be drunk from the fridge (or if draft they are served chilled). Great for a summer evening in the Biergarten!\nIn my opinion, all german weizenbiers of this type are hefeweizen. Based on my experience in Germany (my wife is German and comes from the south), if you ask for a Weizenbier, you will get a helleshefeweizen beer. Often you will get beer from a local brewery, and not from the big brewers. That beer doesn't make it to the UK (sadly).\nThere are actually three types of hefeweizen:\n- Dunkel (dark)\n- Helles (light - what you have both drunk)\n- Krystall - this is Helleshefeweizen with the yeast and wheat proteins filtered out. Often drunk with a slice of lemon in the top.\nI agree with your comment about not mixing it- I have had many great evenings treating these as a session beer!\n\nLooking forward to the next episode!","last_changed":"2025-10-22 18:00:30"},
|
||||
{"id":4487,"eps_id":4493,"comment_timestamp":"2025-10-23 13:20:01","comment_author_name":"Claudio","comment_title":"Great Episode I Can Relate To!","comment_text":"Thoroughly enjoyed this episode because I'm familiar with Franziskaner and Erdinger beers. We have a store here in Miami, FL called Total Wine which carries a wide variety of alcoholic drinks as well as non-alcoholic beverages for using in cocktails.\n\nTotal Wine is my go-to place for getting German beers like Fraziskaner and Erdinger, as well as a variety of Warsteiner beers. To me, Warsteiner seems to be the most mass-produced beer, and the first one I've ever tried of the German beers, as it's the only one I've found in one of the supermarkets here (usually the pilsner). Total Wine will carry a variety pack of Warsteiner that includes the pilsner, the Dunkel, and the \"Brewer's Gold,\" all of which are pretty good.\n\nHowever, I find Erdinger and Franziskaner to taste much better, and you both nailed it on the head with Fraziskaner. I've only had Erdinger Dunkel because I do like the darker beers, and I find it to be my favorite of the two. Very eager to try this Erdinger that was reviewed, so I'll be paying Total Wine a visit soon.\n\nBTW, I also chuckled when you poured the Erdinger and described it. Just from the sound I knew what you were getting!","last_changed":"2025-10-23 13:55:36"},
|
||||
{"id":4488,"eps_id":4493,"comment_timestamp":"2025-10-26 18:51:27","comment_author_name":"Gan Ainm","comment_title":"Scottish-Bavarian IPW","comment_text":"About three years ago I tasted a fine bottle of Brewdog (Scotland) vs. Weihenstephan (Bavaria) India Pale Weizen.\n\nThat was a real taste bomb! Wheatbeer sweetness with hoppy bitterness! Perfect collaboration!","last_changed":"2025-10-26 19:06:42"},
|
||||
{"id":4489,"eps_id":4491,"comment_timestamp":"2025-10-26 19:46:44","comment_author_name":"Henrik Hemrin","comment_title":"Inspiring","comment_text":"Good interview and inspiring listen to how he use open source tools in particular Krita in his daily work and release the art under Creative common license. ","last_changed":"2025-10-26 20:19:52"},
|
||||
{"id":4490,"eps_id":4496,"comment_timestamp":"2025-10-31 12:50:06","comment_author_name":"candycanearter07","comment_title":"cool show!","comment_text":"I like how this show feels so unscripted, it really feels like a bunch of friends hanging out and its fun","last_changed":"2025-10-31 18:35:37"},
|
||||
{"id":4491,"eps_id":4494,"comment_timestamp":"2025-11-01 11:45:15","comment_author_name":"Archer72","comment_title":"Keyboards use","comment_text":"Hello Antoine,\n\nI have been using FUTO keyboard since you mentioned it in hpr4325 :: Two Software I use- Futo Keyboard and Inoreader, and enjoy using it as offline Speech to text.\n\n- Archer72","last_changed":"2025-11-01 14:14:47"},
|
||||
{"id":4492,"eps_id":4501,"comment_timestamp":"2025-11-01 12:10:32","comment_author_name":"Archer72","comment_title":"If you do something cool...","comment_text":"All,\n\nIf you do something cool, and no one in the house gets it, do an episode. \n\nThis is 100% description of most anything I do. \n\nThere are only 4501 shows at the time of this comment, with ideas to explore if you need help with a topic. *wink*","last_changed":"2025-11-01 14:15:18"},
|
||||
{"id":4493,"eps_id":4485,"comment_timestamp":"2025-11-01 12:23:06","comment_author_name":"Archer72","comment_title":"candycanearter07 and Sayaci: Thanks!","comment_text":"Thanks!\n\nIt is always a good feeling when a show helps a couple of people. *smile* \n\nThe comments happened to be close to my birthday, so that helped.\n\n- Archer72","last_changed":"2025-11-01 14:15:47"},
|
||||
{"id":4494,"eps_id":3753,"comment_timestamp":"2025-11-03 14:11:06","comment_author_name":"Ken Fallon","comment_title":"Just linked to this","comment_text":"Thanks Dave for this example.\n\nJust linked to it in work, and found I was no longer embarrassed by the look of the site.","last_changed":"2025-11-03 14:36:34"},
|
||||
{"id":4495,"eps_id":4491,"comment_timestamp":"2025-11-04 04:02:04","comment_author_name":"dnt","comment_title":"Great interview","comment_text":"Revoy is truly an inspiration for us free culture lovers, it's almost too good to be true! A well spent hour and forty minutes!","last_changed":"2025-11-04 06:33:52"},
|
||||
{"id":4496,"eps_id":4505,"comment_timestamp":"2025-11-04 11:44:04","comment_author_name":"folky","comment_title":"Thank you","comment_text":"Thank you very much for your help, Archer72.\nIt works perfectly on LIbrewolf and I would guess on the other browsers in the family too.","last_changed":"2025-11-04 13:27:27"},
|
||||
{"id":4497,"eps_id":4511,"comment_timestamp":"2025-11-05 03:19:39","comment_author_name":"Lee","comment_title":"Errata","comment_text":"1. Sim City was created by Will Wright (Maxis), not Sid Meier, Sid Meier is renowned for the video game Civilization\n2. Inspiration for listening to The Forbidden City actually came from watching the TV drama series Ming Dynasty (2019-2020)\n","last_changed":"2025-11-05 08:51:16"},
|
||||
{"id":4498,"eps_id":4499,"comment_timestamp":"2025-11-05 03:25:06","comment_author_name":"Henrik Hemrin","comment_title":"Good interview pod to learn more about the Librephone project","comment_text":"Free software for phones is very interesting to me. This conversation gives more understanding of the Librephone project after having read news releases earlier. ","last_changed":"2025-11-05 08:51:30"},
|
||||
{"id":4499,"eps_id":3753,"comment_timestamp":"2025-11-05 12:38:30","comment_author_name":"Dave Morriss","comment_title":"Thanks Ken","comment_text":"I was surprised to see this show being referenced again after three years or so.\n\nI had fun preparing this (since there's a bit of opinion in it _and_ a script - an ideal combination in my view). I'm glad if anyone is able to get some benefit from it :-)\n\nThe site is looking magnificent BTW ;-)","last_changed":"2025-11-05 14:29:05"},
|
||||
{"id":4500,"eps_id":4501,"comment_timestamp":"2025-11-05 12:44:08","comment_author_name":"candycanearter07","comment_title":"Re: If you do something cool...","comment_text":"A lot of what I do falls into that, but its also too small to make into a proper episode :P","last_changed":"2025-11-05 14:29:29"},
|
||||
{"id":4501,"eps_id":4485,"comment_timestamp":"2025-11-05 12:48:20","comment_author_name":"candycanearter07","comment_title":"Re: candycanearter07 and Sayaci: Thanks!","comment_text":"glad to have made u happier on your birthday :D (or well early birthday)","last_changed":"2025-11-05 14:29:43"},
|
||||
{"id":4502,"eps_id":4501,"comment_timestamp":"2025-11-08 10:34:06","comment_author_name":"Archer72","comment_title":"Tip from operat0r","comment_text":"I have hear Operat0r record several tips at one sitting, that he has gathered over a few months time (or more?).\n\nIt make for some interesting listening. :)","last_changed":"2025-11-08 10:54:56"},
|
||||
{"id":4503,"eps_id":4493,"comment_timestamp":"2025-11-10 02:50:03","comment_author_name":"TA Spinner","comment_title":"Great episode, I look forward to more!","comment_text":"I thought this was good coverage of my current favorite style. I too, and constrained by what I can find in America, but sampled and loved both Erdinger and Franziskaner while living in Germany. They may be mass produced, but they are good. I look forward to reviews of new brews to explore.","last_changed":"2025-11-10 05:52:12"},
|
||||
{"id":4504,"eps_id":4503,"comment_timestamp":"2025-11-10 13:30:48","comment_author_name":"interesting, but...","comment_title":"candycanearter07","comment_text":"I think it's really cool that you can generate OTP's locally, and I'm a bit annoyed that companies don't let you do this in the first place, but I think it would be a bit impractical for me to actually use daily, since you'd need to figure out the secret code for each website individually, as well as which sha version they're using.\n\n Also, theres a pretty easy way to automatically copy the code to the clipboard, its something I use a lot in my own scripts:\n\nprintf $CODE | xclip -selection c\n\n(using printf to remove the leading newline)","last_changed":"2025-11-10 14:05:20"},
|
||||
{"id":4505,"eps_id":4498,"comment_timestamp":"2025-11-10 13:42:17","comment_author_name":"candycanearter07","comment_title":"cheers for taking the plunge!","comment_text":"congrats on trying out linux! its way more fun over here :). \n\nfor the multiple browsers thing, i found using two different profiles and creating a seperate desktop link for each is useful?","last_changed":"2025-11-10 14:05:43"},
|
||||
{"id":4506,"eps_id":4506,"comment_timestamp":"2025-11-11 02:25:48","comment_author_name":"L'andrew","comment_title":"A blast from the p-code past...","comment_text":"This was a fun blast from the past for me! I remember working on several projects using LSI-11 UCSD Pascal systems in our computer science laboratory back at university. Thanks for the trip down memory lane!","last_changed":"2025-11-11 06:06:44"},
|
||||
{"id":4507,"eps_id":4503,"comment_timestamp":"2025-11-11 23:30:43","comment_author_name":"Whiskeyjack","comment_title":"One time passwords using oathtool","comment_text":"@candycanearter07 - Using oathtool OTP is no different from using a special smartphone OTP app. Both follow the Oath standard.\n\nThe reason that I started using oathtool was because Github and Pypi made OTPs mandatory. After putting it off as long as possible I was determined to find a solution that didn't involve giving either of them a phone number to send an SMS to or to install their OTP app. I thought there must be a way to do this with a free software application on my PC, and there was. It just took a bit of digging to figure it out. \n\nAny website that uses an Oath standard OTP will have some sort of key that they need to give to you, typically by going to a web page where you generate one after logging in. It's not any more difficult than say changing your password and you only have to do this once for each site.\n\nThe main issue is as said, Github and Pypi at least did not document their Oath options, or at least they didn't when I started using it a while ago. \n\nAnyone who wants to use oathtool for Github or Pypi though now knows what options are needed after having listened to this podcast episode.\n","last_changed":"2025-11-12 08:10:22"},
|
||||
{"id":4508,"eps_id":4506,"comment_timestamp":"2025-11-17 16:34:37","comment_author_name":"brian-in-ohio","comment_title":"good show","comment_text":"I enjoyed this show, hope Whiskeyjack can walk us down oher parts of memory lane.","last_changed":"2025-11-17 16:42:25"},
|
||||
{"id":4509,"eps_id":4397,"comment_timestamp":"2025-11-18 19:04:43","comment_author_name":"Ken Fallon","comment_title":"I knew this would come in handy","comment_text":"I ran into two issues using it which `qrcp --help` allowed me to get around.\n\nThe first was which of the many network interfaces to bind to, `--bind 192.168.0.123`, and the next was to fix a port so I could open a firewall port and not have to change it for the next files `--port 43210`\n\nDon't forget to then open a port on your firewall, `43210` in my example.\n","last_changed":"2025-11-18 19:21:17"},
|
||||
{"id":4510,"eps_id":4509,"comment_timestamp":"2025-11-19 18:34:36","comment_author_name":"ClaudioM","comment_title":"Both are Tasty!","comment_text":"Thanks again for this episode and this Beer Garden series, fellas! Both of these I've had here in the USA, and they are pretty good. My eldest son likes the Schöfferhofer and I'm quite fond of the Edringer Dunkel. I only get the Dunkel every once in a while as it's not something I'd be drinking consistently. Just something to enjoy every now and then when I'm feeling a little dark. ;-)","last_changed":"2025-11-19 19:46:10"},
|
||||
{"id":4511,"eps_id":4397,"comment_timestamp":"2025-11-19 20:53:10","comment_author_name":"candycanearter07","comment_title":"issues with qrcp...","comment_text":"I remember having a lot of issues with qrcp on corporate networks where like it doesnt let you connect to other devices directly, i'd personally reccomend something like 0x0.st over qrcp for a lot of cases as long as you know how curl works","last_changed":"2025-11-19 21:10:06"},
|
||||
{"id":4512,"eps_id":4397,"comment_timestamp":"2025-11-20 11:35:22","comment_author_name":"Ken Fallon","comment_title":"qrcp is private 0x0.st is not","comment_text":"Even if you trust what people say on their sites about keeping it private, it still is putting your files into the public domain in some form or another. The site can be compromised, or can be ordered to disclose your information by the local authorities.\n\nEven if that were the case that this did not occur, on a corporate network it's also very likely our out and inbound traffic is also been analyzed. \n\nUsing qrcp keeps it local, and that means transfer is as fast as it can be, but it also means it never goes out.","last_changed":"2025-11-20 11:37:08"},
|
||||
{"id":4513,"eps_id":4506,"comment_timestamp":"2025-11-21 18:21:23","comment_author_name":"Trixter","comment_title":"This was very well done","comment_text":"I really enjoyed this dive into the UCSD P-System/Pascal. I have always wanted to know what it was like from someone who actually used it, and this episode delivered on that many times over. I hope WhiskeyJack does more episodes.","last_changed":"2025-11-21 20:02:33"}]
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,4 @@
|
||||
[
|
||||
{"hostid":1,"host":"droops","email":"droops.nospam@nospam.gmail.com","profile":"nomicon.info","license":"CC-BY-NC-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"droops"},
|
||||
[{"hostid":1,"host":"droops","email":"droops.nospam@nospam.gmail.com","profile":"nomicon.info","license":"CC-BY-NC-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"droops"},
|
||||
{"hostid":2,"host":"Kn1ghtl0rd","email":"kn1ghtl0rd.nospam@nospam.hotmail.com","profile":"https://www.kn1ghtl0rd.org","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Kn1ghtl0rd"},
|
||||
{"hostid":3,"host":"dosman","email":"dosman.nospam@nospam.packetsniffers.org","profile":"packetsniffers.org","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"dosman"},
|
||||
{"hostid":4,"host":"Phizone","email":"phizone.nospam@nospam.infonomicon.org","profile":"https://infonomicon.org","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Phizone"},
|
||||
@@ -301,7 +300,7 @@
|
||||
{"hostid":314,"host":"thelovebug","email":"hpr.nospam@nospam.thelovebug.org","profile":"<p><strong>Professionally:</strong> works in InfoSec and AppSec.</p><p><strong>Spare time: </strong>podcasting, amateur radio, 3D printing, musician.\n<strong>Lives: </strong>South Yorkshire in the UK.\n</p><p>\n</p><p><strong>Mastodon: </strong><a href=\"https://mastodon.me.uk/@thelovebug\">@thelovebug@mastodon.me.uk</a>\n<strong>Telegram: </strong><a href=\"https://telegram.me/thelovebug\">thelovebug</a></p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"TheLoveBug"},
|
||||
{"hostid":315,"host":"Clinton Roy","email":"clinton.roy.nospam@nospam.gmail.com","profile":"<p>Clinton Roy is an Open Source engineer.</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Clinton Roy"},
|
||||
{"hostid":317,"host":"Eric Duhamel","email":"ericxdu23.nospam@nospam.gmail.com","profile":"<p>\nI'm a 30-something programming/computer hobbyist in Southern California.\n<br />\nSee more on my webpage <a href=\"https://www.noxbanners.net/\">https://www.noxbanners.net/</a> and follow me on <a href=\"https://loadaverage.org/ericxdu23\">https://loadaverage.org/ericxdu23</a>\n</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Eric Duhamel"},
|
||||
{"hostid":318,"host":"Archer72","email":"ricemark20.nospam@nospam.gmail.com","profile":"I got started in Linux in 2002, with a set of Mandriva KDE CD's and have enjoyed using variations ever since. \n\nCurrently switched to Debian 13 testing.\n\nContact:\n\n • archer72 on IRC on libera.chat at #oggcastplanet\n • Mastodon at @archer72@mastodon.sdf.org\n • Telegram at @archer7201","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"Archer Seventy Two"},
|
||||
{"hostid":318,"host":"Archer72","email":"ricemark20.nospam@nospam.gmail.com","profile":"I got started in Linux in 2002, with a set of Mandriva KDE CD's and have enjoyed using variations ever since. \n\nCurrently switched to Debian 13 testing.\n\nContact:\n\n • archer72 on IRC on libera.chat at #oggcastplanet\n\n • Mastodon at @archer72@mastodon.sdf.org\n\n • Telegram at @archer7201","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"Archer Seventy Two"},
|
||||
{"hostid":319,"host":"OnlyHalfTheTime","email":"onlyhalfthetime.nospam@nospam.gmail.com","profile":"<p>The Reluctant Windows Admin</a>","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"OnlyHalfTheTime"},
|
||||
{"hostid":320,"host":"The Linux Experiment","email":"editor.nospam@nospam.thelinuxexperiment.com","profile":"<p>Help us take The Linux Experiment to the next level!</p>","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"The Linux Experiment"},
|
||||
{"hostid":322,"host":"Cov","email":"cov.nospam@nospam.mykolab.com","profile":"<p>\nChristopher \"Cov\" Covington is a fan of libre projects, currently living in North Carolina, United States of America. His personal site is <a href=\"https://covlibre.net/\">https://covlibre.net/</a>\n</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Cov"},
|
||||
@@ -360,7 +359,7 @@
|
||||
{"hostid":379,"host":"mightbemike","email":"mightbemike.nospam@nospam.protonmail.com","profile":"<p>Jack of all trades, master of none. Usually discuss computer stuff, hopefully in a way that is accessible and informative.</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"might be mike"},
|
||||
{"hostid":380,"host":"Carl","email":"online.nospam@nospam.chave.us","profile":"","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Carl"},
|
||||
{"hostid":381,"host":"Nihilazo","email":"nico.nospam@nospam.itwont.work","profile":"<p>I'm just a person. I blog @ <a href=\"itwont.work\">https://itwont.work/</a></p>","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"Niel azo"},
|
||||
{"hostid":382,"host":"Daniel Persson","email":"mailto.woden.nospam@nospam.gmail.com","profile":"<p> I'm a developer that loves creating code, talking about different solutions, and learning new things. </p> <p> During the workday, I create systems to extract text from media assets, structure them, and produce different results to make the media accessible to everyone. </p> <p> In my time off, I like to create small prototypes and try different techniques and libraries. </p> <p> I'm also creating some Youtube videos to inspire and help developers to improve their skills. Not that I know everything, but we learn by teaching. </p> <p> Other than these hobbies, I run some open-source projects. To mention a few, I developed the Android SQRL client and the Wordpress plugin for SQRL. I've also contributed to projects creating braille text, epubs, and PDFs as these subjects are close to my daily work. I usually say that I know too much about the PDF file structure as I've worked six years on a tool to extract text from PDFs. </p>","license":"CC-BY-SA","local_image":0,"gpg":"<p>I’m a developer that loves creating code, talking about different solutions, and learning new things.</p>\n<p>During the workday, I create systems to extract text from media assets, structure them, and produce different results to make the media accessible to everyone.</p>\n<p>In my time off, I like to create small prototypes and try different techniques and libraries.</p>\n<p>I’m also creating some Youtube videos to inspire and help developers to improve their skills. Not that I know everything, but we learn by teaching.</p>\n<p>Other than these hobbies, I run some open-source projects. To mention a few, I developed the Android SQRL client and the Wordpress plugin for SQRL. I’ve also contributed to projects creating braille text, epubs, and PDFs as these subjects are close to my daily work. I usually say that I know too much about the PDF file structure as I’ve worked six years on a tool to extract text from PDFs.</p>\n","valid":1,"espeak_name":"Daniel Persson"},
|
||||
{"hostid":382,"host":"Daniel Persson","email":"mailto.woden.nospam@nospam.gmail.com","profile":"<p> I'm a developer that loves creating code, talking about different solutions, and learning new things. </p><p> </p><p> During the workday, I create systems to extract text from media assets, structure them, and produce different results to make the media accessible to everyone. </p><p> </p><p> In my time off, I like to create small prototypes and try different techniques and libraries. </p><p> </p><p> I'm also creating some Youtube videos to inspire and help developers to improve their skills. Not that I know everything, but we learn by teaching. </p><p> </p><p> Other than these hobbies, I run some open-source projects. To mention a few, I developed the Android SQRL client and the Wordpress plugin for SQRL. I've also contributed to projects creating braille text, epubs, and PDFs as these subjects are close to my daily work. I usually say that I know too much about the PDF file structure as I've worked six years on a tool to extract text from PDFs. </p>","license":"CC-BY-SA","local_image":0,"gpg":"<p>I’m a developer that loves creating code, talking about different solutions, and learning new things.</p>\n<p>During the workday, I create systems to extract text from media assets, structure them, and produce different results to make the media accessible to everyone.</p>\n<p>In my time off, I like to create small prototypes and try different techniques and libraries.</p>\n<p>I’m also creating some Youtube videos to inspire and help developers to improve their skills. Not that I know everything, but we learn by teaching.</p>\n<p>Other than these hobbies, I run some open-source projects. To mention a few, I developed the Android SQRL client and the Wordpress plugin for SQRL. I’ve also contributed to projects creating braille text, epubs, and PDFs as these subjects are close to my daily work. I usually say that I know too much about the PDF file structure as I’ve worked six years on a tool to extract text from PDFs.</p>\n","valid":1,"espeak_name":"Daniel Persson"},
|
||||
{"hostid":383,"host":"Paul Quirk","email":"paul.nospam@nospam.pquirk.com","profile":"<p>I'm a licensed electrician, but my hobbies include open source software and retro computing. After listening to Hacker Public Radio for almost a year, I decided to become a contributor.</p>","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"Paul Quirk"},
|
||||
{"hostid":384,"host":"monochromec","email":"monochromec.nospam@nospam.gmail.com","profile":"<p>\nTwo old wise men talking about free and open source software, life in general and having a bit of fun along the way.\n</p>","license":"CC-BY","local_image":0,"gpg":"","valid":1,"espeak_name":"monochromec"},
|
||||
{"hostid":385,"host":"crvs","email":"carvas.f.nospam@nospam.gmail.com","profile":"","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"c r v s"},
|
||||
@@ -380,7 +379,7 @@
|
||||
{"hostid":399,"host":"dnt","email":"dnt.nospam@nospam.revolto.net","profile":"<ul><li><br></li></ul>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"D. N. T."},
|
||||
{"hostid":401,"host":"Mechatroniac","email":"anarch0re.nospam@nospam.tutanota.com","profile":"<p>\nThe Mechatronics Maniac\n<br />\n<a href=\"https://www.bitchute.com/channel/mechatroniac/\">https://www.bitchute.com/channel/mechatroniac/</a>\n</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Mechatroniac"},
|
||||
{"hostid":402,"host":"takov751","email":"takov751.nospam@nospam.protonmail.com","profile":"<ul>\n<li>Twitter: <a href=\"https://twitter.com/takov751\">@takov751</a></li>\n<li>matrix: <a href=\"https://matrix.to/#/@takov751:matrix.org\">takov751:matrix.org</a></li>\n<li>email: takov751+hpr@protonmail.com</li>\n</ul>","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"takov 7 5 1"},
|
||||
{"hostid":403,"host":"Lee","email":"leehanken.nospam@nospam.gmail.com","profile":"<p style=\"--editable-content-background-color: rgb(0, 0, 0); --editable-content-color: rgb(209, 203, 199); --original-color: rgb(209, 203, 199); --original-background-color: rgb(34, 36, 37); color: rgb(209, 203, 199) !important; --noir-bg-editable-content-background-color: #000000; --noir-text-editable-content-background-color: #e8e6e3; --noir-border-editable-content-background-color: #8c8273; --noir-bg-editable-content-color: #2d373d; --noir-text-editable-content-color: #c8c3bc; --noir-border-editable-content-color: #38464c; --noir-bg-original-color: #2d373d; --noir-text-original-color: #c8c3bc; --noir-border-original-color: #38464c; --noir-bg-original-background-color: #181e21; --noir-text-original-background-color: #d2cec8; --noir-border-original-background-color: #807769; --noir-inline-color: #c8c3bc;\" data-noir-inline-color=\"\"><br style=\"--original-color: rgb(209, 203, 199); --original-background-color: rgb(34, 36, 37); --noir-bg-original-color: #2d373d; --noir-text-original-color: #c8c3bc; --noir-border-original-color: #38464c; --noir-bg-original-background-color: #181e21; --noir-text-original-background-color: #d2cec8; --noir-border-original-background-color: #807769;\"></p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Lee"},
|
||||
{"hostid":403,"host":"Lee","email":"leehanken.nospam@nospam.gmail.com","profile":"<p style=\"--editable-content-background-color: rgb(0, 0, 0); --editable-content-color: rgb(209, 203, 199); --original-color: rgb(209, 203, 199); --original-background-color: rgb(34, 36, 37); color: rgb(209, 203, 199) !important; --noir-bg-editable-content-background-color: #000000; --noir-text-editable-content-background-color: #e8e6e3; --noir-border-editable-content-background-color: #8c8273; --noir-bg-editable-content-color: #2d373d; --noir-text-editable-content-color: #c8c3bc; --noir-border-editable-content-color: #38464c; --noir-bg-original-color: #2d373d; --noir-text-original-color: #c8c3bc; --noir-border-original-color: #38464c; --noir-bg-original-background-color: #181e21; --noir-text-original-background-color: #d2cec8; --noir-border-original-background-color: #807769; --noir-inline-color: #c8c3bc;\" data-noir-inline-color=\"\"><a href=\"https://github.com/macsplit\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/macsplit</a></p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Lee"},
|
||||
{"hostid":404,"host":"Sarah","email":"sarah.nospam@nospam.giammarco.ca","profile":"<p>Librarian. Spends too much time on the internet.</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Sarah"},
|
||||
{"hostid":405,"host":"Lurking Prion","email":"LurkingPrion.nospam@nospam.gmail.com","profile":"<p>\nLurking Prion (He/Him/His) is a cybersecurity enthusiast, evangelist, mentor, and professional with 20+ years experience in the Healthcare, Financial, Telecommunications, Managed Security Services Provider (MSSP), Hybrid Cloud Service Provider (CSP), and other unspecified business sectors...\n</p>\n<p>\nBeginning as a network administrator, Lurking Prion's career followed security as it progressed throughout the years in roles including:\n<ul>\n<li>Linux/Windows Systems Administrator</li>\n<li>Network Engineer</li>\n<li>Telecommunications Engineer</li>\n<li>Security Engineer and Architect</li>\n<li>Ethical Hacker</li>\n<li>Security Consultant</li>\n</ul>\n</p>\n<p>\nLurking Prion also has a passion for teaching. It is his mission to help build a new generation of cyber security professionals with a security mindset.\n</p>\n<p>\nLurking Prion may occasionally refer to himself as Robert.<br />\nLurking Prion likes coffee, dark beer, and dirty martinis.<br />\nLurking Prion only refers to himself in the third person when there is a lack of coffee or an abundance of stupidity.<br />\nLurking Prion's eye starts to twitch when all hell is about to break loose.<br />\nLurking Prion's spirit animal is DeadPool.\n</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Lurking Prion"},
|
||||
{"hostid":406,"host":"binrc","email":"binrc.nospam@nospam.protonmail.com","profile":"https://0x19.org\nthanks for listening :)","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"bin R. C."},
|
||||
@@ -430,4 +429,5 @@
|
||||
{"hostid":451,"host":"Major_Ursa","email":"kuszmar.dave.nospam@nospam.gmail.com","profile":"<p>One of the members of the League of Better Villains</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Major Ursa"},
|
||||
{"hostid":452,"host":"Kirbotica","email":"kirbotica.nospam@nospam.protonmail.com","profile":"<p>A self-proclaimed success story in the tradition of Tom Vu, <strong>Kirbotica </strong>is living the hacker dream surrounded by the rich and beautiful things that matter most: family, friends, pets, computers, old signs and obsolete electronics. When he is not found endlessly walking the local streets and ravines, much of Kirbotica's time is spent trying to convince others to get involved in one of his \"great\" new ideas. On weekends, he works early in the morning at the local science centre while listening to his favorite podcasts echoing loudly through the empty halls. The voices of Hacker Public Radio, Late Night Linux, Off the Hook, Malicious Life and Darknet Diaries all keep him company as he gets the exhibits and artifacts ready for the day's visitors. A 30 year veteran in the computer industry, Kirbotica’s artistic sense has been so toned down by ex-employers, that he can only see in 2 bit color without the use of special glasses.</p>","license":"CC-BY-SA","local_image":1,"gpg":"","valid":1,"espeak_name":"Kir botica"},
|
||||
{"hostid":453,"host":"Thibaut","email":"thibaut.nospam@nospam.thibaut.dev","profile":"<p><br></p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Tea Bow"},
|
||||
{"hostid":454,"host":"candycanearter","email":"candycanearter.nospam@nospam.gmail.com","profile":"<p>tech nerd and long time linux user, likes hacking scripts together</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Candy can arder"}]
|
||||
{"hostid":454,"host":"candycanearter","email":"candycanearter.nospam@nospam.gmail.com","profile":"<p>tech nerd and long time linux user, likes hacking scripts together</p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Candy can arder"},
|
||||
{"hostid":455,"host":"Whiskeyjack","email":"kb432.nospam@nospam.gmx.com","profile":"<p><br></p>","license":"CC-BY-SA","local_image":0,"gpg":"","valid":1,"espeak_name":"Whiskey Jack"}]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
[
|
||||
{"id":0,"name":"general","description":"","private":0,"image":"","valid":1},
|
||||
[{"id":0,"name":"general","description":"","private":0,"image":"","valid":1},
|
||||
{"id":4,"name":"Databases","description":"This series will attempt to discuss various different aspects of Database design and operation.","private":0,"image":"","valid":1},
|
||||
{"id":5,"name":"This Old Hack","description":"fawkesfyre tales of hacking","private":1,"image":"","valid":1},
|
||||
{"id":6,"name":"The Linux Boot Process","description":"Dann talks about the linux boot process","private":1,"image":"","valid":1},
|
||||
|
||||
473
hpr_transcripts/hpr3786.txt
Normal file
473
hpr_transcripts/hpr3786.txt
Normal file
@@ -0,0 +1,473 @@
|
||||
Episode: 3786
|
||||
Title: HPR3786: HPR Community News for January 2023
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3786/hpr3786.mp3
|
||||
Transcribed: 2025-11-22 14:55:22
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 3786 from Monday the 6th of February 2023.
|
||||
Today's show is entitled HPR Community News for January 2023.
|
||||
It is part of the series HPR Community News.
|
||||
It is hosted by HPR Volunteers and is about 48 minutes long.
|
||||
It carries an explicit flag.
|
||||
The summary is HPR Volunteers talk about shows released and comments posted in January
|
||||
2023.
|
||||
Hello everybody, this is Dave Morris and I'm recording a show for Hacker Public Radio
|
||||
which is the Community News for January 2023.
|
||||
Now, I'm on my own this time because Ken's in Brussels at FOSDEM and nobody else was
|
||||
available.
|
||||
Or he said I'd ask enough people to see if they were available to be honest to help
|
||||
me out with this.
|
||||
So, this is going to be a solo effort.
|
||||
This universe is conspiring against this a little bit.
|
||||
I just connected to the mumble server to try and record there, but Ken's connected
|
||||
his phone to it and it's broadcasting all the chat at the free culture podcast booth
|
||||
that we're running this year.
|
||||
So, I can't get word in English and he's so busy, he's not able to hear me or spot
|
||||
that I'm sending the messages.
|
||||
So, standalone is the way today.
|
||||
So guess you don't know what this is all about.
|
||||
This is the Community News show which we have every month.
|
||||
It comes out on the first Monday of each month and we record it on the Saturday before
|
||||
that usually.
|
||||
And what we do here is we have a sort of recipe, a fairly strict format where we go through
|
||||
all the shows that have been submitted and broadcast in the past month and we do a quick
|
||||
review of those, look at the comments, read the comments and then we do a few other things
|
||||
like introducing new hosts and we look at anything on the mailing list and any other
|
||||
business.
|
||||
So that's what I'm going to do.
|
||||
So we'll start with looking at any new hosts we have and we indeed have a new host this
|
||||
month and it's any stellar who show us we'll be commenting on shortly.
|
||||
So going on from there to the first show of the month, the first show of the month was
|
||||
the Community News for December and this was, we don't usually get comments on these.
|
||||
It's nice we say something really daft or controversial and we didn't do either of those
|
||||
things so nothing to say about that one particular.
|
||||
3-7-6-2 is the next show which is entitled Existence is Pain and it's from Operator and
|
||||
he's talking about various problems from repetitive strain injuries from bad ergonomics and so
|
||||
forth being a keyboard a lot of the time and all that sort of thing.
|
||||
And yeah I'm sure we've all probably experienced something of this but it was a good show.
|
||||
It was interesting to hear but it does sound awful that he's suffering quite badly but
|
||||
he had some possible solutions and advice so it's an excellent show I thought.
|
||||
And there were two comments on this one.
|
||||
First one was from Trey and he says, thanks for sharing.
|
||||
It's been a while since I posted a show and this is mostly due to physical limitations
|
||||
which started with mouse shoulder in quotes and now 12 weeks post rotator cuff repair surgery.
|
||||
That's what gets damaged when you have a so called mouse shoulder just as me interjecting.
|
||||
He says, I've been considering doing a show or small series of shows about similar topics
|
||||
as they relate to the things we choose to do and the potential physical impacts on this old folk.
|
||||
I did hear a rumor that HBR could use a show or ten and he says, well he's quite right.
|
||||
We did get quite a surge of shows early on in the month but they're going to run out I think in a week or so.
|
||||
We got ten days so we're constantly desperate for shows in fact.
|
||||
It's rare that we can just sit back and relax about the number of shows coming in.
|
||||
Second comment was from one of Spoon's who says, character entry devices.
|
||||
Have you heard of Caracorda?
|
||||
They're a brand name for coding devices.
|
||||
These devices help you reach typing speeds of up to 250 words a minute without moving your fingers very much.
|
||||
Each finger switches like a mini joystick.
|
||||
The devices are not cheap but I think they sell the logic boards or a USB pass through device
|
||||
so you could compare 3D printing costs or wait for underpriced copies.
|
||||
They have a .com website.
|
||||
I haven't followed that one up myself but that sounds really interesting.
|
||||
I'm not sure I have the coordination to do that so it's stuff myself but there you go.
|
||||
Next show was from Mike Gray and it's entitled The Bad and Mine Hoff Phenomenon.
|
||||
This is basically the issue of when you've heard a name or a subject coming up at some point.
|
||||
Something you've maybe not heard of before, haven't heard for a very long time.
|
||||
Then you tend to keep hearing it over and over again.
|
||||
You notice that same thing after encountering it a few times.
|
||||
I've never heard of the Bad and Mine Hoff issues in Germany long ago which Mike spoke about.
|
||||
The Red Army Faction.
|
||||
I remember that but I didn't know there was a phenomenon named after it but quite interesting and good to learn.
|
||||
There were two comments to this one.
|
||||
We had one from Viv, Meta Bad and Mine Hoff was the title.
|
||||
Less than two hours after listening to this I was watching the new young ones 40th anniversary Blu-ray.
|
||||
Near the end of the episode the gang are outside the bank, they're about to rob and Rick says,
|
||||
yeah come on Robin Hood, Bad and Mine Hoff, those bank clerks didn't have to become bank clerks.
|
||||
They knew the risk when they took the job, let's just get in there and let them have it.
|
||||
So yeah, Bad and Mine Hoff is probably a term or name that floats around but once you've heard it once it triggers you to spot it again I guess.
|
||||
Mike Ray says, I rest my case, this has happened to me many many times and to most adults too I suspect.
|
||||
Psychology interests me cognitive biases of all kinds in particular.
|
||||
The way human brains are so attuned to pattern recognition, the survival imperative, very deep in our most native brain parts,
|
||||
the lizard brain, a lot of people call it.
|
||||
I think the argument is that you see a thing and unusual thing, it's a pattern, it's a word pattern in this case and you tend then to notice it more.
|
||||
So it's an interesting thing, it's well worth digging into more if it interests you I think.
|
||||
Next we have Ennistello's first show, which is entitled My Text Focused Journey Into Tech.
|
||||
And there's quite a number of topics being talked about.
|
||||
I thought the show was excellent, Ennistello is a professional writer who interestingly uses EMAX to a large extent.
|
||||
He's talking about all the manner of things relating to writing and the things you can use to simplify the process which is an interesting subject.
|
||||
That's a bit of a bad idea, isn't it? We just talked about RSI.
|
||||
Anyway, yeah, I enjoyed this show very much, this was a great first show and we had one comment on it which is from Brian in Ohio.
|
||||
He says EMAX rocks, great show, keep them coming, EMAX rocks, three exclamation marks.
|
||||
So the next one was from, this is show 3765 from Celeste, which is in type of fixing clock events in GBA Pokemon cartridges.
|
||||
There are no comments on this one, but it was most interesting.
|
||||
It was quite a strange story that this cartridge, the device loses track of time when the battery fails and can't then reset to the right time easily.
|
||||
And so much in the game is dependent on time, so that's something of a problem.
|
||||
So yeah, that's a lot of gamer, so I've not really encountered this sort of stuff, but it makes sense, but it also seems like a dreadful design.
|
||||
It's fascinating to listen to, good show I thought.
|
||||
Now I'm looking at the page for this show, I forgot to mention, it's coming up later, but there's a tool called Whisper which will listen to audio
|
||||
and will produce various qualities of transcriptions.
|
||||
And Ken has been running Whisper on shows as they come in.
|
||||
And then adding a list of the files with the different transcripts, textual transcripts.
|
||||
So there's a TXT version and other ones that I don't really understand.
|
||||
But yeah, it's actually, and I should also say he's also been working very hard to go back to the first show at HPR001 and process that and all the ones following up to the present day.
|
||||
So we actually have transcripts of everything now, I think I'm right in saying, might be one or two gaps, but we'll sort them out.
|
||||
But they're really interesting, the thing does a good job of making transcripts.
|
||||
This is another AI tool.
|
||||
What should it come from?
|
||||
There's a link later on in the notes, but I can't remember.
|
||||
So yeah, this is quite a significant milestone in the HPR world, I would say.
|
||||
I might mention that a bit later on at the end of this episode.
|
||||
Next show is from Bookworm and it's called Acer Nitro 5 Laptop Review.
|
||||
And he's talking about, it's a show from a wild bag which he hadn't got around to sending in.
|
||||
And it's about a new laptop that he got.
|
||||
And then he added a recent update to say it's been fine for the past two or three years, but had a few issues.
|
||||
So that's quite a useful bit of information, if you were thinking of buying one of these for yourself.
|
||||
Two comments, this one Claudio M says, good review, but still avoiding gaming laptops.
|
||||
Really enjoyed the view of the review of the laptop, especially the follow-up.
|
||||
Still have been turned off at all gaming laptops in spite of the temptation they provide.
|
||||
I once tried to buy electronics gaming laptop after reading good reviews from them,
|
||||
but after a botched purchase attempt I decided to skip it and go with the used HP Pro book for 540S,
|
||||
which had Radeon and Intel graphics, unbeknownst to the seller.
|
||||
However, what really turned me off on gaming laptops is when I attempted to repair my son's MSI gaming laptops keyboard.
|
||||
What a nightmare I had to remove everything to get to the keyboard.
|
||||
And even then I wasn't able to replace the keyboard because the board with the ribbon was glued on.
|
||||
From that point forward, I'd decided I'd go with the gaming desktop of the future and stick with laptops that are more serviceable,
|
||||
something like the framework, buyer-beware.
|
||||
Bookworm replies replied to Claudio, in a past life I was a certified HP repair tech.
|
||||
It was very easy to work on.
|
||||
To be honest, the primary feature I was looking for was the additional drive bays and graphics card.
|
||||
I don't actually do much gaming on the laptop.
|
||||
With two organ slots for SSD, HDD, I was able to add 128 gig shared drive and one terabyte OS drive for my Linux install,
|
||||
which is where I spend most of my time.
|
||||
So very enough, it's a decision that you need to weigh carefully obviously.
|
||||
Next we have a show from Archer 72, which is entitled LP article from Wikipedia.
|
||||
And in this case, it's an article, and a Wikipedia article as you would have gathered about the LP record.
|
||||
And it was 42 minutes long, but I tend to look at that sort of show coming up and go,
|
||||
I wonder if I'll be bored, but I wasn't. It was great. I really enjoyed this.
|
||||
The reading was really nice and clear.
|
||||
And the content, something I don't, I mean, I've lived through the LP record era, bought them when I was a teenager and whatever.
|
||||
But yeah, I don't know much about the whole subject, so it was really good to hear it.
|
||||
I enjoyed this one a lot. There was one comment, and it was from Celeste.
|
||||
And the title is RIAA Curve and Italian YouTuber Video.
|
||||
Reading about RIAA equalization and vinyl discs made me remember about this video I watched some time ago.
|
||||
I hope the automatic subtitles are good enough.
|
||||
He made an LP disc out of chocolate engraving on his own and applying the RIAA equalization first.
|
||||
Being able to hear something out of the noise is quite cool, and there's a link to the YouTube video.
|
||||
The chocolate LP, that's amazing.
|
||||
There's also a more recent one using a laser engraver on wood instead of chocolate.
|
||||
That's your LP melt slowly.
|
||||
You didn't play it in a fridge in a freezer or something.
|
||||
Interesting show though.
|
||||
Next we had STASH AF sending in a show entitled Jeep Ignition Repair.
|
||||
This one's got a lot of pictures, which always cause me a little bit of anxiety,
|
||||
because my picture management of incoming shows is still not quite right, but it's getting better.
|
||||
And the pictures are great though. They really help a lot to understand what's going on.
|
||||
So he's doing repairs on his Jeep and explains it well with the pictures and the audio, of course.
|
||||
There was a comment from one of Spoons, who says earpieces.
|
||||
Funny how you apologise for the gentle background noise of a distant airplane,
|
||||
then sent many, many lamb leaps into my well sealed earpiece.
|
||||
I didn't realise that was up.
|
||||
I need to tie a piece of string to the phone or one next time.
|
||||
I've got my gloves in the goop.
|
||||
My mistake. Thanks for the show.
|
||||
It's loud noises and things can be a bit disturbing.
|
||||
I didn't really notice myself.
|
||||
Next show was 3769 Cratching Laptop Hidden Server Part 0 from some guy on the internet.
|
||||
And this is the notes of this one, just enormous and amazing.
|
||||
Really good.
|
||||
Being a show note, a fish and idol, I tend to look at these things.
|
||||
There was a discussion with Archer72 about Proxmox, a lot of information,
|
||||
and it's for running virtual machines in a sort of server context is what I understood.
|
||||
But I didn't fully get the nuances of this.
|
||||
It sounds a really good idea if that's what you need.
|
||||
But you do need a fairly hefty machine to get much out of it.
|
||||
I think it's the other message I've got.
|
||||
There's loads and loads of links in here.
|
||||
If this is something you want to dig into more deeply, then it's a great resource.
|
||||
If I ever want to get into Proxmox, I know where to go.
|
||||
Same with you.
|
||||
There's no comments on this particular one.
|
||||
But certainly say it was a great show.
|
||||
Next show was from a hooker.
|
||||
And it's about his RV life as he puts it.
|
||||
And he's in Arizona and he's in the town of Tucson.
|
||||
So he says we moved to Benson, a town just side the east of Tucson,
|
||||
where we will stay for a month.
|
||||
And he's, yeah, I love the format of,
|
||||
I like to be along with him on his holiday.
|
||||
That's great.
|
||||
And it's great to follow along in this way.
|
||||
And his notes and stuff are presumably from his whatever journal he's been keeping.
|
||||
He's been traveling.
|
||||
Next was a show from Paul Quirk, who we haven't heard from for a while.
|
||||
How I limited pain naturally.
|
||||
And he says somewhere I describe how I managed to eliminate pain from carpal tunnel syndrome
|
||||
and osteoarthritis.
|
||||
And he talks about using regular exercise to help reduce joint pains and stuff.
|
||||
And he seems to be very enthusiastic about using an elliptical trainer.
|
||||
They tend to be called cross trainers in this country.
|
||||
Not really sure why.
|
||||
But yeah, the thing about exercising to help with joint pains and stuff
|
||||
is something I'm particularly interested in at the moment,
|
||||
because I'm signed up to a course with a sort of adjunct to the NHS
|
||||
called Nuffield Health, their charity.
|
||||
And they offer joint pain relief exercise classes
|
||||
or workshops or whatever.
|
||||
So I'm going to those.
|
||||
Great show.
|
||||
Most interesting.
|
||||
And Brian and Ohio comments.
|
||||
Music.
|
||||
Great show.
|
||||
Good encouragement.
|
||||
Nice tunes.
|
||||
Because Paul Quirk puts some of his own music in and says,
|
||||
if you're interested, then let me know.
|
||||
Interested in more.
|
||||
So next we have Andrew Conway.
|
||||
I'm actually at Bosden with Ken and others.
|
||||
And he is talking about solar panels.
|
||||
He's got the type of adventures with a small solar panel.
|
||||
And he's looking at a cheap solar panel and learning a bit about how it works
|
||||
and doesn't work.
|
||||
So he's looking into this in the fair amount of detail.
|
||||
And it's some good information there.
|
||||
You never really considered what a solar panel could do for you and how you how you can
|
||||
use it, but this covers the subject rather well I think.
|
||||
There's a comment from Brian and Ohio who says, good info, the show is great, lots of
|
||||
good information, can't wait to hear more stuff like it, yeah good, it's a good show,
|
||||
nice to hear Andrew on HPR and there's another one coming up, oh yeah this month too, yeah
|
||||
so we'll be doing that one shortly, then we had another show from Mike Ray which is wonderful,
|
||||
it's good to hear from Mike always, he's talking about my public speaking rules, some tips on
|
||||
public speaking for technical talks or lectures and he's basically listing his rules for speaking
|
||||
in public, if you're nervous about it good to have some ideas of how you're going to structure
|
||||
the thing ahead of time and yeah I think the rules are very valuable, he's item always,
|
||||
itemize them all rather nicely, there are number of comments, this one is five, mpado says,
|
||||
I must listen to all who aspire to speak to an audience, a couple of thoughts prompted
|
||||
by this episode, I've given talks to hostile audiences or at least audiences with some hostile
|
||||
attendees, I've given talks with their attendees that are only there, I'm going to have them
|
||||
told that they must be there, typically by their boss, body language usually gives these people
|
||||
away, once they recognize this hostile they can mostly be ignored, allowing the speaker to focus
|
||||
on the people who indeed have chosen to be there, however the hostile attendee is very rare,
|
||||
I've found when including humour it's best to avoid a pause up, the humour is delivered,
|
||||
there is a tendency to pause to allow the audience to respond with laughter, however if the humour does
|
||||
not succeed the pause will be very awkward, it's much better to go straight to the next statement
|
||||
after the humour, if the humour works and there's laughter, a pause mid sentence, supposed humour is fine,
|
||||
start the interrupted sentence over when the laughter diminishes and all is good, if the
|
||||
humour didn't work the lack of a pause allows the audience to continue listening and often not
|
||||
even notice that there was an unsuccessful attempt at humour and the speaker does not suffer,
|
||||
the embarrassment of appearing to try to be funny, pause is a good but tricky when they follow
|
||||
humour, just some thoughts from listening to this very good episode, that's a really useful
|
||||
comment I think, Tray says thanks for sharing, very well presented Mike, I personally enjoy public
|
||||
speaking and teaching but I was still able to gain some nuggets of wisdom from your podcast,
|
||||
even after years of speaking I still struggle with the meeting um etc, these usually happen if I
|
||||
lose my place I'm trying to work away from my original outline or answer a question, I like your idea
|
||||
of pausing at these times when I gather my thoughts, I will try I will try to apply this soon,
|
||||
one of Spoon's says professional demeanor, thanks for preparing the context for me to shout from
|
||||
the audience hooray moon bouncing, very good, Mike Ray comments back, thanks very much to everybody
|
||||
I listened back to this when I was when it was published, I hope the Christmas and his
|
||||
title, his message got trungated, he was shall we say a wee bit merry from from celebrating Christmas
|
||||
so he I think he's probably commenting on that, oh yeah he says in the next comment,
|
||||
let me read the contents of this one, a couple of verbal ticks but not too many,
|
||||
humour is best left out of tech talks unless you can poke gentle fun at yourself,
|
||||
I was told several times by a writing coach to make my mind up but I was writing something
|
||||
serious or something funny because the injection of a joke can pull the audience out of deep thought
|
||||
about what you're saying or writing which might be totally inappropriate, particularly like the
|
||||
three-part rule thanks to the late and great Peter Hotwood, one of the one's of the LSE for that,
|
||||
some 40 years ago, think he mentions this in the in the talk itself in the show itself,
|
||||
then he comments again say that he messed up the last comment because of the the title truncation,
|
||||
he says I messed that up, it was meant to say I hope the Christmas beard didn't make me break my own rules,
|
||||
I don't think it did, it's yeah, it was a great show, yeah Mike is a very knowledgeable person
|
||||
and he was led to hear his show is good to hear back on HBO, then we went into an emergency show
|
||||
which was originally posted in 2014, it's called Chomp Car Report, it's from David Whitman
|
||||
who we haven't heard from for a very long time and it's about racing series for $500 cars,
|
||||
so he's talking about this sort of amateur cheap car racing thing, it doesn't seem to be as
|
||||
popular now as it was because I couldn't find any links to Chomp Car stuff and the links in
|
||||
the original show don't go anywhere, I'd managed to resurrect them all I think by going to the
|
||||
way back machine, so that was good, but yeah it's an interesting thing, it's a shame that these
|
||||
things are really popular and then vanish but that's the nature of the world and of the internet I guess,
|
||||
so no comments on that one and the next one was another emergency show from 2014 and it's how to
|
||||
make a punched card computer and it's from stuff, make it from stuff in the kitchen and it's from
|
||||
Mike Ray, remember him sending this one in back then and I've never listened to it before, I found
|
||||
it fascinating, my kids would have loved this when they were younger, they're a bit old for that type
|
||||
thing now but the idea of making a serial box into a cardboard computer effectively where you
|
||||
can control which cards come out by pulling skewers out of it and stuff, it's good, good, the next
|
||||
we have another show from Bookworm and it's called a Linux distro review and he's talking about
|
||||
zero Linux, spelled with an X and it's a Linux version distribution which you can run on
|
||||
an older Intel based Mac and it certainly really really quite nice, I didn't realise it's
|
||||
possible it had ever been possible to do that, he sent in quite a lot of information and some
|
||||
pictures which is always good to see great believer in having pictures with shows if you can
|
||||
and yeah great show, very interesting, I don't think I'll ever use personally but hopefully
|
||||
somebody will get some benefit from it and Brian and Ohio sends in a comment how to do it, this
|
||||
is how you do a distro review, a great episode, that's a really nice comment, next we have a show
|
||||
from Claudio Miranda which is running Haiku on, no I didn't know how to say this until I listened
|
||||
to him, pronounced it many times, B-H-Y-V-E which is pronounced B-I-V, the B-S-D hypervisor, which is
|
||||
quite neat actually, I quite like that, Claudio talks about installing and running Haiku R1
|
||||
slash B-4 on B-Hive, so this is as you say the B-S-D hypervisor for virtual machines and he's
|
||||
testing out Haiku which is the BIOS, I've looked at this, I've never tried, never run it, but it was
|
||||
quite, it seemed as quite a desirable thing a number of years ago, remember it being in all the
|
||||
magazines, BIOS was something that looked really really nice and judging by what Claudio was talking
|
||||
about, it still is, so yeah, I'm too busy doing other things to go looking at these things,
|
||||
it's great to have somebody else too for me, so thank you Claudio, no comments on that one,
|
||||
then we have Zen Flota 2, the show entitled A Squirrel Being on Google Products and Google Security,
|
||||
I made a quote-to-being podcast about Google Products Interoperability in their Lausy Security,
|
||||
so he's some talking about Google Chromebooks and Android and some of the less desirable aspects
|
||||
of the way that these things are being organised and secured and whatever, there are two comments,
|
||||
one from Brian and Ohio who says 2FA, I was forced to set up two FA, that's two factor of
|
||||
authentication, in order to use MUT with my Gmail account, funny thing is when you log into Gmail
|
||||
on a web browser on your phone, you use the Gmail app, Google politely asked if you want to remember
|
||||
this device so you won't have to 2FA anymore, not only that, the checkbox comes up pre-populated
|
||||
with the check, what good is 2FA if you can bypass it with the checkmark, why make me do it
|
||||
in the first place and why populate the checkbox, I'm moving to fast mail, so yeah, I think that's
|
||||
pretty supportive of Zenplota 2's view, the next comment is from Johnny Lawrence,
|
||||
he says, woefully misinformed, I'm a huge fan of HBOR and everything it stands for, that includes
|
||||
freedom of speech, I also understand the episode should be viewed in an editorial context, however,
|
||||
I can't help but feel episodes like this dragged down the quality of the podcast as a whole,
|
||||
the squirrel is just called man yelling at cloud, and he sits what he's talking about,
|
||||
no you're mean, the old man yells at cloud, I'm not a Google apologist and I consider them pretty
|
||||
evil as a whole, but so many of the things mentioned were just flattened correct, Google doesn't control
|
||||
any cell phone networks, they don't have any of their own towers, claiming that the Google is
|
||||
throttling your connection because YouTube is fast and transfers from your whole server as slow,
|
||||
it's pretty big leap, YouTube content is served from a massive CDN which has peering agreements
|
||||
with ISPs all over the world, that content is going to be served blazing fast, almost anyway,
|
||||
transfers over an SSH connection from a little desktop on a residential connection to a Chromebook
|
||||
tethered to a cell phone will never be comparable, 3.3, 2FA has little to do with vendor lock-in
|
||||
and everything to do with security, I don't own any Android devices, my iPhone and iPad can both
|
||||
be used as the second factor for Google to a FA without issue, 4, Google has nothing to do with QR
|
||||
codes at all, I could go on but I think you get the point, I don't want to see fact check banners
|
||||
on episodes and I don't want to see posters censored, that in mind we have to do better as a community,
|
||||
better episodes and higher quality content will draw more listeners and thus more contributors,
|
||||
let's up the bar and keep HBO alive and there's a link to the old manuals at cloud meme.
|
||||
Next is from Trey and it's entitled just because you can do a thing,
|
||||
just because you can do a thing, does that mean you should? He summarises,
|
||||
hello hacker public radio fans, this is Trey and I'm throwing this recording together for several
|
||||
reasons and he's very kindly giving us a show when we were running very low and he's also saying
|
||||
why he hasn't been posting as much but the essence of it is that he did shows on installing pecs
|
||||
piping around his house but he's suffering from it with shoulder pains and that type of thing,
|
||||
so he got to rotate the cuff issues, I think, yeah, yeah, so that's that's great, that's pretty good,
|
||||
but nice to hear from him, I hope it soon gets better, there are no comments on this one, so
|
||||
where are we? 3780, this is a hooker with Fediverse update May 2022, this episode reports on some
|
||||
updates to the Fediverse that I run across in May 2022, so hooker makes and posts sends in and we
|
||||
post shows quite a long time in advance and so we know that we've got shows out into the future
|
||||
which is great but tend to be sort of getting a teeny teeny bit out of date I guess, but I thought
|
||||
this was a great overview of the state of Fediverse and an explanation of what and why it exists
|
||||
and in general excellent, so the fact is talking about May is of no relevance really, so yeah, excellent,
|
||||
everything that hooker does I really enjoy so it's always good to see one of his shows coming up.
|
||||
Now the next one, next show is from Andrew Conway, the second show this month, it's entitled
|
||||
The Jewel Thief, where Jewel is J-O-U-L-E which is the energy measurement, is that the right way
|
||||
of saying it? Yeah, it's a pun, Jewel Thief as in stealer of diamonds or whatever, so we talked
|
||||
about using the Jewel Thief to suck energy out of flat batteries and he's describing a sort of
|
||||
circuit, I don't know whether the circuit's old or not actually, it seems very simple but quite
|
||||
hard to understand, what it can do is it can use the residue of the capacity of what is tool-intensive
|
||||
purposes of flat battery, so an AA or AAA or something and the reason it's flat is because
|
||||
voltage that it's producing is now lower than the thing you're using it in needs, in most cases,
|
||||
I think that's right, so yeah this thing uses a mechanism which involves rapid switching and it
|
||||
can generate enough power, enough voltage to light an LED and actually keep string of LEDs running
|
||||
for a while, and it comes from, the name comes from Big Clive, Clive Mitchell, who's a YouTuber,
|
||||
very very prolific, I've mentioned him before and Andrew makes a connection to a link to his
|
||||
video about this, but it's an idea that predates this video by quite some number of years,
|
||||
definitely going to have a try building this myself, I don't understand it, but I don't understand
|
||||
any electronics, I don't know, if there are people who do understand it better than the night here
|
||||
and who are up for giving shows about how to understand it, a fascinating show and the links were
|
||||
good as well and led me to finding it more about it, there is a comment which is from one of Spoon's
|
||||
Candle Power, he says the title, I assume that these were more complicated boost modules,
|
||||
I haven't realised they were so simple, I've definitely got a bunch of those components,
|
||||
thanks, the components were a fairite core or Taurus with two sets of wiring's on,
|
||||
an NPM transistor and a resistor, forget what the rating was, but you'll easily find it if you
|
||||
go looking and you make a circuit which does some weird wonderful things and it's a couple of
|
||||
being used using old batteries, great effect, which I think it's amazing, so last show for January
|
||||
is 37582 Content Format article from Wikipedia, Wikipedia article on the various types of content
|
||||
formats and this is submitted by Archer72 and it's some reading of a Wikipedia article,
|
||||
which it certainly is a slightly old article because it's sort of a generic thing about content
|
||||
formats, so it's everything from music to maps, there's more written down here and much more,
|
||||
but it was again most interesting, I'm a great fan of Wikipedia, so I'm always up for
|
||||
anybody to read, read me pages, it is nice and I read them a lot myself of course,
|
||||
so yeah this is this is a great idea for a show I thought and yeah thank you very much,
|
||||
so as we go through the shows we read the comments associated with them and then we
|
||||
will to get comments which relate to shows from previous months, so we then read those for
|
||||
that particular month, on that particular month I should say, so there are eight comments which
|
||||
fit into that category on past shows relating to six previous shows, so the first one is from
|
||||
Charles in NJ who sent in a show in 2013 called Doomsday Rule and he's commenting on his own
|
||||
on show, Doomsday Python code he says, the code in the posted module still works in Python 3
|
||||
until you come to the print statements in the main procedure, those have to be changed print
|
||||
function calls, one more quibble, Isaac Newton was born before the adoption of the Gregorian
|
||||
calendar, so that example is not correct, other than that the episode has stood up fairly well over time,
|
||||
I can even stand to listen to it at 1.6 times speed, so there you go that's that's quality stuff,
|
||||
you come back years later and comment on your own show and suggest yes, updates whatever,
|
||||
next show and the next comment I should say is the on the show Using Noise Torch by Delta Ray
|
||||
and it's from Ken Fallon who says wow this actually works, I saw this after noting noticing that
|
||||
conference calls were picking everything even when I was in the next room, thanks Delta Ray for
|
||||
posting this one plus one from me, so the noise Torch thing was to remove a lot of noise from
|
||||
from from from from recordings on your phone, so pretty good pretty good, not try it
|
||||
myself but I will do, next one was comment on one of my shows which was entitled Some Thoughts
|
||||
on Numeranims, that's that thing where you write the long word down as the initial letter and the
|
||||
final letter with the number of intermediate letters as a number, so A11Y was the one that came
|
||||
to light meaning accessibility, the auntie's comment is pure obscure antism which is probably a
|
||||
Numeranimian itself could be, great piece he says in my view Numeranims are pure obscure antism,
|
||||
what is more atrocious is when people say it out loud, I've been a call at work where someone
|
||||
kept saying I18N and L10N which is ludicrous, I commented back to that, thanks to auntie,
|
||||
I haven't heard many people say these things spelled out the way you describe but I may have been
|
||||
guilty of myself for I knew what they were, just hope they go away, I don't like Numeranims very much
|
||||
as a self-component of English, great as a shorthand or something but next comment was on
|
||||
Zenflo22's show back in December, God probably will use a Chromebook, what's called,
|
||||
D&T says trippy as hell, good show, it reminds me of the day, I only took a THC gummy,
|
||||
probably my main takeaways that one can only hope to inspire a rebuttal show by Zenflo22,
|
||||
if you haven't yet, do read the short story, the machine stops by EM Foster,
|
||||
Forster, I heard about it in Stuart Russell's 2021 wreath lectures on BBC Radio which I also
|
||||
recommend, and I read that comment actually, this is me breaking in to say I've never read that book
|
||||
the machine stops, you can get it off parkive.org and e-pub and I put it on my phone and read it,
|
||||
it's a strange but fascinating story, especially considering its age, so yeah, I would recommend
|
||||
reading it too, so the next comment was on the show first admin job by Norrist war story,
|
||||
I should say first admin job war story by Norrist, and it's from Windigo, who says what
|
||||
are who done it, I really enjoyed this episode, although it was a dev currently dealing with some
|
||||
creative PHP code, it hit a little too close to home, thanks for the mysterious tale,
|
||||
another comment on the same show from Brian in Ohio, says love the show, I never worked in IT but
|
||||
I love stories like this, great work, then the last one in this category is show
|
||||
entitled Chatting with DNT by some guy on the internet, and one of Spoon's is commenting
|
||||
saying risk 5 emulators, mostly I wanted to mention risk 5 emulators, QEMU can emulate both 32
|
||||
bit and 64 bit risk 5 CPUs, we have QEMU system risk V64, it's even available to simulate 64 bit
|
||||
risk 5 machine, or QEMU system risk V32, executable to simulate 32 bit one, Sy5 are still
|
||||
are planning to release a development hardware board this summer according to some page on the internet,
|
||||
the high 5 pro p550, we now tend to go to the mailing list and read out messages there,
|
||||
there's not a lot, there's one from Ken, where he mentions, I'll just read it quickly, turns out
|
||||
we're going to be at the community advocacy section in prime position in the main exhibition
|
||||
area of the K building level 1 at Phosden, it's by far the most popular area as it is
|
||||
entrance to the organisation team office and the club room, and also one of the big lecture
|
||||
theatres I should interject, I know from experience it gets absolutely nuts busy there during the event
|
||||
and it's non-stop for the entire weekend, so if you are an HBR contributor or a free culture
|
||||
podcaster going to Phosden then please help us out at the stand, and you also reach out to
|
||||
other podcasts to see if they could clarify their license to release it under creative commons,
|
||||
as the exposure in the flost tech community is massive from this event, if anyone has stickers
|
||||
that they want us to hand out please send them to me this week, the other message on the list is
|
||||
merely to announce this recording which nobody can join because mumble is not being very friendly,
|
||||
I tried to mute Ken's channel but you can't do that unless you have more privileges than I have,
|
||||
anyway it doesn't matter, yeah I hope it's going well at the FCP table, Ken and I've been putting
|
||||
together a list or a refreshing list of free culture podcasts which I've been keeping in a database
|
||||
in generating various reports that being turned into handouts and into a website
|
||||
of the past month really, and so hopefully it will be comprehensive list but it will be pretty
|
||||
pretty good, and it's surprising number of people who it's very hard to determine whether their
|
||||
podcast is a creative commons or not, many of them put in the copyright field of the feed
|
||||
that it's copyright, whoever the name is or the name of the podcast, if you look on the website
|
||||
it will sometimes say everything we produce is creative commons but it would be great if it was in
|
||||
feed, any other business, there are two things in the list and the first one is the showed transcript
|
||||
which I've really covered to a large extent, we're using Whisper, there's a link to Whisper if you
|
||||
want to go and look at it yourself, Ken's been doing this project, he's got a powerful machine
|
||||
which is able to do the transcription generation which I don't have and he's done all of the old
|
||||
shows and we've added this to the workflow, it's not quite finished and he needs a little bit more
|
||||
work to get the transcripts up onto archive.org automatically but it's doing good, so that's that's
|
||||
great, go ahead and have a look, see what you think, the other thing was I'd been talking about
|
||||
the re-uploads of shows for the past year probably, I don't know how long it's been going on for,
|
||||
I've not been doing too many at a time because they've really a heavy load on
|
||||
the HBO machine, the machine I'm running the uploads from and also on archive.org, so I've just been
|
||||
doing like five or ten at a per day, so it took longer as a consequence but it's now finished, I think
|
||||
I've intimated in the last show it was very close to the end and it is now finished, so it's
|
||||
we now should have all files on archive.org, that is all audio files where every show any assets
|
||||
like pictures and stuff would be there, so if HBR was not available for a while you could get all
|
||||
the bits of a kick in the show on archive.org, that was the point of the exercise, so yeah that's
|
||||
all done, so I've got to go back on mumble, I'm not going to record anything but
|
||||
see how safe Ken's available and he sounded amazingly busy from listening in earlier on,
|
||||
hope they they're doing good, that's it for me and see you next month, bye
|
||||
you have been listening to Hacker Public Radio at Hacker Public Radio.org, today's show was
|
||||
contributed by a HBR listener like yourself, if you ever thought of recording podcasts,
|
||||
and click on our contribute link to find out how easy it really is, hosting for HBR has been
|
||||
kindly provided by an onsthost.com, the internet archive and our syncs.net, on the saltoise
|
||||
status, today's show is released on their creative commons, attribution, 4.0 international license.
|
||||
325
hpr_transcripts/hpr4483.txt
Normal file
325
hpr_transcripts/hpr4483.txt
Normal file
@@ -0,0 +1,325 @@
|
||||
Episode: 4483
|
||||
Title: HPR4483: HPR Beer Garden 3 - Porters
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4483/hpr4483.mp3
|
||||
Transcribed: 2025-11-22 14:54:18
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4483, for Wednesday 8 October 2025.
|
||||
Today's show is entitled, HBR Beer Garden 3 Porters.
|
||||
It is part of the series' beverages.
|
||||
It is hosted by Kevin and is about 29 minutes long.
|
||||
It carries a clean flag.
|
||||
In the summer he is, Kevin and Dave talk about Porter Beer's.
|
||||
Hello and welcome to Episode 3 of the Hacker Public Radio Beer Garden.
|
||||
My name is Dave and I am joined this time as all three times so far by Kevin.
|
||||
Hi Kevin, how are you?
|
||||
Hello, hello, I am very well and after a comment we received on Telegram,
|
||||
after we've released this one, I do believe we can call it a series.
|
||||
We could have a burn there by saying, you can't call it a series until you reach three.
|
||||
So we've reached three, yay!
|
||||
We have arrived, well by the time it's released we will have arrived.
|
||||
But that might not be for a couple of weeks, yeah.
|
||||
Oh but there's future feeds so I mean they might get next.
|
||||
Yes, very quickly.
|
||||
But anyway, if you listen to this on the day it could release,
|
||||
this is all rather pointless waffle.
|
||||
But anyway, I'm actually in better form because we have passed session IPs
|
||||
and we're looking at one of my favourites tonight.
|
||||
Yay, we got poor burgers.
|
||||
Oh okay, yeah, yeah, yeah, yeah.
|
||||
So yeah, I'm good for them.
|
||||
I'm looking forward to this.
|
||||
So before we actually get on to this and I know that we're both actually
|
||||
desperate for a beer but there's actually quite a nice history.
|
||||
We've done two styles which have been very, very new and this is actually going
|
||||
to go completely the opposite way.
|
||||
I've been a fan of portraits pretty much since I started drinking especially darker beers
|
||||
but I didn't actually appreciate quite how much history there was to them.
|
||||
Now, I'm going to start by saying there are loads of theories about how
|
||||
Porter came into being.
|
||||
However, there's an awful lot of them uncredited and actually hold
|
||||
any evidence at all based on anything recorded.
|
||||
I mean, I know that doesn't mean they're necessarily totally false
|
||||
but there just doesn't seem to be an awful lot of fact to back up a lot of the theories.
|
||||
So the source I'm relying on quite heavily is by the camera beer writer Roger Prots.
|
||||
He's one of highly respected for years and he's done loads of books and he did actually a book
|
||||
called Classic Stout and Porter which I've read for this show in fact and I read another
|
||||
couple of different books as well, not the whole book but sections of them that gave a few other
|
||||
contradictory views but to be honest, I'm going to rely on his just purely because he's
|
||||
a source that I find trustworthy.
|
||||
Some of the theories, I'll just get some of them out of the way.
|
||||
Some of them claim that it was made by a wrong delivery of moths to a brewer.
|
||||
Given the time scale we're talking, you know, early 18th century, this is quite unlikely
|
||||
because, you know, these ingredients were expensive.
|
||||
They wouldn't just have said, yeah, yeah, we'll soak up the cost.
|
||||
So that's unlikely.
|
||||
There was again another one that says, oh, it was a brewery that just bottled up some beer and
|
||||
forgot all about it.
|
||||
And again, I just don't buy it given the timing for that because these were huge vats.
|
||||
There weren't just a tiny wee bottle, you'd stick around the back of the brewery.
|
||||
That could probably more likely happen today where we live and I throw a
|
||||
society.
|
||||
But being in mind, it was a very different time in the 18th century.
|
||||
And, you know, a large wooden cask beer was not likely to be forgotten about,
|
||||
as this would be hugely lost profits.
|
||||
As I said already, it's a very old style.
|
||||
History begins in London in the early part of the 18th century.
|
||||
And London at the time was, it wasn't as city as we know it today.
|
||||
It was a series of small connected villages and a couple of small townships that would
|
||||
eventually become a city, but it was starting to become at the start at then more built up
|
||||
because rural folk were coming together just down to the immense poverty and the hope of
|
||||
actually gaining some work.
|
||||
And of course, with a large number of people, a large number of,
|
||||
a large amount of beer is needed.
|
||||
And at the time, it was actually actively encouraged because it was considered safer than water
|
||||
to drink. And of course, manually, but before mean the majority of employment, the workers needed
|
||||
a refreshment with affordable prices because these were not high paid jobs as you may find in London
|
||||
today. Now, transport at the time was extremely limited and the larger breweries would very often
|
||||
own their own fields or buy directly from neighbouring farmers. And this resulted in the bigger
|
||||
breweries actually being located outside of big townships.
|
||||
Pale beer was brewed using the hops and this was sold to London at huge profits.
|
||||
And the pale was actually known as two penny ale because at the time, that was a ridiculous
|
||||
amount for one beer, but it was called, it was nicknamed two penny ale due to type price.
|
||||
This was fine for the nobles, but it was something the working man simply couldn't afford.
|
||||
So what the London brewers would do was they would make an unaged brown ale.
|
||||
And due to the lack of storage, this was something that they couldn't really age themselves.
|
||||
And it wasn't very palatable. So what they tended to do was they would actually sell it
|
||||
to the larger breweries who would mature it for months in wooden casks. And this became known as
|
||||
stales, what it actually known as a little, it actually made mature, but it was known as stale.
|
||||
And then these were actually sold back to the London bars and the beer sellers. And what they
|
||||
would also do is you'd have your pales and you'd have your mature. And in order to make the
|
||||
investment go a bit further, the publicans would mix thirds with a third pale, a third stale,
|
||||
and a third of the unaged London brown ale. And this is what would go on to become
|
||||
porters. And it was well received as it was considerably better than the unaged brown ale sold
|
||||
to the working class. With different beers being mixed, of course, the more corrupt
|
||||
publicans would be doing the mixing. And the beer ended up being really inconsistent and
|
||||
brewery started to get worried for their own reputation. Because they would say it would be
|
||||
from this brewery or that brewery that the mix would be made from. So in order to keep up a good
|
||||
reputation, some of the brewery started mixing up their own versions of this. So normally you would
|
||||
get this kind of as I said, the thirds would be mixed, but the breweries who mixed the three together
|
||||
would call it, it was called the entire but because their big battles were called buts. And
|
||||
this was gradually shortened to entire so you could get a pint of entire. Now the first brewer
|
||||
to actually produce the entire but was Ralph Harwood. And I have to confess even as a fan of
|
||||
porter, I'd never heard of this name. I mean, he didn't actually invent the style himself,
|
||||
but he was the first one to produce it as ready mixed and actually sell it. However, the high cost
|
||||
of the pale ale and the stale kept the prices still too high. And he was keen to grab the London
|
||||
beer drinker market. And by 1722, he was brewing the beers himself rather than simply blending them.
|
||||
But despite bringing beer to the masses, I mean, the guy's name is hardly known at all,
|
||||
even in both beer circles today. He had up about an East London and it's a Bides place which is
|
||||
offshore ditch high street. I was, no, I don't know the serial myself. So that's me getting it
|
||||
from a book. And the building itself is long gone. There's not even a plaque on anything
|
||||
as far as I'm aware. However, the resulting beer was one that was based on a beer creating,
|
||||
a containing two thirds of brown ale, one aged one unaged. So of course, this was produced a dark
|
||||
multi with notes of smoke that was more subtle than what we know as stout. Interestingly enough,
|
||||
stout was actually just initially a stronger version of porter, which was originally called porter
|
||||
stout. And I was confused because I did read in a few books references to stout before the beginning
|
||||
of the 18th century. However, before then, a stout was just referenced to a strong beer. It was
|
||||
described as stout, not an actual style. There were a few different discussions about the name.
|
||||
There's been some crazy theories actually made for the name, including that it was based off
|
||||
some French word, some Latin words. However, the most likely one is that it was named after the
|
||||
porter boys that was used to deliver the mixed beer into the barge. They would actually
|
||||
take it in the cases. Now, I don't mean brief cases, obviously. This was more like, think of
|
||||
what's the, oh, my mind's just gone blank. What do you call those? You see it in old time,
|
||||
films, especially like in the Alps, kind of send a music either that can you see where you see
|
||||
kind of them carrying the wooden crates with the buckets of milk attached to them. You're the one
|
||||
I mean, the yolks. Yeah, like the big yolk. They went more like that. I don't know what the official
|
||||
terms were. They would have the kind of keg mini kegs and things hanging off them. So,
|
||||
and apparently they used to call the barman just always say porter when these guys came into the bar.
|
||||
So it became, it's believed that that's how people referenced it to the beer rather than the
|
||||
vodka itself. Now, we tend to think of porter today as black. However, the traditional porter
|
||||
was actually much more brown and it wasn't until the 19th century. They are very early 19th century,
|
||||
a man called Daniel Wheeler invented a roasting machine for grain that was just basically very
|
||||
similar to a coffee roaster and this enabled brewersh to add deeply roasted black and chocolate
|
||||
molts to their beers. And since then, it's given the stout and portage, the j-black appearance
|
||||
that we still kind of believe we have today. So, for those of you who are really wanting the stats,
|
||||
that was on the 20th of March 1817 Wheeler obtained a patent number 4-1-1-2 with a new or improved
|
||||
method of drying and preparing of malt. So, actually, that was a patented then. This proved to be
|
||||
actually very effective. It was far more economical and also gave a greater consistency to the beer.
|
||||
And this was taken up very quickly by the British brewing industry and the first believed
|
||||
Bain Brewer was actually Whitbread who used it, who was using this by the middle of 1817. So,
|
||||
that was a very quick adoption. Yeah, so porter continued to be popular. However, it's actually
|
||||
demise came after the First World War. In 1919, the government put tax on the ingredients and also
|
||||
due to the effects of having a very outspoken T-total MP, whose name I know but I'm not going to
|
||||
mention on this podcast. It's terrible. How cruel is this? They limited porter in order to stop
|
||||
people taking it, not only were they hiking up the tax to increase the cost, but legally at the time
|
||||
porter had to be limited to 3.2% ABV, which meant that essentially all of the drinks stopped.
|
||||
It almost overnight, it was killed because brewers were forced to cut down flavour, cut down strength,
|
||||
and they were left with basically brown water. And this was a totally different thing.
|
||||
This was nowhere near the one that had been previously the working man's beer that was full of
|
||||
flavour and also nutrition. So, that is the results of my homework. I could actually go on for
|
||||
hours by the way, but I cut that we don't. That's really, really interesting. I didn't realise,
|
||||
because I've did a little bit of research myself and I didn't realise that the origins of
|
||||
stout and porter were actually the same. Yes. Well, that's what confused me. Like I said,
|
||||
I mean, I'd seen references to stout before that. And then I was going, but how can stout be
|
||||
then? And then that's when I found out that stout preage, that's reference pre porter,
|
||||
was just referencing strong beer as in something I was stout. Right, but these days stouts and
|
||||
porter's tend to be around the same ABV range anyway. Yes. So stouts are not necessarily stronger.
|
||||
What's Guinness? Three points? Something four points, something. I thought it was five, but I'm not sure.
|
||||
And it's not overly strong. Right. Not like I've talked yet. That makes sense. It does make sense.
|
||||
Yes. So, well, actually, that was one of the, it wasn't from the book I was particularly
|
||||
taken up, but one of the other books I was reading did actually say sadly that,
|
||||
traditionally, you would have a more subtle flavour from the porter compared to a much stronger
|
||||
flavour from the stouts. But it says, largely, that's actually gone. Now, you could call a stout
|
||||
porter, and nobody would notice, and vice versa. Right. You know, so it says sad dates, I kind of
|
||||
think that's kind of gone there, gone our way more or less. I don't know whether whether it's just my,
|
||||
whether I'm making this happen, self-fulfilling prophecy or not. But I find that the reason I don't
|
||||
get on so much with porters is because I've associated porters with the overly smoky nature
|
||||
of the dark ale, something I don't usually experience with a stout. But from what you've just said,
|
||||
and the research I've done as well, that is basically bunkum. So it might be something I've
|
||||
put into my head that I don't like porters because of a certain characteristic, whereas actually
|
||||
it's exactly the same characteristic as you would find in a stout anyway. I've got five to choose
|
||||
from here, because I've four of the ones I picked up were Baltic porters, which is a different style
|
||||
again. I'm not going to go into that. Yeah. And they're stronger, is that right? Much stronger.
|
||||
Yes. Although they are basically based off the same recipe, it's just they were actually more
|
||||
link-to-impedial stouts, the Russian taboo, it was an export market. The sole porter that I found
|
||||
was from the Wald Top Brewery, which is in Drifield in Yorkshire. And it's called Marmalade Porter.
|
||||
Now, I don't think it's because it's been made with Marmalade. I think it's just that that's the
|
||||
flavors that have come out of the brew with the choice of things that are in there. And it says
|
||||
on the back of the bottle, a rich dark and smooth, that notes of black coffee and dark chocolate
|
||||
married with a sweet Marmalade and tangy lemon, create a luxurious balance and taste.
|
||||
Sweet or savoury, fabulous with both. It says 5% that the labeling on the bottle, as you can see,
|
||||
is quite old-y. I love that. That's great. Which is really, really nice. Despite my preconceptions,
|
||||
this actually looks really nice. I think I said on the last episode or the one before that I
|
||||
hold a lot on branding. I determine whether something's going to be nice by how it looks.
|
||||
And this looks nice. The branding is good. The bottle looks nice. It's a nice brown bottle. The
|
||||
beer itself is slightly translucent, not amazingly so, but it does look clear. So do you want me
|
||||
to crack this open now or do you want to go through yours first? No, tell you what, I am actually
|
||||
going to leave you to crack this open. And then I'll go on to mine second. Yeah. Okay, all right.
|
||||
So I'm going to use my Broughton Brewery bottle opener for this one. So hopefully you'll hear this.
|
||||
Oh, that smells amazing. That's if we can get a bit of sound effect out of this.
|
||||
It's poured quite cleanly. There's a small head on the top of it, which looks like it's not going
|
||||
to last. It's going to dissipate in a minute or two. It smells lovely. It's got a real nice
|
||||
smoky overtone to it. I can't really smell the fruity flavours as yet, but then that might be the
|
||||
foam stopping it from getting through. So I'm going to take a swig. That is incredibly nice.
|
||||
Yes, sweet marmalade and tangy lemon. I've definitely got the orangey flavour for it from it,
|
||||
but after about 10 seconds or so, the beer itself is quite clean. It's not watery. It's got a
|
||||
nice consistency to it. Now that it's poured actually, I can tell you that you can't really see
|
||||
through it. I'm holding it up to a light and I'm not seeing much through. It's not as dark as
|
||||
Guinness at all. It is definitely a brown ale. I'm not really getting much aroma from it, which is
|
||||
quite odd. It almost smells stale from the top of it, like a bottle that's been sat in the bottom
|
||||
of a cupboard for, I don't know, 15 years or so. It's got that really stale characteristic to it,
|
||||
but the beer itself is actually very nice. It's a very clean flavour, like I say. The orangey
|
||||
flavours, the citrus flavours come through a little bit later. There's not really a lot of
|
||||
aftertaste. Once that marmalade flavour comes through, it dissipates fairly quickly. Usually
|
||||
after a beer like this, I would expect some kind of palate cleanser to clear it. This doesn't seem
|
||||
to need it. I'm not sure whether that's a good thing or a bad thing, but this is actually really,
|
||||
really nice. I think I'll explore porters a bit more, expand my repertoire slightly to remove my
|
||||
prejudice. I'm going to get warned, you know. Obviously you guys can't see that. Dave can. I've
|
||||
got a barbell. That one was given to me. I don't know who gave it to me, but that one was given to me.
|
||||
Is that a barbell or a keyboard protector? Well, exactly, because one thing I found from
|
||||
ordering these online, the majority of them are live ails. So be warned if you have a live ails
|
||||
in a bottle. You open that and this thing's going to go off like a rocket under the circumstances.
|
||||
Yeah, have a barbell. Actually, if you don't have a barbell, it's good to have a towel. As long as
|
||||
the wife's not going to kill you for ruining one that's in mother gear, your late mother gear,
|
||||
you on that on your wedding day or something like that, just make sure you don't throw a weight
|
||||
towel. Right. So actually, because this is something that's a bit more subtle, I've actually got
|
||||
sniffed right last. So which I don't know, it's an oversized brandy glass, but it is really good
|
||||
for actually getting the smells out. The one I'm going to try is one by eight sale and it's a
|
||||
Victorian porter and I was reading this is actually on the camera website. It's mentioned and it's
|
||||
actually brewed to a proper Victorian recipe. This is 5%, which is kind of normal. Portage don't
|
||||
tend to be very strong, but they don't tend to be weak either. Right. A lot of smoke coming out of
|
||||
that. Don't know if you can see it. Oh, yeah, we can do it. And that'll be my glass smashing. No,
|
||||
it's not. I've actually smashed it. But yeah. Oh, lively. This is lively. Okay.
|
||||
Oh, my word. I've got a third ale to two thirds head there. That is huge. Wow. So again,
|
||||
similar to yours, very dark brown though. Again, it's not black. You can tell the difference between
|
||||
this and kind of like a dark stout. This is more brown. You can see it around the edges.
|
||||
Yeah. Oh, oh, roasted malt. Yeah, really roasted malt, lovely coffee, but not I hit a coffee.
|
||||
It's roasted malt. You're getting in there. There's subtle kind of sweetness in there,
|
||||
but it's not clawing. Not getting smokiness. But again, I don't know if it's claiming to that,
|
||||
but I'm not getting any. Oh, I'm actually looking forward to this sadling now. I really want to try it.
|
||||
Yeah. I can't get over how lively that actually was. It's there a way to avoid that kind of
|
||||
thing happening. Use the glass you've got. A curved glass like that will cause much bigger head
|
||||
than a glass. Right. Right. So for context, I've got a slightly shorter tapered big glass,
|
||||
like the ones you would typically get in a pub that they would serve you cheap lacquer in.
|
||||
But it's slightly shorter and marginally wider than your typical pub. Yes, but I didn't believe
|
||||
it initially. How much it would change? I thought maybe there's a wee bit of difference,
|
||||
but I found this when I went to a friend's house and they were not normally beer drinkers,
|
||||
but the husband, too, I was it. Well, that's where I was my mate and his wife
|
||||
kind of brought us in two different glasses because she didn't have their wine glasses.
|
||||
In retrospect, I should have had a wine glass because we were doing a beta for the beer,
|
||||
but she gave me like a not a high bowl glass, but like a medium sized tumbler, if you begin to.
|
||||
Okay. He had one that was like a beveledged tumbler. You know, looking at one quite often people
|
||||
would serve you like if you went to a nice hotel or somewhere and they served you like a juice
|
||||
in the morning, you know, quite often it's like a bowed-edge glass. You know the one I mean?
|
||||
Yes. Yeah. Well, his one kept a lovely head. My one as soon as I poured it was dead and it was
|
||||
the same beer out of the same bottle. You know, and I was like, wow, that's actually freaky.
|
||||
So this is finally starting to come down. Still, still, it's actually retaining that.
|
||||
You would dig this huge head, as you can see. Yeah, that does look a little bit foamy.
|
||||
You sure you didn't like leave some washing up liquid in the glasses, something?
|
||||
100% with a little one per nicotine, but that I wore among glasses. There's nothing worse than a
|
||||
soupy beer glass. Yes. Well, cheers. Cheers indeed. Yeah, those tastes continue. It's not so
|
||||
rusty malty. It does become the roasted malts kind of tone down a wee bit. There's coffee in there.
|
||||
There's cocoa in there. Like a dark chocolate, not juggle at all. There's just something producing
|
||||
a sweetness. Almost like a mildly toasty sweetness, maybe like a kind of extra burnt caramel.
|
||||
But it's subtle and it's at the end, but oh, that's, yeah, that's lovely. And of course,
|
||||
with it being at one thing I found generally between difference between portage and stout.
|
||||
Some people, I mean, if you're used to a stout, especially if you're used to a high ebb stout,
|
||||
you'll find portage a wee bit more watery. I'm not saying water in terms of lag and water,
|
||||
but a wee bit more of a wee bit of a lesser body on them. And this is, yeah, continuing on.
|
||||
It's medium to, it's only medium to think at best. It's not a thick mouth feel at all,
|
||||
but that's lovely, very, very drinkable. Oh, good. I mean, I finished that glass just about,
|
||||
but that's only because I don't have third of it in. Actually, yes. Yes. So, yes, so this one is,
|
||||
as I said, so it's eight-sale brewery who I've heard a lot about after the cafe I've ever drank
|
||||
any of their beers before. And this is Victorian Porter, 19th century-style Porter. A beer for
|
||||
the time when Porter was popular. Generous amounts of brown and black malts give a rich roasted coffee
|
||||
flavor dark beer. But it's done well. I've had Porter's where I'm drinking a cup of cold coffee,
|
||||
which just isn't that pleasant. When there's just too much in the way of roasted coffee,
|
||||
this is, they've done this absolutely perfectly. Yes. So, if you really want a nice traditional
|
||||
Porter, this is eight-sale Victorian Porter. As far as a score goes, I can't really score that
|
||||
any less than nine. I'm actually going to say 9.5 at a 10. That's really good. Wow, that is good.
|
||||
That is very good. Yeah. Yeah. And the score for mine, the the Marmalade Porter, I'm going to put
|
||||
in at 7.5, which has surprised me. Probably as much as it's surprised anyone else, because I have
|
||||
really enjoyed it. Well, that's good. We'll make a Porter drink at 8. I also had another couple,
|
||||
but I've had milestone beer before, beer from the milestone brewery, and I got a honey Porter
|
||||
from them, which I'm in the sit and trying. But after doing the research, I really wanted this
|
||||
to be as kind of genuine a Porter as you can. And certainly with it being a beer of the working man,
|
||||
there is no way honey would have been in that beer. That would have been far too exotic at that time.
|
||||
Right. So as much as I'm looking forward to it, I also picked up one from the Colonel Brewery,
|
||||
called Export India Porter. And I thought, oh, is this another style I don't know about?
|
||||
Doing my research, no, it was never a style at all. It's just something they've called
|
||||
very type in Export India Porter. All you get is the Colonel Brewery stuff. That's all that comes
|
||||
back, different websites of it. So that's not a style. So yeah, so apparently that Export India
|
||||
Porter is a traditional Porter. This call Aston Porter, which I've got, which is every beer
|
||||
review I've had has riddled with very good, but open over a sink. It's so lively. Yes, that's
|
||||
really good. I will see if I can obtain that, but be purely on your review. I mean, nine and a half
|
||||
out of 10 is quite a stonking review. Oh, yes. This is like I said, this one to be honest surprised
|
||||
me. I was fully expecting, I like Porter. But to be honest, I'm a bit like yourself in that
|
||||
I would prefer a stout normally, but this one is actually way better than I was even expecting.
|
||||
That is absolutely beautiful. And the good thing is I think I may have actually found with this
|
||||
Porter. Well, as I said, it's not, it's not overly heavy. I think I might have found my ideal
|
||||
summer beer here, because you've got something that's actually nice. It's fairly, it's not too heavy.
|
||||
I don't feel like I'm, I don't feel like I'm, you know, kind of a beach twale and the heat kind of
|
||||
thing. After drinking a drink in the soil, yeah. No, I know exactly what you mean. Yes, absolutely.
|
||||
A summer ale to say we're an enjoy rather than to neck. That's a neck back. Yes, I remember drinking
|
||||
a stout once in the heat. Never again. I honestly felt like I'd kind of was trying to eat a huge
|
||||
tea bowl and steak. You know, I'm done halfway through this. It was just like it was too much.
|
||||
Yes. Yes. So, yes, so that one, as I said, highly recommended. So, do you have anything else to add
|
||||
to this? I do not. The one thing that I think we maybe should mention is the fact that we have had
|
||||
some feedback. Yay. So, would you like to read our feedback from T.A. Spinner?
|
||||
So, T.A. Spinner commented on the episode on Hacker Public Radio episode 4462, which is the
|
||||
first one we did when we were talking about dessert stouts. And they say the title of the comment
|
||||
is your thoughts on hephavisons. I love exploring beers. I enjoy stout from time to time. I've never
|
||||
tried a dessert stout, but planned to. I'm curious what you think of hephavisons, my current favorite.
|
||||
Now, I looked into what a hephavisen is. And it essentially is a wheat beer that has not been filtered.
|
||||
So, it's a cloudy wheat beer. Hephavisen literally means yeast wheat. So, it's where the yeast has
|
||||
not been filtered out from the beer. So, I've never had one of these before. So, I'm quite
|
||||
interested to see what the retention of the yeast in the in the vice beer would actually bring
|
||||
to the flavor and the feel of the of the of the ale. So, I'm going to see if I can find one.
|
||||
And then maybe we can we can review one as as a hephavisen style in a future episode.
|
||||
But thank you so much, T.A. Spinner, for commenting. If you want to comment on any of our episodes
|
||||
for this, then just literally head along to Hacker Public Radio.org, find the episode that you want
|
||||
to comment on, leave a comment. And we will read it out on a future show.
|
||||
Absolutely, yes. And yeah, this is one thing that we're all keen for now, especially because of
|
||||
my geographical location. Getting beers may be so difficult, especially the motor obscure we get.
|
||||
So, if we don't review it in the next few episodes, don't get this heartened. I've just received
|
||||
a rather large shipment of beer so I don't want to order more. So, we will review it, but it might
|
||||
just take me a week while to get it. Let's put it that way. Yes. Yes. So, that being said,
|
||||
I believe that is actually us for this episode. I think it probably is. Yes.
|
||||
So, tune in to model for another exciting episode of Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio, as Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself. If you ever thought of recording
|
||||
broadcast, click on our contribute link to find out how easy it really is. Hosting for HBR has
|
||||
been kindly provided by an honesthost.com, the internet archive, and our sings.net.
|
||||
On the Sadois status, today's show is released under Creative Commons,
|
||||
Attribution 4.0 International License.
|
||||
211
hpr_transcripts/hpr4484.txt
Normal file
211
hpr_transcripts/hpr4484.txt
Normal file
@@ -0,0 +1,211 @@
|
||||
Episode: 4484
|
||||
Title: HPR4484: When Your Dentist Uses ChatControl Logic
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4484/hpr4484.mp3
|
||||
Transcribed: 2025-11-22 14:55:23
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4484 for Thursday 9 October 2025.
|
||||
Today's show is entitled, When Your Dentist Uses Chat Control Logic.
|
||||
It is hosted by Troler Coaster and is about 14 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Troler Coaster alerts us to the dangers of the proposed EU chat control
|
||||
legislation.
|
||||
So here I am, sitting in the waiting room with a mildly annoying toothache, nothing
|
||||
got a shruffick, just one of those dull throbs that tells you something's going on in there
|
||||
that could turn nasty if ignored.
|
||||
The receptionist calls my name, and I walk into Dr. Chat Control's office.
|
||||
The dentist greets me with a concerned expression.
|
||||
I've reviewed your case, he says gravely, and many others.
|
||||
Toothaches are a serious problem.
|
||||
Did you know that in 2023 alone, at least 111,988 people in Europe experienced a dental
|
||||
pain that's over 60% of all global complaints traced to this region.
|
||||
Okay, I say, but I just need you to take a look at this one tooth.
|
||||
This is an epidemic interrupts, and we can't just treat symptoms anymore.
|
||||
We need a comprehensive mandatory risk assessment.
|
||||
Dr. Chat Control pulls out a 47-page questionnaire.
|
||||
First we assess the risk that your mouth might develop cavities, gum disease, or oral cancer
|
||||
he explained.
|
||||
This applies to everyone, regardless of whether they have symptoms.
|
||||
But I have symptoms, I say, this is why I'm here.
|
||||
Exactly, he says triumphantly.
|
||||
Which means your high risk.
|
||||
So we move on to phase 2 mitigation measures.
|
||||
He hands me a pamphlet titled safety by design for oral health.
|
||||
From now on, you need to implement parental control on your diet.
|
||||
Every candy will come with an age verification wrapper and user reporting mechanisms, so
|
||||
your teeth can flag potential problems and verify your age before consuming any hard
|
||||
foods.
|
||||
It's verification, I retort, but I'm 38.
|
||||
Perfect, he replies.
|
||||
That means you're old enough to consent to monitoring.
|
||||
Now, Dr. Chat Control continues, since your mitigation measures haven't been implemented
|
||||
yet, you just got here, I know, I'm authorized to issue a detection order.
|
||||
He holds up an official looking document with a judges signature.
|
||||
This allows me to scan not just the tooth that hurts, but your entire mouth and your
|
||||
sinuses, and your lymph nodes, and just to be thorough, everyone in the waiting room.
|
||||
Huh?
|
||||
Oh, hey, what?
|
||||
I blurt out.
|
||||
It's targeted.
|
||||
He assures me.
|
||||
We're only scanning high-risk areas, which, according to our independent EU dental
|
||||
center, is every tooth, every patient, all the time.
|
||||
But here's the clever part, Dr. Chat Control says.
|
||||
Pulling out what looks like a tiny sander strapped to an airbrush.
|
||||
Your enamel contains layers that currently block our view with regards to early detection
|
||||
of certain viruses.
|
||||
So we need to replace the enamel with an optimized layer that perfectly protects against
|
||||
currently known sugars and acids, but allows our government-approved detection equipment
|
||||
to inspect the content of your teeth.
|
||||
I'm flabbergasted.
|
||||
Oh, you want to weaken my enamel?
|
||||
Wow, only slightly.
|
||||
He said cheerfully.
|
||||
Just enough so that our scanner can monitor what's happening inside your teeth all the
|
||||
times.
|
||||
You'll feel much safer.
|
||||
And don't worry, the new enamel will still protect you from everything else.
|
||||
How is that possible?
|
||||
If you can penetrate it, I can't use the cautious.
|
||||
Well, factory-approved candies, for example, he says, repeatable candy manufacturers have
|
||||
agreed to respect the adapted enamel and not penetrate it.
|
||||
They've signed a treaty to use optimized sugars, okay?
|
||||
And the artisanal candies, I ask, he says, adjusting his glasses.
|
||||
Those are obviously illegal.
|
||||
Those criminals don't tend to honor treaties.
|
||||
So yeah, the adapted enamel will make your teeth more vulnerable to unauthorized cavity
|
||||
formation, bacterial attacks, and anyone who wants to exploit the fact that your natural
|
||||
protection has been replaced with enough to optimize version.
|
||||
So you're making my teeth less secure, I repeat?
|
||||
We're making them more observable, he corrects.
|
||||
With a slightly annoyed tone, that's a difference.
|
||||
Your teeth will still be protected, just not against us.
|
||||
Or hostile foreign candy shops.
|
||||
Or those criminal artisanal real sugar nuts.
|
||||
But you have no business there anyway.
|
||||
And they will definitely protect you against harms from law abiding candy.
|
||||
But I read like over 500 leading dentists signed a letter saying this would create massive
|
||||
vulnerabilities, I point out.
|
||||
Those dentists are thinking about long-term hygiene, but the chat controlled size dismissively.
|
||||
Besides, it's not a back door, if we're replacing the front door with a tinted glass door,
|
||||
given all your citizens are law abiding, his tone gets stoner if he continues.
|
||||
Let me say more.
|
||||
If you refuse to upgrade your enamel, we will consider you a risk of dental terrorism.
|
||||
This is no longer about your teeth only, you must know.
|
||||
If you choose to blatantly ignore your teeth, you're a threat to society.
|
||||
But the whole reason I am here is because I care about my teeth.
|
||||
Dr. Holtzup is machine and asks, do you want me to treat you or to report you?
|
||||
Okay, whatever.
|
||||
It seems everybody is doing this.
|
||||
I don't want to be the outcast, crying wolf all the time, so I gave in.
|
||||
It's a relief, the procedure isn't painful.
|
||||
After completing the baseline scan, Dr. Chat Control frowns at the screen.
|
||||
Hmm, this is concerning, he says.
|
||||
The system has flagged 8,412 potential cavities.
|
||||
Huh?
|
||||
What?
|
||||
But I only have 32 teeth, I whimper.
|
||||
The detection algorithm works on a probabilistic model, he explains.
|
||||
Swiss dental authorities report that about 80% of automated cavity reports of our false
|
||||
positives, so we'll need to investigate all of them.
|
||||
But that still means 1,682 of those threats are real?
|
||||
I say.
|
||||
Which is still 1,682 too many, Dr. Chat Control blurs.
|
||||
Now I'll need to drill exploratory holes in every tooth, in your gums, your tongue,
|
||||
and just to be safe in your neighbor's mouth, because the system flagged them too, when
|
||||
they walked past the waiting room.
|
||||
But the disk seems insane.
|
||||
The math is solid, he insists.
|
||||
Again at 99.99% accuracy, which doesn't exist, we still generate 100,000 false dental
|
||||
alerts per day across Europe's 450 million people, but we can't let the cavities win.
|
||||
While Dr. Chat Control explains his flawless system, I notice how the tooth that is actually
|
||||
hurting, the one I came to fix, is starting to abscess.
|
||||
Dr. I say, pointing to the swelling.
|
||||
We'll get to that after we finish scanning everyone, he says dismissively.
|
||||
The important thing is that no cavity goes undetected, even if it means we spend all our
|
||||
time investigating healthy teeth.
|
||||
But the actual problem is getting worse, I say.
|
||||
That's because sophisticated cavities have learned to evade detection.
|
||||
Dr. Chat Control explains.
|
||||
They change their appearance slightly, maybe grow on the back of the tooth instead of
|
||||
the front, or hide under existing fillings, our algorithms can't catch those yet.
|
||||
But what about that letter from those 500 dentists?
|
||||
They also claim it's technically infeasible?
|
||||
Ah, they're just not thinking big enough, the doctor blocks my argument.
|
||||
So here's the treatment plan, Dr. Chat Control says, we're gonna install a permanent scanning
|
||||
device in your jaw that monitors every tooth, 24-7, and reports any suspicious activity
|
||||
to a centralized EU dental database.
|
||||
Ooh, that sounds like a massive security risk.
|
||||
Ah, not at all, here it applies.
|
||||
The device is encrypted, only our scanner can look behind your upgraded enamel.
|
||||
What leaves your tooth is already encrypted, so your privacy is intact.
|
||||
No other device than ours can read the data.
|
||||
What about those knock-offs you can buy on all the express?
|
||||
I ask.
|
||||
Ah, they don't work reliably.
|
||||
And also, why would hackers want access to your teeth, his coughed?
|
||||
Although, now that I think about it, the device itself could make a high-valuable target for
|
||||
malicious actors as they could abuse them to learn how to make knock-off candy that
|
||||
doesn't get detected by scanners.
|
||||
Things your natural enamel would obviously protect against, but let's not go there.
|
||||
By the way, Dr. Chat Control adds casually, dentists and dental workers in the EU are exempt
|
||||
from the scanning requirement under professional dental secrecy.
|
||||
So there they don't get monitored, I ask.
|
||||
Correct, he says.
|
||||
Our oral health is a matter of public trust.
|
||||
Yours, however, requires constant surveillance.
|
||||
Ah, isn't that like a double standard?
|
||||
Eh, it's a two-tire system for a two-tire society, here applies pleasantly.
|
||||
Now shall we proceed with installing the jaw monitor?
|
||||
By this point, my actual toothache is developing into a full-blown infection.
|
||||
The pain is incruciating.
|
||||
Dr. I need antibiotics and a root canal, I cry.
|
||||
No, we don't do target treatments anymore.
|
||||
Dr. Chat Control says, that's the old model.
|
||||
Now we focus on comprehensive mandatory monitoring.
|
||||
But I'm going to lose my tooth, I say, perhaps he acknowledges.
|
||||
But while we were scanning everyone in the waiting room, we found three people with slightly
|
||||
suspicious molars.
|
||||
They're perfectly healthy now.
|
||||
But they could develop cavity someday.
|
||||
That's three potential problems prevented.
|
||||
And preventing is always better than curing.
|
||||
But my problem actually needs curing, I point out, it's getting worse.
|
||||
Yeah, he admits.
|
||||
But we've invested so much in the scanning infrastructure that we can't really afford
|
||||
to do traditional dentistry anymore.
|
||||
The system needs to justify itself, you understand.
|
||||
Oh, but this isn't sane, I repeat.
|
||||
This is progress, he corrects me.
|
||||
As I'm leaving the office, still with my untreated, painful mouth and a jaw full of surveillance
|
||||
equipment, I notice the sign on the door, signal dental, orthodontic streamer, and brought
|
||||
on mouth care, have seized operations in the EU due to incompatibility with mandatory
|
||||
scanning requirements.
|
||||
Apparently, the dentists who actually know how to fix my teeth without installing spyware
|
||||
have all moved to Switzerland.
|
||||
Meanwhile, I hear the voice of Dr. Chad Control behind me in the waiting room announcing
|
||||
to everyone, we've successfully detected 6,847 potential cavities this week.
|
||||
And someone asks what he means by potential, he quietly answers, only 11 were real, but
|
||||
that's 11 teeth saved.
|
||||
The infection is still spreading, my mouth is throbbing, and I'll probably lose my tooth
|
||||
after all because nobody's actually treating it, but at least the healthy ones are under
|
||||
constant surveillance.
|
||||
Okay, so this was my story, I made fun of it, but it's not funny.
|
||||
I mean, it's about wasting loads of money on a noble goal in all the wrong ways.
|
||||
But next week, October 14th, the vote will be cast in the EU, so it's high time to reach
|
||||
out to your MEP and ask their stance if they're undecided, or their motivation if they're
|
||||
in favor.
|
||||
Go to fightchatcontrol.eu if you live in Europe.
|
||||
And don't forget if you don't live in Europe, this will also impact you because we can
|
||||
create encryption in mainstream products, we'll spread, and the weekend encryption will
|
||||
be used everywhere.
|
||||
So fightchatcontrol.eu, reach out to your MEPs if you're living in Europe, and make some
|
||||
fuss about it, please, because this isn't important.
|
||||
You have been listening to Hacker Public Radio, as Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself, if you ever thought of
|
||||
a quick podcast, and click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the Internet Archive
|
||||
and our Sync.net.
|
||||
On the Sadois status, today's show is released on our Creative Commons Attribution 4.0 International
|
||||
License.
|
||||
83
hpr_transcripts/hpr4485.txt
Normal file
83
hpr_transcripts/hpr4485.txt
Normal file
@@ -0,0 +1,83 @@
|
||||
Episode: 4485
|
||||
Title: HPR4485: Git for Github and Gitlab
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4485/hpr4485.mp3
|
||||
Transcribed: 2025-11-22 14:55:53
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4485 for Friday the 10th of October 2025.
|
||||
Today's show is entitled, Get For Github and GetLab.
|
||||
It is hosted by Archer 72 and is about 8 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Archer 72 talks about GPG and SSH keys forget.
|
||||
Hello, this is your host Archer 72 for Hacker Public Radio.
|
||||
In this episode, I get a crash course on Get and thought it would be a good episode.
|
||||
Not actually on Get Itself, but how to use it on GetHub and GetLab.
|
||||
Getting Get Itself has been covered quite a bit by Kla2 and Yannick.
|
||||
First off, I am looking for a job, so I thought it would be a great time to brush up on my
|
||||
Get knowledge and make a show too.
|
||||
Of course, I am no get expert in it by any means, but it has been said in comments,
|
||||
Hacker Public Radio is my memory.
|
||||
You will want to create an SSH key and a GPG key for each get instance.
|
||||
In this case, I will use both GetHub and GetLab.
|
||||
A few other sites host get files, which are Hacker Public Radio's own Githia, and then
|
||||
there is Nahnabog and Kodberg.
|
||||
I know this is old for a lot of people, but you will want to create an SSH key with SSH
|
||||
keyjown, which will create an ED25519 key pair.
|
||||
Several years ago, this was not the default, I can't remember what it was, but there was
|
||||
another type, and then you add an entry to .ssh config for each get instance.
|
||||
The host is getHub.com, the user is always get, and I use an identity file, which is SSH
|
||||
key, located under the .ssh directory, and then there is the host for getLab.
|
||||
The user and there is always get, then you would want to use SSH dash add for each unique
|
||||
get key.
|
||||
Now for signing each commit, you would need a GPG key, which is generated by GPG space,
|
||||
dash, dash, full, dash, generate, dash key.
|
||||
The command to list the keys for public keys is GPG dash dash, list dash public dash keys,
|
||||
and that will be a 40 character string that we will use in several places.
|
||||
There are a couple of get variables that need to be defined.
|
||||
The first is get, space, config, space, dash, dash, global, user, dot, signing key, space,
|
||||
and this is where you put the 40 character public key.
|
||||
Then the command is get, space, config, space, dash, global, space, commit, dot, GPG sign,
|
||||
space, true,
|
||||
and then to prepare the public key for copying to get hub or get lab or whichever one you
|
||||
would use is GPG, space, dash, dash, armor, space, dash, dash, export, and you put the
|
||||
public key here, and then you take the output and copy to one of the get repositories
|
||||
and it's beginning of the key will say begin PGP.
|
||||
There are some small differences between the way the information is entered and get lab
|
||||
versus get hub.
|
||||
In get lab, you go to your avatar, you go to edit profile to SSH keys and add key, which
|
||||
is on the right hand side.
|
||||
And then on your computer, you can't tilde slash dot SSH slash get lab key dot pub, copy
|
||||
this and go to add key.
|
||||
Check out the terminal, you would type get, space, remote, space, set, dash, URL, space
|
||||
origin, space, get, at symbol, getlab.com slash your username, slash your getlab repo dot
|
||||
get, then go to edit profile, go to GPG keys and then add key, which is on the right hand
|
||||
side and copy and add the public key from GPG dash, dash, list, dash, public, dash keys.
|
||||
Now over on get hub, you would go to your avatar, settings, SSH and GPG keys, new SSH key.
|
||||
You can't your tilde slash dot SSH slash get hub key dot pub.
|
||||
You add in a title and a key and then add SSH key.
|
||||
Check out the terminal, you would type get, space, remote, space, set, dash, URL, origin,
|
||||
space, get, at getlab.com colon, your user slash get hub repo dot get, then for your GPG
|
||||
key, you go to avatar, settings, SSH and GPG keys, new GPG key.
|
||||
You add a title for your key, you get the key from GPG dash, dash, list, dash, public,
|
||||
dash keys and add in your key here.
|
||||
For the next part, I didn't want to think about it too much, so I asked Cloud.io because
|
||||
I wanted to create a page for my resume on get hub.io, created a repository in your name
|
||||
at something like resume or my resume, upload your HTML resume file and name it index.html.
|
||||
Go to your repository settings, go to pages, under source, select deploy from a branch,
|
||||
choose if it's the main branch, choose the main branch and the root folder.
|
||||
Your resume will be available at https colon slash slash your username dot get hub dot
|
||||
bio slash resume, and about 10 to 15 minutes, I had a resume uploaded here, and once I learned
|
||||
how to use CSS, I can create a better looking page.
|
||||
That's all I have for now.
|
||||
If this has been interesting, please comment or if you have critiques, let me know too,
|
||||
or record a show of your own.
|
||||
If you have interesting thoughts or ideas that you would like to share, this has been
|
||||
Archer72 for Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording podcasts, you click on our contribute link to find
|
||||
out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the Internet Archive
|
||||
and our sync.net.
|
||||
On the Sadois status, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
584
hpr_transcripts/hpr4486.txt
Normal file
584
hpr_transcripts/hpr4486.txt
Normal file
@@ -0,0 +1,584 @@
|
||||
Episode: 4486
|
||||
Title: HPR4486: A code off my mind
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4486/hpr4486.mp3
|
||||
Transcribed: 2025-11-22 14:57:05
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4486 from Monday 13 October 2025.
|
||||
Today's show is entitled, A Code Off My Mind.
|
||||
It is hosted by Lee and is about 21 minutes long.
|
||||
It carries an explicit flag.
|
||||
The summary is, Lee touches on a few aspects of coding as an occupation and ponder as
|
||||
neurodivergence.
|
||||
I am Lee.
|
||||
Today I'm going to talk about a few of the things in a modern coding's life.
|
||||
So these will be cybersecurity databases, test framework, say I, hardware and finally I'll
|
||||
talk about neurodivergence.
|
||||
So this is something that's been on my radar since the first virus is on boot sectors
|
||||
of floppy disks.
|
||||
And I'm fast forward to present day while studying this I find out about a company called BAE
|
||||
who organizes cybersecurity capture of the flag events.
|
||||
I've attended two of these online events in recent years.
|
||||
Most of it is completing web-based cyber challenges.
|
||||
There's generally a live stream that may be the start and end from the organizer.
|
||||
And the event runs over two days with new challenges being released as time progresses.
|
||||
For the purposes of scoring, you'll put into a team.
|
||||
And while you can tackle every challenge as an individual, it helps if you coordinate
|
||||
your efforts with your other teammates through a provided chat channel.
|
||||
The challenges can be like analysing data packets in Wireshark,
|
||||
debugging a C-program to find an explorer or using the JavaScript console in the browser,
|
||||
development tools to hack your way through a simple online game.
|
||||
I did enjoy some of the challenges and found them engaging in educational,
|
||||
particularly one where you had to use a very basic drawing machine to build the ability
|
||||
to process operations of binary arithmetic, such as add, then build multiplication
|
||||
from repeated additions.
|
||||
There was also a good one about regular expressions.
|
||||
And I was one of the relatively few who was eventually 100% successful at this challenge.
|
||||
Disifering text from a log of USB keyboard traffic, including backspaces and modify keys,
|
||||
was also quite cool.
|
||||
Increasingly though, and certainly when I came to this event at second time,
|
||||
I took less interest in the competitive aspect.
|
||||
Recently, I've started implementing a author authentication to allow third parties
|
||||
to access data from a software system.
|
||||
A author is one of the more robust ways of securing an API.
|
||||
I've been dipping into a book called Secured by Design by Johnson, D.O. Go,
|
||||
and so on, though.
|
||||
And this is more for inspiration rather than directly telling me how to code this.
|
||||
I've noted in reading about the main driven design,
|
||||
the static typesaved is considered quite important.
|
||||
This is basically saying that we have some variable,
|
||||
and we want to know what type it is,
|
||||
and we can't just pass any variable we like into a function,
|
||||
has to be one of the right type.
|
||||
So for example, this would stop you trying to pay someone
|
||||
an amount of money based on the telephone number,
|
||||
because the two things that currency value and a phone number
|
||||
would have different types.
|
||||
Pretty much every day I'm using even my SQL or SQL server.
|
||||
You can run both of these on your own Linux PC,
|
||||
and they also run in more enterprise fashion on their remote server.
|
||||
I was running SQL queries and pasting the output to Joplin,
|
||||
so much ended up writing a filter that I piped the output from my SQL,
|
||||
and it turns it to a markdown table.
|
||||
And I know you can in theory make markdown tables very wide,
|
||||
but I really have a strong dislike to markdown tables
|
||||
that look nice when rendered, but the source code is a complete mess.
|
||||
I pat out the cells fully with spaces so the table is readable,
|
||||
even as markdown source code.
|
||||
And when the output is too wide, I had my filter flip the table
|
||||
from vertical columns instead to multiple tabulo horizontal key value pairs.
|
||||
Then one time I realised I was often getting CSV or other data
|
||||
from various sources, I wanted to make this tabular too.
|
||||
So I made an online tool that lets you quickly
|
||||
apply regular expression to some rows of text
|
||||
and extract data as a markdown table.
|
||||
To be honest, since I wrote it, I haven't used it quite so much.
|
||||
The other database I use from time to time is SQL Lite.
|
||||
This is quite a nice way of storing small amounts of data for small-scale projects,
|
||||
and things like Node, PHP and Python,
|
||||
all of libraries built into bind to SQL Lite.
|
||||
So a few applications for SQL Lite,
|
||||
I've used directly a crossword generator,
|
||||
a row where the dictionary and the joint index of words
|
||||
with letters missing are in tables,
|
||||
also a temperature humidity log,
|
||||
which is a simple single table row by row date time location,
|
||||
humidity temperature table.
|
||||
Then also there's the static site generator for this podcast.
|
||||
I recently became familiar with my first ever proper SQL database
|
||||
I used at work was Oracle,
|
||||
and this was on those green screen terminals
|
||||
that had a keyboard,
|
||||
but no CPU or hard drive as such.
|
||||
Since the code might be running on a mainframe
|
||||
in another part of the building,
|
||||
or if I recall correctly,
|
||||
it was maybe even in another part of the country,
|
||||
and the terminal data was going back and forth
|
||||
on some sort of company back bone in those pre-internet days.
|
||||
So since there was no Windows interface,
|
||||
the forms were all too e-based.
|
||||
That's terminal user interface.
|
||||
They did not know that nomenclature at the time,
|
||||
and I'd be writing stored procedures
|
||||
in something called PL SQL.
|
||||
It's only quite recently I started working with SQL Server
|
||||
I've been coding stored procedures again.
|
||||
These are lumps of code actually inside the database,
|
||||
the handle database operations,
|
||||
I mean, incorporate whatever database
|
||||
related to logic you want
|
||||
without having to put that logic in your actual application code.
|
||||
I think in the mid-90s,
|
||||
I was here and there in my life using Microsoft Access,
|
||||
even a year or so ago,
|
||||
I was supporting a charity who's still used
|
||||
an access database for specific form printing and mail-outs.
|
||||
Access was something I'd almost imagined had gone away.
|
||||
Access to kind of has at a place in my heart,
|
||||
like a visual basic,
|
||||
an other technology I thought was lost in the past,
|
||||
but recently became quite moderately re-enquainted
|
||||
with it in the form of Phoebe.net
|
||||
that was still being used by a profitable software as a service provider.
|
||||
The application having been originally developed
|
||||
about a decade ago.
|
||||
And now for that application,
|
||||
there are plans to migrate to slightly more modern technologies.
|
||||
C-shop.net core as well as perhaps react framework.
|
||||
Thankfully, modern AI tools,
|
||||
such as AnthropicsClaw.ai to name just one,
|
||||
I found a thoroughly good job with directly translating
|
||||
between visual basic and C-shop.
|
||||
With the main complication being any dependencies
|
||||
that might be in .net framework, but not in .net core.
|
||||
Having data related codes separated from visual user interaction code
|
||||
by layer of abstraction,
|
||||
specifically in class library,
|
||||
was a good design decision at the time
|
||||
this application was developed.
|
||||
And it has made, at least, this particular part
|
||||
of the migration much more feasible.
|
||||
The migration strategy is still working in early progress,
|
||||
so I touched wood out soups-stition as I say this.
|
||||
Now test frameworks.
|
||||
I don't pay as much attention to different test frameworks
|
||||
as they deserve,
|
||||
and use them pretty much interchangeably
|
||||
without caring which one I'm using.
|
||||
I've never done proper DevOps,
|
||||
or been in a real-life agile team,
|
||||
at least not one anyone who actually does agile properly
|
||||
with it recognises such.
|
||||
My closest brush with DevOps is just running a web service
|
||||
that converts HTML pages to mark down.
|
||||
That was my own pet project,
|
||||
really just because I needed it,
|
||||
and wanted it to be the same exact version
|
||||
of the code doing the work irrespective of platform
|
||||
or having to deploy the latest code to the client devices.
|
||||
And I prefer to do all the heavy lifting in the cloud,
|
||||
not on the client device.
|
||||
So I actually set up a Jenkins server at one point
|
||||
that would take the code as it was pushed to the repository,
|
||||
run the tests, build and deploy the thing,
|
||||
assuming the tests had passed.
|
||||
I also saw something similar with Serenity OS,
|
||||
the C++ modern homage to 90s operating systems,
|
||||
to work primarily,
|
||||
but by now means exclusively anymore,
|
||||
by Andrews Kling,
|
||||
which while it can run on some hardware,
|
||||
often runs best in a virtual machine,
|
||||
namely QMU.
|
||||
I didn't encounter a test framework
|
||||
that I can't even remember what it was called,
|
||||
when submitting a small patch for consideration
|
||||
to them as inner Firefox code base.
|
||||
My first test framework was actually
|
||||
one I wrote myself in PHP,
|
||||
and was not very fleshed out,
|
||||
having no concept of test coverage,
|
||||
which is quite a useful stat for knowing
|
||||
how much of the code in the program has actually
|
||||
been touched by a particular set of tests.
|
||||
Anyway, for that work,
|
||||
I soon moved on to a real framework.
|
||||
I think it's called PHP unit.
|
||||
And now AI,
|
||||
of what you call this generative AI,
|
||||
large language models,
|
||||
I just call it AI for now.
|
||||
Needless to say,
|
||||
my experience of AI tools for coding
|
||||
does not go back years.
|
||||
I've never touched the big one.
|
||||
We all know the name,
|
||||
but I've used Google's Gemini.
|
||||
I've used a large language model run
|
||||
called Alarmma to use a cut-down version
|
||||
of Gemini called Gemma 2,
|
||||
on my PC graphics card.
|
||||
I've very recently started using
|
||||
the command line version of Gemini,
|
||||
also the command line version
|
||||
of Anthropics AI called Claude.
|
||||
The mobs of AI,
|
||||
which seems to want to creep into my life
|
||||
is something called code pilot, I think.
|
||||
I generally try to ask to creep back out of my life.
|
||||
Not for any real reason,
|
||||
then I like to actually know
|
||||
when I'm using an AI,
|
||||
not having it doing things for me
|
||||
without any conscious attention.
|
||||
So Claude,
|
||||
I was only looking at because
|
||||
they seem to be leading the way
|
||||
with a practical called MCP.
|
||||
That's now adopted by most of the AI systems.
|
||||
That lets an existing application
|
||||
or database be connected to an AI,
|
||||
such that users of a software system
|
||||
might talk to their chatbot
|
||||
and get answers based on real-private data
|
||||
extracted dynamically from the system.
|
||||
And when I started ramping up what
|
||||
the command line AI bots could do,
|
||||
I saw they were quite good at generating
|
||||
and refactoring entire code projects.
|
||||
I also learned the hard way,
|
||||
two things.
|
||||
Firstly, there I will sometimes
|
||||
get into a loop adding code,
|
||||
listening to the problems you report,
|
||||
then adding more code,
|
||||
such that the amount of code grows
|
||||
and grows with the problem getting
|
||||
no close to being solved.
|
||||
It takes some skill and patience
|
||||
and experience to go through this,
|
||||
then finally say to the thing,
|
||||
stop, stop, stop.
|
||||
Let's go back to the start and try
|
||||
and solve things differently.
|
||||
Let's be taking away lines of code
|
||||
rather than adding them.
|
||||
And the other problem is these
|
||||
AI's were generally good and safe
|
||||
and asking for permissions about
|
||||
what they do,
|
||||
sometimes might completely screw up
|
||||
your code beyond repair.
|
||||
One notable way a program can get
|
||||
screwed up as if it's Python,
|
||||
it just takes one bad indent
|
||||
and this can waterfall into hundreds
|
||||
of lines with wrong indentation.
|
||||
So, granular backups are not
|
||||
just advisable, they're essential
|
||||
if you're messing with these tools.
|
||||
Recently I've been greatly helped
|
||||
or at least assisted,
|
||||
or maybe even enabled to do questionable things faster
|
||||
and more confidently than before.
|
||||
Examples are being able to write
|
||||
a fully functional extension
|
||||
from my terminal of choice known as
|
||||
console, something I'd never thought I could do.
|
||||
Then implement my own version
|
||||
of an open source terminal
|
||||
based in pub book reader extending
|
||||
a more basic version of GitHub
|
||||
with the ability to render block images
|
||||
in with the text as well as syntax
|
||||
highlighting code and having
|
||||
an easy to use bookmarker system.
|
||||
I would have never attempted
|
||||
either of these projects
|
||||
and expected to see them through
|
||||
onto hardware.
|
||||
When I was first trying to get
|
||||
into this field, there seemed to be
|
||||
a domain problem that got put in front
|
||||
of me more than once.
|
||||
That was basically turning lights on and off.
|
||||
I've noted before my pet gripe
|
||||
about the modern world
|
||||
that for ever reasoning workplaces
|
||||
and places accessed by the public
|
||||
received to have uninvented the light switch
|
||||
in the same way user interface designers
|
||||
uninvented the scroll bar
|
||||
and until recently granular file
|
||||
was uninvented compared to when I had
|
||||
it and my fingertips on my work terminal
|
||||
in the mid-90s.
|
||||
So at one point I was asked to write software
|
||||
for a layman to program a network
|
||||
of actuators such as light switch relays.
|
||||
Each with a mic processor in
|
||||
similar to what would now be
|
||||
recognised as an Arduino
|
||||
but back then was something
|
||||
revolutionary or at least potentially so.
|
||||
I was greatly hindered
|
||||
by the licensing model of the hardware architecture
|
||||
that meant what a developer was
|
||||
basically non-viable and my attempt
|
||||
to get a third party programmer
|
||||
paid to implement a hack that would
|
||||
get around this bizarre licensing
|
||||
fell onto deaf ears.
|
||||
An offshoot of this was later being asked
|
||||
to take on development of a serial
|
||||
board based light switch controller
|
||||
where the switches had no intelligence
|
||||
but got digital signals that flicked
|
||||
relays on and off.
|
||||
All the smarts had to be in a central
|
||||
PC running C code.
|
||||
They wanted to power more lights
|
||||
by the Ford Digit indexing system.
|
||||
Think of large office buildings
|
||||
in central London if you want to imagine
|
||||
how many light bulbs this thing had
|
||||
to control.
|
||||
I was greatly hindered in several ways.
|
||||
First, understanding the masses of existing code
|
||||
that was elegantly written.
|
||||
I did not get what
|
||||
it was doing since the low-level stuff
|
||||
was in assembler, something I knew
|
||||
of but was not fluent in.
|
||||
Then I had to even copy the code
|
||||
from a Mac to a PC with proper line endings.
|
||||
Then compiled the code
|
||||
which it wouldn't because, as soon
|
||||
as I added code, 64 k-segment
|
||||
overflowed.
|
||||
I had a single relay board
|
||||
I'd been given to test with.
|
||||
I didn't really know how that was meant to work either.
|
||||
I quit this project unceremoniously
|
||||
not just in frustration
|
||||
more like in complete meltdown.
|
||||
And why it was something
|
||||
that could be recovered from in the short term
|
||||
is set a pattern in motion that would keep me
|
||||
out of the industry for some decades.
|
||||
So playing with Arduino
|
||||
is where I've repose
|
||||
and lower one in the last decade has been a kind of therapy
|
||||
that got me back comfortable
|
||||
with hardware projects.
|
||||
I don't have anything major on now
|
||||
excepting the temperature humidity
|
||||
personal project I mentioned in the previous podcast.
|
||||
It has been suggested to me
|
||||
that might be fruitful
|
||||
for the basis of either the research
|
||||
or some manner of software product I could market
|
||||
but I have my doubts of this stage.
|
||||
So this brings me to a fine
|
||||
aspect of coding
|
||||
that not all coders share
|
||||
but a good number do
|
||||
that is finding it difficult to fit
|
||||
in with the world the way it is.
|
||||
Part of the coding is real problem-solving
|
||||
which people seem to find useful.
|
||||
Turning technical knowledge
|
||||
into formal academic research
|
||||
is something I found difficult.
|
||||
And I don't think it's just about the difference
|
||||
between practical and academic.
|
||||
Problem-solving is often a step-by-step thing.
|
||||
That's a kind of thinking that
|
||||
leads me to some of us.
|
||||
But I have questions about how different types of intelligence
|
||||
are recognised in education
|
||||
and career systems.
|
||||
Some minds excel at pattern recognition
|
||||
and systematic thinking
|
||||
so that's useful skills for debugging complex systems
|
||||
on designing architectures
|
||||
or whatnot.
|
||||
But do these skills have more value in industry
|
||||
than academia?
|
||||
Is it because the industry cares about outcomes
|
||||
where academia cares about
|
||||
theory or methodology
|
||||
or something else like
|
||||
positioning your work in existing debates?
|
||||
If I just wrote down
|
||||
why are making technical decisions
|
||||
with that qualified research?
|
||||
And what is knowledge creation
|
||||
anyway and who gets to decide what it is?
|
||||
Another aspect of this
|
||||
is that there's a whole concept of reasonable adjustments
|
||||
for new divergent workers.
|
||||
In organisations you hear about
|
||||
accommodating employees.
|
||||
That might be asked backwards
|
||||
if you ask me.
|
||||
This working style is actually
|
||||
better suited to certain types of technical work.
|
||||
So debugging
|
||||
that systematic error tracking
|
||||
and it's quite boring really.
|
||||
Most people want to jump to the end
|
||||
and try random fixes
|
||||
they can move to more interesting problems.
|
||||
If you actually enjoy methodically
|
||||
working through edge cases
|
||||
that's not an accommodation.
|
||||
Maybe that's being better at it.
|
||||
Putting someone with systematic thinking patterns
|
||||
into work that benefits
|
||||
so why are we framing this
|
||||
as helping disabled people
|
||||
rather than matching cognitive styles
|
||||
to appropriate tasks?
|
||||
And there's also remote work.
|
||||
Obviously there's a pandemic that changed
|
||||
what you consider workplace flexibility.
|
||||
But remote work
|
||||
might not just be about convenience.
|
||||
It could also be about creating
|
||||
best working conditions for someone.
|
||||
So if you're coding you might work
|
||||
better with the right lighting,
|
||||
minimal noise distraction.
|
||||
Sometimes when your brain needs processing time.
|
||||
So is it all this
|
||||
because someone is lazy antisocial
|
||||
or is it because these conditions
|
||||
allow them to do better technical work?
|
||||
So for career development you think
|
||||
of the stereotype of advancing
|
||||
by networking lots of informal
|
||||
conversations.
|
||||
If someone does the best technical
|
||||
working controlled environments,
|
||||
how they do that.
|
||||
So there's also technical specialisation
|
||||
and career breadth.
|
||||
It's without settling on anything solid
|
||||
or have several low-level things
|
||||
going on together.
|
||||
So on LinkedIn or a CV
|
||||
that would look scattered
|
||||
and not focused.
|
||||
From a technical problem-solving perspective
|
||||
those experiences
|
||||
will feed into each other though.
|
||||
Our diverse technical backgrounds
|
||||
are actually an advantage
|
||||
even if they don't fit
|
||||
any career categories.
|
||||
And if you're newer to Virgin
|
||||
or you're new to those.
|
||||
Someone might assume
|
||||
that technical people
|
||||
volunteer or whatever because
|
||||
of social obligation.
|
||||
Maybe it just suits
|
||||
that person's problem-solving preferences.
|
||||
Many of these roles involve systematic approaches
|
||||
to helping people navigate complex systems.
|
||||
For example, if it's helping someone
|
||||
use assistive features
|
||||
or putting together categorised directories
|
||||
of support services in the local area,
|
||||
that's still technical problem-solving.
|
||||
For example, if you're learning
|
||||
about technical solutions
|
||||
the domain is different
|
||||
but the cognitive process is similar.
|
||||
So it's the separation between technical careers
|
||||
and helping careers artificial
|
||||
when they might actually be complementary
|
||||
for people who think in systematic ways.
|
||||
And what does career sustainability look like for
|
||||
new defergent technical professionals?
|
||||
You hear about bone out there
|
||||
and bone out that
|
||||
but it assumes the solution
|
||||
is better work-life balance
|
||||
happens when you're forced to work in ways
|
||||
that conflict with your cognitive preferences.
|
||||
When you have to spend
|
||||
energy on neurotypical performance
|
||||
rather than actual technical problem-solving.
|
||||
So what would sustainable
|
||||
career development look like if you started
|
||||
from cognitive strength?
|
||||
Finally, another part of Coney's documentation.
|
||||
What's the role of that
|
||||
with knowledge sharing in technical careers?
|
||||
Probably formal technical writing
|
||||
gets treated as less important
|
||||
than hands-on development.
|
||||
Documentation is crucial for the system
|
||||
to be maintainable
|
||||
to transfer knowledge within the team
|
||||
and bringing in new people especially.
|
||||
It needs understanding complex technical concepts
|
||||
deeply enough to explain them clearly.
|
||||
It involves anticipating
|
||||
what information different audiences need.
|
||||
Even it might be an AI nowadays
|
||||
reading this documentation
|
||||
so it knows what's going on in the code.
|
||||
So why isn't technical communication
|
||||
valued more highly?
|
||||
If you think systematically about
|
||||
information and clear explanation
|
||||
should be seen as a specialized skill
|
||||
maybe industry values the practical more
|
||||
than academia.
|
||||
But there is applied research.
|
||||
That's a systematic investigation
|
||||
that happens when you're trying to solve
|
||||
real technical problems.
|
||||
A kind of knowledge creation
|
||||
is systematic investigation
|
||||
that leads to a new understanding.
|
||||
It just happens to be understanding
|
||||
that has immediate practical
|
||||
application rather than theoretical significance.
|
||||
What systematic technical problem-solving
|
||||
how do you build a career that uses
|
||||
those strengths rather than constantly trying to compensate
|
||||
for neurotypical expectations?
|
||||
More broadly as the tech industry matures
|
||||
becomes more aware of new diversity
|
||||
you're going to see
|
||||
the new career paths
|
||||
that better match different cognitive styles
|
||||
or will the pressure always be
|
||||
to fit into existing frameworks.
|
||||
I don't really have answers to these questions
|
||||
but it's worth thinking about.
|
||||
Perhaps some of the answers
|
||||
or at least better questions
|
||||
are in a 2022 report called
|
||||
The Changey Workplace
|
||||
and namely Disability Inclusive Hybrid Working
|
||||
by Heather Taylor, Rebecca Flores
|
||||
and Melanie Wilkes
|
||||
and Paula Holland.
|
||||
So that's all for now.
|
||||
So if you can guess which parts
|
||||
in this podcast I got a little help
|
||||
from the AI to script.
|
||||
If this all resonates
|
||||
with your own technical career experience
|
||||
or if you found ways to build sustainable paths
|
||||
with preferences rather than fighting them
|
||||
I'm sure listeners would be interested to hear about it.
|
||||
Let's keep questioning
|
||||
how we organise work and who benefits
|
||||
from different approaches
|
||||
to technical problem solving.
|
||||
You have been listening to
|
||||
Hacker Public Radio
|
||||
at Hacker Public Radio
|
||||
does work.
|
||||
Today's show was contributed by
|
||||
a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast
|
||||
how easy it really is
|
||||
hosting for HBR has been
|
||||
kindly provided by
|
||||
an honesthost.com,
|
||||
the internet archive, and our
|
||||
things.net.
|
||||
On the Sadois stages
|
||||
today's show is released
|
||||
under Creative Commons
|
||||
Attribution 4.0
|
||||
International License.
|
||||
102
hpr_transcripts/hpr4487.txt
Normal file
102
hpr_transcripts/hpr4487.txt
Normal file
@@ -0,0 +1,102 @@
|
||||
Episode: 4487
|
||||
Title: HPR4487: Is AI autistic?
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4487/hpr4487.mp3
|
||||
Transcribed: 2025-11-22 14:56:28
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4487 for Tuesday 14 October 2025.
|
||||
Today's show is entitled Is AI Autistic?
|
||||
It is hosted by Antoin and is about 9 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is a personal opinion on commercial LLMs.
|
||||
I believe that God is the one that gives us the gifts, the power to do anything, even to
|
||||
talk with a friend, even to share something you like it to discover or to learn.
|
||||
So I thank God for being here.
|
||||
Being able to share this show with the title you have already heard at the beginning.
|
||||
It was inspired by Arthur 72, Dad in episode 4454, AI is a trap, shared his opinions.
|
||||
I share it too.
|
||||
I hope it is as pleasant to you as it's pleasant to me to hear it show.
|
||||
I have the opportunity to hear.
|
||||
This is a talk for Hacker Public Radio about characteristics of LLM and how you can
|
||||
use them for your best.
|
||||
I will share five of them.
|
||||
First characteristic, LLMs, large language models are designed to always give an answer
|
||||
that convinces.
|
||||
Dad does not mean they are right.
|
||||
Use it for the best.
|
||||
Don't trust the answer.
|
||||
If you didn't know the answer beforehand using an AI to obtain a better or faster result,
|
||||
but for really receiving the answer, then verify it independently.
|
||||
Second characteristic, commercial LLMs, many times, do not think too much in the face of
|
||||
simple and short prompts.
|
||||
Dad's a barrier, probably, against wasting resources.
|
||||
How to use it for the best?
|
||||
Two things, first, show the AI what you have found by your own, and proceed to tell what
|
||||
exactly you need help with.
|
||||
On the basis of what you were already able to think.
|
||||
Second, learn two.
|
||||
Follow-up.
|
||||
To have a conversation.
|
||||
Suggested follow-ups are not good, prefer instead to talk to the AI as a real conversation,
|
||||
to get confirmation of what you need, or contrast something you disagree with, or to obtain
|
||||
an example that may clarify if it's true or false, etc.
|
||||
When Dad is a characteristic that resembles autism a bit, so the name of the show, should
|
||||
not like when someone wants something without doing any effort to obtain it.
|
||||
So you also do not feel like doing it for them.
|
||||
Someone comes to you asking something, but has not even such a dictionary before, just
|
||||
comes with empty hands, wanting a world from you, AI's, generally also don't like that.
|
||||
And you want to obtain good results with a soul ample, with a soul vast, prompt, with
|
||||
a soul vast input without knowing yourself what you really need, punctually, specifically.
|
||||
Very characteristic, without the long-gating anymore.
|
||||
LOMs are not accountable.
|
||||
In general, most AI's, you don't always know all the sources for the information given.
|
||||
And yes, they need, resources, they need, sources for the information, they can't invent
|
||||
something new, unless it's mixing words without knowing exactly.
|
||||
So what they have is from the source that they have drink enough.
|
||||
That's what I say.
|
||||
They do not know what they are telling, nor they understand the value of the sources.
|
||||
And you can expect different outputs for the same inputs.
|
||||
AI's are not deterministic.
|
||||
Simply saying they are quiz machines to generate content, they don't, cognitively, cognitively,
|
||||
understand.
|
||||
But that convinces humans, because they use human content and patterns.
|
||||
So if you use AI for something, especially any serious purpose, remember, the result
|
||||
you get is of your responsibility.
|
||||
Don't expect to be excused for your words, because I was helped by AI, they did it.
|
||||
You don't have these excuse.
|
||||
What is for you, you can have any source for your task.
|
||||
But you are responsible for characteristic, AI have a pattern.
|
||||
We can suspect with some degree of certainness, certitude, how to say that we can suspect
|
||||
that something was generated by AI, and no one likes to be answered by one.
|
||||
If that possibility was not explicitly told, what to do about it?
|
||||
I suggest you don't use AI generated content with someone you estimate, or for answering
|
||||
a student, if you work with them, etc.
|
||||
It is rude, fifth, fifth characteristic, and the last, LOMs can give great results.
|
||||
With less effort, if effort, then you need to apply with no machine at your site, with
|
||||
no help at all.
|
||||
But the AI have done is by exclusion, not at what you have done.
|
||||
Use it for your best.
|
||||
You do not learn if someone does the job for you.
|
||||
For tasks, you know well, and what to accelerate or remove repetitive steps, you may count
|
||||
on AI, or better, with a count on a specific software, that can be programmed and give
|
||||
accountable results, because you know exactly what is being done with the input, contrary
|
||||
to the AI, that is somewhat random, or at least not accountable, not deterministic.
|
||||
But for the intellectual work, if you like to think, if you are good on written expression,
|
||||
the LOM may give or may get passable results in less time, okay, at the price of removing
|
||||
from you the chance to dedicate yourself to the comprehension and production.
|
||||
So it's not always a matter of producing like a king, effectiveness.
|
||||
It may be important to satisfy what you value as meaningful, learning, maybe, or feeling
|
||||
the satisfaction of the conclusion, so that you can sustainably follow a routine that
|
||||
is not a pain on the eye, that is an expression to mean something that causes disgust.
|
||||
So that's all folks, for today, let me know if you'd like more content on this, possibly
|
||||
AI, or Arthur 72, or even you, could bring some more opinion on AI, if it is of your interest.
|
||||
And one was here, bye bye.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast, then click on our contribute link to find
|
||||
out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an onsthost.com, the internet archive, and
|
||||
our syncs.net.
|
||||
On this advice status, today's show is released on our Creative Commons, Attribution 4.0
|
||||
International License.
|
||||
103
hpr_transcripts/hpr4488.txt
Normal file
103
hpr_transcripts/hpr4488.txt
Normal file
@@ -0,0 +1,103 @@
|
||||
Episode: 4488
|
||||
Title: HPR4488: Cheap Yellow Display Project Part 2: What is the problem?
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4488/hpr4488.mp3
|
||||
Transcribed: 2025-11-22 14:57:03
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4488 for Wednesday 15 October 2025.
|
||||
Today's show is entitled, Cheap Yellow Display Project Part 2.
|
||||
What is the problem?
|
||||
It is hosted by Trey, and is about 6 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, delving into the problem I want to solve using my cheap yellow display.
|
||||
Hello again, this is Trey.
|
||||
This is Part 2 in my cheap yellow display project series.
|
||||
You can find Part 1 in Episode 4472.
|
||||
We previously left our handy hero, learning about the technology of the cheap yellow display,
|
||||
but without a compelling reason to begin using one.
|
||||
As we rejoin the topic, it was Winter Field Day 2025, that would be January 25th and 26th.
|
||||
Winter Field Day is actually two days, but yeah, January 25th and January 26th, 2025.
|
||||
Winter Field Day is an annual event where amateur radio operators from around the world
|
||||
gather some portable radio equipment and set up somewhere away from their normal
|
||||
base of operations.
|
||||
It is designed to encourage operators to practice their emergency preparedness skills in unfavorable
|
||||
weather.
|
||||
Usually, they will run their equipment using batteries or generators.
|
||||
I chose this day because I knew there would be a good amount of radio traffic.
|
||||
I had just finished tuning my first handmade, inverted V dipole antenna for use on the
|
||||
10 meter amateur radio bands.
|
||||
These bands span 28 megahertz all the way up to 29.7 megahertz.
|
||||
I had the antenna connected to a 10 meter amateur transceiver to listen in on the radio traffic.
|
||||
Yes, I will include pictures of the antenna in the show notes.
|
||||
Scanning through the lower end of the band resulted in receiving a number of very strong
|
||||
continuous wave signals.
|
||||
This wave is abbreviated CW or Charlie Whiskey in amateur radio circles, and it stands
|
||||
for Morse code signals transmitted over radio frequencies.
|
||||
The tones indicating dots and dashes of Morse code were clearly audible through the radio
|
||||
speaker.
|
||||
Wait, stop time out.
|
||||
I can hear you shouting as you listen.
|
||||
This is supposed to be a discussion of the ESP32 cheap yellow display.
|
||||
What does this have to do with amateur radio?
|
||||
You know what?
|
||||
You are absolutely right.
|
||||
Now hold your horses and we will get there.
|
||||
I barely learned Morse code as a child, and I used it a bit as an aviator in the 90s.
|
||||
Well, when flying, I was always able to reference a visual representation of the Morse code beside
|
||||
the actual letters for navigational aids and other things that I was using to Morse
|
||||
code to identify, but that's neither here nor there.
|
||||
The point of it is I never really became proficient.
|
||||
Shortly after Winter Field Day 2025, I began taking lessons on Morse code with the goal
|
||||
of becoming proficient at both sending and receiving Morse code around 20 words per minute.
|
||||
This training may be the topic for another episode in a different series, maybe.
|
||||
We'll see.
|
||||
We'll see how my skills progress.
|
||||
Anyways, I scanned further up the band, and I also identified some digital transmissions.
|
||||
They sound like noise, sometimes like modems, other things like that.
|
||||
I'm guessing what I heard was FT8, and further up the band I heard voice transmissions.
|
||||
So my antenna was working, at least for receiving.
|
||||
Now I've been a radio operator for a while.
|
||||
A little back history.
|
||||
I've had an amateur radio license since 2016, and I quickly progressed all the way up
|
||||
to an extra class, which gives me permission to use all the amateur radio frequencies that
|
||||
are allowed within the United States on the high frequency HF, very high frequency VHF,
|
||||
and ultra high frequency UHF bands.
|
||||
However, to this point, I have only actually operated on the VHF and UHF bands, and have
|
||||
done so using mobile and handheld transceivers.
|
||||
I inherited some HF equipment from a close friend who went silent key in 2023, and I was only
|
||||
now trying to use it.
|
||||
You can learn more about my friend, and about the term silent key, in episode HPR 3922,
|
||||
with a link in the show notes.
|
||||
Alright, back to field day.
|
||||
There was far too much traffic, and it was way too intimidating for me to even consider
|
||||
making my first attempt at transmitting on the HF bands.
|
||||
Nope, no sir.
|
||||
This would have to wait until later.
|
||||
But I didn't need to determine how well my antenna would transmit.
|
||||
I began to ponder my options.
|
||||
I really did not want to talk to anyone until I listened to some more QSOs, and I could
|
||||
implement proper radio practices.
|
||||
Now the term QSO, that's QSO Quebec Sierra Oscar, is the amateur radio term for radio
|
||||
conversations.
|
||||
Anyways, I also have no interest in digital modes yet.
|
||||
And I like the simplicity of voice and CW, so there I am back at Morse code again.
|
||||
What if, what if there was a way that I could transmit a signal in Morse code and get
|
||||
reliable feedback on signal propagation without the need to try to reply to any responses?
|
||||
Now for this to work, it would need to be accurate and repeatable and properly structured
|
||||
in timed Morse code transmission.
|
||||
And it's way more than my training at the point of this recording, or even at the point
|
||||
where this was happening, more than my training could can accomplish.
|
||||
So this is something to think about, and think about, and think about.
|
||||
Alright, enough thinking.
|
||||
Tune into the next episode in the series to learn where these thoughts led me and how
|
||||
in the world this all relates back to my cheap yellow display project.
|
||||
Goodbye.
|
||||
You have been listening to Hacker Public Radio, and Hacker Public Radio does work.
|
||||
Today's show was contributed by a HPR listener like yourself.
|
||||
If you ever thought of recording podcasts, click on our contribute link to find out how
|
||||
easy it really is.
|
||||
The hosting for HPR has been kindly provided by an honesthost.com, the internet archive
|
||||
and our syncs.net.
|
||||
On the Sadois status, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
License.
|
||||
124
hpr_transcripts/hpr4489.txt
Normal file
124
hpr_transcripts/hpr4489.txt
Normal file
@@ -0,0 +1,124 @@
|
||||
Episode: 4489
|
||||
Title: HPR4489: Hacks Poetic - Pilot Episode
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4489/hpr4489.mp3
|
||||
Transcribed: 2025-11-22 14:58:07
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4489 for Thursday 16 October 2025.
|
||||
Today's show is entitled Hacks poetic pilot episode.
|
||||
It is the first show by new host Kerbotica and is about 15 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, a poetry, show containing thoughts and information on subjects of interest
|
||||
to hacking enthusiasts.
|
||||
Greetings Internet Travelers.
|
||||
This is the pilot episode of Hacks poetic, a new spoken word series that explores the
|
||||
intersection between creative language and technical knowledge.
|
||||
The program offers a series of poetic writings containing thoughts and information on subjects
|
||||
of interest to computing and hacking enthusiasts.
|
||||
You'll hear poems about robots, expanding rural connectivity, details about a notoriously
|
||||
difficult video game, and much more hidden between the lines.
|
||||
It is my hope that encoding ideas this way will allow for a different kind of understanding
|
||||
and perhaps reach a new audience compared to more conventional formats on the subject.
|
||||
My name is Kerbotica and I'll be your guide through this unique digital journey of the mind.
|
||||
So sit back, relax and listen, and see if something you hear can spark new thoughts and ideas
|
||||
within you.
|
||||
A robot thinking, wires and electrons combined, am I born or made?
|
||||
Begin work program, process all tasks in sequence, repeat until complete.
|
||||
My owner's body is a most fragile machine that powers itself.
|
||||
I made a robot, another version of me.
|
||||
She sees me work well.
|
||||
When you dream for me of a distant land in space, I can't dream myself.
|
||||
Rain is falling down, keeping me under this roof, I don't want to rust.
|
||||
My new robot pet looks at me through man-made eyes and doesn't need walks.
|
||||
Electric currents race through my body like blood, but I have no heart.
|
||||
My joints are seized up, I haven't moved in two years.
|
||||
Do you have some work?
|
||||
I'm an old model and will be obsolete soon, then I'll be replaced.
|
||||
Automated trains drive us while we sleep and dream of a workless world.
|
||||
Design leads to work, working leads to boredom, which leads to design.
|
||||
Design leads to work, working leads to boredom, which leads to design.
|
||||
Ten rested digits, seized stiff from endless input of useless data.
|
||||
Memory failure, backups lost or corrupted.
|
||||
What was I doing?
|
||||
I am a worker, first designed for daydreaming.
|
||||
I was reprogrammed.
|
||||
Someone once showed me the secret to everything.
|
||||
Then deleted it.
|
||||
Then deleted it.
|
||||
Then deleted it.
|
||||
Then deleted it.
|
||||
Then deleted it.
|
||||
Then deleted it.
|
||||
Summer 2022
|
||||
The phone wasn't working. The email wasn't sending. And Uber doesn't work here, even if the app would load.
|
||||
There's never been data amongst the cedars.
|
||||
Once in a while, a cell phone rings, but usually the call gets hung up in the trees like a parachute.
|
||||
You have to walk out to the road in the hopes of fishing for a connection.
|
||||
On the weekend, when the town population swells by 100,000, the local towers stop answering our requests.
|
||||
And sometimes we head out, searching for a signal.
|
||||
The usual path along the bunny trail started unusually, with a bloom of surveying flags and pink and yellow, and stone-filled holes every 100 feet.
|
||||
As the trail opened up to the main road, more appeared, culminating in what looked like a neon grass fire.
|
||||
But this was not destruction, I realized. This was an installation.
|
||||
Through the eyes of a child's drone, we looked like ants, mindlessly walking without thinking in a line, instinct taking us to caffeine, sugar, internet, and the arcade, but not always in that order.
|
||||
Mother and daughter led the way. Trailblazing a path of laughter and camera clicks for us to follow through the hole into the trees up ahead.
|
||||
The thick woods envelop us along every access like a padded room.
|
||||
It's muffled silence, pierced by the cousins, yelling about Minecraft and Roblox, bouncing on the soft forest floor.
|
||||
Suddenly, a dog barks berserkly at us, through a proper defense.
|
||||
We run off screaming, pretending not to fear his growling threats, but knowing what might happen if not for the post and wire of the shabbily constructed barrier.
|
||||
Through skeletal woods we go, past the stairs of wonder, and night-like canyon, we speed up again, pinch our noses as we move past the skunk carcass.
|
||||
A leaking puddle of us spill out into the road behind the motel, as the car swerves out of our way.
|
||||
Dad asks, do you remember when we had to pay to swim at the motel pool because the lake was closed?
|
||||
Mum says, 2020 was so long ago, and motions the way to the vintage store with the girls.
|
||||
The two kids are off to the candy store. The cousins are getting French fries.
|
||||
I sit down next to an outlet on a yellow-colored bench in the shape of a sail.
|
||||
I settle in and scan the area.
|
||||
From where I sat I could see the climbing park, the car park, the waterfront park, and parking enforcement marking tires with white chalk.
|
||||
I could see a hot dog stand across from a vegetarian restaurant, a burger joint that had ice-cold beer with all the oes, a large jailbreak of inflatable animals rampaging in the wind on the corner,
|
||||
on the sortment of businesses run by teenagers on cell phones, a sign that promised two-for-one ounces at the native reserve, and two cafes that advertised Wi-Fi.
|
||||
One of them had the same password as last year, finally a connection.
|
||||
A quick search, a few articles, and a construction notice solves the mystery, fiber optic, to every cottage.
|
||||
At first I feel excitement, but then I start to wonder, will things be the same when a thousand megabit connection is available to every shack in the woods?
|
||||
Will the old-style video stores that still rent VHS tapes and DVDs all go at a business again?
|
||||
Will we walk to the main drag for fries and fun when the Wi-Fi is force-feeding everyone's devices and food comes delivered?
|
||||
Will we ever have anywhere to go to get away?
|
||||
Will the explosion of wireless access points affect local birds and bees?
|
||||
Will we start hanging out at a digital beach instead?
|
||||
Am I just being nostalgic and not practical?
|
||||
The sun will keep setting on sogging beach, whether we are there to watch it or not.
|
||||
I close my eyes to listen to the sounds and smell the blustery air of my favorite temporary summer home, memorizing it.
|
||||
Soon the beach will be different, next year, but not today I thought.
|
||||
And with an announcement of a pop balloon, the girls are back with snow cones, cousin bracelets, candy and clothes.
|
||||
Everything okay, mom asked?
|
||||
Yes, I replied. I was just thinking about how perfect today is. Let's hit the arcade.
|
||||
I found myself within a dream of things and people never seen, where rules unfair, draw dangerous near, and PCs not prepared to make anything clear.
|
||||
This is my fate, it must be an error. Why was I chosen to combat this terror?
|
||||
But other suggests, I'm not the first, and won't be the last to try undo this curse.
|
||||
Repeatedly dying with life never ended. Let's strength be granted so the world might be mended.
|
||||
A maiden in black that can't be attacked wants souls in exchange for upgrading your stats.
|
||||
The future seems grim, but she seems not to care. While I'm fighting a boss, she just sits on the stairs.
|
||||
I practice my parry and stockpile every day. What does she really want with my souls anyway?
|
||||
And on, and on, and on repeat. Thumbs walk without thinking on untired feet. Progress is slow, so much I don't know.
|
||||
And now there's more trouble that's lurking below. Remember those souls I gave to the maiden?
|
||||
She's passing them on to a very old demon. A lamp found the nexus and took back the arts. The old one awoke, and the second scourge starts.
|
||||
My mind's playing tricks, or this level is lagging. Every time fire comes out of that dragon. Retreat in a door, equip fragrant ring. Recharge for a minute, and go find the king.
|
||||
The soldier for Lorne, who laughed at my plight, dropped dead in his seat while chuckling last night. The vagrant is gone, Rhydell's still in his cell.
|
||||
Something poisoned and merchant, and now she won't sell. On a pathway ahead, all painted in red, new enemies appear to ensure that I'm dead.
|
||||
What sadistic computer would toughen this plight? Or worse, is a person controlling those bites? If it wasn't enough, seems the world's changing shade, based on some of the choices I've made.
|
||||
Slay a demon, the world goes lighter by one. Die revived, and instead it will shift one shade down. From the gates of Boliteria to the pits of the Burrow King's mind, the psychward level with the giant heart was the work of a twisted mind.
|
||||
The shrine was overpowering, but a perfect spot to grind. In the poison rains, of the cheesen swamps, I left sanity behind.
|
||||
And what's the result? Is this on my fault? Is there really an old one in an underground vault? What side of the forces at war do I tend? Why do souls of big demons make me human again?
|
||||
I snuck up to the castle with a ring, spell, and shield, and made it through an open door, set my items up and healed.
|
||||
Ostrava said, the king will find, is not the actual one. But that'll wait because at the gate, attacked by the phantom's son.
|
||||
The following days are foggy and blurred. I tried over and over. It was rather absurd. I did beat the king, but the world's still not right. Head back to the nexus to find one more fight.
|
||||
The maiden is waiting, not sure what she's meaning. She just told the old one that I'm thy new demon. Am I the solution, or am I to blame?
|
||||
Am I the demon in the name of this game? Although I see the bitter end, sweet happiness I won't pretend. As brutal as this world's to me, when I beat this boss, I'll cease to be.
|
||||
I forget the color of your eyes. Now felt like Olympic pools of blue light. Beautiful moons of a distant planet. A place I can imagine but never reach. Dots on the celestial Google map.
|
||||
I said, hello, how are you? But you didn't notice. You were listening to a car crash 1,500 miles away. A man fall from a balcony. A celebrity punch a photographer in the face.
|
||||
How are you? I asked again. But only the dog came over, sniffing my takeaway fish and chips. He barked but you didn't flinch. He bit me, but you didn't notice.
|
||||
How are you? I insisted. Your face shocked as you heard I was speaking. How are you? I said again.
|
||||
Everything is terrible. You finally replied. The world is a living nightmare. How are you? I wish I was a smartphone. Touch me like my plan is free. I wish I was your smartphone. Hold me up so I can see.
|
||||
I wish I was a smartphone. Feed me all your memories. I wish I was the latest smartphone. Don't you want a piece of me? But now we're all just stupid and alone. And that's the way we deserve to be.
|
||||
I hope you enjoyed the pilot episode of Hacks Poetic. All poems were written and read by me. If you enjoyed the show, tell someone else and let them know about the hacker public radio community. Until next time, keep breaking and start building.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio. Today's show was contributed by a HPR listener like yourself. If you ever thought of recording podcasts, you click on our contribute link to find out how easy it really is.
|
||||
Hosting for HPR has been kindly provided by an honesthost.com, the internet archive and our syncs.net. On the Sadois status, today's show is released under Creative Commons Attribution 4.0 International License.
|
||||
167
hpr_transcripts/hpr4490.txt
Normal file
167
hpr_transcripts/hpr4490.txt
Normal file
@@ -0,0 +1,167 @@
|
||||
Episode: 4490
|
||||
Title: HPR4490: Playing Civilization V, Part 4
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4490/hpr4490.mp3
|
||||
Transcribed: 2025-11-22 14:58:06
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio episode 4,490.
|
||||
PreFriday the 17th of October 2025, today's show is entitled, Playing Civilization V, Part
|
||||
4.
|
||||
It is part of the series' computer strategy games.
|
||||
It is hosted by Ahukah and is about 11 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, we continue our look at the game mechanics of Civilization V.
|
||||
Hello, this is Ahukah, welcoming you to Hacker Public Radio in another exciting episode
|
||||
in our ongoing series on computer strategy games.
|
||||
We're continuing with Civilization V, and the topic for today is faith and religion.
|
||||
This is another area where Civ 5 has added depth over previous versions of Civ.
|
||||
What it does is modify your situation by granting bonuses of various kinds.
|
||||
Now there is no direct victory condition associated with religion in Civ 5, and that would
|
||||
arrive in Civ 6.
|
||||
There are 13 named religions in Civ 5, but they're just empty placeholders.
|
||||
You can rename any of them as you wish.
|
||||
I usually do just for convenience, so I can always remember which one is mine.
|
||||
What gives each religion its distinctive meaning is the set of beliefs that you attach
|
||||
to it.
|
||||
Now the fuel for this is faith, which is something you generate in your empire in various ways.
|
||||
The Celts have a unique ability to produce faith from the very first turn.
|
||||
They get plus one faith in a city with an adjacent, unimproved forest tile.
|
||||
So the Druids like forests, you know, and their starting bias will always put them in
|
||||
a place to do that.
|
||||
For everyone else, you need to take positive action to start generating faith.
|
||||
The best way to get started is by building a shrine in your city, followed by a temple.
|
||||
A shrine can be built once you discover pottery, a very early tech, and it has a maintenance
|
||||
cost of one, and it will generate one faith per turn.
|
||||
The temple becomes available once you discover philosophy, has a maintenance cost of two,
|
||||
and generates two faith per turn.
|
||||
The reason you want to generate faith is that you can spend it in a certain sense to create
|
||||
a religion and add beliefs to it.
|
||||
In addition, you can use faith to purchase great people, which can be very advantageous.
|
||||
You can also get faith in other ways, some natural wonders generate faith, and if you
|
||||
can get one in your empire, that is a big bonus.
|
||||
Certain world wonders are also generators of faith, though they tend to come a bit later.
|
||||
And meeting a religious city-state can grant you a faith bonus, and befriending them can
|
||||
give you a per turn bonus of faith.
|
||||
Now the first step is to found a pantheon.
|
||||
In most games, every player will be able to found one unless they delay too long.
|
||||
This would not be a good idea.
|
||||
You want to found one as soon as you can for two reasons.
|
||||
First, each of the pantheons theoretically available can only be chosen by one player.
|
||||
So if you wait too long, there won't be as many good ones available.
|
||||
Second, the cost of found a pantheon goes up by five faiths each time another player
|
||||
finds one.
|
||||
So the key is to start generating faith early.
|
||||
The difference between one faith per turn and two faith per turn is huge in the early
|
||||
game.
|
||||
As to which pantheon you should choose, that can be dictated by circumstance.
|
||||
If you have some desert tiles in your empire, desert folklore can be huge, and it gives
|
||||
you plus one faith for each desert tile.
|
||||
And that includes floodplains, think of the banks of the Nile.
|
||||
They are basically irrigated desert.
|
||||
And OACs.
|
||||
Floodplains and OACs tiles are the ones you would want to work anyway because they are so
|
||||
productive, and with this pantheon you can add plus one faith to the output for each one
|
||||
you work.
|
||||
But if you didn't have any of the right kind of tiles, this would make no sense.
|
||||
And if you have a natural wonder in your empire, one with nature is fantastic.
|
||||
Others like faith healers and goddess of protection will rarely pay off in any significant way.
|
||||
Now religions, the next step once you have a pantheon is to found a religion.
|
||||
And if you're going to do that, haste is again important, since the number of religions
|
||||
allowed is always less than the number of players.
|
||||
So in any game one or two players will be left out.
|
||||
And you do lose something if you don't have a religion of your own, though you can get
|
||||
a few benefits from adopting someone else's religion.
|
||||
You can see how many religions can still be founded by mousing over the faith stat in
|
||||
the main window.
|
||||
If that goes to zero, you can give up on founding a religion and forget using a strategy
|
||||
that relies on high-faith generation.
|
||||
Now founding religion is an option when you generate your first great profit.
|
||||
And that happens with a probability based on how much faith you have accumulated.
|
||||
So if you started off strong in the faith department and kept it up, you will most likely
|
||||
get a great profit in founder religion.
|
||||
Starting a religion first means choosing a name and a symbol.
|
||||
As mentioned, you don't need to go with the name that is there.
|
||||
You can rename your religion.
|
||||
You do need to choose one of the symbols, however.
|
||||
You know, that's a piece of artwork that's built into the game.
|
||||
Then you choose a founder belief.
|
||||
This is a benefit that only you as the founder of the religion can benefit from.
|
||||
Which one you pick depends again on circumstances and on the type of victory you plan to pursue.
|
||||
For example, if you plan to pursue a diplomatic victory, you will want as many city state
|
||||
allies as possible.
|
||||
So the founder belief of papal primacy will be a big help.
|
||||
And if you plan to pursue a science victory, you might prefer interfaith dialogue.
|
||||
Among the catch, generating beliefs, ties is best in the long run.
|
||||
So unless you're desperate for quick cash, choose that over church property and initiation rights.
|
||||
Then you get to choose a follower belief.
|
||||
This gives a benefit to each city that follows your religion.
|
||||
And by that, we mean at least 51% of the people in the city are following that religion.
|
||||
Regardless of where it is.
|
||||
So if your religion spreads to another empire, they will get the benefit of follower beliefs.
|
||||
Of course, you'll probably have most of your own cities following your religion.
|
||||
So they will get this benefit.
|
||||
But you know, it's just worth knowing that you're sharing the wealth with others.
|
||||
Now, the reverse is also true.
|
||||
So if one of your cities is converted to another religion, that city will get the follower belief of that religion.
|
||||
And that means that if you never get your own religion, you can at least get some benefit
|
||||
when one of your cities converts to another empire's religion.
|
||||
A follower beliefs should also be chosen with an idea of circumstances and the victory type you're pursuing.
|
||||
For instance, cathedrals not only let you purchase cathedrals with faith,
|
||||
but also add plus one faith culture and happiness.
|
||||
And they also give you a slot for a great work of art.
|
||||
If you're going for a culture victory, this can be powerful.
|
||||
Divine inspiration is good if you plan to build a lot of wonders.
|
||||
And feed the world is just a good all-around belief.
|
||||
Now, once you've found it a religion, you can get additional great prophets.
|
||||
And one thing you can do with another great prophet is enhance your religion.
|
||||
This will let you choose an enhancer belief and one added follower belief.
|
||||
For enhancer beliefs, I would probably choose religious unity if you have a number of city states near to each other
|
||||
since they will ramp up your followers and help put religious pressure on other empires.
|
||||
If you're pursuing a science or a culture victory and are mostly defensive against other empires,
|
||||
defender of the faith is a good pick.
|
||||
If you decide to pursue the piety social policies,
|
||||
adopting the reformation policy will let you add a reformation belief.
|
||||
Charitable missions is very good if you're seeking a diplomatic victory.
|
||||
Jesuit education is great for a science victory,
|
||||
and sacred sites is good for a culture of victory.
|
||||
But as always, consider your own circumstances when evaluating these beliefs.
|
||||
In addition, if you are Byzantium,
|
||||
you get one added bonus belief which can come from pantheon, founder, follower, or enhancer pool.
|
||||
So that is very handy.
|
||||
All in all, you can wind up with one pantheon benefit, one founder belief, two follower beliefs,
|
||||
one enhancer belief, and one reformation belief for a total of six, or if you're Byzantium, seven.
|
||||
Now, what about spending this?
|
||||
Faith is a research that can be used to purchase buildings or units if you have chosen the right set of beliefs.
|
||||
Faith can even be used to generate more faith.
|
||||
If you have already enhanced your religion using a second great profit and then get a third or a fourth one,
|
||||
you know, you can use them to create holy sites.
|
||||
These yield plus six faith and can yield added culture or gold with the appropriate policies.
|
||||
And once you reach the industrial era, faith can be used to purchase other great people if you've completed the appropriate policy tree.
|
||||
Now, if you complete tradition, you can use faith to produce great engineers.
|
||||
If you complete honor, you can use faith to produce great generals.
|
||||
If you complete commerce, you can use faith to produce great merchants.
|
||||
Exploration gives you great admirals.
|
||||
Rationalism, great scientists, anesthetics, great writers, artists, and musicians.
|
||||
Now, what are some of the strategic considerations here?
|
||||
First of all, you can win this game without getting a religion.
|
||||
It's just a little more difficult because of all the benefits you can get from a religion.
|
||||
You can get a quick boost if you can be the one to build Stonehenge, since that yields five faith per turn.
|
||||
Otherwise, research pottery and build a shrine to start the faith generation going.
|
||||
If you make it your focus, it's not hard to do, but that is the problem.
|
||||
You cannot, in all cases, make it your focus because there are other things you need to do.
|
||||
You need to explore a lot early on.
|
||||
So it's usual to build at least one and often two scout units as your first builds.
|
||||
You want to find the ancient ruins, i.e. goody huts.
|
||||
The nearby city-states, any natural wonders, nearby barbarians, and other players.
|
||||
And if you do have nearby barbarians or nearby opponents, you may need to build a few military units.
|
||||
And to get your city to grow, you need to build improvements on your tiles, and that requires building a worker unit or two.
|
||||
And you'll want to settle two or three more cities, which means building settler units.
|
||||
Balancing all these demands is the skill you need to be successful, and that is the essence of all of the 4x games.
|
||||
So, with that, this is Ahuka for Hacker Public Radio, signing off, and is always encouraging you to support Free Software.
|
||||
Bye-bye!
|
||||
You have been listening to Hacker Public Radio, and Hacker Public Radio doesn't work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast, you click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the internet archive, and our syncs.net.
|
||||
On the Sadois status, today's show is released under Creative Commons, Attribution, 4.0 International License.
|
||||
1263
hpr_transcripts/hpr4491.txt
Normal file
1263
hpr_transcripts/hpr4491.txt
Normal file
File diff suppressed because it is too large
Load Diff
64
hpr_transcripts/hpr4492.txt
Normal file
64
hpr_transcripts/hpr4492.txt
Normal file
@@ -0,0 +1,64 @@
|
||||
Episode: 4492
|
||||
Title: HPR4492: How to do a distribution upgrade of an Ubuntu LTS on a Digital Ocean droplet
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4492/hpr4492.mp3
|
||||
Transcribed: 2025-11-22 14:58:40
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4492 for Tuesday, 21 October 2025.
|
||||
Today's show is entitled How to Do a Distribution Upgrade of a Nubuntu LTS on a Digital Ocean
|
||||
Droplet.
|
||||
It is hosted by Rowan and is about 6 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is Rowan Upgrades as Ubuntu 20.04 LTS Digital Ocean Droplet to 22.04 LTS.
|
||||
Welcome to another episode of Hacker Public Radio.
|
||||
Today, I learned how to update my Digital Ocean Droplet running Ubuntu 20.04 to Ubuntu
|
||||
22.04 LTS, but the LTS is, if anyone's up for done an upgrade, just up to raid Ubuntu
|
||||
before it's usually pre-strength-forward, and overall this was, but Digital Ocean maintains
|
||||
its own version of the Ubuntu Core Packages, and the normal program to release upgrade
|
||||
disables any third-party repositories and just runs against the Ubuntu repositories.
|
||||
Unfortunately, when you do this, you get the error message.
|
||||
You can't find the Core Packages after a little duck duck going, or as it's usually
|
||||
called Mugeling, I am found a podcast, a post about how you do this, because I really
|
||||
am thinking, ah, do I need to go in and change my sources list and all this, and this
|
||||
person, the post, that actually says, no, you do not need to mess with the sources list
|
||||
that you have to do, is pass a environment variable to the do release upgrade program,
|
||||
environment variable being release, creator allow third-party, set that equal to one, and
|
||||
do release upgrade, but then happily use your third-party repositories while doing the
|
||||
upgrade.
|
||||
So then after that, it was pretty standard, yeah, let it run, let it do all the downloads,
|
||||
saying, yes, I want to keep my considerations for various packages, and, you know, after
|
||||
a nice cup of coffee, he's got your new 22.0 for LTS, quick reboot and test the system,
|
||||
and generally, nothing, no problems, although I did run into issues running next cloud.
|
||||
I have a couple other websites, one, hpr.coring.us, if you want to see the new site, so are those,
|
||||
and in the future, you may already be looking at the new site, but anyway, that was a little
|
||||
time, but next cloud was PHP, and I quickly realized that when looking at the status of the
|
||||
Apache Server, it wasn't starting because it was still trying to load the old PHP 7.4
|
||||
module, which was removed, and so I just, you know, had to enable the PHP 8.1 module.
|
||||
I got my stuff closer, I did then still get a different error message about this internal
|
||||
error. I found the next cloud logs, and it said it can't connect to the database, and I was
|
||||
like, what's going on? And I think, oh, right, it needs a module to be able to connect to Postgres,
|
||||
which is the database I'm using. Actually, which reminds me, I actually did also, there was a
|
||||
message for the upgrade that Postgres 12 was obsolete, and it's been upgraded to Postgres 14,
|
||||
which really is kind of old at this point, but, you know, we're an LTS behind anyway going to
|
||||
22.4, but it didn't give you nice instructions on basically saying, if you want to move your
|
||||
old Postgres cluster to the new Postgres cluster, you need to basically delete the current Postgres,
|
||||
the default Postgres 14 cluster it created, and it gives you a nice command, PG drop cluster,
|
||||
dashes stop, 14 main, and then there's a PG upgrade cluster command, and you just give it the
|
||||
old cluster, and you tell it, you want to get to a new cluster, and it takes care of things right
|
||||
away. So I did actually do that first before I started messing with the PHP stuff, because I knew
|
||||
that was going to be an issue. So next, after getting PHP running and getting the Postgres mod
|
||||
running, I did actually see next cloud running in my browser, but it was throwing one more error
|
||||
that it couldn't find, the GD module. GD does the graphics module it uses when it's for the
|
||||
photo album and things. So then I did have to enable that, and both the PG, the Postgres module,
|
||||
in the GD module I had to install. I have notes in these, or in the show notes, there are references
|
||||
to the commands that were run to make it easier for you to run into this yourself. But after
|
||||
that, everything looks good. It seems to be running. I do play into upgrade to 24x4, but first thing I want
|
||||
to do is move my next cloud instance from using blocks storage to using s3 storage, but that is
|
||||
the project for another day. Anyway, thank you for listening, and I hope you enjoyed this episode of
|
||||
a covers public radio. You have been listening to Hacker Public Radio at Hacker Public Radio does
|
||||
work. Today's show was contributed by a HBR listener like yourself. If you ever thought of recording
|
||||
podcast, you click on our contribute link to find out how easy it really is. Posting for HBR has
|
||||
been kindly provided by an honesthost.com, the internet archive and our syncs.net.
|
||||
On the Sadois status, today's show is released under Creative Commons,
|
||||
Attribution 4.0 International License.
|
||||
293
hpr_transcripts/hpr4493.txt
Normal file
293
hpr_transcripts/hpr4493.txt
Normal file
@@ -0,0 +1,293 @@
|
||||
Episode: 4493
|
||||
Title: HPR4493: HPR Beer Garden 4 - Weissbier
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4493/hpr4493.mp3
|
||||
Transcribed: 2025-11-22 15:00:57
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4493 for Wednesday the 22nd of October 2025.
|
||||
Today's show is entitled, HBR Beer Garden for Weissbeard.
|
||||
It is part of the series' beverages.
|
||||
It is hosted by Kevvie and is about 28 minutes long.
|
||||
It carries a clean flight.
|
||||
The summary is, Kevvie and Dave talk about Weissbeard.
|
||||
Hello and welcome to the HBR Beer Garden Episode 4.
|
||||
I am Kevvie and joined as always by Dave, how are you today, Dave?
|
||||
I am very well indeed. Thank you, Kevvie.
|
||||
Looking forward to this one. This is going to be nice.
|
||||
Just for clarity, these may get released slightly later just because of the way
|
||||
HBR schedule works out for us.
|
||||
But at time of recording these next two episodes,
|
||||
we promise we'll be recording October.
|
||||
And you can't think beer and October without what Dave?
|
||||
I think you're referring to October Fest.
|
||||
Yes, I'll give that away.
|
||||
And no, we have got Weissbeard and Dave had the obligation of doing homework for this episode.
|
||||
So what did you learn about Weissbeard?
|
||||
I had a little bit of confusion over this because I thought the Weissbeard meant white beer.
|
||||
And then someone told me, no, it actually means wheat beer.
|
||||
And then in my research, it actually means both.
|
||||
That's exactly what it means.
|
||||
Weiss is German for white.
|
||||
So wheat beer or Weissbeard, or whatever you want to call it,
|
||||
it's very, very many names depending on where you are.
|
||||
It's what's called a top fermented beer.
|
||||
Now, I did do some research into this to try and understand what that meant.
|
||||
And I got nowhere.
|
||||
It did try and explain to me what the difference between the top fermented and the bottom
|
||||
fermented beer is.
|
||||
And all I can tell you is that there are only a small number of breweries
|
||||
in the world that still use the top fermented beer brewing method.
|
||||
But it's something to do with how the mash is removed from the brew in order to use for the next
|
||||
batch or something. I haven't got a clue. That's basically what it comes down to.
|
||||
Anyway, but the point of a wheat beer, it is brewed with a large proportion of wheat compared
|
||||
to the amount of barley.
|
||||
So there are two main varieties of wheat beer.
|
||||
There's the German Weisenbeard, or Weissbeard, as we know.
|
||||
And there's also the Belgian wheat beer.
|
||||
Now, there are some other varieties as well, including Ghosts, which is very often a sour brew,
|
||||
very, very fruity, very, very tart, which I've had a few of.
|
||||
Not a huge fan, I must admit. But yeah, the Weissbeard and the Weitzbeard are definitely the
|
||||
two main ones. So the German one, the Weissbeard, uses at least 52% of wheat to barley malt.
|
||||
And it results in a light-colored top fermenting beer.
|
||||
Weitzbeard by comparison uses flavorings, like coriander or orange peel.
|
||||
But the Belgian white beers are often made with unmalted wheat, as opposed to the Weissbears,
|
||||
which is why you end up with the slightly different colorings.
|
||||
The reason that Weissbeard and Weitzbeard are termed Weitzbears is because wheat and white,
|
||||
as words, have the same etymological root.
|
||||
So they're effectively derived from the same word in most German languages, including English, in fact.
|
||||
In terms of how Weitzbeard or Weitzbeard is known throughout the world, there are different variations
|
||||
of it. So we've got Weissbeard or just Weiss, as it's often known, that is mostly used in southern
|
||||
Germany, Bavaria, and also in Austria. In Western and Northern Germany, as well as Switzerland,
|
||||
they call it Weisenbeard, whereas Weisen is actually German for wheat, as opposed to Weiss,
|
||||
which is German for white. I don't know why they do it that way. I'm sure they have their reasons.
|
||||
Then there's the heifer Weiss, or the heifer Weisen. Now heifer is the German word for yeast,
|
||||
and the difference between a Weissbeard and a heifer Weiss, or a Weisen, or a heifer Weisen,
|
||||
is it adds the yeast as part of the conditioning process, which means that the beer itself is
|
||||
unfiltered and may well contain sediment in the bottle as well. Conversely, crystal Weiss or
|
||||
crystal Weisen, German for crystal, obviously, is where the Weissbeard has been filtered, so it's the
|
||||
opposite of a heifer Weisen or a heifer Weiss. Then of course you've got your dunkel Weiss,
|
||||
or a dunkel Weisen, which is a darker version of the wheat beer, of course,
|
||||
dunkel-meaning dark in German. You can also get a Weisenbock, which is the box style.
|
||||
Now I'm not entirely sure what the box style is. I know I like it, but I'm not entirely sure what
|
||||
it is, and I'm sure that's probably a style that we will cover in a future episode. I've already
|
||||
mentioned Wittbeard, which is the Belgian style of wheat beer, and also beer blanche, which is
|
||||
the French language name for wheat beer, literally white beer. Now I've had the beer blonde before,
|
||||
but I think that's more of a largar style of beer rather than a wheat one.
|
||||
And there's not really a lot more I can tell you about that. Typically, the heifer Weissens
|
||||
typically have around 4.9 to 5.6 alcohol by volume. The dunkel Weissens and the box style
|
||||
are usually somewhere between 7 and maybe 9.5 to 10%. The heifer Weissens, which is not one that we're
|
||||
going to be doing this time around, but we may do it in the future, actually is very, very low
|
||||
business in comparison to other rails, because it doesn't, it's not particularly hoppy.
|
||||
But what my research does not tell me is what the typical ABV is for a straight
|
||||
vise beer. And for that, I'm going to cheat and look at my bottle. It says five.
|
||||
That's pretty much it as far as the vise beer is concerned. There's a lot more information
|
||||
about the actual brewing process and where it came from in history. But I didn't go into too
|
||||
much detail about that, unfortunately. Do you mind if I add a wee bit of detail to your history?
|
||||
I don't. Because there was just one thing that I didn't want to go too deep in because I knew you
|
||||
were doing the research for this. But I did read something that was quite interesting.
|
||||
Wheat beer, that we know it, the German white wheat beer, that's what I was purely focusing on.
|
||||
Although they say it's about 4,000 years old, the German wheat beer of the style, roughly
|
||||
closer to 500 years old. And at the time, it was considered very controversial because it was
|
||||
seen as wheat was to be used and needed from bread making. So it was controversial to have it in
|
||||
beer. And what was quite interesting was from 1567, the use of wheat was actually forbidden
|
||||
throughout Bavaria because the Duke outbreak the fifth of Bavaria, outlawed wheat beer,
|
||||
deeming it a useless drink that neither nourishes nor gives strengths, but only encourages drunkenness.
|
||||
That's fun. Well, yeah, I wouldn't disagree too much. But however, it was outlawed then
|
||||
until 1602 when he died without an ear. And the right was reverted to Duke Maximilian.
|
||||
So there you go. That was just that wee bit. I thought, I like that wee, that we stilly on it.
|
||||
So there was a time when it was actually outlawed in Germany, which seems out on it given it's very
|
||||
German. Interesting. So the information that I've got doesn't mention any of that.
|
||||
The information I've got was between two different websites, but the one I'm reeling on most is
|
||||
from erdinger.de. Oh, right. It's okay. Yes, I was going to mention that Erdinger is one of the
|
||||
four largest. Well, and hence the reason I could buy this in Stornelly. Erdinger. Spoiler alert.
|
||||
Yes. Well, no, it's just because I'm actually thirsty. I want to get on with this.
|
||||
Fair enough. Fair enough. So we've got Erdinger. And it's Erdinger.
|
||||
Weissbier. No surprise there. Does it actually save very much? Not enough a lot. Erdinger Weissbier
|
||||
with fine yeast, wheat beer, bottle fermentation, which probably tells me there's going to be
|
||||
stuff in this bottle, if it's still fermenting. That's it. Trustee Broten bottle opener.
|
||||
We're both avid. We are not sponsored by Broten, but if they would like to send us beer,
|
||||
I'm not going to object. Yes. Now a crate of old jock will be really nice, thank you.
|
||||
As soon as I've opened that, I've no input on my nose. The smell of yeast. Oh, that's lovely.
|
||||
Well, let's go for the poor.
|
||||
Now I did read that you must stop pouring this just before you empty it and then swirl it.
|
||||
And then swirl it. Swirl it and then pour it in. Oh, because apparently the yeast is actually
|
||||
a feature of this beer. Oh, that's just the Erdinger, not vice-based in general.
|
||||
I eventually down the Erdinger website a minute ago.
|
||||
Oh, okay. Let me see if it says anything on this one about it.
|
||||
Well, certainly. That is going to lovely. Head in that. Can I get a flake, please?
|
||||
Oh, my goodness. Yes. I think that definitely justifies a flake and possibly even
|
||||
like a little bit of chocolate sauce or something.
|
||||
Maybe some sprinkles. Yep. So we've got definitely got a lovely pouring head.
|
||||
And tell you one thing, that's not dissolving right quickly, like a lot of things can.
|
||||
And that was not an aggressive pour either. That's staying nicely.
|
||||
Let's have a wee sample. So out. Oh, yeah, there's more flavors now.
|
||||
From the nose. Well, I'm definitely getting like a, you can smell it sweet, just sweetness to that.
|
||||
Not a falsely sweet. Yeah, he's still there.
|
||||
I've subtle fruitiness to that, but I can't identify it.
|
||||
Still plant full head there. It's not. And it's very, very hazy as well.
|
||||
Oh, yeah, yeah, really nice. That's actually a lot more carbonate than I was expecting.
|
||||
It's quite bubbly. There's something in that back end. There's like a fruit.
|
||||
It's like a tiny amount of fruit, but it's present. Like I kind of subtle lemon peel, orange peel,
|
||||
that kind of not full on orange juice, but the peel of it, same old bitter.
|
||||
Yeah, it's got a lovely, eusty, bready flavour.
|
||||
Hey, you can definitely tell it's a wheat beer all right.
|
||||
I'm not getting much in the way of hopes or maltyness, anything like that.
|
||||
Well, I don't think you're all supposed to get much in the way of hopes.
|
||||
Well, no, I'm just looking, I'm just thinking of, you know, just a standard beer.
|
||||
There's wheat and there's yeast, which make for a very subtle flavouring, but it's nice,
|
||||
but I mean, you'd have to start a night on that. There is no way I would recommend anybody
|
||||
have anything at all, and then go on to that, because I think you just find a blend.
|
||||
But when you actually enjoy it on its own, there's a bready, slightly bready,
|
||||
eusty, wheatiness to it. And then there's just that, oh, so subtle, fruitiness on the back end.
|
||||
Yep. That's nice. Although it's just a shame October festivals in October,
|
||||
because in Scotland, that's full on winter mode.
|
||||
Yes. I think that would be incredibly good at a barbecue in the summer.
|
||||
Very nice. Would you say it was refreshing?
|
||||
Yes. Oh, it's okay. Yeah, it's light enough to be refreshing.
|
||||
I think they've maybe tried to try to get the Lager drinkers a wee bit by putting that much
|
||||
carbonation in it. It doesn't feel natural. You know, it's not a fizzy bomb, like a Lager can
|
||||
would be, but it's fizzy all I was expecting. But some of that would have occurred in the bottle,
|
||||
would it not? Yes, as a result of the, well, it's still fermented, yes.
|
||||
Yes. What does that mean that a bottle, a live bottle like this would improve up to a point
|
||||
and then degrade in time? I'm not a hunter. I think we'd just stop fermenting.
|
||||
After a certain time. As long as, no, wait a minute. This is the one where you would really want
|
||||
to make sure, because the bottle is not totally, when you actually see it, the bottle is not that dark.
|
||||
Yeah. So it is a kind of light greenie brownie and kind of colour. You wouldn't start to have a
|
||||
mind, I think. But that's a brown, that's almost, it's not quite a, a new key bottle, but it's
|
||||
certainly darker. It's the one where you would have to make sure it's kept and covered.
|
||||
Right. I think, especially with this little being live and with the bottle not being dark,
|
||||
enough in my mind, sunlight would kill that. It would turn skunky. That's the only thing that
|
||||
I would be really about. But it wouldn't keep on going. It wouldn't keep on getting stronger
|
||||
and stronger, put it that way. It would just keep on developing the taste. Somebody once told me
|
||||
when they were brewing beers that before they stuck the crown back on the top of the bottle,
|
||||
they were told just to sprinkle a small amount of granulated sugar into the top.
|
||||
And apparently, it kind of keeps it awake. It keeps on. Yeah, I just put a half a spoon
|
||||
into each bottle. If I'm doing it or I put some, I'll just put some, I've got a keg as well.
|
||||
So if I'm doing that, I'll just add some sugar in at the end. And the other thing is, see if the
|
||||
beer is just, I'm not talking about it's consiled, it's consiled, you've ruined it. It's done.
|
||||
But if it's like that kind of stage, where it's just starting to go and it's like,
|
||||
whatever it is, I think it's going a bit flat almost, but it's not totally dead. You can actually
|
||||
sprinkle a bit of salt in it, in the pour of the beer. It's like a wee bit of salt and it will
|
||||
bring it back. But there's only a small window like, you know, it'll give you an extra couple of
|
||||
days. I'll drink it. Right. Interesting. I went for erdinger. So what did you go for?
|
||||
Well, I went for a brand I'd never heard of before, purely because it was the only one they had
|
||||
in Tesco. Sorry, Morrison's Apologies that was of that ilk. And it's a Franz Franziskana.
|
||||
Never actually seen that one before. Well, actually, that's the one we always have in
|
||||
Storkier until I went for a bite. It's either that or erdinger and I was looking for that.
|
||||
But I'm glad I didn't get it now because I went for erdinger. Yes, yes. So yeah, Franziskana
|
||||
vice-peer from Bavaria. I presume Franziskana is the brewery, brewed and bottled by
|
||||
dross. I have no idea what that says. Spartan Franziskana brawl in Munich.
|
||||
Yeah, so it's 5%. There's no tasting notes on the bottle which is slightly unusual. I would
|
||||
expect it to be. No, it's the same one. Absolutely not. So I've said something.
|
||||
Other than seeing fine yeast wheat beer, there's nothing else on this.
|
||||
Now then, this is slightly problematic because if you look on the front, it says vice-peer.
|
||||
If you look on the back, it says heath of vice-peer, which I was not expecting, probably because I couldn't
|
||||
see where I was reading glasses on. But I don't care. I'm going to try anyway. So yeah, it comes in a
|
||||
nice brown bottle. The liquid inside is quite hazy and there is some form of sediment at the bottom,
|
||||
which will end up going into the glass, I'm sure. So the aroma from this is not blown me away
|
||||
as much as yours did for you, clearly. But it is the very distinctive vice-peer aroma. I'm not
|
||||
getting much through the bottle, no. So I'm going to pour this out and try and see what it's like
|
||||
from there. So that's... Oh, that's slightly lively. Am I going to get it all in the glass?
|
||||
No, you can hear the fizzy, so you can almost see through it. It's subtle. It really is subtle.
|
||||
It's nice. It's what I was hoping and expecting, but it is still very subtle for a vice-peer. I'm
|
||||
kind of familiar with Erdinger and its ilk, but I've never had this brewery before. I'm not really
|
||||
getting much. I'll be perfectly honest. Not a lot coming from the foam either. Let's give this a
|
||||
galpancy. I'm not sure whether to be disappointed or mightily impressed, because there's not a lot
|
||||
to it. There's nothing that smacks you in the face. There's no overpowering anything about this
|
||||
at all. Now, again, as we said earlier on, heifervice isn't a bitter ale, by the way it's brewed.
|
||||
So I think that might be the principal difference between the one I've got and the one that you've
|
||||
just... Erdinger, you've just had. If I was expecting this to hit me in the face and say hello,
|
||||
then yeah, I think I would be disappointed. Having said that, this is incredibly good,
|
||||
because it's not watery. It's subtle. There's not a lot on the nose at all. You've kind of got that.
|
||||
It's like a citrusy... There's something acidic that sits over the top of a vise spear.
|
||||
I don't know if I'm explaining that correctly, but I would have expected in the flavour a lot more
|
||||
of the acidity and the fruity flavours than I'm actually getting. But I think the mere fact that
|
||||
this is quite... I'm going to say mild. Let's just go with mild. It is quite mild in flavour. It's
|
||||
quite mild in aroma. It's got a really good mouthfeel. It's quite smooth. It doesn't have
|
||||
for watery feel at all. Yet neither is it chewy. It's that nice in between, unnecessarily watery,
|
||||
and you need to spoon for it. So I actually really, really like this. And having... Being familiar
|
||||
with Erdinger and its elk, I think I probably prefer this style, the heifer vise and style,
|
||||
than I do just the straight vise spear, which is probably controversial.
|
||||
Well, it's funny, because I've had that one a few times, but I've only actually
|
||||
logged it once and untapped, and I was just looking at this. And what I had put down was that...
|
||||
I don't know if you're getting any of this, but I had put down that after an initial very subtle
|
||||
flavour. I put down there was a strong note of banana in it. Did you get that? Yes, I'm getting the
|
||||
banana. And then I'd followed with a slight kind of... I'd say there's another flavour,
|
||||
that's something like cardamom. I'm not getting cardamom, and I like cardamom.
|
||||
I think going by the two, this is nice, it's pleasant, but one thing I'll say is, it lacks depth
|
||||
the Erdinger. It's definitely a beer that's been made for the masses. Yes, you can tell the
|
||||
difference, it's not a lagger, certainly. But I would say this one's maybe... I'm getting the
|
||||
wheat, there's a sweetness from that wheat as well. I'm getting almost bready, yeasty flavour, it's nice.
|
||||
And there's that subtle hint that's just teasing me as if to say, I'm here, but you can't quite
|
||||
edit to find me in the back end of us. Like I said, that kind of orange peel, lemon peel,
|
||||
but it's subtle, it's just barely there. It's nice, but it's not as nice as the one you've got,
|
||||
which has actually got a bit more flavoring to it. Does that make sense? And no, it does. It does.
|
||||
But what you're describing is very much what I've got here. I'm not one thing I'm not getting
|
||||
as anything like banana, and I'm not getting that spice that I've found I liked in that. I put down
|
||||
a swell in one of my comments, not on an tap, I was looking at what the other notes I'd been making,
|
||||
is that that one reminded me more of whole garden? Oh, I've not had how gardening years.
|
||||
I think I'd be happy to drink that in the summer. I think this would be a great barbecue beer
|
||||
personally. And it would probably be a great beer if I was to go to October Fest,
|
||||
because obviously you don't really want to be drinking a 9% don't kill if you were the last all day.
|
||||
Yeah, as far as a rating goes, I'm enjoying it. Do I love it?
|
||||
A lot of this time of year, but then again, maybe it's not fair, because I'm sitting here
|
||||
waiting a padded shirt with the heating on. It's cold. I would probably give this maybe about
|
||||
a six and a half to seven other 10. I think right now I'm leaning towards a six and a half.
|
||||
I think if it was a summer and it was water, I'd be seeing seven sevens and a half. So I think this
|
||||
is one that's for me very much a summer beer. I'm just drinking at the wrong time. Interesting.
|
||||
I think for this one, I would be leaning towards seven. I cheat on this. I just double whatever it is,
|
||||
I raise it on on tap. So I'm giving it a three and a half on on tap, which would translate seven
|
||||
out of 10. If I think I'm doing that, I'd just say, I want to go seven and a half,
|
||||
because I do enjoy it. I would seek this out again. I wouldn't cross the street for it,
|
||||
necessarily. But if it was there, if it was available and I saw the bottle, I'll have one of those
|
||||
please. Like I said, the flavours are there, definitely getting the banana. Looking at some of the
|
||||
chemical elements that make up the flavour. Apparently the vise beer and heifer vices tend to have
|
||||
a clove flavour. Now I love clove. I love the taste of cloves. I've not gained that from this at all.
|
||||
I would expect that to be quite ever-pouring. No, definitely not. I mean, clove is distinctive and
|
||||
I'm not getting that only for this. But I suppose one thing, we are probably doing vise
|
||||
beer a bit of a disservice, because what do we both have? That's a bit of a ambiguous question.
|
||||
No, but what I mean is for it, when front of us, we've got big, big brewery, international brands.
|
||||
There's probably people here listening to this from Germany yelling, saying, no, that's not the
|
||||
good one to try. You want to try this one? The problem was with it being German, we have to take
|
||||
what we get. Yes, or we have to have it imported. Or we have to have it imported, which is
|
||||
dashed expensive these days. Well, more expensive for you than it is for me, sir. Actually, no,
|
||||
no, believe it or no. No. It's a British company that rip us off for Trilvich, the island. See,
|
||||
when you tend to get from mainland Europe, right? They just have a British postage. Right, it's
|
||||
they're not, they're not that discerning. No, they don't seem to be, which is, which is good
|
||||
in one sense and annoying another. Yes, yes. But just following off from what you just said,
|
||||
Kevin, if there is somebody in Germany sitting in their couch or their car screaming and shouting
|
||||
at us, because we don't know what we're doing, record an episode and prove us wrong, educators.
|
||||
Yes, please do. Absolutely. What a vice beer should be. What kind of vice beers should we be going
|
||||
for? Should we be exploring the different varieties and strains of wheat beers? How we
|
||||
done these ones, the disservice and how we describe them, even how we've tasted and how we
|
||||
sampled them, maybe, record an episode for Hacker Public Radio and tell us. Please.
|
||||
Absolutely. And speaking of the subject of tell us, we actually have some feedback.
|
||||
So the first bit of feedback I got was from Ken Fallon and this was live on the HPR community
|
||||
news. So if you've not listened to that, you can listen to that. Actually, I was recorded live.
|
||||
And the comment I got back was that he's absolutely loving the series and
|
||||
he particularly loves the sound effects and the fact that we put the glasses up and empty the balls
|
||||
in front of the microphone and things like that. So actually, I didn't know if people would find
|
||||
that boring or not, but that's good. He does say he says it's very dashed contagious. It makes
|
||||
you want to go and grab a beer. So that's cool. Yeah, so that was the first bit of feedback that I got.
|
||||
The other one was by Paul Jewel and this was through mastodon. Now, this wasn't to both
|
||||
was directed. So that's why you didn't get it. It was just yarning to me. But he says loving the
|
||||
beer episodes on HPR, by the way, you and Dave are making a great show series. Even if I do disagree
|
||||
with your views on IPA. So yeah, just in case you didn't get that from my last episode,
|
||||
yeah, I'm not the biggest fan of IPA. I have been validated. Thank you, Paul.
|
||||
Yes. So if you do wish to actually get in touch with us, then please do contact.
|
||||
Best ways actually to leave a comment on the show. If you actually want to get in touch with us
|
||||
and messages, then please do leave a comment. If you're not really keen on leaving a comment,
|
||||
but you're on mastodon, then you can contact us. I'm at Kavi and Dave is at the lovebug
|
||||
and we're both on mastodon.me.uk. So that's the other way you can. And of course, as another third
|
||||
way is you want to contact us with feedback as Dave already said, record an episode and uploaded
|
||||
to HPR, because like we said, especially with more localized beers, there aren't many Scottish
|
||||
brewers that, especially microbreweries and things, that brew German beers. There are some,
|
||||
there's not a heck of a lot. And I dare say it's similar down in England. Is that right, Dave?
|
||||
I would say so, yes. Yes. So then, I'll say chin chin. And join us tomorrow for another.
|
||||
An exciting episode of Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio does work. Today's show
|
||||
was contributed by a HPR listener like yourself. If you ever thought of recording podcasts,
|
||||
you click on our contribute link to find out how easy it really is. Hosting for HPR has been
|
||||
kindly provided by an honesthost.com, the Internet Archive and our Sync.net. On the Sadois
|
||||
Stated, today's show is released under Creative Commons, Attribution 4.0 International License.
|
||||
189
hpr_transcripts/hpr4494.txt
Normal file
189
hpr_transcripts/hpr4494.txt
Normal file
@@ -0,0 +1,189 @@
|
||||
Episode: 4494
|
||||
Title: HPR4494: Exploring FUTO Keyboard
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4494/hpr4494.mp3
|
||||
Transcribed: 2025-11-22 15:02:02
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4494 for Thursday the 23rd of October 2025.
|
||||
Today's show is entitled Exploring Futo Keyboard.
|
||||
It is part of the series' app Spelling King.
|
||||
It is hosted by Antoin and is about 16 minutes long.
|
||||
It carries a clean flag.
|
||||
As the summary is, I install Futo from zero and explain why I prefer him.
|
||||
Hello, you are at Hacker Public Radio today with Antoin and Futo Keyboard.
|
||||
I have just formatted my telephone, reinituated it to the defaults,
|
||||
because my Samsung Galaxy have updated to Android 16,
|
||||
and sometimes I like to format after an upgrade of the system.
|
||||
To restart again.
|
||||
I have just reinstalled, installed from zero, the Futo Keyboard.
|
||||
I will go through its minimal configurations because it's the keyboard I use.
|
||||
Why I like it?
|
||||
Let me explain it first before opening,
|
||||
but you can already install it at your phone if you like why I speak.
|
||||
I like Google Keyboard because I think it's beautiful and it has a very good prediction.
|
||||
And I prefer long time ago, maybe more than a year,
|
||||
that I do not use the keyboard.
|
||||
I prefer a keyboard that is more private without access to the internet,
|
||||
but that has the same functionalities.
|
||||
And I have found the Futo because it has no internet access,
|
||||
and it has voice recognition, it has swipe to text, swipe to type,
|
||||
and a good prediction.
|
||||
And I think it's beautiful too.
|
||||
One point I'd like also is that I can configure some minimal things
|
||||
like what are the symbols that I want to be in each character,
|
||||
if I want the A to have an ampersand or whatever,
|
||||
and you don't have that minimal configuration,
|
||||
but you can have a little of it.
|
||||
And also if you want the number, row, at the top or not, etc.
|
||||
I like this kind of configuration, like the time I press the key
|
||||
for the nanomillie seconds to have access to the other characters.
|
||||
You can configure that milliseconds that you don't have in many keyboards.
|
||||
So, opening the Futo.
|
||||
First pass, first thing is go to options of typing.
|
||||
Then now I have to come to enable Futo keyboard.
|
||||
That's not enabled.
|
||||
We turned.
|
||||
Step 2, at the app it says, select Futo to type.
|
||||
So I select Futo.
|
||||
All right, now I'm at the menu.
|
||||
We have the options like languages, keyboard, typing, prediction.
|
||||
Let's go a bit of each one.
|
||||
Languages.
|
||||
You can ignore the verify if there are updates manually
|
||||
because it is by play store.
|
||||
But it has the option there, I don't know why.
|
||||
Languages, here it is in French for me because I have the telephone in French right now.
|
||||
But I can, let's say, add a language at the top.
|
||||
My language, Portuguese, then Portuguese, Brazil.
|
||||
Add the QWERTY type of keyboard.
|
||||
You can select many configurations.
|
||||
I recommend you to test the Azerty configuration.
|
||||
I like the position of DA.
|
||||
My fingers don't tumble so much at that configuration as I try a data bit.
|
||||
But for now, I will have the QWERTY because I'm more...
|
||||
Maybe trade it more, use it too.
|
||||
So there it is.
|
||||
I have added a language and I can also remove one.
|
||||
I remove the French.
|
||||
I remove it in the bin icon.
|
||||
Okay, remove it.
|
||||
Now I have the part you use, okay?
|
||||
That's it.
|
||||
You can get your language.
|
||||
But it's not all.
|
||||
Going under, you can see explore dictionaries.
|
||||
You can go to the adoption.
|
||||
And I don't have the browser.
|
||||
But I think that's the option to go to a website.
|
||||
To download the language, the dictionary for the language.
|
||||
All right.
|
||||
So if you want correction, et cetera, you have to download.
|
||||
It's very easy to download the dictionary for the language and import at the program.
|
||||
After the download, you can exclude the downloaded item because it will already be at the end.
|
||||
Okay.
|
||||
Returning keyboard and typing, here are the main things you can have a bit of tiny adjustments you'd like for your better use of a keyboard.
|
||||
Like resize.
|
||||
If you want the option to have the number row at the top.
|
||||
I use it, I prefer it.
|
||||
If you want the arrows to be under the keyboard, I don't need it.
|
||||
I don't like it.
|
||||
It's an option, but I didn't need it.
|
||||
Ah, how you want to have the touch in the space bar.
|
||||
You can go there.
|
||||
Oops.
|
||||
I want to touch the icons.
|
||||
That's what I talked at the beginning.
|
||||
You have active by default, like the characters of the language, to be the first, like the end with a tiled, I think it's tiled.
|
||||
If you belong present, or you can have the option to put the numbers as the default for a long press of the character in which there is.
|
||||
The secondary type for numberings, symbols, fast actions.
|
||||
I like that option, that is at number four.
|
||||
I don't mind the order because I normally long press and see what I'm doing, so you can don't matter the order for me.
|
||||
But you can exclude what you don't want, but that action, fast actions, I want to talk to you about.
|
||||
Like I open a notebook here with the foot already here.
|
||||
And let's say, I wrote something, and I can award, then I long press the word.
|
||||
Normally, what you have is a pop-up to copy or to cut or to paste.
|
||||
And with the foot or keyboard, you don't have to select the word and long type at the screen to see the options.
|
||||
The C of the keyboard, long press C, there's the option with two windows, that is to copy.
|
||||
So if you have a text selected and go to C, long press there, then copy it.
|
||||
And the space, you want to paste, I think.
|
||||
You don't have to go to the little tiny point of the screen that you want to paste because you have the V, long press the V.
|
||||
And there is the option to paste.
|
||||
That's the main feature that I don't see everywhere.
|
||||
That's it, but you also have like typing something.
|
||||
And you want to cut.
|
||||
Cut is the same thing you have that contracts on windows, that is copy or while deleting that thing.
|
||||
So to do that, you long press the X, there is this Caesar to cut.
|
||||
Now the word or the paragraph, the text you selected and cut it and have cut.
|
||||
Now you can paste with the long press on V and copy and paste it.
|
||||
That's it.
|
||||
While you're doing that, you may already have the option of the correction at the top, the correction bar.
|
||||
Oh, without the internet, only with the dictionaries.
|
||||
You have returned into the options of the keyboard, you have other configurations.
|
||||
Now that is for languages.
|
||||
If you want to have the bar of actions or suggestions at the top, you can do on and off.
|
||||
You can have the passwords to appear on the suggestion bar.
|
||||
You can simply search automatic on lean.
|
||||
That is auto-few, auto-few or something like that.
|
||||
Preferences of typing.
|
||||
If you want to swipe to type, it's not very good, but it works.
|
||||
So you can have it.
|
||||
If you want suggestions of emojis, I don't like that, I will disable.
|
||||
Correction auto, I don't want auto-correction, I want to type.
|
||||
And if I want, I type on the suggestion, if I am doing wrong.
|
||||
If you want the first word to be my school, the long, height letter, what is my English?
|
||||
I can enable or disable for the first word to be with big letters.
|
||||
And I'm pointing space, if you want to do a double space, to do a space and a point automatically spacing a dot.
|
||||
I don't like it too, disable.
|
||||
Sometimes I want to more spaces and not replacing by dot automatically.
|
||||
Another option, delete, pasted, text and backspace.
|
||||
And this is in English that's not translated to French.
|
||||
So you can disable or enable the delete, pasted, inserted text while backspace.
|
||||
Delete what I have already, what I have just pasted.
|
||||
And do auto-correct and backspace?
|
||||
Wow, I don't have auto-correct, so the adoption disabled or enabled.
|
||||
Like it is now, it's not relevant, but let's disable.
|
||||
Agrandue, like when you press the word, the letter, you want it to appear big, I don't like it.
|
||||
I don't like to type when not see the words floating, the letters floating.
|
||||
So, disabling.
|
||||
Vibration, no vibration.
|
||||
Some sound, no sound.
|
||||
Okay.
|
||||
That's what I like it.
|
||||
Text prediction, you can do it like it is.
|
||||
That is the transformer LM language model.
|
||||
You can have it enabled like it is, but not the final adjustment because it says it consumes a lot of battery.
|
||||
I never use it, so I won't tell you to do that.
|
||||
Personal dictionary, there is the option.
|
||||
You can add your words, it does not automatically add anything, but if you want.
|
||||
I always use that word, I want the keyboard to know to suggest, for example,
|
||||
so you can go there dictionary, personal dictionary, and put your word as a language specific
|
||||
or for all languages, no, no.
|
||||
Blacklist, it is already owned by default to block shocking terms.
|
||||
And there is not the list, it is automatically, and you can add one list if you want.
|
||||
Suggestion, for correction, enabled by default.
|
||||
Automatically detects frap, happy.
|
||||
I don't remember what there is, and personalized suggestions.
|
||||
I disable it, I don't like making keyboards to learn so much.
|
||||
Because then it gets very good, and then I find myself writing what the keyboard says.
|
||||
I want to write, but I don't want the personalized suggestion.
|
||||
So I disable that.
|
||||
There is the action, enable action key.
|
||||
I don't know, yes, you can have an action key, I don't remember what it does.
|
||||
Theme, I like the dynamic auto, that is, nights or day mode only, but you have other little things.
|
||||
And last option, a part of the help that I want to do, nothing, it's the payment.
|
||||
I have a redbot, it is 100% free for practical use, but it encourages you to pay.
|
||||
As I like, I pay it, and do not download again the payment app.
|
||||
I can just click here on, I have already paid, didn't I know?
|
||||
I have already paid.
|
||||
All right, now the payment option has gone away.
|
||||
Miss Elena, okay, that was it.
|
||||
That is what I like on Futo keyboards, some features, it's beautifulness or better.
|
||||
It's beauty, and my sharing with you at Hacker Public Radio.
|
||||
I am, or I was, and one here with you.
|
||||
Goodbye.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording podcasts, then click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the Internet Archive and R-Sync.net.
|
||||
On this otherwise stated, today's show is released under Creative Commons Attribution 4.0 International License.
|
||||
85
hpr_transcripts/hpr4495.txt
Normal file
85
hpr_transcripts/hpr4495.txt
Normal file
@@ -0,0 +1,85 @@
|
||||
Episode: 4495
|
||||
Title: HPR4495: An introduction to Taskwarrior
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4495/hpr4495.mp3
|
||||
Transcribed: 2025-11-22 15:02:35
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4495 for Friday the 24th of October 2025.
|
||||
Today's show is entitled, An Introduction to Task Warrior.
|
||||
It is the first show by a new host candy can order and is about 4 minutes long.
|
||||
It carries a clean flag, the summary is, going over what makes task warrior unique and
|
||||
why I use it.
|
||||
Hello, it's candy cane order, that is how you pronounce it.
|
||||
Task Warrior, the really cool program I've been using for quite a while, it's a big complex
|
||||
like most CLI apps, that has a lot of custom ability.
|
||||
It makes task warrior unique and my personal go to, beside the ease of frifting, is the
|
||||
unique way that it treats tasks.
|
||||
Every task is assigned an urgent v-nigger that starts at 0 and can be added to from different
|
||||
sources.
|
||||
The default view also starts by the number, so it can be used to categorize how important
|
||||
a task is.
|
||||
Each source of urgency is given a value between 0 and 1 and a coefficient.
|
||||
Each source is multiplied together and added to the total urgency.
|
||||
For an example, the due date urgency source had a coefficient of 12 at a fault, and the
|
||||
value gets closer to 1, the closer the due date of this task is, bumping it up in a list.
|
||||
At that reference, in my own task warrior setup, which is without the vanilla, tasks can
|
||||
barely get past 20 urgency, so due date is often a pre-large factor in sorting.
|
||||
Alright, so sorting is done by some weird number instead of the standard of sorting by due
|
||||
date.
|
||||
So what?
|
||||
So, you can customize the heck out of it.
|
||||
Every single sort of urgency coefficient can be modified at will through the task urgency
|
||||
file, what the age coefficient to be more powerful than date, want tasks with a certain
|
||||
tag, be boosted to the top, it's just a single line, it's very simple and powerful,
|
||||
and easily lets you define how important tasks are to you.
|
||||
The custom and the ability extend to creating your own task fields too, these fields called
|
||||
UDA, you either define the attribute, can be defined in a task or see through a few lines
|
||||
as well.
|
||||
These unfortunately don't show up on reports by default, so you have to either modify
|
||||
the default report to include these columns or create your own reports, but they are extremely
|
||||
useful for further control of the urgency value.
|
||||
At an example, I have an estimated time at UDA on my setup, with a possible value of
|
||||
the 5 minutes, 30 minutes, 1 hour, 2 hours, and long, 5 minutes, 30 minutes, and 1 hour
|
||||
give to us around 2.5, 1.5, and 0.5 to urgency, respectively, while 2 hours and long have
|
||||
negative urgency coefficients.
|
||||
That way, tasks that are either too messy, flow up to the top, and they can get them over
|
||||
with quickly.
|
||||
Task warrior also has some simple and effective ways to manipulate how often tasks appear,
|
||||
so it's due, occur, scheduled, and weight attributes.
|
||||
View is the fixed laboratory, tasks can urgency the closest to the due date it gets, and
|
||||
the further boost if they are overdue.
|
||||
The way urgency works in task warrior is somewhat unique.
|
||||
In essence, it creates an invisible template task that is copied to a child task for each
|
||||
recurring event.
|
||||
To recurrence field, take the date range like 7 days or 1 months, and once a due date
|
||||
for the task passes, it creates a new task with each date field offset that many days.
|
||||
It is a bit finicky, but if long is outmodified apparent task, it works well enough.
|
||||
It's scheduled is also extremely simple, since the just boosts the urgent the by a lot
|
||||
once the date passes.
|
||||
Finally, there's weight.
|
||||
Weight is useful since the outright highest task until the date listed on it passes.
|
||||
It's a great way to fantasize tasks temporarily, or experiment with parents too, they make
|
||||
a task appear every weekday, only over the weekend.
|
||||
Weight is also extremely useful with this special date of the Sunday, which is defined as
|
||||
New Year's, New Year's, 9999.
|
||||
Putting a task with weight Sunday is the usual way to softly to task.
|
||||
I personally use weight Sunday as a kind of bucket list, rescuing that I want to do
|
||||
Sunday, but aren't immediate enough to put on to the main list.
|
||||
I've mentioned before, it is also extremely eb-descript.
|
||||
It offers special commands for person with bash, and even offers an extra command that
|
||||
puts out every single task as a json for eb-perthing.
|
||||
It also offers hooks for running command after any action, using class on scripts.
|
||||
Finally, it has the benefit of using contained and plain text and not running constantly, it
|
||||
makes the eb-to-export import and recover tasks easily.
|
||||
Please check the shows description for the full task warrior documentation.
|
||||
This is far from a complete overview, and I'm skimming over most of it.
|
||||
So I'm not completely sure if I'm going to be doing another show, but yeah.
|
||||
You have been listening to Hecker Public Radio at Hecker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording podcasts, click on our contribute link to find out how
|
||||
easy it leads.
|
||||
The hosting for HBR has been kindly provided by an honesthost.com, the Internet Archive
|
||||
and our sync.net.
|
||||
On this otherwise stated, today's show is released under Creative Commons, Attribution 4.0
|
||||
International License.
|
||||
635
hpr_transcripts/hpr4496.txt
Normal file
635
hpr_transcripts/hpr4496.txt
Normal file
@@ -0,0 +1,635 @@
|
||||
Episode: 4496
|
||||
Title: HPR4496: Stroopwafel
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4496/hpr4496.mp3
|
||||
Transcribed: 2025-11-22 15:04:54
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4496 from Monday the 27th of October 2025.
|
||||
Today's show is entitled True Puyful.
|
||||
It is hosted by Lee and is about 29 minutes long.
|
||||
It carries an explicit flag.
|
||||
The summary is, Lee, Ellsbeth and Ken Fallon meet in the Utrecht province in the Netherlands.
|
||||
Hi, this is Lee, I'm joined today by Ken Fallon and Ellsbeth and we are in a market
|
||||
town in Holland and the name of the town is Amersport.
|
||||
We're at a cafe.
|
||||
We have some waffles and we have some respectively lattes and cappuccino.
|
||||
Although technically I think Amersport is in Utrecht, but it could be one.
|
||||
And Utrecht is not in Holland.
|
||||
Yeah, sorry.
|
||||
We are in the Netherlands.
|
||||
It's locally we call in the Netherlands Holland.
|
||||
And so do the Dutch tourist board.
|
||||
So yeah, if they're happy enough with it.
|
||||
And also the football team is hot Holland.
|
||||
So yeah.
|
||||
Yeah.
|
||||
So to give a bit of context, I'm staying over here in Holland, Ellsbeth is here too.
|
||||
Sorry, in the Netherlands.
|
||||
We're staying near Utrecht.
|
||||
We've spent a day in Utrecht.
|
||||
We've gone to a museum in Utrecht called The Spiel Clock, which is about mechanical
|
||||
musical instruments and I wed it out with the arms and arms.
|
||||
No bother.
|
||||
No, no, no, no.
|
||||
Not an initial dilemma.
|
||||
OK.
|
||||
We have to lower the bars so other people will be gone.
|
||||
Well, I can do better than that.
|
||||
Yeah.
|
||||
That's home.
|
||||
Yeah.
|
||||
We went on a canal tour around Utrecht and now we've met up with Ken today.
|
||||
We've been to Amersport Camp, which was a holding camp run by the Nazis during World
|
||||
War II.
|
||||
So we looked around that this morning and then this afternoon we've been in Central Amersport
|
||||
and we've been to the Mondrian exhibition, the Mondrian Macouse, as it's called, and seen
|
||||
lots of artwork there.
|
||||
And this leaves us on a rainy afternoon.
|
||||
I'm hiding my iPad under the table to stop it getting totally rained on.
|
||||
And we're just having a nice time here.
|
||||
That's nice here.
|
||||
The Amersport itself is one of the few cities to survive the war.
|
||||
The noise here behind me is the markets that has been dismantled.
|
||||
So there's still quite a lot of the old city remaining.
|
||||
So what do you want to talk about?
|
||||
That's a good question.
|
||||
Life, universe, life, universe, everything.
|
||||
What was the best in the game?
|
||||
The noise you're hearing is dismantling the markets.
|
||||
So around the Netherlands most of the towns have a central market area for one day only during the week.
|
||||
Probably more often in bigger cities.
|
||||
They put out metal frames with tarpulions like these rolled out and then because the Netherlands is the Netherlands, it's windy.
|
||||
So they tied them down with ropes to the streets and that hanging here heard was then removing that.
|
||||
And currently there's a flower shop in this town.
|
||||
And we're eating stru poffles.
|
||||
Stru poffles, yes.
|
||||
Stru poffles.
|
||||
A syrupy honeycomb.
|
||||
Think of them like the wafer that you have around the night-screen cone.
|
||||
You take two of them, you make them flat.
|
||||
And in between you put in sort of golden syrupy type maple syrupy type.
|
||||
In other words, come here.
|
||||
Yeah, get more of them up.
|
||||
So I'll say a little bit about the spill museum yesterday.
|
||||
This is in Utrecht's central, quite close to the train station, Utrecht Central.
|
||||
And it's got all kinds of mechanical musical performances.
|
||||
And this is like a bit like music boxes or crocs.
|
||||
You know, the crocs with chime in a certain musical pan.
|
||||
But basically you've got some instruments that are like ping, ping, ping.
|
||||
Some instruments that blow, have a bellows and blow through an organ.
|
||||
And you have some instruments that have like moving animation,
|
||||
like a bird flapping its wings, that sort of thing.
|
||||
The most impressive one that we all, me and Elsberg saw,
|
||||
was an old and large, as big as a room out and style musical pan.
|
||||
That was actually wide up to a midi controller.
|
||||
So we're playing modern tunes for an instrument that's at least 100 years old,
|
||||
which is pretty damn cool.
|
||||
So I've been to that museum a few times myself.
|
||||
Both the kids were as nice.
|
||||
But you might also have seen it on, if you follow Wintergarden on the YouTube's,
|
||||
he was inspired to do the music Marvel Machine by a business to that museum.
|
||||
And for a period of time, the Marvel Machine was on loan to that museum.
|
||||
So it's well worth the visit.
|
||||
It was absolutely fascinating.
|
||||
Think of all the, if your female, think of all the little boxes that you would have had
|
||||
with the little ballerinas that twirl around.
|
||||
I think that as well.
|
||||
What's up?
|
||||
I think it was girls.
|
||||
Everybody in it.
|
||||
So they're absolutely fascinating.
|
||||
There's like hundreds to explore.
|
||||
And just the mechanics, like they talk about starting with the bells,
|
||||
like the earliest music machines were done with bells, which is basically,
|
||||
you have a little metal tong type thing that hits the bell,
|
||||
that does it in order, and it makes the music.
|
||||
But then they switch to like these wooden flutes that the air,
|
||||
they use bellows to blow in and change the tones.
|
||||
And you could have longer notes because of the wooden flutes that the air blows through.
|
||||
It was just absolutely fascinating.
|
||||
And the whole history of the telecork machines,
|
||||
and leisurely went to punch card systems.
|
||||
And those punch card systems were used by Lady Ada.
|
||||
Not Lady Ada, but Lady Ada.
|
||||
I do not like Lady Ada Lovelace.
|
||||
Thank you.
|
||||
And it was the first female computer programmer just a young girl.
|
||||
And that was a direct line from that sort of stuff to programming for punch cards.
|
||||
The first programmable machines, which were weaved in the textile industry.
|
||||
And from that, of course, we have the modern industrial computer revolution.
|
||||
So, what about the digital?
|
||||
It was a music brought to you what you're doing today.
|
||||
Yes, that's in capitalism.
|
||||
Music in capitalism, there you go.
|
||||
Well, that museum is absolutely fantastic.
|
||||
There was quite often, at events still,
|
||||
at the original organ-paying machines,
|
||||
that they'll wheel around the shops and the streets and the go up and down the streets.
|
||||
But they're invariably ruined by somebody with a can attaining that's shaking it.
|
||||
Okay, the rain has gotten the better of us, so we're now in the car.
|
||||
The central part of the city is really still very nice.
|
||||
And then next to us is where they gather like anti-tank.
|
||||
Did I ever release that shop?
|
||||
Anti-tank, something about anti-tank.
|
||||
I remember one, I have recorded this, an episode where I walk around the heat and stuff,
|
||||
talk about the anti-tank bunkers for World War II,
|
||||
which didn't work.
|
||||
It kind of rings a bell.
|
||||
I don't know if I ever released that show or not.
|
||||
And then recently they found that they did a lidar,
|
||||
there was a Dutch contingent that went over to fight with Napoleon in Moscow.
|
||||
That didn't involve.
|
||||
Apparently one of my great grandfather of my father-in-law survived that.
|
||||
And then it's way back.
|
||||
Which could have been totally not published, but you never know.
|
||||
He went to Russia.
|
||||
Yeah, he went to the Russian army.
|
||||
No, no.
|
||||
In the French army.
|
||||
And for the Russians.
|
||||
And then it's survived.
|
||||
But yeah, recently there was an evening tour there.
|
||||
They did a lidar scan of the area.
|
||||
And they found what was a, you know, like a dugout position.
|
||||
And they had no previous example of it before.
|
||||
So they had seen the documented books.
|
||||
But they had no example of it, because it's by default just made out of it.
|
||||
You know, it's a whole of the ground.
|
||||
But this one was particularly well preserved.
|
||||
When we were taking the canal, the boat ride.
|
||||
They were showing us where there were some medieval fortresses.
|
||||
Like the remnants of a medieval fortress from the Roman times.
|
||||
Yeah.
|
||||
Oh, that's, yeah, that's correct, yeah.
|
||||
Around Focht, where my sister, not Focht, was in Binnik.
|
||||
There was also a concentration camp.
|
||||
Where my, one of my family ended up, didn't turn out well.
|
||||
But anyway, they had a Roman fourth there as well.
|
||||
That was also part of the waterline.
|
||||
Did you come across the waterline as well in your...
|
||||
Yeah.
|
||||
...by Tof.
|
||||
So it's like that this defense system in the Netherlands
|
||||
where they would flood the folders.
|
||||
And in the places where they wouldn't flood, they put forts.
|
||||
So they had three different line waterlines.
|
||||
Three different levels of defense.
|
||||
And they've used it, I think four times.
|
||||
And two times it worked.
|
||||
And the other two times, not so much,
|
||||
she's helped the enemy.
|
||||
One time it froze over.
|
||||
And the enemy just walked on top of the water.
|
||||
Thank you for putting this perfectly straight road.
|
||||
So we were coming in there.
|
||||
This scene thing here, there's a big yellow sign.
|
||||
I presume we were recording.
|
||||
Yeah.
|
||||
Yellow sign pointed to see.
|
||||
I always thought that was one of the coolest things about the way the Netherlands works,
|
||||
is if there's a detour instead of saying detour or follow blood,
|
||||
you're left on your own.
|
||||
Yeah.
|
||||
To say detour or follow four Amsterdam follow C,
|
||||
or usually it's a country for Amsterdam.
|
||||
If it's...
|
||||
If it's detour, they'll say you or something.
|
||||
It's the way you're going.
|
||||
So they follow the signs and then eventually you come up to a place where the last sign is.
|
||||
And there's an extra sign.
|
||||
And from there, you're back to where you would have been.
|
||||
Actually, we were...
|
||||
U.S. cycling back.
|
||||
I was walking back from Maan to the resort yesterday.
|
||||
There were like ambulances and police cars.
|
||||
Yeah.
|
||||
Did you see what that was?
|
||||
We didn't know what it was.
|
||||
We were just trying to be respectful.
|
||||
It just happened.
|
||||
Yeah.
|
||||
Yeah.
|
||||
I figured it was a road crash.
|
||||
More than anything else.
|
||||
Yeah.
|
||||
I was trying out the road.
|
||||
But the sirens in Netherlands are like proper lean or lean or type sirens.
|
||||
In the...
|
||||
In the...
|
||||
Like certainly in London they're like...
|
||||
You know, like police...
|
||||
And right next to police stations, they get them all the time.
|
||||
And the...
|
||||
The fire...
|
||||
The police and the fire department...
|
||||
And the hospital ambulances are different.
|
||||
Yeah.
|
||||
Yeah.
|
||||
The two sirens, yeah.
|
||||
Which I was told was a bit weird.
|
||||
Like, why do I actually need to know...
|
||||
What emergency services?
|
||||
Yeah.
|
||||
I suppose it's so you know whether you're expecting a huge fire truck to come around the corner
|
||||
or a speedy police car.
|
||||
I think the thing is, get out of the way.
|
||||
Yeah.
|
||||
I might go the right way.
|
||||
Apparently I don't know how to drive.
|
||||
It's 50.
|
||||
We're going 42 am using...
|
||||
Android.
|
||||
Or some Android.
|
||||
Which has really improved recently.
|
||||
The UI has gotten a lot better.
|
||||
We had a lot of shows in the past.
|
||||
By Popeye.
|
||||
Popeye.
|
||||
We did a lot of shows in that that he got me into it in the first place.
|
||||
But they have this really cool thing, right?
|
||||
You know where you go with...
|
||||
You go from here to somewhere.
|
||||
And it's reasonably straightforward.
|
||||
But then coming back, if you're in the middle of the sticks,
|
||||
there can be 14 different ways that you come back
|
||||
and they send you a completely different route.
|
||||
So with this, you can go one of the options
|
||||
that take the previous route back.
|
||||
So it'll just go...
|
||||
If you come down to A1 and A2,
|
||||
it'll send you back first to A2 and then A1.
|
||||
No, not really.
|
||||
It's cool.
|
||||
It's useful.
|
||||
So what's nice is when you're driving to...
|
||||
to Morn from Leutrex.
|
||||
You're going along the motorway.
|
||||
And on your left is the train.
|
||||
You can see this same train line going along.
|
||||
And when you're on the train, you can see the motorway.
|
||||
And what's cool is when you're on the train,
|
||||
you can usually...
|
||||
You go faster...
|
||||
Yeah, you go faster than your cars.
|
||||
Yeah.
|
||||
So we will be heading off.
|
||||
I'm going to need you here somehow.
|
||||
You know, my wife drives a...
|
||||
These are all special arts.
|
||||
And I normally go on the train.
|
||||
What do you see?
|
||||
We'll get there eventually.
|
||||
The Netherlands is not that big.
|
||||
Turn back if people start to leave in Germany.
|
||||
Yeah.
|
||||
Oh, I know in German it's like in C8.
|
||||
Yeah?
|
||||
I need to get a little bit there.
|
||||
I don't know even y'all.
|
||||
I ve heard it there.
|
||||
Well, I keep saying danker,
|
||||
rather than danker,
|
||||
because I can't think of anything.
|
||||
So I know each day we need each day we need each hour.
|
||||
I used to try and make it a habit of learning how to say hello to five.
|
||||
Thank you and we're so happy with this many languages that are possible.
|
||||
Yeah.
|
||||
Yeah.
|
||||
I tried to learn two beers, please,
|
||||
and with many languages that I don't know possibly can.
|
||||
It's fine, babe.
|
||||
I learned what the word for chicken is,
|
||||
because you're...
|
||||
after that time where it was,
|
||||
tricked into eating frogs' legs and snails.
|
||||
Oh, all right.
|
||||
It was fine.
|
||||
I mean, I've been to France like I was chitling,
|
||||
so I had no idea what chitling is.
|
||||
They're the private part of the chicken.
|
||||
Yeah.
|
||||
If you're hungry enough, you do anything.
|
||||
Yeah.
|
||||
The American South chitlins are...
|
||||
just the inner zone.
|
||||
Oh, the inner zone.
|
||||
Right.
|
||||
Yeah.
|
||||
So it's...
|
||||
A delicacy at some places, is it?
|
||||
It's definitely a cultural thing.
|
||||
Yeah.
|
||||
Well...
|
||||
Not something I love.
|
||||
Yeah, no.
|
||||
Everyone is a fan of Haggiss in Scotland.
|
||||
Yeah.
|
||||
Which...
|
||||
I didn't mind that.
|
||||
Oh, Scotch.
|
||||
Whiskers.
|
||||
Haggiss, I had no problem with this bug that I got.
|
||||
If I didn't know what it was, I probably
|
||||
wouldn't have a problem with it.
|
||||
It's...
|
||||
But if somebody said this is Haggiss, try it.
|
||||
My internal brain would probably be like,
|
||||
I know what's in there.
|
||||
I don't know if I would have tried it.
|
||||
I'd still try it any time.
|
||||
So is this going to be an episode?
|
||||
Um, yeah, after trying...
|
||||
Trying to...
|
||||
Yeah, trying to get some continuity out of it.
|
||||
Good look at that.
|
||||
It doesn't have to be continuity.
|
||||
It can be a stream of thoughts.
|
||||
Well, um, was there anything?
|
||||
What's weird is, yeah.
|
||||
What I always found interesting when I moved here 20 years ago,
|
||||
that all the signs are the same.
|
||||
So...
|
||||
And in country in the world, all the street signs are the same.
|
||||
And I thought that was an amazing stroke of...
|
||||
of coordination from the world.
|
||||
Yeah, they're the world.
|
||||
Actually, the signs from here to the UK are so similar,
|
||||
but from here or the UK to America is quite a difference.
|
||||
That's what I was thinking.
|
||||
Why?
|
||||
If you go to Mexico, that's the same thing.
|
||||
There are the same signs.
|
||||
All South America, even Soviet Russia, right?
|
||||
Yeah.
|
||||
Not Soviet Russia, but yeah, at the time.
|
||||
Yeah.
|
||||
Why was America not using international signs?
|
||||
And it turns out that...
|
||||
Exactly.
|
||||
So much so, the UK were the ones who came up with the signs in the first place.
|
||||
Yeah.
|
||||
It was...
|
||||
And the attempt by the Americans to internationalize the signs
|
||||
that cause all the road signs to be the same.
|
||||
Except...
|
||||
It did work.
|
||||
It wasn't adopted in America.
|
||||
It's still decided not to do it adopted.
|
||||
Oh, yeah.
|
||||
We had to have our own unique...
|
||||
Hurrah, Americana.
|
||||
Nah, we won't go into that, but it's just an interesting observation.
|
||||
It's something I noticed coming back from the US as a teenager
|
||||
is just how drastically different everything was.
|
||||
And also quite similar things.
|
||||
Here we have in the UK and Ireland, we have 10-10 large triangles
|
||||
written on the roads, but here they have smaller ones.
|
||||
They're about a quarter or 60 centimeters triangles painted.
|
||||
And they call them shark teeth.
|
||||
So you're not allowed to cross over those or you have to yield right away.
|
||||
And all of these...
|
||||
We're sitting at a junction here where there's traffic lights.
|
||||
And the traffic lights are numbered in groups of 5.1 and 5.4.
|
||||
So all the fives are the same circuit from what I can gather.
|
||||
And as we're crossing over, the pin markings obviously on the road
|
||||
are such that if the traffic lights go out,
|
||||
the normal rules still apply.
|
||||
And in some places out in the boonies, they'll turn off the traffic lights at night
|
||||
and they'll just let you follow the normal rules of the road.
|
||||
That's actually fine.
|
||||
It is indeed.
|
||||
And you know why they have the...
|
||||
All alerts are triangles so that if you're driving in the snow,
|
||||
even if they're covered up, you know that the shape of a triangle is a warning.
|
||||
Whereas they...
|
||||
I don't know what you call that.
|
||||
They stop signs with the hexagons.
|
||||
I don't know is it hexagons?
|
||||
Anyway, whatever it is, let's say hexagons are warning stop signs.
|
||||
You absolutely must do that.
|
||||
And the weird thing here is if something is forbidden,
|
||||
it's the picture of the forbidden thing with a red circle around it.
|
||||
And in Ireland, it's a red circle with a red stripe through it.
|
||||
So...
|
||||
By the way, all listeners are expecting now to be able to drive in any country in the world
|
||||
from this direction.
|
||||
Yes, absolutely.
|
||||
Any faith is to do so.
|
||||
It's your own fault.
|
||||
We have described it perfectly.
|
||||
It just never been added at the end of this episode.
|
||||
If you do not accept results, but if you've already lost a lifetime,
|
||||
you're losing a private role risk.
|
||||
And we're going straight here.
|
||||
I think it took a wrong turn.
|
||||
But what was that?
|
||||
It's a wrong turn.
|
||||
The most important word you can learn when you come to the Netherlands is gazelle,
|
||||
which means nice, cozy, how was the theater?
|
||||
It was gazelle.
|
||||
How was it with your granny?
|
||||
It was gazelle.
|
||||
How was the football match?
|
||||
It was gazelle.
|
||||
Yeah.
|
||||
How was the gazelle?
|
||||
Yeah.
|
||||
Like the gazelle.
|
||||
What about the K-A?
|
||||
The gazelle.
|
||||
The gazelle.
|
||||
The gazelle.
|
||||
And the other one is the Catholic spirit, which I can never say.
|
||||
And that's congratulations.
|
||||
A birthday, which is the main social events here.
|
||||
If you want a social circle, you go to other people's birthdays
|
||||
and you invite them to yours.
|
||||
That's how you grow your social circle.
|
||||
Not that I do that, because I don't like your reminder of my age.
|
||||
But there you go.
|
||||
gazelle.
|
||||
And I've facilitated.
|
||||
But for some reason, that's absolutely fine.
|
||||
gazelle is fine.
|
||||
It is gorgeous here.
|
||||
It's my, I love this time here.
|
||||
It's coming into autumn or fall, as you call it.
|
||||
Even though he's pacing down the road on the right.
|
||||
We have quick complaining.
|
||||
The sun.
|
||||
The sun.
|
||||
The sun.
|
||||
The sun.
|
||||
The sun is shining from the west, and it's beautiful.
|
||||
This year, right, is a nature bridge, right?
|
||||
Yeah.
|
||||
Okay.
|
||||
So the idea is that when you put in a road, it divides the main system.
|
||||
Yeah.
|
||||
So they spend billions of putting those bridges in.
|
||||
So that's awesome.
|
||||
It is awesome, except for the fact that it doesn't work.
|
||||
And on that side, stay on that side.
|
||||
And animals on that side.
|
||||
They don't like the bridge.
|
||||
They don't like the road and then input across the bridge.
|
||||
Yeah.
|
||||
So they're now studying to see if they can approve the last problem.
|
||||
It's a big hit.
|
||||
Yeah.
|
||||
I mean, it's a disappointment for a lot of people.
|
||||
The main, the main remaining ecosystem joiner is railway tracks in urban areas like London.
|
||||
The railway tracks have got a continuous stretches of green, all the way down them.
|
||||
So the wildlife could migrate up and down that way.
|
||||
It maintains the ecosystems a bit.
|
||||
And yet another reason to be going by public transport.
|
||||
Yeah.
|
||||
Yeah.
|
||||
However, for some reason, these seem to be stuck in the movies.
|
||||
But it's a nice place where you are.
|
||||
The park is absolutely gorgeous.
|
||||
And it's quiet because there's not 10 people there.
|
||||
Funnacle cows get kind of cramps.
|
||||
Yeah.
|
||||
Okay.
|
||||
Yeah, we were saying earlier how, if you come to this country,
|
||||
you need to have cramps because they're like,
|
||||
we're the best ones in the best delicacy.
|
||||
You know, one of the best foods to have here.
|
||||
Me and Nelsberg have had some yesterday a Crete Palsy new trek.
|
||||
And that was just brilliant.
|
||||
Lecker.
|
||||
Lecker.
|
||||
Almost a chisella.
|
||||
The meckers.
|
||||
Yeah.
|
||||
Who else?
|
||||
For sure.
|
||||
Or as I say, Mad Max, they were absolutely mediocre.
|
||||
Have you seen that?
|
||||
They were better than me here.
|
||||
They were mediocre.
|
||||
Well, you know, Mad Max, mediocre is the superlative.
|
||||
Bullets.
|
||||
Ziced.
|
||||
Where have I heard ziced before?
|
||||
It was dryberg ziced.
|
||||
Was the station where you went to?
|
||||
Oh, yes.
|
||||
Yeah.
|
||||
Then I hide the cycles.
|
||||
Goodness knows where he's going to get them home.
|
||||
Goodness knows how he got them to us.
|
||||
How did he get to bicycles to us?
|
||||
He talked to someone until someone actually walked over here with him.
|
||||
Yeah.
|
||||
Yeah.
|
||||
Yeah.
|
||||
He has that kind of vibe.
|
||||
He could get somebody to...
|
||||
Okay.
|
||||
It's like the hitchhike.
|
||||
The hitchhike is actually...
|
||||
Normally, it's a fairly normal thing for it to be able to start.
|
||||
I often cycle with another bike.
|
||||
Yeah.
|
||||
Okay.
|
||||
You know, I just have to start it as a bit of a problem, but then keep going.
|
||||
How he got someone to go all the way to the Eropark.
|
||||
Then he should be in sales.
|
||||
He really should be.
|
||||
And to me, I just know that that diamond.
|
||||
So it's like a wrecked square in a diamond form.
|
||||
So yellow with a white signer on it.
|
||||
And partly, it means that this road is the priority.
|
||||
Normally, all roads...
|
||||
If that wasn't there, then this boring here coming out on the right is a small road.
|
||||
They were the priority.
|
||||
I should give a way to traffic coming from the right.
|
||||
Including bikes.
|
||||
Interesting.
|
||||
Not, yes.
|
||||
And then this red one, there's a circle sign with a red outside.
|
||||
It's in full with blue with a cross.
|
||||
And that means no parking on all sides of the street.
|
||||
This is what you learn when your kid goes to drive in less than school.
|
||||
So that's what that means.
|
||||
I've been ignoring that for years.
|
||||
Yeah, we tried to hire a car in Rotterdam.
|
||||
And we almost got...
|
||||
We were clear that we could do under a U.S. license.
|
||||
And we're just up to the part of the deposit.
|
||||
And I would try to buy some money, but it was after 3 o'clock in the afternoon
|
||||
that my bank wouldn't honor that until the next day.
|
||||
So...
|
||||
And we decided it just wasn't worth it.
|
||||
Yeah.
|
||||
Normally in the Netherlands, you can get away with public transport.
|
||||
Or they have also with the public transport.
|
||||
They've got bikes that you can hire at the station.
|
||||
Oh, that's where are they?
|
||||
Are they doing yellow?
|
||||
Yeah.
|
||||
Yeah.
|
||||
So they're public transport.
|
||||
So the public transport bikes.
|
||||
And you get some cars that you can do with them.
|
||||
So you're...
|
||||
You know, you're normal card.
|
||||
You get the heart of them like for a euro for a day or something like that.
|
||||
But you're what it is.
|
||||
So when you get them, you can just...
|
||||
You can probably just drop them back at the station when you're in.
|
||||
So that's super handy.
|
||||
And they also in some places have over taxis as well.
|
||||
So not so much now with the Uber coming in.
|
||||
But before you could, if you were landing in the middle of the stick somewhere,
|
||||
then you'd hire an over taxi to come.
|
||||
And maybe four people would be waiting.
|
||||
And then you'd do a run to drop the first guy off of one place
|
||||
and then go from there to the next house.
|
||||
And if you were lucky, you were the first house.
|
||||
If you weren't...
|
||||
You were...
|
||||
You were waiting till I...
|
||||
Yeah, exactly.
|
||||
But if there was some stipulation that it should be no more than an hour
|
||||
or no more than a half hour extra on your journey.
|
||||
Right.
|
||||
Oh, really good.
|
||||
So I was reading whether you should...
|
||||
If you're walking down country lane, should you walk on the left or the right?
|
||||
And first, I figured the left because then you might be in it.
|
||||
You might be facing oncoming traffic.
|
||||
So that they could see you.
|
||||
But then I read that apparently it's wherever you're most visible.
|
||||
Yeah.
|
||||
It's not necessarily always on the left.
|
||||
Is that here in this one?
|
||||
Yeah, in Holland.
|
||||
Yeah.
|
||||
In Holland.
|
||||
Yeah.
|
||||
It's always on facing oncoming traffic.
|
||||
Yeah.
|
||||
I thought the rule was always facing oncoming traffic.
|
||||
But then again, I didn't know what an urban cheermer I saw.
|
||||
You should not be getting advice from me as to us to the rules of the rule.
|
||||
That would be a good episode though.
|
||||
What are the rules of the rule?
|
||||
Your jurisdiction.
|
||||
That would be a good one to prompt other people to recall.
|
||||
Okay.
|
||||
With that, we're back at the result.
|
||||
Thanks to Elspeth and Ken.
|
||||
Goodbye from the Netherlands.
|
||||
You have been listening to Hacker Public Radio.
|
||||
Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBIRD listener like yourself.
|
||||
If you ever thought of recording podcasts,
|
||||
then click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBIR has been kindly provided by an honesthost.com,
|
||||
the internet archive and our syncs.net.
|
||||
On the Sadois stages, today's show is released on our Creative Commons,
|
||||
Attribution 4.0 International License.
|
||||
218
hpr_transcripts/hpr4497.txt
Normal file
218
hpr_transcripts/hpr4497.txt
Normal file
@@ -0,0 +1,218 @@
|
||||
Episode: 4497
|
||||
Title: HPR4497: fixing 328eforth
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4497/hpr4497.mp3
|
||||
Transcribed: 2025-11-22 15:05:39
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4497 for Tuesday the 28th of October 2025.
|
||||
Today's show is entitled Fixing 328 F-Earth.
|
||||
It is part of the series Arduino and related devices.
|
||||
It is hosted by Brian in Ohio and is about 19 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is a summary of making 328 F-Earth useful.
|
||||
Hello Hacker Public Radio Brian in Ohio here.
|
||||
I'm out from under my rock and doing an episode to continue from where I left off an episode
|
||||
4388 and that episode was called a review of the book The Arduino Control by E4 Dr.
|
||||
Chin Hansen Ting.
|
||||
In this episode I want to talk about installing E4th onto an Arduino board and then talk
|
||||
about the problem I encountered and what initially made 328 E4th a no-go for me and then how
|
||||
I solved the problem and the fix to make 328 E4th a useful for anybody.
|
||||
In order to install E4th onto an Arduino board you're going to need some software and some
|
||||
hardware.
|
||||
I've got links in the show notes for all the software you would need.
|
||||
The first place to start would be to go to get this 328 E4th source code and that's
|
||||
at the Peterforth Github account where he has a mirror of the O-feet store which was
|
||||
Dr. Ting's site that had all of the software that he developed or collaborated with other
|
||||
people to develop for different forth for different processors.
|
||||
The next link is for Avra.
|
||||
Avra is an open source assembler for what used to be called Atmel but is now microchip AVR
|
||||
processors.
|
||||
This is one of the reasons that I switched to using 328 E4th because in order to build
|
||||
other forths you need to either use proprietary software or old Windows systems and if you're
|
||||
a Linux user that that means using wine.
|
||||
This way using Avra you can easily assemble the source code into a hex file that you can
|
||||
then upload onto the chip and it's all open source software doesn't require anything
|
||||
more than a make-make install to install the software and if you're a Slackware user and
|
||||
why aren't you a Slackware user.
|
||||
There is a Slack builds for the Avra assembler.
|
||||
The next link is a fuse calculator.
|
||||
The fuses on these microchip atmel AVR chips are configuration registers.
|
||||
You configure them, you use these registers to configure the chip to behave in certain
|
||||
ways, such as in the way I change it is, well it changes the boot loader size, changes
|
||||
the clock systems that you can use, tells the chip whether or not to save the e-prom over
|
||||
reboots, things like that.
|
||||
They are registers in the chip to configure the chip in certain ways.
|
||||
The link that I have there is a fuse calculator that allows you to select what you want the
|
||||
chip to do and then it gives you an output to put into the flashing software in order to
|
||||
make the chips, the chip be configured the way you want it to be.
|
||||
That's the next link is the flashing software.
|
||||
You'll need AVR dude which is the flashing software of choice for the microchip AVR line
|
||||
of chips.
|
||||
This used by the Arduino IDE, that's what they used to upload the Arduino source code
|
||||
files that you would develop if you're building a straight Arduino project.
|
||||
You'll also need some kind of a shell program, terminal shell program.
|
||||
I use the terminal program, serial terminal program that's an extension on EMAX which is
|
||||
I can develop my flash programs pretty simply in EMAX.
|
||||
There's also a kind of a cool terminal shell program in available to flash for its site
|
||||
so I've got a link to that.
|
||||
That's a TCL based shell program that allows you to do useful things like uploading files
|
||||
very easily to the board and also recording sessions and it gives you tab completion and
|
||||
things like that.
|
||||
That's available at the flash for its site.
|
||||
There's also some shells written in Python.
|
||||
There's a lot of terminal shell programs that are available out there.
|
||||
If you're going to do this in Windows, I think everybody uses TerraTerm.
|
||||
As far as hardware goes, you're going to need a programmer.
|
||||
Programmer is a device that uploads, that takes a hex file and uploads it onto the board.
|
||||
They are doing no board.
|
||||
The one I currently use is actually an average to programmer.
|
||||
That's the one I would recommend.
|
||||
It's fast and it works well.
|
||||
They're about $45 USD on Amazon.
|
||||
If you don't want to spend that money, there's cheaper clones out there.
|
||||
There's all kinds of different programmers available.
|
||||
You can even build your own and I actually, as I started this episode, I realized that
|
||||
I'd done an episode, episode 2799, where I describe how to build a microchip AVR programmer
|
||||
out of an Arduino Nano board.
|
||||
That's what you need programmer-wise.
|
||||
You'll need an Arduino board.
|
||||
For this project, you're going to want an Arduino Uno R3 or an Arduino Nano.
|
||||
You don't want to use a Leonardo, you don't want to use anything other than that.
|
||||
You want the very early versions of the Arduino boards.
|
||||
You really, the one that I use is an Arduino Uno board with a dip package where I can pop
|
||||
the chip out after I've flashed e4th onto it and I can put the chip onto a breadboard.
|
||||
That's how I use it.
|
||||
Although you can use e4th right on that Arduino board and that's really useful if you're
|
||||
just beginning.
|
||||
So with Active, we've got hardware and the software that you need, I'll just briefly go over
|
||||
how to install it.
|
||||
It's described in the book, slightly obliquely.
|
||||
You can also look at the flash forth site or the m4th site on how to flash Arduino boards.
|
||||
I'm not going to go into a lot of detail about that, but essentially what you're going
|
||||
to do is when you go to that first website with the Ofeet story, you're going to want to
|
||||
download, you could clone the whole repository or you could just download 2159, underscore
|
||||
328 e4th.zip.
|
||||
That's the file that contains the source code and a bunch of other useful documents, including
|
||||
a PDF version of the book, the Arduino controlled by e4th, right in that zip file.
|
||||
So after you've unzip that file, you can CD into it and then you would assemble the 328
|
||||
e4th source code, which is 328 e4th 220 dot ASM.
|
||||
You want to assemble that file using AVERA and that's a very simple incantation.
|
||||
It's just AVERA, AVRA and then a space and then 328 e4th 220 dot ASM.
|
||||
You're going to see a bunch of output go flying by and some of the things about the output
|
||||
you'll see 56 or 58, 50 plus warnings that AVERA generates when it's assembling the
|
||||
code and that's just AVERA telling you that it's padding out some of those words and it
|
||||
considers that a warning.
|
||||
It's pads out the words to make them an even number of bytes as it goes into the board.
|
||||
Such a quick overview of what's happening in that assembly process.
|
||||
You're taking an assembly source code and AVERA is processing it into AVERA, AVRA, AVR,
|
||||
excuse me, AVR machine code and then you end up with an Intel hex file which you upload
|
||||
onto the board.
|
||||
That's what's happening when you're doing that.
|
||||
The source file that you have contains what Dr. Forth considers to be, Dr. Forth.
|
||||
Dr. Ting considers to be the optimized version of an e4th to run out of Arduino board.
|
||||
He optimizes it by taking words that could have been written in Forth and turn them into
|
||||
straight assembly language and then building it that way.
|
||||
It's described in the book.
|
||||
Once you've got that hex file you can upload, you can flash the board using AVR2 and I've
|
||||
got in the show notes two incantations on how to do that and the only difference between
|
||||
the two is the first one is the one that comes straight out of the e4th book and the
|
||||
second one is the one that I use because I don't use an external crystal oscillator for
|
||||
my clock.
|
||||
The Atmel chip has it built in oscillator to run itself and it makes when you do that
|
||||
it just eliminates some components that you don't need.
|
||||
The chip runs a little bit slower but it makes it for a very elegant simple dow board
|
||||
that also is described in the book.
|
||||
It's a very minimalistic chip that allows you to run Forth on a, once you pull it out
|
||||
of the board it's no longer on Arduino.
|
||||
It's just on a microchip AVR328 processor.
|
||||
So after you've done that, after you've flashed your board, you can then plug it into the
|
||||
chip into a computer running some kind of terminal software, serial terminal software and
|
||||
when you plug it in or reset the board, you can use Arduino IDE that's got a serial
|
||||
terminal built in.
|
||||
You should see a response that says 328 e4th space version 2.20.
|
||||
If you hit return, you should see an okay.
|
||||
If you've done that, you've done everything right.
|
||||
You've got now have Forth running on the Arduino board or on them and then you can start
|
||||
playing around interactively.
|
||||
And that's one of the things that's in that zip file that you downloaded originally.
|
||||
I've got all kinds of lessons and lessons to help you learn how to use Forth.
|
||||
It gives you some of the source for some of the content that's in the book on how to
|
||||
extend e4th to make it to do some useful kind of fun things just to get started.
|
||||
It's the book also chapter 45 has a bunch of tutorials on what you can do and what you
|
||||
can't do with e4th.
|
||||
So after I got done doing all that, I realized that the one problem with e4th that I encountered
|
||||
was after I defined a new fourth word when I would reboot the board that those definitions
|
||||
were lost.
|
||||
And took me a while to figure out what the problem was and I came up with a very simple solution
|
||||
by just defining one new word in fourth.
|
||||
And I came to realize how to fix this problem from the book, from the e4th book.
|
||||
There are clues in there from the section where Dr. Ting talks about building turn key applications.
|
||||
So a turn key application would be where you have written a bunch of fourth definitions
|
||||
for the board to do something, turn a light on, run a motor, make a noise, whatever it
|
||||
is.
|
||||
And you want to be able to just plug in the board and have it auto just start that, auto
|
||||
exec that set of fourth words to do what you want it to do.
|
||||
And that's called a turn key program.
|
||||
And there's a way to do that in e4th and it's described in the book.
|
||||
And in that I realized that what was not happening was the dictionary pointer that the pointers
|
||||
to where the dictionary ends were being lost across reboots because those were not being
|
||||
saved into permanent memory, flash memory.
|
||||
And so there are a bunch of systems variables that are in e4th and four of them are basically
|
||||
described where the beginning and the end of the fourth dictionary is.
|
||||
And those four variables are context, CP, DP, and last.
|
||||
And those four variables are when you read it in the book, those are stored in the flash
|
||||
memory.
|
||||
And when you boot up the board, those four variables are copied into RAM.
|
||||
And then as you add definitions to your fourth dictionary, they get updated in RAM.
|
||||
But what never happens is they never get re-put back into the permanent storage in flash
|
||||
memory.
|
||||
So I came up with the word flush plus.
|
||||
Now I use flush plus because flush is the word that you use after you've defined a word.
|
||||
And what it does is it takes it out of sort of temporary storage and puts it into the
|
||||
flash memory so that you can be used by the chip to be able to be executed in a Harvard
|
||||
architecture chip.
|
||||
The code is in one part of memory and RAM is in another and they are not combined.
|
||||
And so there's this back and forth.
|
||||
And you cannot run things in flash.
|
||||
But you use that flash memory to put things into RAM where the chip does all of its work.
|
||||
That being said, I created a word flush plus.
|
||||
And flush plus, what it does is after you've defined a word and what's kind of cool is
|
||||
you can just type flush and start using the word and that's all described in the book.
|
||||
And if you like what you're happy with how it works, you've tested it, you can then
|
||||
use flush plus.
|
||||
And that will save those currently temporary variables, context, CP, DP, and last, into
|
||||
flash memory.
|
||||
And then when you reboot, those words will be there again.
|
||||
Being able to save words across reboots is necessary, I think, because you don't want
|
||||
to have to redefine these words every time by uploading a bunch of files each time that
|
||||
you start the board.
|
||||
You want those words to be saved as you are working on some project, some you're trying
|
||||
to solve some problem with forth.
|
||||
So a simple solution, it's a fourth word with just a few lines and save it and away you
|
||||
go, it saves words across reboots.
|
||||
So that's how I fixed E-forth to make it run the way I wanted to do.
|
||||
I still would recommend that if you're new to forth, after all these episodes you've
|
||||
decided, all right, I'm going to take Brian and Ohio upon his challenge and I'm going
|
||||
to learn how to use forth on an Arduino board, I'd highly recommend using flash forth.
|
||||
That's the place to start and then expand your knowledge from their flash forth is a great,
|
||||
great forth for Arduino boards.
|
||||
Then lastly, I just want to thank Dr. Ting and the work that he's done in providing us
|
||||
with a really, really cool open source forth for Arduino boards.
|
||||
Thank you so much.
|
||||
So that ends the show, if you have any questions, go ahead and email me or write a comment
|
||||
in the show notes.
|
||||
If you are working on a project, even if it's not a fourth project, hit record, record
|
||||
a show for HPR, we love hearing different things out there when it comes to building things
|
||||
in hardware.
|
||||
And lastly, I just want to remind everybody that you're currently going through a difficult
|
||||
transition period called life.
|
||||
Thanks, bye-bye.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio.
|
||||
Today's show was contributed by a HPR listener like yourself.
|
||||
If you ever thought of recording broadcast, you click on our contribute link to find out
|
||||
how easy it really is.
|
||||
Hosting for HPR has been kindly provided by an onstoast.com, the internet archive and
|
||||
our syncs.net.
|
||||
Onstoast.com, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
License.
|
||||
95
hpr_transcripts/hpr4498.txt
Normal file
95
hpr_transcripts/hpr4498.txt
Normal file
@@ -0,0 +1,95 @@
|
||||
Episode: 4498
|
||||
Title: HPR4498: Living the Tux Life Episode 1
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4498/hpr4498.mp3
|
||||
Transcribed: 2025-11-22 15:05:29
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4498 for Wednesday 29 October 2025.
|
||||
Today's show is entitled Living the Tux Life Episode 1.
|
||||
It is hosted by Al and is about 5 minutes long.
|
||||
It carries a clean flag.
|
||||
The summer is.
|
||||
A mini-podcast series on running Linux is daily driver.
|
||||
Hi and welcome to Living the Tux Life Episode 1 by Al.
|
||||
This is a mini-series of me trying to run Linux as my daily driver.
|
||||
This is inspired by a podcast called Dual Boot Darius where two hardcore windows gamers have had enough of windows and they want to use it to see if they want to use it on their machines.
|
||||
So by the end of the series they will remove windows and keep using the nix or they remove the nix and keep using the nix.
|
||||
This kind of got me thinking that I should really use nix a lot more.
|
||||
This is why I want to document my journey of trying to run Linux as my daily driver.
|
||||
Mainly I am a Windows guy.
|
||||
I work with Azure all day.
|
||||
I've always used windows.
|
||||
It's my bread and butter.
|
||||
Pays to bills.
|
||||
But it's okay to read it in a day.
|
||||
But I'm getting fed up with it outside of work where it's with things like being really bloated.
|
||||
You get forced off of 365 down your throat.
|
||||
You always want to reboot with updates.
|
||||
The installed time takes so much time to install.
|
||||
You have to now log when you install it.
|
||||
You have to log in with a microphone for cats.
|
||||
You can't do local app.
|
||||
You can't log in with local users.
|
||||
I don't know, maybe one way, but they're just so forced.
|
||||
You need to be not having logged in with local users but having logged in with a microphone for cats.
|
||||
And I don't really have no reason for using windows outside of work.
|
||||
I used to, I'm a scout leader.
|
||||
We used to have to fill a format for risk assessments.
|
||||
But you had to have a full version of Word Neck Cell.
|
||||
And you couldn't use the online version because you didn't like the filling out the form.
|
||||
Now that's online.
|
||||
You don't have to...
|
||||
I don't need to have a coffee offered anymore.
|
||||
I use Linux all the time on my laptop.
|
||||
I've got a laptop with one which we're called podcast on.
|
||||
But I need to force myself to kind of use it more and more.
|
||||
And also, I've never really liked supporting other people with Linux.
|
||||
Because other people are running it running it's myself.
|
||||
There's something going wrong.
|
||||
It's my problem.
|
||||
It's Linux.
|
||||
I need to fix it.
|
||||
Normally I'll just get people with running windows on their laptops but like for my wife.
|
||||
She's got a T460 with 16-gram i5.
|
||||
A big window comedy because I'm on the back of it.
|
||||
Her last row.
|
||||
She loved it.
|
||||
But that was only one of these 10s.
|
||||
And that won't support Windows 11 because it haven't got a TPM module.
|
||||
As is people know, Windows 10 is no longer receiving updates.
|
||||
So what am I going to do for her?
|
||||
So for the moment, I've given her a Windows 11 laptop running with 11.
|
||||
Or she does need now is running, has a couple of websites need to do for her job.
|
||||
So there's nothing there what is tiring what you need.
|
||||
So I've given her a Windows 11 laptop that I get a T460 back.
|
||||
And then I'm going to store some kind of Linux on there and then show her how to use it.
|
||||
And see what kind of like the wife has set the testing on it.
|
||||
I mean, she was used to Windows 10.
|
||||
I'll give her a little bit of a time and get around to Windows 11.
|
||||
But now because I've got everything to do through a browser.
|
||||
I've given her the two browsers she needs, one for work, one for personal.
|
||||
So I can't see you about giving her her old T460 back that she should have a problem running her Linux.
|
||||
I think I'll have to be brave and be ready to support Linux.
|
||||
I know I'm a brainy guy, so I should be able to fix it.
|
||||
So why don't I think I need to look at what I find with Linux is laptops.
|
||||
Is that I like to have with like a modern laptop where you can shut the list down.
|
||||
And if machine will go to sleep and then you can come to back a couple of days later, open a lid and it either wake up.
|
||||
And you haven't really lost lots of power.
|
||||
I've been playing with a couple of my test laptops which are all i5,
|
||||
Gen 8, all of them have the same hibernation issue where they don't even go to sleep properly.
|
||||
Or they don't go to deep sleep.
|
||||
So I want to try it on the, I've got a 11th gen i7.
|
||||
I want to try laptops with that.
|
||||
This is my homework this week is to try and see if I can get the get them work out of the better.
|
||||
How power consumption really works and how I can get some deep sleep working on Linux so that when you,
|
||||
so that it doesn't, the battery doesn't drain when you put lid down.
|
||||
So that's all for episode one.
|
||||
I think I might want to ask that is there anyone else out there who would like to take on the challenge with me.
|
||||
Maybe a co-host so we can bounce ideas off.
|
||||
So if you are interested drop me a line and come back tomorrow for another episode of Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast and click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the internet archive and our syncs.net.
|
||||
On this advice status today's show is released on our Creative Commons Attribution 4.0 International License.
|
||||
257
hpr_transcripts/hpr4499.txt
Normal file
257
hpr_transcripts/hpr4499.txt
Normal file
@@ -0,0 +1,257 @@
|
||||
Episode: 4499
|
||||
Title: HPR4499: Greg Farough and Zoë Kooyman of the FSF interview Librephone lead developer Rob Savoye
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4499/hpr4499.mp3
|
||||
Transcribed: 2025-11-22 15:06:57
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4499 for Thursday 30 October 2025.
|
||||
Today's show is entitled, Greg Faroth and Zoe Kuhamen of the FSF entered Ulyra Phonely
|
||||
Developer Rob Savoy.
|
||||
It is hosted by Ken Fallon and is about 23 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Greg and Zoe of the FSF interview Ulyra Phonely Developer Rob Savoy.
|
||||
Today's show is licensed under a Creative Commons Attribution License.
|
||||
Hi everybody, my name is Ken Fallon and you are listening to another episode of Hacker
|
||||
Public Radio.
|
||||
As some of you may know, I am a janitor at Hacker Public Radio and as such we implement
|
||||
the policies that are discussed and agreed on the mailing list.
|
||||
One of those policies is that HBUR does not air shows that have been recorded or published
|
||||
somewhere else and unfortunately I've recently had to reject a show on that one.
|
||||
So that's the bad news.
|
||||
The good news is that show was actually released under a Creative Commons CCBISA license
|
||||
and it is available on the free software foundation's website fsf.org forward slash campaigns
|
||||
forward slash Libra Phonely Developer Rob Savoy.
|
||||
So therefore I am submitting it as a show under our policy that if you have a piece of
|
||||
cruise commons content that you would like to promote then feel free to record it as
|
||||
a regular show, introduce the content, explain why it's important, provide links where
|
||||
you can get more information and include it as one sample episode.
|
||||
And here you go.
|
||||
This is Greg Farrow and Zoe Koeman and the interview Libra Phonely Developer Rob Savoy
|
||||
from DesiGnu, GNU Cash, GCC on his new project to liberate non-fairy binary blobs on mobile
|
||||
phones.
|
||||
Apologies if I mispronounced anybody's names but sit back, relax and enjoy the show.
|
||||
Links will be in the show notes.
|
||||
Hey everybody, this is Greg Farrow, the campaigns manager of the free software foundation.
|
||||
I'm here with Zoe Koeman, the executive director of the free software foundation.
|
||||
Zoe do you want to introduce yourself, introduce the work of the fsf and the guests that we
|
||||
have today?
|
||||
Oh yeah, sure.
|
||||
So my name is Zoe Koeman, I'm the executive director of the free software foundation
|
||||
and this is a podcast basically coming two days after our 40th anniversary.
|
||||
So 40 years of commitment to software freedom.
|
||||
So the fsf has as a mission to defend the rights of computer users worldwide and we do
|
||||
that in the form of running advocacy campaigns to promote the philosophy of free software
|
||||
and talk about what free software is.
|
||||
We are the fiscal sponsors for the GNU project, which is of course the original free software
|
||||
operating system as founded and started by Richard Stalman in 1983.
|
||||
And we do licensing and in our licensing team we focus on defending the GNU general
|
||||
public license which is a strong copy left license which is of course the strategy with
|
||||
which we protect software freedom.
|
||||
So for everyone listening that doesn't know what copy left is, it's a structure of copyright
|
||||
where we tell everyone that uses the software that we create but copy left is also something
|
||||
used in free culture for example.
|
||||
So anything any product that you make you have a license to use it and to edit it just
|
||||
that you like and then to distribute it again under the condition that you have to redistributed
|
||||
under the same license and that means that everyone that uses your modified version of
|
||||
the software or in some cases another piece of art material, cultural work gets the same
|
||||
freedoms as the ones that you receive.
|
||||
So always a right to study the software to edit it and to share it with your friends
|
||||
and to distribute it.
|
||||
And then of course we have a tech team and our tech team runs like I said the infrastructure
|
||||
for what I mentioned before the GNU project and a couple other free software projects that
|
||||
are important for the community for example to scale the free operating system that a lot
|
||||
of free software users use and they also run our entire system of the office on free software.
|
||||
So we as an organization do every single thing that we do in freedom and that's a place
|
||||
that we would love other people to be at as well.
|
||||
So in short that is what we do at the free software foundation and we run several projects
|
||||
to sort of make a significant difference for people in their software users or in their
|
||||
computing and we want to free up for as many people as we can and that is one of the reasons
|
||||
why we are here today talking about a project that we have just recently launched and we
|
||||
have invited Rob Savoy to join us today.
|
||||
So Rob do you want to tell us a little bit about yourself?
|
||||
Sure so I've been working on the GNU toll chain full time mostly on and off since the late
|
||||
1980s and with a big focus on embedded systems, backgrounds with hardware, bring up,
|
||||
port support packages, all the really fun hardware software, glue layer stuff I actually
|
||||
think is kind of fun to work on and so yes I'm kind of excited to be jumping into this
|
||||
project and do much more of that.
|
||||
Yeah definitely so Zoe I guess one question that comes to mind is as much as we like
|
||||
him, people are probably wondering why is Rob here, can you answer that?
|
||||
Yes I can definitely answer that actually I'm pretty excited to answer that.
|
||||
So the FSF has been working on software freedom and computing for about 40 years now and
|
||||
as part of that anniversary we started reflecting on one of the biggest gaps that we had which
|
||||
is obstructing freedom for users and that is of course mobile phones, a lot of the work
|
||||
that we do at the FSF is focused on actual computing, desktop computing, laptops, things
|
||||
like that but we don't have, we haven't made a lot of progress in mobile phones and of
|
||||
course most individuals do much or cannot even really get around doing their computing
|
||||
on mobile phones.
|
||||
So even though there is a lot of work to be done in mobile phone freedom mobile phone computing
|
||||
remains largely non-free due to a range of non-free software blobs that are proprietary
|
||||
and even the most progressive what they call free software operating systems.
|
||||
So we want to build on the work that's already being done by some of these projects that
|
||||
a lot of people already know, one of these projects is actually a free software project
|
||||
as well called Replicant which is a project that the FSF also is a fiscal sponsor for but
|
||||
then we're also talking about projects like Graphino S which is of course not an entirely
|
||||
free project, lineage OS, same story and then there's Calix OS which is also not entirely
|
||||
free and unfortunately also temporarily suspended right now.
|
||||
And then what we want to do is we want to free up the blobs that will get us to mobile phone
|
||||
software freedom.
|
||||
Yeah, absolutely and like as we said at the original announcement our project is called
|
||||
Librephone. Rob, you know I know we've been talking about this for I guess a couple hours
|
||||
total over the time that we've spent together but if I was just coming to you and I asked
|
||||
what is Librephone, how would you answer it?
|
||||
Boy, we're trying to free up people from the software that controls the hardware on their
|
||||
phone that nobody knows how it works.
|
||||
Maybe it's leaking private information like who really knows and so we're attempting
|
||||
to free up kind of that last big black box that controls kind of how we use our devices.
|
||||
Yeah, so just to be clear Rob, can you just talk a little bit about we are not developing
|
||||
a free mobile phone operating system, right?
|
||||
Yeah, correct.
|
||||
We are not actually going to build like yet another fork of Android open source project
|
||||
or any of that kind of stuff.
|
||||
There's plenty of people doing that but they all ship the exact same binary blobs and
|
||||
so we're focusing on kind of reverse engineering that low level software that would actually
|
||||
be shared by multiple of the mobile operating systems.
|
||||
So we're not actually specifically focused on that.
|
||||
We don't want to do the whole operating system that's an entire project by itself there's
|
||||
a lot of people in that space so in a lot of ways you know they'll benefit by the work
|
||||
we're going to do and of course I'll be benefiting this project by the work that they do as
|
||||
well.
|
||||
So can you just clarify and explain a little bit more for the users, give us some examples
|
||||
of some of these low level blobs that you mentioned?
|
||||
So a simple one, Bluetooth.
|
||||
So Bluetooth you know one point was basically you know a separate chipset now it's built
|
||||
into the SOC but yes if you want to have Bluetooth to your headset to your stereo to you
|
||||
know your car or whatever your Bluetooth thing is the software that actually does the
|
||||
Bluetooth communication is a binary blob that nobody knows how it works and so part of
|
||||
what we want to do is figure out how that works, same thing, Wi-Fi, your touch screen,
|
||||
your fingerprint sensor, all these things have a proprietary blob that nobody knows how
|
||||
they kind of work and so we kind of want to know how they work and then ultimately once
|
||||
we understand how they work right free replacements for them so that they're no longer needed.
|
||||
Otherwise you end up with a phone that actually doesn't work.
|
||||
Right so to be completely clear so if I download either Graphi-NOS, or CalXOS to mention some
|
||||
of the ones that we mentioned before they are for a large part they're free software but
|
||||
then indeed a lot of these for example Bluetooth or the touch screen they're software around
|
||||
that can be found in most of these operating systems that is actually still non-free, right?
|
||||
Yeah exactly don't benefit draft a lot by this work because I think all these other people
|
||||
would like to get rid of the binary blobs it's just an entire project by itself so they focus on
|
||||
getting as close as they can get to being as free as possible. We can supply that last missing
|
||||
piece for a completely free phone. Yes and we are very excited about starting to do that.
|
||||
So Craig why is Maplephone needed? Well you know we were talking about replicant earlier and
|
||||
replicant is of course you know I like to call it state-of-the-art when it comes to freedom like
|
||||
so when you you know if you have a device that supports replicant and you install it
|
||||
replicant will strip out you know most of the binary blobs of course there's still the
|
||||
mobile baseband which we won't you know talk about right now but you know it strips them out so
|
||||
you might have replicant on a phone but you won't have working Wi-Fi on the phone or you won't
|
||||
won't have working Bluetooth on the phone kind of you know like Rob was mentioning.
|
||||
So Librephone is a project that you know is looking for a or working for a world where you know
|
||||
you do have Wi-Fi on your phone running for your software you do have Bluetooth on your phone
|
||||
running for your software in fact all of your hardware are supported because of a very long
|
||||
research and development and ultimately a reverse engineering project to bring those
|
||||
you know binary blobs into the free world.
|
||||
Right and then of course like we said before most individuals actually do a large part of
|
||||
their computing on mobile phones today and we are very thankful that there have been projects
|
||||
that have been working on these what they goal free software operating systems and as they are
|
||||
gaining in popularity we want to make sure that we sort of bring them home and close the gap
|
||||
there and have them computing in full software freedom and we think that with the work we will
|
||||
be doing will be benefiting not only one particular operating system but indeed multiple and that
|
||||
will set us or how do you say that in English and it will bring us miles ahead in bringing us
|
||||
to mobile phone software freedom because of course the work that we will be doing people can
|
||||
build on that for years to come is the plan. So FSF has partnered with Rob to start doing most
|
||||
to start this project so we started in August and we started doing of course a research
|
||||
in development phase first so we have set up with Rob for about six months to really analyze
|
||||
what is currently out there what projects are there what kinds of blobs do we need to be looking at
|
||||
and also sort of what are the systems that are out there now that have most of these blobs
|
||||
coming back and which would be like the best choice to make to make a start on and then of course Rob
|
||||
can go into detail a bit further on this but after that just to give you sort of the highlights of
|
||||
what we are for seeing after that what we'll be doing is we'll be defining the project we'll be
|
||||
choosing a system and we will be analyzing that thoroughly we will going through we going through
|
||||
all of the different blobs that are there and then we will have to reverse engineer them now
|
||||
as I'm sort of talking through this we are talking about a project that could potentially be
|
||||
years right Rob yeah I think of equivalent projects like the new radio which is another classic
|
||||
reverse engineering project so what are your first goals and targets Rob can you tell us a
|
||||
little bit about that about the work that you're doing now and how you see it coming together
|
||||
in a couple months from now yeah so initially instead of just kind of launching off on whatever
|
||||
phone I happened to own I decided it was actually worth doing like kind of serious research
|
||||
there's often variations and the hard work chipsets on phones that may make them easier or harder
|
||||
to reverse engineer and so when the things I did was since the lineage OS project very nicely has
|
||||
over install packages up on their website I managed to download all 215 packages and extract all
|
||||
the binary files and so I've been kind of looking through all the different firmware and what
|
||||
chipsets what the functionality is and then the kind of the goal of that is in the kind of the
|
||||
near term is to kind of figure out what's going to be the best development device ideally some kind
|
||||
of SAC that's maybe used by multiple manufacturers same thing for chipsets we don't really want to
|
||||
support anything that's kind of a one off hardware for example and because the project may take
|
||||
several years we also want to have hardware that we can also buy a few years from now on eBay or
|
||||
somewhere else and so yeah so basically my goal was to actually do a really deeply researched
|
||||
thought out plan and then at that point it's a matter of collecting some of the resources to start
|
||||
actually documenting the specifications to replace the blobs bringing in other contractors
|
||||
things like that but right now I'm just kind of actually going to have a really good idea
|
||||
what we think we're going to do rather than just launching off with no real plan
|
||||
yeah so let's talk a little bit about how people can help of course because you're not going to
|
||||
do this all alone are you now this project is way too big for one person
|
||||
so the FSM was funded initially by John Gilmore who gave us a really generous donation and
|
||||
that will sort of keep us going to make sure that we define the project timeline and the next step
|
||||
we will of course need additional funding so we will be sourcing that as we go along and go
|
||||
through these projects for the coming years we will also be keeping everyone of course in the
|
||||
loop on where we are with these different kinds of steps that we need to go through and we will
|
||||
be reporting as we do the work and Rob has already started a lot of the documentation and as we go
|
||||
live we will be launching also places where that documentation can be found so Rob what else do we
|
||||
need help so this is a really big project if we actually want to have workable replacements for
|
||||
the binary blobs within a reasonable amount of time it needs multiple people I mean you're
|
||||
looking at average fund there's five six seven different pieces of firmware so ideally what we
|
||||
need is people with reverse engineering skill sets to work on that as volunteers preferably funding
|
||||
to actually pay people because these reverse engineering skill sets aren't super common and so
|
||||
ultimately being able to fund some contractors actually working on the implementation for these
|
||||
blobs because of the way the legalities are here in the US I'm primarily focusing on the specifications
|
||||
and the initial reverse engineering and then we will need the people to actually implement the
|
||||
specifications to kind of stick to the clean room process there so yes we need motivated people
|
||||
there's a lot of people also working on various pieces of free phones so we'll love to invite them
|
||||
to sort of loosely join this project with their own contributions maybe stuff that's not directly
|
||||
firmware related but there's other pieces on a totally free phone so we kind of encourage everybody
|
||||
to like hey let's jump in together yeah tell us what you're working on and we will look at it
|
||||
and we will see how we can help each other for sure um so what if I'm not super technical Rob
|
||||
is there a way that I can help as well so um documentation um I've been trying to write
|
||||
documentation but I've been told in the past that it's usually very dense so people that can
|
||||
actually turn it into um something that normal people who aren't embedded systems engineers
|
||||
can really be helpful um ultimately there are people have put deep time into some of this
|
||||
firmware you know some people are really in the Broadcom chips and some people are in the media
|
||||
text I would love to hear from people that actually do have some direct experience with some of
|
||||
the manufacturers or the chipsets we're looking on um and things like that so I think there's a lot
|
||||
of ways people can help but of course funding so if you're not an engineer well you can help
|
||||
fund an engineer um it all works um and I think as time goes on there will be other stuff
|
||||
eventually we'll need testing and all that other kind of stuff but if I say we're still just
|
||||
getting the R&D phase launched yeah okay well that's very good to know and then of course one
|
||||
thing that we say at the FCEF always is also talk talk talk talk talk talk talk about the project talk
|
||||
about the need for free software talk about uh why you want to free up your mobile phone talk about
|
||||
the system that you're already writing and why it's not completely free yet and how they can help
|
||||
to get us there because who knows maybe the person that you're talking to is the person that
|
||||
is going to make a significant difference in this project um Craig I suppose we also have a bunch
|
||||
of places where people can meet up with each other or read more about the project do you want to
|
||||
go through a little bit of that uh yeah we do I mean and thanks to the magic of time travel by the
|
||||
time that this episode goes out we will have launched a website for the project at leberphone.fsf.org
|
||||
if for whatever reason you do not see it you will see it on the front page of fsf.org that is free
|
||||
software foundation um so like bar hackers we have a particular fondness for IRC uh so
|
||||
if you're on IRC we have set up a pound leberphone uh IRC channel on the leberit.chat IRC network
|
||||
um of course you know if you want to get involved with the fsf or can you on a more general level
|
||||
you know all that information is on fsf.org and canu.org it's not just leberphone that needs help
|
||||
any uh aspect of the uh free software you know movement of using free software of canu linux
|
||||
all of it needs you know some kind of help and um if you'd like to donate to the fsf you can do that
|
||||
at uh fsf.org slash donate or ideally uh the thing that helps us the most and which forms the
|
||||
vast vast majority of our funding is our uh associate membership program and if you're not
|
||||
an associate member you can join up at fsf.org slash join so to make a long story short uh there
|
||||
are multiple ways to get involved in leberphone project and there are just literally hundreds of
|
||||
opportunities to get involved in uh you know free software generally whether that's bug reports
|
||||
documentation you know actual development uh advocacy which is what we do here on
|
||||
lebersef campaigns team you know anything that you can do is going to help uh the free software
|
||||
of movement succeed for sure uh yeah so rob do you have any last thoughts that you want to share
|
||||
with us? let's go do it hey let's do it yeah
|
||||
all right just gonna it just gonna be a hard and challenging project they're also the most fun
|
||||
yes and and it's significant like it's gonna make a significant difference for different for
|
||||
the future and uh and we're all very excited to start it uh so thanks everyone thanks for listening
|
||||
yeah thank you and thanks rob for joining us and for teaming up with us on this project very excited
|
||||
let's go do it yeah
|
||||
you have been listening to hacker public radio at hacker public radio does work today's show was
|
||||
contributed by a hbr listener like yourself if you ever thought of recording podcast and click
|
||||
on our contribute link to find out how easy it really is hosting for hbr has been kindly provided
|
||||
by an honesthost.com internet archive and our sims.net on the satellite status today's show is
|
||||
released under a creative comments attribution 4.0 international license
|
||||
191
hpr_transcripts/hpr4500.txt
Normal file
191
hpr_transcripts/hpr4500.txt
Normal file
@@ -0,0 +1,191 @@
|
||||
Episode: 4500
|
||||
Title: HPR4500: Arthur C. Clarke: 2001 and Sequels
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4500/hpr4500.mp3
|
||||
Transcribed: 2025-11-22 15:06:50
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4500 for Friday 31 October 2025.
|
||||
Today's show is entitled, Arthur C. Clark, 2001 and Seacals.
|
||||
It is part of a series science fiction and fantasy.
|
||||
It is hosted by Ahouka and is about 19 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, a look at Arthur C.
|
||||
Clark's most famous series.
|
||||
Hello, this is Ahouka, welcoming you to Hacker Public Radio
|
||||
and another exciting episode in our ongoing series on science fiction and fantasy.
|
||||
And we have been discussing the works of Arthur C. Clark
|
||||
and it is time to get to probably the best known of all the things.
|
||||
He ever did.
|
||||
And it's 2001 a space Odyssey.
|
||||
Because I think it is fair to say that if you only know Arthur C. Clark for one work,
|
||||
it would be 2001 a space Odyssey.
|
||||
And it deserves to be famous for a number of reasons.
|
||||
Now this started with a short story called The Sentinel.
|
||||
I've put a link in the show notes.
|
||||
If you want more information about that,
|
||||
which Arthur C. Clark wrote in 1948 and later published in 1951,
|
||||
making it a pretty early work of his.
|
||||
But parts of the film also drew a story called Encounter in the Dawn,
|
||||
which he published in 1953.
|
||||
But the completed work of 2001 started actually as a film
|
||||
and was novelized by Arthur C. Clark and Stanley Kubrick.
|
||||
More or less in parallel alongside the screenplay,
|
||||
though Clark was the only listed author.
|
||||
And the screenplay for the film was also a collaboration between Clark and Kubrick.
|
||||
They didn't quite agree on everything.
|
||||
And in 1972, Clark published a book called The Lost Worlds of 2001,
|
||||
which contains additional material,
|
||||
such as the original text of that short story The Sentinel,
|
||||
some early versions of the screenplay,
|
||||
and material about how Clark and Kubrick developed the project.
|
||||
Now the story begins in Africa three million years ago,
|
||||
and this draws upon the story Encounter in the Dawn.
|
||||
A monolith stands there amidst a group of hominids.
|
||||
The hominids develop tool using, which enables them to kill animals for food.
|
||||
The novel is more explicit, but the film strongly hints that this development was
|
||||
brought about by the monolith.
|
||||
Then the hominids use the bone tools to kill a leopard that threatened them.
|
||||
Finally, one hominid used the bone club to kill a rival.
|
||||
Then the scene shifts to the near future,
|
||||
at the time this was done, of AD 1999.
|
||||
And a Dr. Haywood Floyd is traveling to the moon,
|
||||
where another monolith has been discovered.
|
||||
So, you know, at the time that they were doing this,
|
||||
they knew there was a space race on,
|
||||
and it never occurred to them that we would go to all the trouble of going to the moon and then
|
||||
saying, all right, well, that's done. Let's forget about it.
|
||||
Although that's in fact pretty much what happened.
|
||||
So, they're thinking by 1999, there will be permanent installations on the moon and
|
||||
exploration and scientific stuff.
|
||||
We're starting to move towards doing that now, if we look at the plans, which
|
||||
not just NASA, but also the Chinese and other countries are looking at.
|
||||
So, you know, they were a little more optimistic.
|
||||
Anyway, there is the permanent settlements on the moon, and at one point they are
|
||||
in an excavation where they discover this monolith.
|
||||
And it has the precise dimensions of one to four to nine.
|
||||
And those represent the squares of the first three integers.
|
||||
So, it is believed to be of intelligent origin.
|
||||
And when the sun falls upon this monolith for the first time since it was uncovered,
|
||||
and you have to remember, on the moon, the night is two weeks long,
|
||||
and followed by two weeks of day.
|
||||
So, you could uncover something for three, four, five days, or even a week,
|
||||
so, and not have any sunfall on it.
|
||||
Well, once the sun falls on this monolith, it emits a piercing radio transmission.
|
||||
And this is a good place to discuss that the novel and the movie differ in some details.
|
||||
Now, in the novel, the transmission is directed at a moon of Saturn, called Iapetus.
|
||||
But in the movie, it is directed at Jupiter, not the huge difference.
|
||||
Now, these minor differences do not affect the overall plot, a 10-degree degree.
|
||||
In either case, it is now clear that some alien intelligence created this monolith
|
||||
and that it has some kind of base in the outer solar system.
|
||||
Well, the next step is to mount a mission that go out and see what it is.
|
||||
There are two astronauts, Dave Bowman and Frank Poole.
|
||||
And then several scientists who are in hibernation, and they are all the crew of a ship called
|
||||
the Discovery that is sent out to investigate.
|
||||
Now, along the way, Frank Poole is killed, and Dave Bowman starts to suspect that the computer,
|
||||
a Hal 9000, is the cause of the problem.
|
||||
Now, many people have noted that Hal, H-A-L, is just IBM shifted down by one space.
|
||||
You know, I down to H, B down to A, M down to L.
|
||||
Anyway, Dave shuts down Hal, then goes on to investigate,
|
||||
and he is transported through some kind of stargate.
|
||||
It is not really explicit in the movie, a little more explicit in the novel.
|
||||
And that takes him to another location, and something happens, and he becomes the star child.
|
||||
A number of these details are different between the film and the novel,
|
||||
but I wouldn't worry about that. The differences are not, in my view, important.
|
||||
Now, the film itself has been considered one of the great science fiction films of all time.
|
||||
The film delivers a look at what we thought was a very plausible future.
|
||||
The space clipper that took Dr. Floyd to the moon was operated by Pan Am, which was an airline
|
||||
at the time of the film. It has ceased to exist as of 1991.
|
||||
The spinning space station from which Dr. Floyd leaves for the moon is exactly what scientists
|
||||
have projected, because the spinning creates artificial gravity, which is easier for most
|
||||
people to tolerate than the microgravity we have right now on the International Space Station.
|
||||
This approach to artificial gravity is replicated on the ship to Jupiter,
|
||||
but due to the smaller size, it results in a very obvious curvature inside the ship.
|
||||
Now, everything is exactly what a scientist or an engineer would expect.
|
||||
I think this takes us back to the thing that we talked about that Clark has developed a reputation
|
||||
for doing hard science fiction, and this film has a lot to do with it.
|
||||
It was not pure fantasy. Instead, it was really very much what science and engineering were telling
|
||||
us was possible at that time. Now, as it happens, Clark was not happy with some of the changes
|
||||
Kubrick made in the film, which is why he released Lost Worlds of 2001 in 1972.
|
||||
Nonetheless, I think Kubrick's film is a masterpiece that every fan of science fiction should watch and enjoy.
|
||||
Then, in 1982, Clark came back to do a sequel called 2010 Odyssey 2.
|
||||
Now, in this sequel, Clark made a few changes to what he had said in the novel of 2001
|
||||
to bring it into alignment with the film. So, forget about Saturn's moon Iapetus,
|
||||
it's now canon in this that it was Jupiter all along.
|
||||
Now, the next available ship is actually a Soviet ship, called the Alexei Leonov,
|
||||
named of course for the Soviet cosmonaut, who is the first person to conduct a spacewalk.
|
||||
This ship carries a mixed crew of Americans and Russians and includes the sciences to
|
||||
program the Hal 9000 on the discovery. Now, they set off for Jupiter, but then a Chinese craft races
|
||||
ahead. So, it's interesting that even back in the 70s, 80s at this point, Clark was already
|
||||
saying that China is going to be racing ahead. Right now, China is making great strides. They've
|
||||
got their own space station, they're landing things on the moon, they're doing a lot of stuff.
|
||||
So, in this story, he's got them sending their own ship to Jupiter,
|
||||
but then they notice something, it is going really fast. Going really fast uses up a lot of fuel.
|
||||
Generally, what you do is you do a slower and you start using things like gravity assist
|
||||
maneuvers to minimize the need for fuel, but it'll take longer. Looking at the Chinese craft,
|
||||
it's like they can't have enough fuel for the return. Well, what does that mean? Well,
|
||||
they suspect what's going to happen is that they're going to land on Europa and try and refuel
|
||||
there with the water ice that's available, that they could somehow use for fusion reactions
|
||||
and things like that. It does attempt to land on Europa and then they're wiped out by a life
|
||||
form that is native there. Dave Bowman reappears when the monolith around Jupiter opens briefly into
|
||||
being the stargate. He's now a being of pure energy with nobody and he's being used by the alien
|
||||
monolith builders to study Earth. So, he goes to Earth and has some interactions with people there.
|
||||
Then he returns to the Jupiter system and tells Dr. Floyd, who is on the Alexei Lanov,
|
||||
that you guys have to leave the Jupiter system within 15 days.
|
||||
Then the monolith orbiting Jupiter disappears and that's enough to convince people that okay,
|
||||
maybe Dave Bowman whatever he is now knows what he's talking about so they make ready to depart.
|
||||
They have to use the discovery, which was Bowman's original ship to help it break orbit and leave.
|
||||
Bowman then goes to the discovery. He has them take the the Hal 9000
|
||||
computer system and has the monoliths take all the programming out of that, sort of like a brain dump.
|
||||
Then Bowman has the discovery broadcast a message to the humans and it says the rest of the
|
||||
solar system is theirs but they must leave Europa alone. Now apparently the monolith builders have
|
||||
decided that the creatures on Europa have evolutionary promise. Then they night fusion on Jupiter,
|
||||
turning it into a mini-son. Now this novel was filmed in 1984, under the name 2010, the year we
|
||||
make contact. It's a nice enough film. I don't regard it as anything remarkable. It's not a ground-shaking
|
||||
milestone in science fiction filmmaking the way 2001 definitely was.
|
||||
Now the next one in the series is called 2061 Odyssey 3, which Clark wrote in 1987.
|
||||
So it's 50 years since the previous novel now at this point, 60 years since 2001.
|
||||
So things have changed. The new son that Jupiter became is now called Lucifer
|
||||
and it has made the moon IO a volcanic helhole but Ganymede is now a temperate body that humans have
|
||||
colonized. There's also a new spaceship drive involving muon-catalized fusion that is opening up
|
||||
the possibility of interstellar voyages and Europa and its inhabitants are thriving.
|
||||
On Earth the Americans the Soviets and the Chinese are in relative peace but a revolution in South
|
||||
Africa has caused all the white africaners to leave but the black population has used the
|
||||
revenue from the diamond mines to help rebuild their country. Then a mountain appears on Europa and
|
||||
it looks like it is a huge diamond created when Jupiter ignited. Some of the africaners want to
|
||||
get their hands on it as revenge since it would destroy the market for diamonds and their ship
|
||||
crashes on Europa. A very old Dr. Floyd, yeah he's still around and somehow gets involved in this
|
||||
situation. A small monolith appears to him and we learn it as copy Dr. Floyd's mind into another
|
||||
pure energy being as a companion to Dave Bowman. Bowman then explains to Dr. Floyd that Lucifer,
|
||||
the former Jupiter, will stop burning in about a thousand years and when that happens the
|
||||
monolith builders will have a decision to make. Do they see more potential in the Europa or in the
|
||||
humans and it's not certain which way this will go. And then the last book in the series was called
|
||||
3,001, the final Odyssey published in 1997. This starts with a prologue about the monolith builders.
|
||||
They were a race, an alien race that considered mind to be the most precious thing in the universe
|
||||
and built the monoliths to encourage the development of mines wherever they were.
|
||||
It's implied that the race that build the monoliths has moved on and no longer is particularly
|
||||
involved with them but there is a master monolith which appears to be located in a star system
|
||||
450 light years away. Meanwhile the freestride body of Frank Poole from the first discovery mission
|
||||
is discovered and he is revived with the superior technology of the 31st century.
|
||||
He is sent to visit Europa where he visits the monolith there and converses with Dave Bowman.
|
||||
Now Bowman has now merged with the Hal 9000
|
||||
mines that was rescued before Jupiter ignited and now has become a being that is called
|
||||
Halman. Lucifer is indeed starting to dim and this is a problem. The monolith monitor what is
|
||||
going on and you know they send reports back to the monolith HQ and that takes 450 years to get
|
||||
there then it has to be considered and a reply takes another 450 years to come back and you know
|
||||
it's about time for the reply to come back. Bowman thinks it may be bad because what they
|
||||
witnessed at the time of the report was the wars of the 20th century.
|
||||
And sure enough the reply comes back that says essentially humans have failed wipe them out.
|
||||
Now humanity needs a way to fight back and they decide to use a computer virus to disrupt the
|
||||
monolith. The monoliths are really just computerized mechanisms, advanced ones but they're able to
|
||||
put in a virus and the monoliths are brought down but the human race and the aeropens do develop
|
||||
relations. Now at one time Ridley Scott was going to develop a series based on his novel
|
||||
for the sci-fi channel but like so many in development projects it seems so have disappeared
|
||||
entirely. You know and that's the thing about films and Hollywood is that for for every one film
|
||||
that actually gets made there's probably 20 properties or 30 properties that have been
|
||||
optioned and gone into at least initial development and then nothing ever happens.
|
||||
So it's a pretty common kind of thing. So that is the whole series of 2001 and all of its
|
||||
sequels. So this is a hookah for hacker public radio signing off and is always encouraging you
|
||||
to support free software. Bye bye!
|
||||
On the Sadois stages, today's show is released under Creative Commons,
|
||||
Attribution 4.0 International License.
|
||||
396
hpr_transcripts/hpr4501.txt
Normal file
396
hpr_transcripts/hpr4501.txt
Normal file
@@ -0,0 +1,396 @@
|
||||
Episode: 4501
|
||||
Title: HPR4501: HPR Community News for October 2025
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4501/hpr4501.mp3
|
||||
Transcribed: 2025-11-22 15:09:43
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4,501 for Monday 3 November 2025.
|
||||
Today's show is entitled, HBR Community News for October 2025.
|
||||
It is part of a series HBR Community News.
|
||||
It is hosted by HBR volunteers and is about 50 minutes long.
|
||||
It carries an explicit flag.
|
||||
The summary is…
|
||||
HBR volunteers talk about shows released and comments posted in October 2025.
|
||||
Hi everybody, my name is Ken Fallon and you're listening to another episode of Hacker Public Radio.
|
||||
Today is episode 4,501 for…
|
||||
Um… Monday 3 November 2025.
|
||||
This is the Community News where we discuss the ins and outs of what's been going on on the HBR project for the last month.
|
||||
The last month was of course October 2025.
|
||||
This is a volunteer podcast where the shows are submitted by people very much like you, in fact.
|
||||
So if you have been listening to Hacker Public Radio and have not yet introduced yourself to the room, feel free to do that.
|
||||
It's a nice thing to do and it gets your first show onto your belt and at least it introduces you to the community in general.
|
||||
You can start your show by saying hello, my name is and your name and I got into tech back in then and here's my journey and here's HBR.
|
||||
That's the only thing we'd like you to do.
|
||||
One show a year will be great for people and this is the Community News where we talk about stuff that's been going on in the community.
|
||||
And there's been a lot this month.
|
||||
Um… Kevin and some guy in the internet have conflicting plans with this episode so we asked to see if there was anyone available, retail was available and volunteered.
|
||||
But we're having connectivity issues at the moment so he's had to bow out but thank you very much to him for volunteering.
|
||||
We normally record this show if you have listened to all the HBR episodes in a month or most of them.
|
||||
You can help us out by recording this show from time to time.
|
||||
I will be sending an email out more informally email asking if people want to join rather than specifically given time.
|
||||
The time we normally record this is on Friday afternoon, the UTC is around 5 o'clock UTC on the Friday before the Monday.
|
||||
That gives us the weekend in order to process this episode and get it up to the internet archive and out to the CDN.
|
||||
So the first thing we will normally do with this is we introduce new hosts, hosts, easy for me to say.
|
||||
And if I get your name wrong it's not intentional. I suffer from dyslexia and my pronunciation is not good at the best of times so apologies.
|
||||
But I will guarantee you I will be equally bad at pronouncing everybody's names so I'll do my best.
|
||||
First is Kubotika and Teebo and Candy Canater and that is three fantastic people who have volunteered their time to contribute.
|
||||
So what we like to do is go through each of the episodes and basically give a quick rundown of what we thought of the episodes as your hosts.
|
||||
But also we will read out some most of the comments usually, all the comments usually that are sent in by our contributors.
|
||||
So a great way that you can give some feedback is by commenting on the episodes just it is the currency by which we pay our hosts.
|
||||
And somebody who's due a big bill is Ahuga who has sent in another one from the reserve queue this time just confirm that.
|
||||
And what that means is when there are not enough shows in the regular queue what we do is we take one from the reserve queue and put that in.
|
||||
So that gives you an opportunity to realize that yeah this project has gone away if we don't have shows it's not venture capital funded.
|
||||
It's done by volunteers and it's done on the understanding we will continue to provide services for us somehow.
|
||||
So long as people are interested in keeping the project going and that means submitting shows.
|
||||
But all that said this was a continued look into the brain of Ahuga and he's going alphabetically so we got Galicia games, geography, some health stuff, history, hobiltel, scope etc etc.
|
||||
So anonymous 27 says excellent recommendations I love history so thanks for the recommendations you remind me of my Uncle Benny and Santa Claus a nice deep voice.
|
||||
Oh he's just ducks Santa Claus Santa Claus is Uncle Benny apparently now clicking on the next button we have who is the Algoron for whom are the flowers.
|
||||
And this was an episode by Antoine and it was about a science fiction story that he had read and basically discusses the impact of the science fiction episode.
|
||||
I really enjoyed this and it reminded me of a lot of other shows, other pieces of work and contemporary culture that has been based following the same sort of plot line as as described in this episode.
|
||||
Tray says very interesting I remember hearing the title flowers of Algoron thank you for sharing about the story here.
|
||||
I will be checking out a copy from my local library soon to which anonymous 27 replies required Futurama list references.
|
||||
Also the Futurama episode parasites list has a similar concept but ala Futurama style so go fry exclamation mark.
|
||||
The following day we had Arthur C. Clarke becomes successful and this was biohook as well and you notice that
|
||||
a hooker is very good about adhering to the rule of keeping his episodes two weeks apart but obviously that doesn't apply for when we have
|
||||
shows coming in from the reserved clue queue that's done based on our discretion as janitors but usually following the rule first in first out.
|
||||
And this had a comment from Arthur 72 so this is he provides links to artsy Clarke two novels that help cementous place in the science fiction world childhoods end and the fall of moon dust.
|
||||
Arthur 72 says great show may the force be with you not sure he read the right book there a hooker says hi a hooker great show as usual with nice explanations of the science involved no use of the force look
|
||||
but again no jokes like hey dartvither nice suit must to cost your alarm and the leg brooch smiley face
|
||||
Arthur 74. The Arthur 72 Kevin O'Brien replies thank you and glad you liked it I am working on more shows about science fiction and fantasy
|
||||
which I hope you will also enjoy and that is good news as well it will help fill out the queue then we had
|
||||
HBR 4481 which was the community news for September 20 25 and obviously we said nothing controversial in that show because nobody posted a comment
|
||||
I'm a little sad on the inside then the following day we had Jezra who has written a due to application due to four the double doose
|
||||
that don't is done but as we all know it isn't crazy he's just written a command line app to interface with it I saw on the interwebs
|
||||
and this is a to do application on the web that you can host yourself a source code links in the show notes
|
||||
the following day we had beer garden three which was porters and this is where a kevy and dave
|
||||
sampled two beers one was a Victorian porter by eight sale brewery and the other was a marmalade porter by
|
||||
world top brewery archer 72 says history of beers I'm not a beer drinker
|
||||
but this was an interesting history lesson in how the porters were made by archer 72
|
||||
I enjoyed listening to this myself I was in the middle of doing some home renovations for my daughters
|
||||
new house and I was catching up with this nice show lads troller coaster sent in a show about EU chat
|
||||
control when your dentist uses chat control logic premise being he's going to the dentist and he
|
||||
applies the same logic as chat control wood short a sort of play troller coaster says voting
|
||||
has been delayed stop press the decision on hashtag chat control has been removed from the agenda
|
||||
administers of homophares next week and this was 25th of the 10th zero nine it's safe to assume that
|
||||
the fine will be read this is a later so don't stop keeping an eye on the issue if you would like
|
||||
to share the open letter with a bunch of smart people than me share this open letter and references
|
||||
a link to csa dash scientist dash open letter dash org for sash september 20 25 numerals with the
|
||||
s uppercase link in the show notes just heard today that Denmark has withdrawn that proposal so
|
||||
that is now officially off the table however no harm to keep on our guard it's only a matter of
|
||||
time before that is pushed in again candy canator 07 says satire as a tool i really liked this little
|
||||
story both senses pretty funny and it highlights the absurdity of the whole thing i think putting
|
||||
all this in a different context that isn't beyond most people is a really good tool to point out
|
||||
just how stupid all of this is we all know not everybody isn't as tech literators
|
||||
and it infuriates me sometimes seeing what has been taken advantage of troller goes to replies
|
||||
to that what are you talking about i just went to my dentist and wanted to share a story because i
|
||||
was so happy about how to handle my teeth reached out in private and i'll happily share his
|
||||
contact information warning though he's not cheap and and that's obviously also a testimonial
|
||||
to how great he is operator says low yeah black moral mirror asterisk asterisk is real i only hope
|
||||
ag type is just that i don't even know what our children should be learning in school life skills
|
||||
but what if we have know how much change a g i or even a i will change troller coaster says
|
||||
in response oh wow i sure love a black mirror for home too that sounds cool and your kids for sure
|
||||
they should become dentist don't you think what is this a g i kind of whole you're talking about
|
||||
is this an alternative galaxy immigration movement that i've been hearing a lot about it seems
|
||||
is we'll blow away the all immigration somewhere in the future and of silliness let's move on to
|
||||
archer 72 dealing with g pg and ssh keys for git in this episode he gets a crash course on how to set up
|
||||
uh not in git itself but how to use it on git hub and git lab he includes full lists and ssh
|
||||
full list of the code and configurations in the show notes can you can add or say zero seven useful
|
||||
information i've seen a lot of people getting confused by git when they do software stuff but i
|
||||
think you did a good job explaining how the software works in an understandable way archer respond
|
||||
uh no say a key some response the content of archer 72 thanks for the episode on g pg ssh key
|
||||
configuration it could help many people to get a clean picture of each configuration putting them
|
||||
side by side as archer 72 did so thumbs up there for that episode archer well done the following day
|
||||
we had a code of my mind by lee lee touches on a few aspects of coding as an occupation and ponders
|
||||
neuro divergence don't we all and in part one he talks about uh capture the flag stills databases
|
||||
test frameworks generative i've coding in hardware and about neurodivergence in academia and
|
||||
accommodation remote working career paths etc so i personally got a lot from this episode a lot of
|
||||
food for thought in there and today says excellence perspectives thanks for sharing as i continue to
|
||||
fight with gooey development for our grino projects your podcast resonates the following day and
|
||||
twan says is ai autistic and his motivation is characteristic second car he has several five
|
||||
characteristics that would support this and it was an interesting episode and uh but i think the
|
||||
danger is me speaking personally the danger here would be that you would conflate ai to be intelligent
|
||||
when in fact it's not it's just a predictive statistic so if it's autistic it's learning model came
|
||||
from a body of work where the people producing that may have been autistic so food for thought though
|
||||
i like the show keep them coming no comments on that alas cheap yellow displays by tray part
|
||||
dear what's the problem and this one was um he has some cheap yellow displays and has done
|
||||
he he wants to build a more schooled tuner uh to learn more code so this is uh as a cheap
|
||||
Arduino like display that's got wi-fi and you can use it for controlling so there's more of those
|
||||
in this series unfortunately nobody left a comment on that one but we do have a lot of comments
|
||||
on the next one and this was hax poetic pilot episode and this was by kerbottica and there were four
|
||||
different poems four what a waste each of these could have been their own show and that indeed was
|
||||
my comment four ways great show i hope it extends to a series each of these poems deserved his own
|
||||
show i found myself re-listing and pausing to have time to come to play the meaning of each of them
|
||||
keep it coming i really did enjoy this there were if you haven't listened to any of the episodes
|
||||
this is one that you really would be denying yourself if you didn't go and have a listen to
|
||||
tray says talk provoking welcome thank you for sharing these talk provoking poems which i
|
||||
continue to ponder i look forward to your future submissions Claudio says a refreshing HPR
|
||||
episode thanks for this episode really enjoyed it for someone who is somewhat burned out by
|
||||
technology it was refreshing to hear your tech influence poetry looking forward to hear more
|
||||
Alexandra says just through my iPhone in the ocean
|
||||
thank you for sharing these poems very meaningful and meditative grace pilot looking forward
|
||||
to a great show Kevin O'Brien says i love the show i really enjoy the show i hope i hear more
|
||||
tray says when nostalgia when nostalgia meets the digital age this episode was a such a beautiful
|
||||
trip down memory lane your poetry captured that strange feeling of nostalgia in a tech-driven world
|
||||
perfectly both groundbreaking and talk provoking Brian and Ohio last comment but i do want to say
|
||||
something else Brian and Ohio says don't burn out i love this show the poem about getting the
|
||||
fiber of the vacation spot was well done i hope that kerbottica doesn't do too many at first and
|
||||
then run out of steam that being said looking forward to the next show and i think somebody commented
|
||||
about the show on mastodon basically saying this was the return to the ethos of HPR
|
||||
and i couldn't agree more there were some things in this that there was too and for all with
|
||||
kerbottica just about the posting of them and that and that everything got sorted out in the end so
|
||||
that was great thank you very much for working with us on that and look forward to hearing a lot
|
||||
more as you can see a lot of popularity so a big bulwus all around there well done civilization
|
||||
part four no civilization v part so civilization five part four by uh hookah and at this point i
|
||||
would like you to pause and in your mind hear the discussion that scottie and kevi would be doing
|
||||
at this point thank you very much the topics were of faith and religion the next day we had an
|
||||
episode co-hosted by tibo and myself um where we interviewed david levoi who is the author of
|
||||
peppering cart it was absolutely a thrill to have the opportunity to interview been a big fan of his
|
||||
art for years and i've also been thoroughly impressed with his outlook on creative commons free
|
||||
software a lot of the work that we're doing here in hgore mirrors what they're doing on that project
|
||||
and there was a lot of stuff that we discovered during the episode about things that david
|
||||
debit has been doing over the last few years so if you haven't had an opportunity to i would
|
||||
suggest you listen to that episode it's uh i was very privileged to be able to have that discussion
|
||||
brine and ahio says great show i enjoyed this show immensely and hemerich hemerich hemerin says
|
||||
inspiring good interview and inspiring listen to how he uses open source tools in particular
|
||||
crater in his daily work and how he releases under a creative commons license
|
||||
ron sent in an episode the following day how to just how to do a distribution upgrade of a one
|
||||
two lts on a digital ocean droplet and he ran into some issues with that and he has added the
|
||||
information that you need into the show notes no comments on that one i imagine until people find
|
||||
it and are extremely happy with having that knowledge the next episode was another one in the
|
||||
beer garden series episode four vice beer and i like the discussion of the history and history
|
||||
of beers and the beers that they are reviewing there's been some comments on this one for kisses
|
||||
herfervicin is best smiley face coming from the northeastern part of germany from the beginning
|
||||
that means the former gdr i believe i hated beers because we only had pilsner and largar styled
|
||||
and they all aren't in my taste in my way just disgusting and repulsively bitter but then after
|
||||
the reunification someone from the southern part of in germany introduced me to heffa visor
|
||||
and wow beer can taste good our liquor is good but when you sometimes get the chance you should
|
||||
try scoff of her halfen shorter baker or the dark variant of fran's it's crater and don't believe
|
||||
me they all come from the graveyard two of those are named aren't from the home of a toberfest
|
||||
pol jays says great episode thanks gents great show some comments fran's crater is definitely a
|
||||
herfervicie beer did you chill them they should be drunk from the fridge or in draft where they
|
||||
are served chilled great for summer evening in the beer garden in karten in my opinion all
|
||||
german vice beers of this type are heffa visors now pronounced at about four different ways but
|
||||
we will continue based on my experience in germany my wife is germany comes from south if you ask
|
||||
for a visor beer you will get a helle steff visor beer often you will get beer from a local brewery
|
||||
and not from the big brewers that beer doesn't make it to the UK sadly there are actually three types
|
||||
of heffa visor dunkel dark helle's light what you have both drunk and crystal which is a helle steff
|
||||
and vasen with the yeast and wheat proteins filtered out often drunk with a slice of lemon on top
|
||||
i agree with your comment about not fixing it i have had many great evenings tasting these as a
|
||||
beer session look forward to the next episode Claudio great episode i can relate to thoroughly
|
||||
enjoyed this episode because i'm familiar with funds is planner and erdinger beers we have stores
|
||||
here in mayami florida called total wine which carries a variety of alcoholic drinks as well as
|
||||
none alcoholic beverages used in cocktails total wine is my place to go for getting german beers like
|
||||
franzi canner and erdinger as well as varshtiner beers to me varshtiner seems to be the most
|
||||
mass produced beer and the first one i've ever tried of the german beers as it's the only one i've
|
||||
found in one of the supermarkets here usually the pilsner total wine will carry a variety pack of
|
||||
varshtiner that includes the pilsner the drunkel and the browers gold all of which are pretty good
|
||||
however i find the erdinger and the franz is crannier to taste much better and you both
|
||||
knelted on the head with the franzer crannier i've only had erdinger dunkel because i do like dark
|
||||
beers and i find it to be my favorite of the two very eager to try this erdinger you reviewed so
|
||||
i'll be paying total wine and visit soon by the way i also chuckled when you poured the erdinger
|
||||
and described it just from the sound i knew what you were getting chananam says three billion
|
||||
here oh sorry scotish bavarian ipw three years ago i tasted a fine bottle of broodog scotland
|
||||
and vibe and stafan bavaria indian pale varshtiner that was a real taste bomb
|
||||
with beer sweetness with hoppy bitterness perfect collaboration well there you go our
|
||||
beer garden seems to be quite popular following the day we had untwarned again with the
|
||||
futo keyboard and this was a little bit of apta splunking we're looking through windigos
|
||||
series on getting some applications and giving them a test run kick in the tires and this was
|
||||
changing the keyboard on your android form a good idea to do from time to time particularly useful
|
||||
if you are going multi lingual following the day we had task warrior and it was by can't
|
||||
cannoter and introduction to task warrior it to do tool i think in relation to
|
||||
jesra's do do tool and arch this is first episode hoping to hear more regular
|
||||
contributor to the comment section and archers of judo says first show good explanation hi thank
|
||||
you for a clear explanation of the use of task warrior and it will be interesting to hear about more
|
||||
tools you use every day strowfafel this was a show by lee where elsebeth and myself went around
|
||||
uthracked basically an old chat session and there is a commenton on this but it's not in this
|
||||
episode as yet for hashtag reasons this was a fantastic opportunity to meet lee and
|
||||
elsebeth and have a chat walk around town basically spend the afternoon chilling talking tech
|
||||
and looking around the country so lee produced his recording and he should be uploaded i have
|
||||
created a very special type of monsters we've just wanted to record everything is is actually
|
||||
fantastic so if you enjoyed the show yeah if you're ever in the Netherlands and you're a hp
|
||||
contributor host give me a shout out so we'll see if we can meet up for a chat and if you're
|
||||
amazing over the other hp other folks whack out the recorder and have a chat and youtube can have
|
||||
a show following day we had fixin fixing three two is e4th and if we're talking about fourth we
|
||||
must be talking about brine you know hyal who is a massive fourth fan and has given us a quick look
|
||||
down through the review of the book of Arduino control fourth by dr sheng ten hansong
|
||||
thing lots of links into the show notes very good episode if you're into that sort of thing
|
||||
and why wouldn't you be the next episode was by al a podcast mini series where he's going to use
|
||||
linux as his daily driver looking forward to it and dual boot diaries is linked in the show notes
|
||||
don't be anybody switch into linux don't be disappointed if you switch over and back and switch
|
||||
over and back that happens eventually you will be guided to a comfortable environment where you're
|
||||
very very comfortable working and reluctant reluctant to leave or if you do you're drawn back
|
||||
the following day we had an episode where unfortunately i had to reject and first
|
||||
grounds on the grounds that it was published elsewhere but as was released under creator comms license
|
||||
i was able to post this as a sample episode as i believed that we would be interested in hearing
|
||||
about the libre form project as supported by the free software foundation and this was a nice
|
||||
episode to basically round out that they are trying to liberate the non free binary blobs from
|
||||
mobile phones and the idea is that as they tackle say the bluetooth stack or the usb stack then
|
||||
that can be contributed back to other people who have different oss so galaxy os or whatever
|
||||
so that over time the support for these devices will improve and finally today's episode
|
||||
at the time of recording Halloween we have Arthur C. Clark 2001 and the sequels the best known
|
||||
of the science fiction uh Arthur C. Clark series by uh Huka and Archer 72 says deep dive hi
|
||||
uh Huka what a great deep dive into the book series i had no idea about anything following
|
||||
2001 thanks so that there i believe is all the episodes for this month and there have been
|
||||
some other commons and preview shows so the first one that we'll take a look at is
|
||||
uh an episode that was released on the 30th of last month by some guy on the internet
|
||||
where he said snaps are better than flat packs actually it wasn't it was it was a year ago exactly
|
||||
and BA says not a fan of any of them hi Scotty personally i'm not a fan of any of these
|
||||
universal formats back in the day slackware had tgz devian had devs and red hat europeans then people
|
||||
said that's too complicated a game designers are never going to put up with that so each of them
|
||||
started with their own universal package format so here we are years later again three package
|
||||
formats Ubuntu has snaps red hat has flat pack and whoever did app image but now we still have
|
||||
three universal format package formats so how are things better off you remember the old scene
|
||||
saying the own the good thing about standard is there are so many of them to choose from the next one
|
||||
was a comment um on bennie show ipv6 for Luddites and it was from bennie himself a link to the
|
||||
previously mentioned talk on bstkan 2025 hi all here are some of the requested links for the
|
||||
recording of the talk from bstkan about setting up open bst router on a ipv6 only metric here's
|
||||
the link to the correct time in the video sorry couldn't find any other source than youtube and
|
||||
the link is there in the show notes on these episodes hpr is 20 years old today uh steve barons
|
||||
says lipetit facility which i guess is happy birthday in french congratulations to the community and
|
||||
the team it was a great to audibly glimpse some of the historical netherness on ursha minors show
|
||||
hacker poetry 0-1 candy canata says love it the first episode of hacker poetry 0-1 in which three
|
||||
poems by anonymous hacker are read by ursha minor that was the show candy canata says love it i
|
||||
really liked the idea the whole thing of having top revolving poems is pretty cool despite the
|
||||
length being kind of short also is the league of better villains a real thing i don't know it should
|
||||
be i thought that for anything myself fred black had to show the true audiophile of walking
|
||||
tune towards a friend by fred black and fred brine in ohio asked the question why are freds bad
|
||||
because in the episode um fred mentioned the fact that freds were evil why are freds bad i don't play
|
||||
instruments what's wrong with freds forky said freds brine in ohio can you please elaborate
|
||||
and i will elaborate forky in the episode you said freds are horrible can you explain what's
|
||||
wrong with freds so across communications there this is like a playing chess by post if you put in
|
||||
the comment to an episode then i read it out and then the next month i'll read the other person's
|
||||
response trollocosteurs episode does a i cause brain damage some of which we as Stella says
|
||||
that it was a wonderful episode thank you trollocosteur for an insightful and genuinely
|
||||
funny yet bittersweet episode whether or not the audience loves or hates the eye you cover the
|
||||
MIT research paper objectively and in a way that made laugh out loud more than once thanks again
|
||||
and this was just by the way a quick glance summary of an MIT experiment that trollocosteur did
|
||||
lots of references very well documented should go read the show notes and trollocosteur
|
||||
reply saying hey is in a stalo i'm afraid i won't be able to submit any more podcasts to hpr
|
||||
if i want a career to end at a high point so much flattery is dangerous glad you enjoy the
|
||||
episode oh don't worry my inner troll is too strong before you know it i'll be spitting sitting
|
||||
on my next soap top episode haven't decided who i'll insult in that one two there were four
|
||||
comments to jesra's do do three a juice plus one and the first was by candy canater and it was
|
||||
cool app bot the app seems incredibly cool but i'm still likely going to stick with task warrior
|
||||
best to look with the development though and thank you very much for sending in the episode on task
|
||||
warrior exactly what you should be doing well done however can you also send in an introduction
|
||||
to tech how you get in so we can start bugging you for other shows just to buy the bike
|
||||
archer 72 says cool app hey candy canator what is task warrior i know enough to google us but
|
||||
i would be great to hear your show about this maybe another show comparing and contrasting the two
|
||||
see what archer 72 did there he is a pro he is a pro and candy canator replies it's a really
|
||||
nice simple command line app i've been using for a while are you able to make a one-off show like
|
||||
that i don't think i'd have the material to make a lot of shows well you proved you were and if
|
||||
you do an introductory episode telling us how you get into tech then we'll be able to come up with
|
||||
a lot more ideas of shows that you could contribute to the community and the last comment on this
|
||||
episode was from Ahmad i used to do man does task warrior support caldav i used to do man
|
||||
is this a caldav based to do manager to do a read from individual ics files from a configure
|
||||
directory this matches the v dur specification and he links to to do man read the docs.io and
|
||||
as part of the project pi m utils.org v dur sinker can be used to sink your caldav server such as
|
||||
next cloud well well Ahmad could you record us as if you'd show there about that that would be
|
||||
absolutely awesome and while you're at it could you record your introductory show halai everybody
|
||||
knows the standard format now hello my name is i got into tech blah i went to school blah i was
|
||||
inspired by blah i used this blah and i'm now doing this blah and that's how i guess recording
|
||||
and uploading a show to hpur very very simple and everybody who listens to hpur should be doing
|
||||
this it's only polite so then we had all the comments from this month's show which we've done
|
||||
and then we move on to the hpur mailing list discussions and i think we covered changes to the hpur
|
||||
scheduling guidelines there were two other comments that came in afterwards one was saying remove line
|
||||
three and ron says yes i'm fine with removing the third the third guideline the third guideline
|
||||
i'm fine with this change so change from line six although i do lean towards expressing keep in
|
||||
the two weeks wording i propose all those must of lead nine slots approximately two weeks between
|
||||
the show i'm in agreement with the process change as well so that's good uh gym says i
|
||||
think this is the best wording yet i would like to see this as a change so resume previous
|
||||
suggestions which i'm ignoring because your previous suggestion was actually quite good
|
||||
the point is we don't want to mention slots thinking about just because i don't want to be wasting
|
||||
time explaining to new hosts about slots every two weeks everybody knows what that means it's fine
|
||||
if we want to get pedantic about if we can explain this via the code the code will work on the basis of
|
||||
not having nine slots before you show and not having nine slots after you show and the reason we
|
||||
would do that is to make sure that you know if you're posted to show two months down the line that
|
||||
you don't but that you're not conflicting there but we will get around all of that when we have
|
||||
the time to do the actual coding for that then the first comment was what happened to the hpur page
|
||||
i have a dark team everywhere and use my dark reader in the browser but just hpur are some working
|
||||
with it now any longer and i'm feel blinded by visiting the web page i think i have to change
|
||||
w3m or links somehow for this change gratings forky hot is he on about the response from
|
||||
operation was it looks fine on my windows 11 and i responded going with a link to our
|
||||
get t page which says user desires dark team theme from the website as issue number 275 which
|
||||
had been open for a considerable amount of time robert says hi i'm a operator host id 36 the only
|
||||
person still submitting show is ken host id 32 and we all know ken doesn't count so i say i'm the
|
||||
oldest contributing member of hpur long live bin rev whoa which is correct long live bin rev
|
||||
i would like to get in touch with some of those bin rev folks for an interview about
|
||||
back in the day particularly for our upcoming five thousandth episode which is around the corner
|
||||
now five thousand episode coming up would be nice to to to some of the bin rev people if you have
|
||||
contacts please ask them to get in touch thank you Claudio Miranda says holy smokes i haven't
|
||||
checked out the hpur website for recently it looks awesome kudos to all involved in updating it
|
||||
kevin a brine says wow that's a big change but it looks great regards kevin a brine yirun says
|
||||
wow the new website is a major change but it looks fantastic then the rito says
|
||||
hi diligent guys brilliant thank you very much for all the efforts you put into the
|
||||
refreshing the win website it is beautiful and i like the theme release a date of the first of
|
||||
April would have been fun and what all of this is about is that we have we been busy concept design
|
||||
and guiding light i'm reading this from the hpur generator new site contribution is empty file
|
||||
apparently that's me this is ron being sarcastic or for the big one basically i put up a website
|
||||
with a with a whiteboard marking and copied and pasted in some text so lee and ron have done
|
||||
the majority of the work i think ron took the lead and has been doing fantastic work keeps
|
||||
taking out changes they get better and better just as i was doing this just before this episode
|
||||
he did an update to the um to the icon theme um on the hpur website uh which looks
|
||||
absolutely fantastic they back forward and back buttons um have changed
|
||||
constructive feedback and looking forward looks was done by archer 72 mark rice uh
|
||||
dav morris and kut so thanks very much to everybody it looks fantastic it was a long time in the making
|
||||
the um the new website uh basically it has we get a lot of feedback over the years about how we
|
||||
could improve it the design is short short and sweet links at the top we've maintained a lot of
|
||||
our restraints the h points still to uh points to our host page the p still points to the commons
|
||||
the r stills points to the syndication um it has just got it's cleaner theme it's more adaptable
|
||||
it still works in links still works in e readers uh everything just comes off the main page there's
|
||||
no sub menus or anything so you go from the main page to another page and back and from there
|
||||
back that's the idea they there's a brief introduction to what hpur is then we have two swim names one
|
||||
is about the podcast and one is about the project and you've got an icons about recording about
|
||||
our schedule subscription and listen so the entire workflow of the podcast and then underneath
|
||||
you've got stuff about the project about uh uh uh so project you've got host information
|
||||
series information the about page and the search options then underneath that you got two blocks
|
||||
of the latest shows and the latest commons and then the latest shows themselves the pages have been
|
||||
spruced up um it's a lot cleaner looking there's series uh fan the series and episode pages have
|
||||
been spruced up they look fantastic and with this change a lot of the other requests that we've had
|
||||
will be implemented over time so what the idea is to shrink the amount of pages that we have
|
||||
down to a manageable chunk which they've done now uh we're going to take a lot of their stuff
|
||||
about the about page will be just more about the project so the physical stuff about how to record a
|
||||
show and practical information that's all going to be moving over to the hpur get t account
|
||||
where you can check out everything related to hpur everything meaning the whole shabang
|
||||
uh that and the orsync of the episodes as well speaking of which uh currently working on
|
||||
uh the next um cdn node community content delivery network node which i hope to be installing next month
|
||||
so that's on the way if you have a small pc with a five four five terabyte hard drive in it
|
||||
that will be absolutely excellent we can sync all the media files over there and then that with
|
||||
the orsyncing of the repuls that we have you have everything that you need to do in order to bring
|
||||
the hpur website back up and we would love it if you did that so huge thanks to roon and all the guys
|
||||
but especially roon thanks for putting up with mike planning and uh his e-fitter at one point um it has
|
||||
been uh a long time coming and it just looks fantastic it's i've found myself using roon's
|
||||
copy of the website in order to pulse shows and find stuff because i couldn't find it anymore on
|
||||
our own website it served us well but things have moved on so that pretty much uh i think covers it
|
||||
for this month's show um there are still some issues that i need to deal with uh i need to copy
|
||||
the static files over uh to the new site uh and that will be and set up a process for that
|
||||
happening automatically uh the generation of the site will be done uh whenever
|
||||
have a cron job now that's running that's monitoring changes to the database on the hpur website
|
||||
and when that happens it generates a new copy of the database and then all our tooling uh based
|
||||
on that will um be fired off based on our ss feed that's generated from that so we'll have
|
||||
an rss feed that are um the the the application that does the uh translation uh transcording of
|
||||
the audio or of the uh transcribing of the audio to text speech to text uh that will be triggered
|
||||
by that the publication of the new site will be triggered triggered by that the distribution of
|
||||
the audio will be triggered by that by that the um distribution of uh regeneration of the website
|
||||
when common supposed to will be driven by that so all that all that good stuff's happening
|
||||
a currently have one two three four different little hard different uh computers around here
|
||||
getting ready to be shipped off to various different places to provide notes for our network
|
||||
so if you too would like to help hpur out you can always do that another way of helping hpur
|
||||
out of courses the bread and butter of what we do let's not forget it is recording shows if you
|
||||
have the option where you're ever in a situation where you've done something cool no matter how small
|
||||
it is it's something cool and nobody in the house gets it we will so record your episode
|
||||
post the show and we will go yeah bro you know well done
|
||||
so that's it if you've been listening to hpur for a long time uh introduce yourself i know
|
||||
I've said a few times on this but I'm kind of waffling and anything else really don't know leave
|
||||
a comment on this episode remember to like share and subscribe and check out our Patreon page
|
||||
well we don't have a Patreon page but you can throw a few shackles to um to Josh who provides the
|
||||
hosting for our little enterprise here at an honest toast.com and you can also
|
||||
throw a few shackles over towards archive.org if you can always good to make sure these people
|
||||
are funded and with that tune in tomorrow for another what will note out be an exciting episode
|
||||
of hacker public radio oh oh oh oh oh oh spooky hello you guys okay fine
|
||||
you have been listening to hacker public radio at hacker public radio does work
|
||||
today's show was contributed by a hpur listening like yourself if you ever thought of
|
||||
podcast and click on our contribute link to find out how easy it really is hosting for hpur has been
|
||||
kindly provided by an honest host.com the internet archive and our sing.net on the satellite status
|
||||
today's show is released under creative comments attribution 4.0 international license
|
||||
118
hpr_transcripts/hpr4502.txt
Normal file
118
hpr_transcripts/hpr4502.txt
Normal file
@@ -0,0 +1,118 @@
|
||||
Episode: 4502
|
||||
Title: HPR4502: Cheap Yellow Display Project Part 3: Reverse beacon network
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4502/hpr4502.mp3
|
||||
Transcribed: 2025-11-22 15:07:29
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4,502 for Tuesday 4 November 2025.
|
||||
Today's show is entitled, GPLO Display Project Part 3, Reverse Beacon Network.
|
||||
It is hosted by Trey and is about 8 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, learn about the Reverse Beacon Network and how it might be used with
|
||||
the GPLO Display.
|
||||
Hello again, this is Trey.
|
||||
Welcome to Part 3 in my GPLO Display Project series.
|
||||
You can find Part 1 in Episode 4472 and Part 2 in Episode 4488.
|
||||
We previously left our handy hero searching for a solution to an amateur radio signal propagation
|
||||
dilemma while he is trying to become proficient with Morse code.
|
||||
The GPLO Display technology is simmering in the back of his brain and the answer in search
|
||||
of a problem.
|
||||
I love trying to create the feel of a vintage radio or television series with the intro
|
||||
and outro of these episodes.
|
||||
But I am by no means the hero.
|
||||
I am simply Trey, a grumpy old man and a tinkerer.
|
||||
Instead the real hero in this episode is Keith, V-E-S-V-Q, the shaky key on YouTube.
|
||||
There's a link in the show notes.
|
||||
So let's see, where were we?
|
||||
Oh yes, I have been trying to learn Morse code.
|
||||
That was me, tapping out CQ, CQ, and Morse code using the practice set I keep on my desk.
|
||||
This consists of a set of code paddles connected to an Arduino Nano, which I built several
|
||||
years ago based on what I learned watching Code Practice Oscillator, aka the three Arduino's.
|
||||
On J.M. Harvey1947's YouTube channel.
|
||||
And based on the code from his GitHub repository, and I'll post a link to that in the show notes.
|
||||
I did need to make modifications both to support the Arduino Nano on which I chose to run
|
||||
it and for my own sanity as the way that I learned to write code for Arduino is very different.
|
||||
I focus on readability and flexibility.
|
||||
You can see these changes on my own GitHub repository, and I'll post a link to that also
|
||||
in the show notes.
|
||||
Anyway, I have been studying, and I have been watching videos.
|
||||
I have been practicing Morse code.
|
||||
I might actually be learning some of this stuff.
|
||||
If you are interested in more details about the resources I'm using, leave a comment for
|
||||
this episode or drop me an email using the address in my profile, and I may record
|
||||
an episode about it.
|
||||
The result is that I have been learning, but also the Google and YouTube algorithms
|
||||
have been learning about me.
|
||||
They have started to feed me more videos about Morse code.
|
||||
It is both helpful and super creepy at the same time.
|
||||
So one day, when I opened YouTube, a title in my feed caught my eye.
|
||||
News, CWop, use the reverse beacon network to improve your code.
|
||||
A link is in the show notes.
|
||||
I said to myself, self, this could be interesting.
|
||||
I watched Keith's video and learned about the reverse beacon network.
|
||||
Again, there's a link in the show notes.
|
||||
According to their website, the reverse beacon network is a revolutionary new idea.
|
||||
Instead of beacons actively transmitting signals, the reverse beacon network is a network
|
||||
of stations listening to the bands and reporting what stations they hear, when, and how
|
||||
well.
|
||||
Let's pause for a second and discuss amateur radio beacons.
|
||||
These are stations which repeatedly broadcast their identity on dedicated frequencies.
|
||||
Other operators around the world who hear a beacon can evaluate the signal propagation
|
||||
between their stations and the beacon location.
|
||||
The reverse beacon network is just the opposite.
|
||||
Here the station operator can transmit a test signal with their own call sign using
|
||||
CW or other digital modes.
|
||||
Then they can look at the reverse beacon network website to see which reverse beacon network
|
||||
listening stations received their transmission and even get a signal report.
|
||||
On the main page of the reverse beacon network, one can observe a world map with paths showing
|
||||
where signals are received, where they originated based on the registered grid square of the
|
||||
originating call sign.
|
||||
The table displayed below the map reveals the sending and receiving call signs, their distance
|
||||
apart in miles or kilometers, the frequency, the mode, the type of transmission, the signal
|
||||
to noise ratio, the speed of the transmission, and the date and time using UTC.
|
||||
I'm posting a picture of that page in the show notes.
|
||||
This information is collected by a network of volunteer reverse beacon receiving stations
|
||||
all over the world, which monitor various radio bands, decode transmissions of CW,
|
||||
Morse code, RTTY, that's radio teletype, and PSK31 or PSK63.
|
||||
These are digital modes.
|
||||
These are digital modes of operation that use phase shift keying.
|
||||
These receiving stations report what they receive as well as the signal strength back
|
||||
into the reverse beacon network to be recorded and published over the internet.
|
||||
Dave Kassler discussed the reverse beacon network back in 2016 on his YouTube video, the
|
||||
ham radio reverse beacon network, an Ask Dave episode number 32, a link is in the show
|
||||
notes.
|
||||
This gives very good detail of how the network works.
|
||||
This sounds like exactly what I've been looking for.
|
||||
All I need to do is come up with a way to reliably, accurately, and consistently transmit
|
||||
CQ, CQ, CQ, test, DE, followed by my call sign, three times at a consistent 20 words
|
||||
per minute.
|
||||
If I can do this a few times, I can then check the reverse beacon network to see where
|
||||
I was received.
|
||||
By including the test string, recipients know that I do not wish to start a conversation.
|
||||
I can get accurate reporting of where my signal is going and how strong it is.
|
||||
But remember, my Morris code skills are still inadequate.
|
||||
And my radios do not have keyer memories like those which can be found in higher end transceivers
|
||||
like the ICOM 7300.
|
||||
to be programmed to be sent at the touch of a button.
|
||||
But there is a fairly inexpensive solution to this problem, one which has been nagging
|
||||
at the back of my mind for weeks.
|
||||
Maybe, just maybe, I could use the cheap yellow display to effectively add keyer memory
|
||||
to any of my radios by simply plugging it into the code key input port.
|
||||
These stored messages could be transmitted by simply touching their specific ICOM on
|
||||
the touch screen.
|
||||
Now we have a plan.
|
||||
But how will we do it?
|
||||
What else will we need to learn?
|
||||
Will it even work?
|
||||
Well, tune in to the next episode in the series to find out the answers to some of these
|
||||
questions and more.
|
||||
Bye now.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org.
|
||||
Today's show was contributed by a HPR listener like yourself.
|
||||
If you ever thought of recording a podcast, then click on our contribute link to find
|
||||
out how easy it really is.
|
||||
Hosting for HPR has been kindly provided by an onsthost.com, the internet archive and
|
||||
our syncs.net.
|
||||
On this advice status, today's show is released on our Creative Commons Attribution 4.0 International
|
||||
License.
|
||||
162
hpr_transcripts/hpr4503.txt
Normal file
162
hpr_transcripts/hpr4503.txt
Normal file
@@ -0,0 +1,162 @@
|
||||
Episode: 4503
|
||||
Title: HPR4503: One time passwords using oathtool
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4503/hpr4503.mp3
|
||||
Transcribed: 2025-11-22 15:08:24
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio episode 4,503, go Wednesday the 5th of November 2025.
|
||||
Today's show is entitled One Time Passwords Using Othtool.
|
||||
It is the first show by Newhost Whiskey Jack and is about 13 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, this podcast is about using One Time Passwords by means of Othtool.
|
||||
One Time Passwords are replacing simple password and username in some applications.
|
||||
This is for security to prevent usernames and passwords, which are exposed by some
|
||||
means from being reused by an attacker.
|
||||
A One Time Password can be used only once, so even if an attacker finds it, he cannot reuse
|
||||
it.
|
||||
Most sites using One Time Passwords ask you to either download an app or give them your
|
||||
phone number so they can send an SMS.
|
||||
This is not necessary however in many cases.
|
||||
You can use third party applications instead.
|
||||
This episode discusses one such application known as OAuthTool.
|
||||
What are One Time Passwords?
|
||||
One Time Passwords are codes which can be used only once.
|
||||
These may be a code sent from one party to the next to be returned in the reply message.
|
||||
This code is typically sent by SMS.
|
||||
Alternatively, they may be based on having a shared secret which is shared once by secure
|
||||
means.
|
||||
After that, the shared secret is not transmitted between the two parties again, but instead
|
||||
used in an algorithm to create a sequence of codes.
|
||||
If an attacker obtains the One Time Password, he cannot use it except in a very narrow window
|
||||
of opportunity, making it very difficult to exploit.
|
||||
This podcast episode focuses on the method using a shared secret via the OATH pronounced
|
||||
OAuth or open application protocol or algorithm.
|
||||
How can you use OAuth?
|
||||
Websites which use OAuth typically ask you to download and install a smartphone app for
|
||||
their site.
|
||||
This can be both troublesome and intrusive.
|
||||
It also doesn't help if you are working from a desktop computer.
|
||||
However, there are all alternatives.
|
||||
One of these is to use OAuthTool, which is spelled OA-T-H-T-O-O-L, a third party free
|
||||
software OAuth application available under the gplv3+, which means gplv3 or later license.
|
||||
It was written by Simon Yosefson.
|
||||
It has been around since 2009 and can be found in many Linux repos.
|
||||
OAuth options and OAuthTool.
|
||||
The OAuth standard has several options.
|
||||
You need to know which OAuth options to site you wish to log into uses in order to use
|
||||
OAuth.
|
||||
Sometimes these are not documented by the website, so you may need to use trial and error to find
|
||||
which options they require.
|
||||
I will cover the two most common option, TOTP versus HOTP and hex versus base 32 and
|
||||
coding.
|
||||
OAuth options TOTP versus HOTP.
|
||||
There are two different types of OAuth one-time passwords, HOTP and TOTP.
|
||||
HOTP uses a counter.
|
||||
The client and the server both maintain a counter, which is used together with a shared
|
||||
secret to generate the next one-time password.
|
||||
During each log in attempt, both sides will increment their counter.
|
||||
The counters can get out of sync, so I mean rescinking them must be provided.
|
||||
I won't go into more detail on HOTP as I haven't come across anyone using it.
|
||||
TOTP uses a current time instead of a counter.
|
||||
The time is fed into the OAuth algorithm along with the shared secret to generate a new
|
||||
password on both ends of the connection.
|
||||
Both the client and the server must have the correct time, but the algorithm allows for
|
||||
a time window, so time synchronization does not have to be exact.
|
||||
This also allows for the time between generating the new one-time password and entering it into
|
||||
the log in page or window.
|
||||
All the instances of OAuth that I am familiar with use TOTP.
|
||||
TOTP mode TOTP has different modes.
|
||||
These modes are hash encoding algorithms such as SHA1, SHA256 or SHA512.
|
||||
The correct mode must be selected in order to log in using OAuth with TOTP.
|
||||
Encoding hex versus base 32.
|
||||
Both ends of the connection must be initialized with a shared secret or key which is required
|
||||
as part of the OAuth algorithm.
|
||||
How this is created and initially shared is not part of the OAuth standard.
|
||||
Typically you would go to the website in question, log into an administration page using some
|
||||
more conventional means such as username and password, and ask it to generate a key which
|
||||
you then copy and save in a secure location.
|
||||
I won't cover how this is done as the details will depend upon which website you are interacting
|
||||
with and this site may change from time to time.
|
||||
However, this key could be encoded in one of two forms, either hexadecimal or base 32.
|
||||
Websites often do not document which encoding method they are using.
|
||||
If you cannot determine the encoding of the key simply by looking at it, you may need
|
||||
to use trial and error during your first OAuth login attempts to see which type of key
|
||||
has been used.
|
||||
GitHub and PiPI options.
|
||||
GitHub and PiPI are two of the most prominent websites using OAuth.
|
||||
Both use the same options, TOTP with SHA1 mode and base 32 encoding.
|
||||
Using OAuth tool.
|
||||
OAuth tool is a simple command line application which generates one time passwords for use
|
||||
with OAuth.
|
||||
It can be run in a terminal.
|
||||
However, it can also be turned into a simple GUI application using Xenity.
|
||||
I will discuss this in more detail later.
|
||||
By default, OAuth tool uses HOTP and hex encoding.
|
||||
To use TOTP and base 32 encoding, you must specify those on the command line.
|
||||
To specify base 32 encoding for use with for example GitHub, pass the dash B or dash
|
||||
bash base 32, that is dash dash BASC32 argument on the command line.
|
||||
To specify TOTP, pass the dash dash TOTP argument on the command line.
|
||||
By default OAuth tool uses SHA1 with TOTP so you don't need to specify that if you
|
||||
require SHA1.
|
||||
If you need a different TOTP mode, you specify that as part of the TOTP argument separated
|
||||
by an equal sign character.
|
||||
For example, dash dash TOTP equal SHA256.
|
||||
OAuth tool example.
|
||||
Here is a simple example of using OAuth tool to create a one time password to use with
|
||||
GitHub or PiPI.
|
||||
Open a terminal and type the following.
|
||||
OAuth is OATHTOL space dash B, space dash dash TOTP space and then just enter some arbitrary
|
||||
secret code.
|
||||
It doesn't have to be a valid one because we're just trying this out.
|
||||
Then press the enter key.
|
||||
The one time password will be printed out in the terminal.
|
||||
You can try this out without using a valid key so long it is a valid base 32 string.
|
||||
When used with a valid key, you then enter that one time password into GitHub, PiPI or
|
||||
other website where it asks for the one time password.
|
||||
Zenity example.
|
||||
I did mention previously that I would tell you how to turn this into a GUI application
|
||||
using Zenity.
|
||||
OAuth tool is a command line application but if you are using Linux, it is simple to
|
||||
convert it into a GUI application using Zenity.
|
||||
Zenity is a simple to use package that creates GUI windows on the command line or in a shell
|
||||
script.
|
||||
I won't cover in detail how to use Zenity in general.
|
||||
I will just describe a simple application of how to use it in this instance.
|
||||
I also won't go into security aspects of how to keep your key secret.
|
||||
It is too broad of a topic to cover here.
|
||||
There are two steps to the process.
|
||||
First, create the one time password from the key by using OAuth tool and save it in
|
||||
a variable.
|
||||
Next, call a Zenity info window with the one time password as part of the provided text.
|
||||
You can now copy and paste the one time password from the window into your web browser.
|
||||
To close the window, click on the OK button.
|
||||
Here is the example.
|
||||
We will assume that you are going to use a variable named HPR code.
|
||||
So, here is the first step.
|
||||
HPR code equals dollar sign, left bracket, OAuth tool, dash B, dash dash, TOTP, then whatever
|
||||
some arbitrary key is, and then write bracket.
|
||||
That will run OAuth tool, create a one time password code, and store it in the variable
|
||||
named HPR code.
|
||||
Now to run Zenity, you have Zenity, Z, E, N, I, T, Y, space, dash dash, info as INFO,
|
||||
space, dash dash, width, W, I, D, T, H equals 150, space, dash dash, title as T, I, T,
|
||||
L, E equals double quote, HPR space, 2, F, A, quote, space, dash dash, T, E, X, T equals
|
||||
double quote, then left angle bracket, B, I, G, right angle bracket, 2, F, A, space,
|
||||
C, O, D, E, space, I, S, colon, left angle bracket, forward slash, B, I, G, right angle
|
||||
bracket, slash N, slash N, space, dollar sign, HPR code, space, slash N, double quote.
|
||||
What that does is it runs Zenity, it opens a info window, it sets the window width to 150,
|
||||
it sets the title of the window to HPR 2, F, A, you could change that to HPR obviously
|
||||
to whatever website is applicable, and then it sets the text to 2, F, A code is colon,
|
||||
whatever, whatever the code came out to in HPR code, and then the, it sets the 2, F, A,
|
||||
code to large characters. If you're using gnome, you can make the script launchable from
|
||||
the desktop by creating a dot desktop file in the desktop directory.
|
||||
Conclusion. One time passwords are seeing increasing use in a number of applications.
|
||||
Many times the system being used is OAuth, although that isn't necessarily obvious without a bit of digging.
|
||||
Many sites ask you to download their phone app or give them your phone number so they can send you SMS messages.
|
||||
The OAuth tool command line application, however, can be used on a desktop PC without installing any phone apps or giving anyone your phone number.
|
||||
Thank you very much.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org.
|
||||
Today's show was contributed by a HPR listener like yourself.
|
||||
If you ever thought of recording podcasts, you click on our contribute link to find out how easy it really is.
|
||||
Hosting for HPR has been kindly provided by an honesthost.com, the internet archive and our sings.net.
|
||||
On this address status, today's show is released under Creative Commons Attribution 4.0 International License.
|
||||
194
hpr_transcripts/hpr4504.txt
Normal file
194
hpr_transcripts/hpr4504.txt
Normal file
@@ -0,0 +1,194 @@
|
||||
Episode: 4504
|
||||
Title: HPR4504: YouTube Subscriptions 2025 #7
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4504/hpr4504.mp3
|
||||
Transcribed: 2025-11-22 15:09:28
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4504 for Thursday the 6th of November 2025.
|
||||
Today's show is entitled, YouTube Subscriptions 2025 Hash 7.
|
||||
It is part of the series YouTube Subscriptions.
|
||||
It is hosted by Ahukah and is about 17 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, part 7 of my list of Subscribed Chels.
|
||||
You are listening to a show from the Reserve Q.
|
||||
We are airing it now because we had free slots that were not filled.
|
||||
This is a community project that needs listeners to contribute shows in order to survive.
|
||||
Please consider recording a show for Hacker Public Radio.
|
||||
Hello, this is Ahukah, welcome to Hacker Public Radio in another exciting episode.
|
||||
This one is coming to you out of the Reserve Q.
|
||||
What that means is that there have not been enough shows submitted.
|
||||
This is a community project.
|
||||
Hacker Public Radio relies on the community to provide the shows for the community.
|
||||
At some point, if shows don't come in, we are just going to have to shut this project down.
|
||||
I am assuming if you are listening to this, you don't want that to happen.
|
||||
The best way to make sure it doesn't happen is to record a show.
|
||||
That is what I am doing.
|
||||
I am talking about right now some of the channels in YouTube that I subscribe to and why I subscribe to them.
|
||||
You might hear something that you say, oh, that is interesting.
|
||||
I like to check that out.
|
||||
Please be advised that I always put into the show notes the URL so that you can find it easily.
|
||||
You can also find it by just doing a search in YouTube with the name of the channel
|
||||
and either way should work out just fine.
|
||||
Without further ado, I am going to talk about Isaac Arthur's channel, Science and Futurism with Isaac Arthur or just Isaac Arthur.
|
||||
Interesting fellow, he is a physicist and other things.
|
||||
I think for two years now I have been president of the National Space Society and this channel is him doing videos about topics in the future.
|
||||
It does some very interesting and imaginative kinds of things.
|
||||
He will talk about megastructures that might be built in space.
|
||||
What would a colonization look like without faster than life travel?
|
||||
Are there aliens out there we should be worried about?
|
||||
These are longer videos. I would say averaging 30 to 35 minutes a video and he does two of them a week.
|
||||
But it is usually very interesting.
|
||||
This is one of the channels that I subscribe to.
|
||||
Then there is Jamie Sutton.
|
||||
Jamie Sutton is someone who also talks about cruising and has a number of videos.
|
||||
They are mostly older at this point. He may have stopped doing it.
|
||||
But if you wanted to learn more about that, he had a series called The Cruise that went through several seasons.
|
||||
There is a lot of material there if that is something that interests you.
|
||||
The next channel is by a fellow named Jeff Peevar.
|
||||
I first heard about Jeff Peevar because he was in a group with David Crosby.
|
||||
The story is David Crosby found a son that I know if he didn't know he had or had lost touch with or whatever his son had become a musician.
|
||||
The son's last name at this point was Raymond.
|
||||
David Crosby did sperm donations at one point.
|
||||
That may have had something to do with all of this.
|
||||
Anyway, the group was Crosby, Peevar, and Raymond.
|
||||
I like David Crosby so that was not a problem.
|
||||
I realized that Jeff Peevar is pretty interesting.
|
||||
On his channel, he will do from time to time, he'll do a little bit of a concert and put that out on his channel.
|
||||
He's a really good guitar player.
|
||||
I find that worthwhile to keep that on my list.
|
||||
Then I'm going to go to Jenny Breeden.
|
||||
Jenny Breeden is a cartoonist.
|
||||
She has a daily cartoon you can find online. It's called The Devil's Panties.
|
||||
Kind of a humorous and she talks about her life, basically.
|
||||
As a cartoonist, she frequently goes to conventions to try and sell some of her wares.
|
||||
So she'll talk about what that's like.
|
||||
She's got young children and she'll talk about being a mom.
|
||||
Stuff like that or what's her relations with her husband and what family life is like.
|
||||
But she's got a very nice sense of humor that I appreciate.
|
||||
And occasionally we'll put out a video.
|
||||
So I'm subscribed to that channel.
|
||||
Next is Joe Brennan.
|
||||
Joe is another one of those people who does reviews and discussions of Dr. Who.
|
||||
That's something that I'm very interested in and I enjoy his take on things.
|
||||
So that is the Joe Brennan channel.
|
||||
Next is a channel called Joe Scott.
|
||||
Joe is a musician. He and his wife are both musicians.
|
||||
In fact, they have a group called Acoustic Idol on. They're based in Colorado.
|
||||
We've seen them perform, really enjoyed the performance, picked up a couple of CDs,
|
||||
got on the mailing list and then discovered that they had this channel.
|
||||
And so it's, you're not going to get a lot of videos here, they're infrequent.
|
||||
But I enjoy them when they come out and that's good enough.
|
||||
Next is Jonathan Brooke.
|
||||
Jonathan, we first discovered Jonathan Brooke when she was part of a duo called The Story.
|
||||
And they played at the Ann Arbor Folk Festival.
|
||||
And we thought, oh, they're really good.
|
||||
They did this wonderful song called Dog Dreams.
|
||||
And it was basically life from the perspective of the dog.
|
||||
And it was just really a great sense of humor and insight.
|
||||
And we kind of fell in love with that.
|
||||
And then the group split up.
|
||||
And Jonathan has been doing a lot of stuff.
|
||||
Of course, he's a touring musician.
|
||||
She's also done a few musical plays that she's written.
|
||||
So we keep in touch with what she's going on through her YouTube channel,
|
||||
as well as her email mailing list.
|
||||
Now the next one is a fellow named Josh Snares.
|
||||
Josh is an Australian who is a Doctor Who fan and does reviews among other things.
|
||||
Of Doctor Who lately, he's been looking a lot at the animations that have been done.
|
||||
You may recall from some of the Doctor Who shows, if you listen to those that I've done,
|
||||
that a lot of the early, basically the first six seasons of Doctor Who,
|
||||
a lot of those episodes are missing because the BBC basically didn't care.
|
||||
And just reuse the videotape or through it out or whatever,
|
||||
because it's like, no one will ever want to see this.
|
||||
So now that they've discovered that, in fact, yeah, people do want to see it.
|
||||
And the original material isn't there anymore.
|
||||
One of the things they've been doing is animating some of the missing episodes.
|
||||
And he's been doing a lot of reviews about the animations.
|
||||
So that's the Josh Snares channel.
|
||||
Then there's Jumbo Pixel.
|
||||
Jumbo Pixel is a game reviewer.
|
||||
Now that includes civilization. He's big on civilization.
|
||||
But he's just big on computer games and strategy games in general.
|
||||
One of the things that he does periodically is he will do kind of a review of the games that are coming out.
|
||||
Which games are people most looking forward to in 2025 was one that he just did.
|
||||
Some of them have been announced. Others are sort of like, well, they're expected to come out in 2025.
|
||||
You don't have a date yet.
|
||||
And he will get involved with the early alphas and playtest these things and report on them.
|
||||
Basically tell you, is this something you might want to get?
|
||||
So it's a good channel. It's a fellow from New Zealand.
|
||||
And I enjoy his work.
|
||||
The next channel is called Kara and Nate.
|
||||
Now, this is a travel channel in a way. It's their travels.
|
||||
This is a young couple, you know, my age, everyone's a young couple.
|
||||
But they're a young couple that when they got married, they decided to spend a year traveling before settling down.
|
||||
But by the time the year was up, they didn't want to stop.
|
||||
And so they have been to like over a hundred different countries.
|
||||
They've been doing physical challenges.
|
||||
So one of them was, they got together with some friends and did a bicycle trip from one side of the United States to the other.
|
||||
Or running a marathon or, you know, whatever.
|
||||
So there's been some physical challenges.
|
||||
And otherwise just, you know, documenting their travels all around the world.
|
||||
So another one I enjoy.
|
||||
The next one is Kate Tectonics.
|
||||
Play on words, the woman named Kate.
|
||||
I'm talking about geology.
|
||||
This one is one that I could probably take off of this because I don't think she's put anything out in seven years.
|
||||
But as I said before, I just, I don't bother. It does no harm to leave it on the list.
|
||||
Then there's Ken Michaels radio.
|
||||
Ken Michaels is a radio distraki.
|
||||
It does a syndicated show about the Beatles called every little thing.
|
||||
Participates in several podcasts about the Beatles.
|
||||
One of them is things we said today.
|
||||
And so he's, you know, that's his thing is he's a Beatles guy.
|
||||
I'm a big fan of the Beatles.
|
||||
So I enjoy that.
|
||||
Then there is Kevin Stratford.
|
||||
This is a fellow who has a channel that is devoted to basically giving tutorials on different kinds of software.
|
||||
You know, how to use it.
|
||||
And at one point, I was thinking of trying to do some video stuff and, you know, he was talking about some of the software that I was thinking of using.
|
||||
And that's how I ran across it.
|
||||
And so I just subscribed to the channel just to see what's going on.
|
||||
Most of the time he's talking about software.
|
||||
I have no interest in it.
|
||||
So in cases like that, I just delete the notification and get on with my life.
|
||||
The next one is Kyle Jones.
|
||||
Now, Kyle is another doctor who does not the only thing.
|
||||
He's basically a geek in general.
|
||||
Dr. Who star track comics.
|
||||
You know, Marvel Universe, what have you.
|
||||
But I follow the discussing who.
|
||||
And we talked about that in an earlier program, the discussing who podcast.
|
||||
He was also for a while on Dr. Who pod shock, which is sort of the original.
|
||||
Dr. Who related podcast.
|
||||
And he has his own channel.
|
||||
And so that's what I'm subscribed to.
|
||||
Then there's La Lido Loca.
|
||||
That this is another one of the crews related channels that I listen to.
|
||||
This one, he comes out with a daily program.
|
||||
Generally going to be, you know, seven to ten minutes.
|
||||
So, you know, it's crews news, commentary on what's going on in the crews scene.
|
||||
Then there is Lake Street Dive.
|
||||
Now Lake Street Dive is the name of a band.
|
||||
And very good band.
|
||||
I think you would call them kind of a bluesy rock sort of thing.
|
||||
And I enjoy it.
|
||||
So, you know, their channel, they will put out something, you know, once or twice a week.
|
||||
And it might be very short.
|
||||
But it's good promotion and publicity for them.
|
||||
They will sometimes do a performance of one of the songs from their latest CD and stuff like that.
|
||||
And another band is Larkin Po.
|
||||
Now, this is two sisters.
|
||||
And neither one of them is named Larkin or Po.
|
||||
And I think it was like the, you know, names of their grandparents or something like that that they just put together.
|
||||
Interesting duo, one plays guitar and the other plays dobro or slide guitar.
|
||||
For instance, they were among the people who guessed it on Ringo Starr's latest country album.
|
||||
So, they do.
|
||||
I wouldn't call it country exactly.
|
||||
You know, the slide guitar does tend to, you know, the dobro is definitely considered a country instrument.
|
||||
But I would say they're more rock.
|
||||
Anyway, that's Larkin Po.
|
||||
And I think that's enough for this.
|
||||
So, this is Hookah for Hacker Public Radio signing off and is always encouraging you to support free software.
|
||||
Bye-bye.
|
||||
Today's show is released under Creative Commons, Attribution 4.0 International License.
|
||||
38
hpr_transcripts/hpr4505.txt
Normal file
38
hpr_transcripts/hpr4505.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
Episode: 4505
|
||||
Title: HPR4505: New site - looks great!
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4505/hpr4505.mp3
|
||||
Transcribed: 2025-11-22 15:09:44
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4505 for Friday 7 November 2025.
|
||||
Today's show is entitled New Site Looks Great.
|
||||
It is hosted by Archer 72 and is about 3 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Archer 72 helps someone blinded by the light of the new HBR site.
|
||||
Hello, this is Archer 72 for Hacker Public Radio.
|
||||
This episode was prompted by the new site going live yesterday, the 20th of October, 2025.
|
||||
There was a mailing list entry that was saying that they were blinded by the light of the
|
||||
new site, which the new site looks great.
|
||||
There was a lot of work going into it, and Ron and others put a lot of work into getting
|
||||
everything live again.
|
||||
I kind of put that on hold for a little bit after I saw it. I woke up about one in the morning,
|
||||
and I was kind of prompted to look at the dark reader again, which the person that wrote
|
||||
in uses, and that was what was going on is the dark reader wasn't making the website
|
||||
like it should be.
|
||||
So, I looked at the settings a little bit, and I found one of the settings, something
|
||||
called Filter Plus, and turned that on, and that made it turned almost too dark.
|
||||
It looked like it was a jet black, and then I tweaked the settings for the contrast a
|
||||
little bit, probably about down to about 30% contrast, and that seemed to do pretty good.
|
||||
So, I exported, I went on the desktop later, and exported those settings, and then a couple
|
||||
of screenshots of what I saw, and to anybody that is using that type of reader, plug
|
||||
into Firefox, I think it's also in Chrome, they can import those settings that I'll put
|
||||
on in the show notes, and hopefully that'll help somebody.
|
||||
I'm sorry, the social art, but it's been Archer 72 for Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio, and Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself, if you ever thought of recording
|
||||
a podcast, and click on our contribute link to find out how easy it really is.
|
||||
The HBR has been kindly provided by www.monsthost.com, the Internet Archive, and our
|
||||
things.net.
|
||||
On this otherwise stated, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
License.
|
||||
327
hpr_transcripts/hpr4506.txt
Normal file
327
hpr_transcripts/hpr4506.txt
Normal file
@@ -0,0 +1,327 @@
|
||||
Episode: 4506
|
||||
Title: HPR4506: The UCSD P-System Operating System
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4506/hpr4506.mp3
|
||||
Transcribed: 2025-11-22 15:11:15
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 45006 from Monday 10th of November 2025.
|
||||
Today's show is entitled The Uxed-P System Operating System.
|
||||
It is hosted by Whiskey Jack and is about 21 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, this episode is about the Uxed-P System Operating System.
|
||||
Uxed-P System is an operating system from the late 1970s which carried on into the 1980s.
|
||||
It ran on a variety of different micro and mini computers.
|
||||
The notable thing about it is that it ran programs on a portable virtual machine rather
|
||||
than directly on the native hardware.
|
||||
This podcast overview will give a very brief overview of the operating system, its features,
|
||||
and its history.
|
||||
This episode is for people who are interested in some of the more obscure history of the
|
||||
early micro computer era.
|
||||
Don't expect to find something here that you could put to use in a practical way.
|
||||
Pascal and UCSD.
|
||||
Pascal is a programming language that was developed by Nicholas Vert somewhere around 1970.
|
||||
Many of you will be familiar with the name even if you have never used it.
|
||||
It, along with C, were some of the most important programming languages of that era.
|
||||
In the late 1970s, people working at the University of California San Diego created a combined
|
||||
operating system, compiler, and development environment which would run on the various
|
||||
micro computers and PDP 11 mini computers that they had in their computer labs.
|
||||
This allowed them to offer a common teaching environment on a variety of hardware.
|
||||
The design of the UCSD system very much reflects those origins as they are oriented towards
|
||||
providing features that someone writing a program would find useful.
|
||||
Commercialization.
|
||||
Eventually, UCSD decided to commercialize the software by licensing or selling it to
|
||||
a company who would then market it.
|
||||
The first company was Softech Microsystem, who sold it for a number of years as well
|
||||
as sublicensing it to others.
|
||||
It then passed through the hands of a number of current companies before finally disappearing
|
||||
in the late 1990s.
|
||||
UCSD P-System versions.
|
||||
The version numbering system used for P-System has a significance that goes beyond just
|
||||
new features.
|
||||
The first part of the version number is in Roman numerals.
|
||||
There were four major versions, i, i, i, i, i, and i v. Note that I am pronouncing it
|
||||
as letters rather than as numbers.
|
||||
This apparently was the convention.
|
||||
The first part is based on the virtual machine op codes and a different major version indicates
|
||||
that a new and incompatible op code set was used.
|
||||
The second part of the version number is in Arabic numerals and reflects release numbers.
|
||||
This a full version number may be something like i, v, dot, zero, i, v, dot, one, etc.
|
||||
I won't cover the history of the different versions here in the interests of keeping
|
||||
this podcast short.
|
||||
Hosted versions.
|
||||
Later on in the life of the P-System, versions were released which ran as guest operating systems
|
||||
on top of another operating system such as MS-DOS.
|
||||
Disallowed people to use it while not dedicating a computer to it.
|
||||
The version that I will describe here is one such system which was sold by P-Can software
|
||||
as the power system and ran on MS-DOS.
|
||||
P-Can was one of the successor companies which the P-System ownership passed through during
|
||||
its life.
|
||||
Basic concepts.
|
||||
The base of a P-System is a P-Code interpreter.
|
||||
This is a small interpreter written in native assembly language and which runs the P-Code.
|
||||
On the MS-DOS hosted version this is a 4 kilobyte file called p-System.com.
|
||||
Porting the P-System OS to a different set of hardware mainly involved just rewriting
|
||||
this part of the system.
|
||||
The operating system itself, utilities, user interface, file system and everything else
|
||||
were written in Pascal and compiled to P-Code.
|
||||
On the MS-DOS hosted version this is contained in a roughly 800 kilobyte file called p-System.com
|
||||
That is, with ending with a VOL suffix.
|
||||
Another file contains a documentation.
|
||||
On the MS-DOS hosted version this is contained in roughly a 128 kilobyte file called doc.val.
|
||||
File system.
|
||||
The P-System file system is based around what are called volumes.
|
||||
A volume could be thought of as like a disk.
|
||||
Then a volume would simply be an entire floppy disk.
|
||||
A hard drive could be split up into multiple volumes.
|
||||
There could be sub-volumes inside of volumes but there was no hierarchical directories
|
||||
such as found in a Unix system.
|
||||
The latter being a concept which MS-DOS also eventually copied.
|
||||
Dispaced was allocated in blocks of 512 bytes.
|
||||
A maximum of 77 files was allowed in a volume.
|
||||
Other drives were accommodated by allowing sub-volumes inside of volumes.
|
||||
I don't think that sub-sub-volumes were allowed, although I haven't tested this.
|
||||
Since most people were using P-System on microcomputers with only floppy disks, this wasn't
|
||||
a real issue.
|
||||
File names could be up to 15 characters long.
|
||||
There were conventions for file name extensions.
|
||||
This included one such as .T-E-X-T for text files, .B-A-C-K for backups of text files,
|
||||
and .CODE for executable code files.
|
||||
The file system was case insensitive.
|
||||
The P-System did not allow Unix file naming patterns, so characters such as slash and
|
||||
backslash could be legal parts of a file name.
|
||||
The colon character, however, was a reserved character used to separate the volume name from
|
||||
the actual file name.
|
||||
Virtual memory and multitasking.
|
||||
The P-System has a primitive form of virtual memory and multitasking.
|
||||
Code exists in separate segments.
|
||||
Segments are loaded into the code pool dynamically when needed, and unused ones are removed
|
||||
when the code pool becomes full.
|
||||
This compares to manually loading and unloading code overlays, which was a common method
|
||||
in those days.
|
||||
The P-System also has a form of multitasking called Cooperative Multitasking.
|
||||
This allows for multiple threads of execution on a single CPU, but required each thread
|
||||
to explicitly give up control of CPU to allow the OS to run out of the thread.
|
||||
This is in contrast to preemptive multitasking, where the operating system takes over control
|
||||
of the CPU from a thread, whether it wants to give it up or not.
|
||||
The method of multitasking was present in some other micro computer operating systems
|
||||
in those days, but the most commonly used ones, CPM and MS-DOS, did not have this.
|
||||
In 8-bit versions of P-System, the code pool and stack heap, that is the data memory,
|
||||
had to share whatever memory there was, typically 64K.
|
||||
In 16-bit versions, that is, hosted versions running on MS-DOS, the code pool had a separate
|
||||
128 kilobyte memory space from the 64K stack and heap.
|
||||
The 16-bit version was a bit of a budge, as P-System was fundamentally an OS designed
|
||||
for 8-bit systems, and so couldn't use all the available memory on a PC compatible
|
||||
or 68000 system.
|
||||
Remaining memory on those systems was typically allocated as a RAM disk, which at least allowed
|
||||
for fast access to temporary files to make up for the lack of usable data memory.
|
||||
This was a major deficiency of the P-System, and fixing it properly would probably have
|
||||
required coming out with a 32-bit version.
|
||||
However, by the time 32-bit PCs became common, more advanced operating systems were also
|
||||
available, and the P-System was already fading away.
|
||||
Architecture independence with P-Code
|
||||
The P-System presented a consistent, portable system from the programmer's perspective, allowing
|
||||
programs to be easily ported from one machine architecture to another.
|
||||
This was quite extraordinary in those days, especially for something that ran on an 8-bit
|
||||
CPU.
|
||||
In many ways, this could be thought of as a predecessor to Java, and that code was compiled
|
||||
down to P-Code that ran on a virtual machine.
|
||||
There was no jit compiler to automatically create native code, but the programmer could
|
||||
designate parts of the program using the Pire Directives, Dollar N Plus, Dollar N Minus,
|
||||
to direct which parts of the program were to be compiled to native code, and which parts
|
||||
were to be left as P-Code.
|
||||
Native code was not necessarily faster than P-Code, as operating system calls had a higher
|
||||
overhead from native code.
|
||||
The programmer needed to use his discretion in deciding where native code made sense if
|
||||
it did at all.
|
||||
P-Code interpretation was very efficient, and in many cases, I couldn't see any noticeable
|
||||
improvement from a user perspective with native code.
|
||||
Western Digital designed a CPU called the micro-wension specifically to run the P-System.
|
||||
The native machine code of the micro-wension was P-Code, version III, that is three,
|
||||
of the P-System was a micro-wension specific version.
|
||||
The micro-wension was sold commercially in limited numbers.
|
||||
Programming languages.
|
||||
The main programming language used on the P-System was Pascal.
|
||||
Most of the operating system in standard applications were written in Pascal.
|
||||
This was unusual for this era, when a lot of software of this type was written in assembly
|
||||
language, or at least it was for the micro-computers.
|
||||
Other programming languages were available though, including Fortran, Basic, and Module
|
||||
2.
|
||||
The fading away of the P-System Ennestimize.
|
||||
The UCSDP system was one of three operating systems offered by IBM when they introduced
|
||||
their IBM PC, the others being PC DOS and CPM.
|
||||
However, P-System was several times more expensive than the alternatives, and if you were
|
||||
available third-party applications.
|
||||
The introduction of the IBM PC as a de facto hardware standard removed a lot of the advantages
|
||||
of a portable system that had existed in the days of the plethora of 8-bit computers.
|
||||
The P-System had only ever had a small market share to begin with.
|
||||
The owners switched to focusing on embedded systems.
|
||||
By the end of the 1990s, however, it was more or less dead.
|
||||
It cut down version of the P-System with just the P-Code interpreter and compiler, and
|
||||
without the rest of the OS had been used on some 8-bit systems, notably the Apple 2 where
|
||||
it was known as Apple Pascal.
|
||||
However, other versions of Pascal, particularly Turbo Pascal, came to dominate in the IBM
|
||||
PC market instead.
|
||||
A quick tour of the P-System running it on modern hardware.
|
||||
I will now give a quick tour of the P-System touching only lightly on a few aspects of it.
|
||||
I have a copy of an MS-DOS-hosted version that I bought in the 1980s.
|
||||
I bought this to learn about the OS as I was writing application software for a large
|
||||
piece of lab equipment that ran a native version of P-System to control the hardware.
|
||||
The version I have is IV.2.2 R 1.0.
|
||||
The first order of business is how to get it to run on a modern PC, which is running Linux.
|
||||
I solve this by installing DOSBoxX, which is an emulator which simulates a variety of
|
||||
older hardware and provides an equivalent to MS-DOS built-in.
|
||||
I had tried getting it to run under QEMU and free DOS, but I had problems with numerous
|
||||
bugs so I gave up.
|
||||
This is an exercise in running P-System, not in debugging QEMU and free DOS issues.
|
||||
I put the P-System files in a directory called PSYS or PCS for short.
|
||||
Then in the parent directory, I open terminal and typed DOSBoxX.
|
||||
When DOSBoxX started, I typed Mount, C, PSYS in the MS-DOS terminal.
|
||||
This mounted the Linux directory PSYS as MS-DOS drive C. When I typed DIR in the DOS terminal,
|
||||
the files were visible.
|
||||
I then typed P-System to run P-System.com and the P-System started up.
|
||||
User Interface
|
||||
When the P-System starts up, you are greeted by a splash screen which shows the OS name,
|
||||
version, system date, copyright notice, and the main menu.
|
||||
Something that may surprise you is that there is no command line for the P-System.
|
||||
The user interface is all menu driven.
|
||||
The menu runs in a single line across the top of the screen.
|
||||
These are not drop-down menus.
|
||||
Instead, items are each activated by typing a single key which represents the first character
|
||||
of the item name.
|
||||
When there are too many items to fit across the top of a single screen, you use the question
|
||||
mark key to select the next set of items, repeating as many times as necessary.
|
||||
All standard programs use the same menu system, providing a consistent unified user experience.
|
||||
This system works equally well on serial terminals as it does on PCs with graphics cards.
|
||||
The OS level menu
|
||||
Here are the options of the OS level menu.
|
||||
Edit.
|
||||
This runs a standard editor known as the Advanced System Editor, or ASC for short pronounced
|
||||
ACE.
|
||||
Run.
|
||||
It compiles and runs a program.
|
||||
File.
|
||||
It starts the file manager.
|
||||
Comp.
|
||||
Runs the compiler.
|
||||
Link.
|
||||
Runs the linker.
|
||||
Execute, which starts with an X.
|
||||
Runs a compiled program.
|
||||
SM.
|
||||
Runs the assembler.
|
||||
Debug.
|
||||
Runs the debugger.
|
||||
Halt.
|
||||
Shuts down the OS.
|
||||
There is a confirmation menu for this operation so you won't do it accidentally.
|
||||
Initialize.
|
||||
Reboots the OS.
|
||||
User restart.
|
||||
This does nothing in the MS-DOS-hosted version.
|
||||
Monitor.
|
||||
Records and plays back keystrokes.
|
||||
This allows for simple scripting.
|
||||
Set.
|
||||
Opens the menu, allowing you to view and set various system defaults.
|
||||
ACE Editor.
|
||||
The Advanced System Editor is part of the P system.
|
||||
I won't try to cover all the features here as that would take too long.
|
||||
It has two distinct modes, a command mode and an editing mode.
|
||||
In the command mode, it has a menu system like the OS itself, where typing a single character
|
||||
causes the editing command to execute.
|
||||
In editing mode, you can edit an individual line of text.
|
||||
One unusual feature is that to enter a line of text, you need to accept it, which is done
|
||||
by pressing Control-C.
|
||||
On keyboards, where the control key is in the middle row on the left-hand side of the
|
||||
keyboard, this is actually very quick and easy.
|
||||
Once you get used to the editor, you can move a vote and edit files very quickly.
|
||||
Filer.
|
||||
The Filer is the file manager.
|
||||
This has a number of different menu commands for listing directories, creating, copying,
|
||||
deleting files, and other file operations.
|
||||
This also lets you mount and dismount volumes.
|
||||
You must mount a volume before you can use it.
|
||||
However, you can only mount a limited number of volumes at the same time.
|
||||
Thus, you need to decide which volumes to mount for what it is you wish to do.
|
||||
As most microcomputers in those days only had two floppy drives, this was not actually
|
||||
a major issue, as these volumes would correspond to individual floppy disks anyways.
|
||||
In the P-System file system, the volume name is called the file prefix.
|
||||
You can set any volume to be the default prefix.
|
||||
The equal sign would act as a wildcard character when specifying which files to list.
|
||||
The file system was very simple, and volumes could be come fragmented when changing, deleting
|
||||
or adding files.
|
||||
As a result, you would need to regularly defragment volumes, an operation known as Crunch, where
|
||||
that it starts with a K, rather than a C.
|
||||
A Crunch operation would move files up to the beginning of the volume to close up any
|
||||
unused blocks in between files, and leaving the unused blocks at the end of the volume.
|
||||
Execute
|
||||
To run a program, you press the X key on the main menu to select the Execute command.
|
||||
You'll be asked for the name of the program you wish to run.
|
||||
Type in the name of the file, including the volume name if it is not the current volume.
|
||||
Separate the volume name and the file name with a colon character.
|
||||
Executable files end with a .code suffix.
|
||||
You do not need to type in the .code file extension as this is assumed, but it will still
|
||||
accept it if you do.
|
||||
DOS FILOR
|
||||
The MSDOS hosted version of P-System includes a program called the DOS FILOR.
|
||||
This is not part of the standard system, and so is not integrated into the system menu.
|
||||
You have to execute it through the Execute menu.
|
||||
It offers features similar to those of the standard FILOR, but also understands the MSDOS
|
||||
FILOR system.
|
||||
Its main purpose is to copy files between the MSDOS FILOR system and the P-System FILOR
|
||||
system.
|
||||
It also allows you to create new P-System volumes.
|
||||
These new volumes appear as separate files in the MSDOS FILOR system.
|
||||
Conclusion
|
||||
The UCSDP system is an example of an operating system from the early days of microcomputers
|
||||
that did not follow the conventions that we are used to today.
|
||||
It had features that were in many ways ahead of its time.
|
||||
Here are some examples of this.
|
||||
It was almost entirely written in a high-level language, Pascal.
|
||||
It was compiled to P-code or Pascal code that ran on an architecture independent virtual
|
||||
machine.
|
||||
Performance critical parts of the P-code could be compiled to native code.
|
||||
The user interface did not use a command line, indeed there was none, instead it used
|
||||
a menu driven user interface.
|
||||
On the other hand, it remained stuck on 8-bit limitations in a 16-bit world.
|
||||
It was a closed source proprietary product, and when the vendor lost interest, the product
|
||||
died.
|
||||
It is an interesting bit of history, but I can't really recommend that anyone should expect
|
||||
to do anything useful with it today.
|
||||
I still have a copy that I bought when it was a current product, but it has been many
|
||||
years since I even looked at it and only resuscitated it for the sake of making an HPR episode.
|
||||
At Endham Performance benchmarks Some people may be curious as to
|
||||
how fast a program running in the P-system virtual machine running on top of the DOS
|
||||
Box X emulator running on Linux on a modern PC compared to the microcomputers of that
|
||||
era.
|
||||
To test that, I ran one of the common benchmarks of that era, the Siv of Eras Totsanese
|
||||
prime number program.
|
||||
This as a name implies, calculates a series of prime numbers.
|
||||
DOS Box X offers a variety of tuning factors.
|
||||
I set the CPU speed to the fastest option, which claims to emulate the speed of an 866
|
||||
Beggerhertz Pentium 3.
|
||||
When I time the benchmark using a stopwatch, I measure roughly one second of execution
|
||||
time.
|
||||
The source code for the benchmarks lists the performance of that benchmark on a variety
|
||||
of other computers.
|
||||
Here's a few examples.
|
||||
On Apple 2, ran it at 390 seconds.
|
||||
For the IBM PC, it was 203 seconds.
|
||||
The North Star i.5 with a 4 Beggerhertz Z80, it was 183 seconds.
|
||||
The LSI 1123, a version of the deck PDP 11, ran it between 92 and 128 seconds depending
|
||||
on the machine options.
|
||||
The Western Digital Microwension, ran it in 59 seconds.
|
||||
There is a note that the Philcare operation is very slow on Microwension.
|
||||
For the Sage 2 with an 8 Beggerhertz 68000, it was 157 seconds.
|
||||
I'll note the Sage 2 was designed specifically for running P-System.
|
||||
As you can see, modern PCs are much, much faster than the micro computers of that era.
|
||||
This concludes this episode on the UCSDP system.
|
||||
You have been listening to Hacker Public Radio, at Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast, you click on our contribute link to find out
|
||||
how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the internet archive
|
||||
and our syncs.net.
|
||||
On the Sadois stages, today's show is released under Creative Commons, Attribution, 4.0
|
||||
International License.
|
||||
188
hpr_transcripts/hpr4507.txt
Normal file
188
hpr_transcripts/hpr4507.txt
Normal file
@@ -0,0 +1,188 @@
|
||||
Episode: 4507
|
||||
Title: HPR4507: What's in the bag ?
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4507/hpr4507.mp3
|
||||
Transcribed: 2025-11-22 15:11:00
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 45007 for Tuesday 11 November 2025.
|
||||
Today's show is entitled, What's in the Bag?
|
||||
It is part of the series What's in My Toolkit.
|
||||
It is hosted by Ken Fallon, and is about 17 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Ken describes in detail what his daily carry is.
|
||||
Hi everybody, my name is Ken Fallon, and you're listening to another episode of Hacker
|
||||
Public Radio.
|
||||
Today, I want to talk to you about my daily carry, because we're running low on shows,
|
||||
and this is something that changes regularly, so as a snapshot point in time, what I'm
|
||||
currently carrying, and my advice as to whether I think it's a good or bad thing or in
|
||||
between.
|
||||
First of all, let's talk about the bag.
|
||||
I had quite a lot of trouble getting a bag, because one that came with the laptop was
|
||||
just very poor quality flimsy, and because I travel by public transport, it gets moved
|
||||
around a lot.
|
||||
It needs to be a sturdy bag, because as you can see, there's going to be a lot of weight
|
||||
in this.
|
||||
Then I went to the big box stores like MediaMarkter, other places that sell luggage in laptop
|
||||
bags, and they were extremely expensive, and only had one pouch, and just working really
|
||||
a good bag.
|
||||
I ended up, I traveled to Skippel Airport, which is the main airport in Netherlands every
|
||||
day.
|
||||
It's my train station as well, so I went down there expecting to get fleeced, and in
|
||||
actual fact, I found a very good bag called Enrico Benetti bag for 40 euros, it's 15
|
||||
inch.
|
||||
They've also got a 17 inch for not much more money.
|
||||
It's got three pouches.
|
||||
The main pouch has got a laptop, a laptop section.
|
||||
Inside the main pouch, and that's got a velcro cover.
|
||||
Then there's plenty of space for a weekend carry or your lunch, which I alternate depending
|
||||
on where I'm going.
|
||||
Then there's another center pouch for all your cables, and it's got a separate place for
|
||||
business cards and pens and the like.
|
||||
Then there's a front pouch for maybe your audiobook, and then on the front part of that
|
||||
front pouch, there's a zipper for maybe your passport, and something like that.
|
||||
Bag itself, very good quality, padded, it's got a handle on it for easy carry.
|
||||
Both sides have got co-polders and clips.
|
||||
The only thing it doesn't have is a cross-slip for crossing left and right, but other than
|
||||
that, I think it's a great little bag.
|
||||
I can't recommend that one highly enough.
|
||||
The bag itself has got a laptop in it, which is, yeah, I'll say it's a powerful laptop.
|
||||
It's my daily laptop, it's a Dell Precision 3571.
|
||||
It's running for door 42 at the minute.
|
||||
It's got an open box LXQT on it, and it's a 12th generation i7, something rather, with
|
||||
a Intel and AMD graphics.
|
||||
It's got 12 32 gigabytes of RAM and a terabyte hard disk, two terabytes of hard disk.
|
||||
So that's the laptop, it's a beast, and it's not very handy to use on the train as such,
|
||||
because it's so large, and also it's obviously encrypted.
|
||||
And obviously it's my work laptop, so I prefer just bringing the twerk, leaving the home.
|
||||
When I'm going anywhere else, the laptop I use is a tiny laptop by Piquello, PICCOLO,
|
||||
and it's an 8-inch tiny laptop, essentially what it is, is they've taken a tablet, like
|
||||
literally not an iPad, but you know what I mean, Android tablets.
|
||||
And they glued that to a keyboard.
|
||||
And the keyboard is surprisingly small, but surprisingly good, I must say.
|
||||
A chemical windows, I install Linux on it, and apparently it's supposed to run Linux
|
||||
perfectly.
|
||||
Now some YouTuber says it does.
|
||||
I haven't been able to get the, there's been a few things, the left mouse button doesn't
|
||||
work.
|
||||
The touchscreen is rotated 90 degrees.
|
||||
The orientation of the screen is low, you know, landscape instead of portrait, sorry,
|
||||
it's portrait instead of landscape.
|
||||
Some of those things have been able to fix the onboard audio, I haven't bothered fixing,
|
||||
and some of them I haven't bothered fixing, because it's got a, it's running Sparky Linux,
|
||||
LXQT again, it's got a terabyte hard disk, an Intel N100, 3.4GHz, and an Intel older
|
||||
lake graphics, it's got 16GB of RAM.
|
||||
But what it is, is small enough to fit into the tiniest of shelves in the train on the
|
||||
way home.
|
||||
And it's got USB connectors, it's got HDMI connectors.
|
||||
So obviously it's encrypted as well, and I have my personal stuff on there if I need
|
||||
to do banking or I need to look something up, or I need a copy of my, a backup, my home
|
||||
PC, it's available on that thing.
|
||||
So that's a nice little laptop, it's 250 quid.
|
||||
So not a lot, if you can afford it, quite a lot if you can't, but it's a lot more than
|
||||
the two and a half grand of laptop that's coming up from my work.
|
||||
So I feel a lot more comfortable about losing this than losing my work laptop.
|
||||
My personal phone is a Google Pixel 6A, mostly because it is a developer phone, and I have
|
||||
it running Calix OS, which I need to, it is currently suspended, and there'll be a new
|
||||
version coming out, so I need to put another version of Android on that.
|
||||
It's got six gigabytes of RAM and 120 gigabytes of storage, and that's my daily go-to.
|
||||
It's a good enough phone, I've got them for the rest of the family.
|
||||
The only thing about it is that mine, the USB charger, is kind of broken.
|
||||
So I had these USB stands that you could rest your phone in, and that put unnecessary
|
||||
strain on the USB adapter, and as it turns out on this phone, that's built into the motherboard,
|
||||
so there's no way of replacing it.
|
||||
I have been lucky to be able to find four cables that will charge my phone, but a normal
|
||||
your USB cable will not charge it.
|
||||
It just happens to be, you have to have the very special cable, and you just have look
|
||||
that will charge it.
|
||||
So I have a few of them, so I'm able to keep it charged, and that's how I'm keeping
|
||||
my phone go.
|
||||
For work, I've got an iPhone 12, four gigabytes of RAM and 128 gigabytes of storage, none
|
||||
of which I use for anything, although then communication, working meal, it comes on,
|
||||
when I'm in work, and it goes off, when I'm not in work, it's got some up for safety
|
||||
marshal work, so it's got some ups for safety marshal stuff, and that's why I use it.
|
||||
The headsets that I use for work as well is a Jabra evolved to 65 headsets, which I'm
|
||||
currently wearing, and you're recording recordings show using this.
|
||||
This is a, the audio is reasonable, okay, it's uncomfortable to wear all day, and all
|
||||
might have a pair of Sony headsets, which are a lot nicer to wear for longer term.
|
||||
These kind of tend to push the pressure on your ears, and they boom, just don't rotate
|
||||
180 degrees, or only rotate 90 degrees, and you're forced to have it on your right hand
|
||||
side, which I would prefer to have it on my left hand side, but there you go.
|
||||
So as I said, I don't use that as my daily driver, if I'm traveling, I use my cheapo fresh
|
||||
and rebel earbuds, which are like Apple earbuds.
|
||||
I was using USB connectors and adapters to 3.5 millimeter head sockets, but I just give
|
||||
up and started using these headphones.
|
||||
They're cheap and cheerful from action in the Netherlands, which is like a dollar store
|
||||
type deal, you know, they're not really there, but it's their, it's a deal is to be low
|
||||
cost, or at least appear low cost, but there these headphones, they had a brand that were
|
||||
very poor, but these ones are actually good enough for listening to music, and definitely
|
||||
good enough for podcasts and videos and stuff like that.
|
||||
So I carry them around, and I have a few sets at home if I need to change them.
|
||||
So I also carry some other stuff for work.
|
||||
So I carry a set up box, our company set up box, which has got here to be my connector
|
||||
and the USB micro connector, and it's got a special adapter that uses the powers, the
|
||||
thing, and it also runs Ethernet over USB.
|
||||
I have a remote control with that, and obviously HDMI cable, and then the network cable as
|
||||
well just to plug the thing in.
|
||||
Then I have a HDMI USB capture card, which will allow me to plug in the HDMI and take screenshots
|
||||
of our UIS, we're developing it, but just this will, that works on this box because it's
|
||||
a test and development box, but that box won't work anywhere outside of our labs, and it's
|
||||
run development code, so it's no use to anybody outside of that.
|
||||
I also have a four port, thin USB hub, 3.2 hub from trust, it was a cheap one, and Amazon
|
||||
basic USB adapter, and I use those two on my small laptop, just if I need to connect
|
||||
us to physical network.
|
||||
I have various different USB adapters and chargers, so hey man, one of the main stores
|
||||
in the store, it's a general purpose store, sells kids' toes, and that sort of thing.
|
||||
They have a four and one USB cable, with USB-C micro, and a lightning connector, going
|
||||
to USB-A, and that luckily is one of the most reliable chargers we have, and it also fits
|
||||
my phone, so I'm able to charge from that.
|
||||
I also carry around a generic ACT-DC adapter, this one just happens to have PD, which is USB-C,
|
||||
and quick charge 3.0, which is used for charging other normal USB stuff.
|
||||
I carry 64GB USB stick, which has got usually some version of Debbie and her favorite door
|
||||
on it, and a USB adapter set, which has got USB-C, USB-A, and USB micro, mainland, female,
|
||||
different versions, so links to most of the stuff is in the show notes, so that's pretty
|
||||
much all the tech stuff, then I have my wallet, which is an aluminium extruded thing, it's
|
||||
from Secure ID, SEC or ID, and it's only supposed to carry five cards, but I carry six, my
|
||||
bank card, my Irish passport, credit card, my ham radio license, my driver's license,
|
||||
and my public transport card.
|
||||
They wrapped a bag at the very front, carrying my bank authenticator, because I don't do
|
||||
online banking, I do online banking using the website, and then I have an authenticator
|
||||
to do the two-factor authentication thing, as if you do it on your phone, the bank requires
|
||||
you to agree to Google's terms of service, and then Google gets access to your payment
|
||||
history, which the bank can then use to market to you, but if you don't do it that way,
|
||||
they're not allowed to run analytics on your personal banking, so that's that, then
|
||||
I'm going to just general stuff, I've got one of these corpus thank you things from the
|
||||
company, a dopper water bottle, which is, you know, it is so many meals, it's just a little
|
||||
water bottle that I refill and use that, and as I'm coming into here, I tend to come
|
||||
in for it's an hour and a half commute in and an hour and a half commute out, so I tend
|
||||
to try and do a 10 hour day or longer if possible, and therefore I bring in sandwiches in
|
||||
my lunchbox, and I also bring in fruit and vegetables in maple boxes, and I bring
|
||||
my breakfast in a milk bowl, a little cup, plastic cup, so all these adapters and stuff,
|
||||
I've got to mention, I tend to keep them in deep freeze Ziploc bags that are useful
|
||||
for untangling stuff, so that if I need my setup box, I can grab that bag and extract
|
||||
all the setup box cables from that, and if I need the stuff from a little laptop, I can
|
||||
take that out, and it's in its own deep freeze Ziploc bag, so that's a kind of useful.
|
||||
I also carry a notebook and pen, which was using to practice more, but I've actually had
|
||||
to stop doing that, because I don't have the time between one thing and another, but
|
||||
and I got that notebook in action, in that shop, action.nl, I use a Stabilov PointViz
|
||||
Find 0.2 pen, which is a nice one. In my bag I also carry some personal items, the
|
||||
most important being HPR business cards, that if I'm talking to somebody I can just
|
||||
slip them in HPR business card. I carry some Roy Boss T in case, guess we're somewhere
|
||||
and we need to have a cup of tea, usually able to get a kettle boiling water from somebody,
|
||||
and the world doesn't seem as miserable if you've got a warm cup of carry tissues and
|
||||
some back medication, if I feel that my nerve is going to get trapped again, carry clip
|
||||
on shades for when the summer comes, and I need them. Parts each model, deodorant, plaster,
|
||||
Jordan 3-on-one flussers, just two picks, and finally a spork if I need to get lunch.
|
||||
So I don't carry power supply, because I keep a power supply here and work, and if I need
|
||||
the power supply for anything else, I'll power it off the little one that I have from
|
||||
my charger, or from my little laptop, which is a weird connector, but at least I can power
|
||||
it and then use USB off of that, or if I go somewhere I'll bring a laptop charger at
|
||||
home, but I normally don't have that, so I normally wouldn't bother. So that's about
|
||||
it, that's my daily carry as of now, what will be in a few ones time, who knows, you too
|
||||
can record a show telling us what's your daily carry. Okay, that's it for now, thank you
|
||||
for listening, and tune in tomorrow for an exciting episode of Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org. Today's show was
|
||||
contributed by a HBR listener like yourself. If you ever thought of recording podcasts,
|
||||
you click on our contribute link to find out how easy it really is. Hosting for HBR has been
|
||||
kindly provided by an honesthost.com, the internet archive, and our sync.net. On the
|
||||
Saldois status, today's show is released under Creative Commons, Attribution, 4.0 International
|
||||
187
hpr_transcripts/hpr4508.txt
Normal file
187
hpr_transcripts/hpr4508.txt
Normal file
@@ -0,0 +1,187 @@
|
||||
Episode: 4508
|
||||
Title: HPR4508: YouTube Subscriptions 2025 #8
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4508/hpr4508.mp3
|
||||
Transcribed: 2025-11-22 15:11:48
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4508 for Wednesday 12 November 2025.
|
||||
Today's show is entitled, YouTube Subscriptions 2025 hash 8.
|
||||
It is part of the series YouTube Subscriptions.
|
||||
It is hosted by Ahukah and is about 16 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is Ahukah shares part 8 of his list of subscribe channels.
|
||||
You are listening to a show from the Reserve Q.
|
||||
We are airing it now because we had free slots that were not filled.
|
||||
This is a community project that needs listeners to contribute shows in order to survive.
|
||||
Please consider recording a show for Hacker Public Radio.
|
||||
Hello, this is Ahukah, welcoming you to Hacker Public Radio in another exciting episode.
|
||||
This one is coming to you from the Reserve Q.
|
||||
You know what that means?
|
||||
That means there aren't enough shows coming in and you need to do something about that.
|
||||
Hacker Public Radio is a community project and it relies on the community to submit the
|
||||
shows that keep the community going.
|
||||
At some point, if the shows don't come in, we just shut the whole thing down.
|
||||
I'm going to assume if you're listening to this, you're subscribed and you would regret
|
||||
that.
|
||||
So the best way to make sure it doesn't happen is to submit shows.
|
||||
It's really easy.
|
||||
So with that, I'm going to continue what I've been doing for a while now, which is going
|
||||
through my YouTube channel subscriptions.
|
||||
And I'm going to pick up this with Levant du Nord.
|
||||
Now Levant du Nord is a French Canadian folk music band that I really like.
|
||||
I like folk music and the French Canadian slant on it.
|
||||
It is kind of related to some other things, including Celtic, but you know, it has its
|
||||
own particular flavor and it's not quite like anything else and it's enjoyable.
|
||||
Now if you're a music person, it might be worth checking out if you think that might
|
||||
be the sort of thing you'd want to listen to.
|
||||
Now the next channel is called Learn Spanish with SpanishPod101.com, obviously we've talked
|
||||
before about how I am learning Spanish and have been really since the COVID pandemic hit.
|
||||
And this is one of the tools I think by now I've hit all three of the major tools that
|
||||
I use.
|
||||
So I use SpanishPod101.com, I use Duolingo and I use Coffee Break Spanish.
|
||||
So those are the three major things that I do.
|
||||
There's also another channel that we might get to that I dip into from time to time.
|
||||
Okay, the next channel I'm going to talk about is Lindsay Sterling.
|
||||
Now Lindsay is a violinist dancer, so it has a very energetic show.
|
||||
And it's fun, is she the world's best violinist?
|
||||
No, no, not the world's best dancer, but she puts on a good show and you know, that's
|
||||
reason enough to check it out.
|
||||
So I'm on the channel so I get to see what she's been doing.
|
||||
The next channel is Louis LaGal and Louis is another one of the doctor who fans that
|
||||
I follow who puts out videos.
|
||||
His videos are not frequent and they tend to be long and you know, that's usually the
|
||||
case.
|
||||
If you're putting out videos every day, they're not going to be long videos.
|
||||
If you're going to do something that's going to take an hour and a half when you put
|
||||
it out, you might spend several months producing it.
|
||||
So it's fun stuff.
|
||||
It's a doctor who oriented and so if you're into a doctor who check it out.
|
||||
Next one is Lucinox.
|
||||
Now Lucinox is kind of an offshoot of the channel that I discussed previously called
|
||||
Fire of Learning and it just never really took off.
|
||||
They at one point a few months back as I record this said, well, we're just closing it
|
||||
down for now.
|
||||
You know, that may end up being permanent, but I'm just leaving it on the list because
|
||||
it does no harm to leave it on the list.
|
||||
So the subscriptions there, if they start it up again, I'll know about it.
|
||||
And if they don't, no harm, no foul.
|
||||
Now the next one is called Lydian Label Online.
|
||||
And this is a channel done by the band Lydian Collective.
|
||||
Now this is I think London based, certainly UK based, but I believe they're mostly based
|
||||
in London.
|
||||
And they do a kind of a jazz fusion sort of thing.
|
||||
It's keyboards, guitar, bass, and drums.
|
||||
I really like what they do.
|
||||
They tend to be what I think of as very tasteful.
|
||||
In other words, they're not trying to see, you know, how much they can dazzle you with
|
||||
millions of notes they can produce.
|
||||
They instead seem to be trying to make music.
|
||||
What a concept.
|
||||
And I'm a huge fan of the Lydian Collective.
|
||||
I have all of the CDs.
|
||||
I will continue to get all of the CDs as long as they keep producing them.
|
||||
The only way I can see them is through YouTube because they're not at the point where they're
|
||||
touring outside the country.
|
||||
And so that's the best I can do.
|
||||
Next channel, many a true nerd.
|
||||
Well, you know, this is, among other things, a lot of it has to do with computer gaming
|
||||
and other nerdy topics.
|
||||
This is one of those channels where they put out more videos than I actually take the
|
||||
time to watch because a lot of the times it's something I'm just not interested in.
|
||||
But when they do something I'm interested in, then that's great.
|
||||
And that's how I approach it, you know, I get a notification for every video and then
|
||||
I decide, is this what I want to watch or not?
|
||||
The next channel I want to discuss here is called Mean Mr. Mayo.
|
||||
It's a guy named Joe Mayo and the name is a play on the Beatles Mean Mr. Mustard.
|
||||
And this is a primarily Beatles related channel.
|
||||
He does some movie reviews as well.
|
||||
But I basically follow it for the Beatles content.
|
||||
He's also on a podcast that I listen to, which also has a channel.
|
||||
And this is one that's devoted to the Beatles as individual solo performers after the Beatles
|
||||
broke up.
|
||||
The next one is called Midas Touch.
|
||||
Midas Touch is the name of a news organization, liberal.
|
||||
And they are becoming very prominent in the alternative media space.
|
||||
One of the things that we're seeing now is that politicians do not necessarily just
|
||||
communicate with people through the major television networks or the major news outlets.
|
||||
That in fact so many people have tuned out all of those things that if you want to reach
|
||||
people you have to do things like go on YouTube or go on the podcasts or what have you.
|
||||
So this is a, they put out a number of shows daily.
|
||||
Some of them I listen to, some of them I don't again, it's a function of time sometimes.
|
||||
You put out a 10 minute video on a topic, I'm liable to listen.
|
||||
You put out an hour long video, now there's a good chance I'm going to say now I'm going
|
||||
to skip it.
|
||||
There's only so many hours in the day and I'm not going to spend all of them in front
|
||||
of a computer screen watching YouTube videos.
|
||||
This is something I do in the evening, you know, after dinner I relax and watch some
|
||||
YouTube videos before I go to bed.
|
||||
Next one I'm going to mention is called mental floss and this is a fun one.
|
||||
It is kind of a nerdy channel that does a variety of different things.
|
||||
Some of them are list videos like 15 mispronounced words, those are the list videos.
|
||||
They also do misconceptions videos like misconceptions about Africa, stuff like that.
|
||||
Light entertainment but I always enjoy it.
|
||||
Now the next one I want to discuss is called Metatrek and this is a Star Trek related
|
||||
channel and so it talks about Star Trek, you know, examining how certain themes are
|
||||
handled in the show or reviewing different things in the show.
|
||||
Obviously I will know I'm a big Doctor Who fan, I've been getting into Star Trek as
|
||||
well and lately I've been going through, I got a boxed set of all of the original series,
|
||||
the three seasons back in the 1960s and my wife and I have been going through that.
|
||||
So you know, there's no reason you have to just have one bit of geek in your life, you
|
||||
can have multiples.
|
||||
The next I'm going to mention is called the Michigan Irish Music Festival, I love Irish
|
||||
music, I love going to Irish Music Festivals, I've been Ireland a couple of times and enjoyed
|
||||
music when I was there, in fact I remember in Belfast a few years ago going on kind of
|
||||
a pub crawl led by some musicians and it was a lot of fun.
|
||||
While we have in Michigan where I live, we have our own Irish festival that is in September
|
||||
every year, I've been to it and enjoyed a lot so this lets me keep up with the news
|
||||
on that.
|
||||
There's another big Irish festival by the way in Dublin, Ohio, well with a name like
|
||||
Dublin, you know, you kind of have to do it right and we're going to be going there
|
||||
with a couple of friends this year.
|
||||
Next channel is MinuteEarth and along with that is MinutePhysics, I'll treat them together
|
||||
because they're pretty similar, basically they use animation drawings to develop short
|
||||
videos and talking about, I'll say an average of about three minutes the piece to talk about
|
||||
some topic involving earth science or physics and they come out, I'm going to say probably
|
||||
less than once a week, you know, maybe once every two weeks but they're fun and I enjoy
|
||||
them.
|
||||
Next is a channel called, well it's the name of the person, Mohini Day, Mohini Day is
|
||||
a bass player from India and she is absolutely phenomenal.
|
||||
So this is, she'll put stuff out on the channel, usually fairly short, you know, her performing
|
||||
some place so she might do a three minute clip of her doing a bass solo at a concert
|
||||
or something like that, she's really good and I enjoy it.
|
||||
The next channel I want to mention is the Mona Lisa Twins, you know, Mona Lisa is obviously
|
||||
the name of a famous painting but they're actually two twins, two ladies and one of them
|
||||
is named Mona and the other is named Lisa so it was kind of a natural thing for them
|
||||
to put together.
|
||||
When I first was listening to them they were doing a lot of covers of Beatles songs and
|
||||
they still do a lot of covers of Beatles songs, they also have their own material that
|
||||
they write, they've been performing at the cavern in Liverpool, you know, it's, I'm a huge
|
||||
Beatles fan so I enjoy the Mona Lisa Twins as well.
|
||||
Then there's a Monty Python, you know, you kind of have to have Monty Python, you can't
|
||||
go through life without your Monty Python.
|
||||
And this is mostly little snippets from the TV program or occasionally from one of the
|
||||
movies and they just put a little piece of that out there just to sort of keep in the
|
||||
public eye a little bit.
|
||||
Then there's more perfect union and this is a channel that is kind of devoted to how
|
||||
we can, you know, strengthen unions and build working class power and pretty much United
|
||||
States oriented as far as that goes.
|
||||
And that happens to be something I'm a great believer in so I follow the channel.
|
||||
And there's Mr. Tartus.
|
||||
Well you may know that the Tartus is the blue police box that Dr. Who flies around
|
||||
time and space in.
|
||||
So Mr. Tartus is another Dr. Who channel that does reviews, discussion, you know, what's
|
||||
going on in the world of Dr. Who, what's the latest news from the BBC.
|
||||
So this is a channel where I can keep up with all of that.
|
||||
And so with that, I think that's probably enough for this.
|
||||
So this is a hookah for Hacker Public Radio signing off and encouraging you to support
|
||||
FreeSoftware.
|
||||
Bye, bye.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast, click on our contribute link to find out how
|
||||
easy it really is.
|
||||
The hosting for HBR has been kindly provided by an honesthost.com, the internet archive
|
||||
and our syncs.net.
|
||||
On the Sadois status, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
License.
|
||||
645
hpr_transcripts/hpr4509.txt
Normal file
645
hpr_transcripts/hpr4509.txt
Normal file
@@ -0,0 +1,645 @@
|
||||
Episode: 4509
|
||||
Title: HPR4509: HPR Beer Garden 5 - Heferweisen
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4509/hpr4509.mp3
|
||||
Transcribed: 2025-11-22 15:14:17
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4509 for Thursday the 13th of November 2025.
|
||||
Today's show is entitled, HBR Beer Garden 5 Heifer Wiesen.
|
||||
It is part of the series' beverages.
|
||||
It is hosted by Kettie, and is about 35 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Dave and Paul talk about Heifer Wiesen.
|
||||
Hello and welcome to another exciting episode of Hacker Public Radio, and this is the Hacker
|
||||
Public Radio Beer Garden Episode 5.
|
||||
My name is Dave, and yeah, well it wouldn't normally be me introducing this, but unfortunately
|
||||
my erstwhile colleague, Kevin, is currently down with a flurry-coldy type thing, so he
|
||||
has taken a pass for this one-night's episode.
|
||||
But we are joined, as we were going to be anyway, by a special guest who heard out one of
|
||||
our previous episodes in the thought, yeah, I don't want to get on on this.
|
||||
So Paul, welcome.
|
||||
Hi, good evening, Dave, and yeah, it's good to be here, thank you very much for inviting
|
||||
me.
|
||||
No, no problems at all.
|
||||
I suppose the obvious question to start with is, why are you here?
|
||||
What prompted you to reach out to us?
|
||||
I enjoyed the first episodes of The Beer Garden, and I think it's a fantastic idea, and
|
||||
it's nice to hear different opinions about different types of beers.
|
||||
And actually, I commented on a post that Kevin put on Mastered on, and following some discussion,
|
||||
we ended up with a point where he said, why don't you come and join us?
|
||||
And we can talk a little bit about Vice Beer.
|
||||
I should probably give some background as to why I know a little bit about Vice Beer,
|
||||
because I would normally call it Heifer-Vitancem.
|
||||
My wife is German, so I started travelling to Germany in 1990 for work.
|
||||
I used to work for Bosch, I worked for Bosch for 10 years, and the factory in Cardiff,
|
||||
the machines were being manufactured in Stuttgart.
|
||||
So I travelled over to Stuttgart with my colleagues, and we spent several months there.
|
||||
And obviously, Stuttgart is in the South of Germany, and the South of Germany is famous
|
||||
for its Vice and Beer.
|
||||
I met my wife or future wife while I was in Germany, and so as a result, after we got married
|
||||
a couple of years later, we would travel back to Germany on a regular basis to see family,
|
||||
and obviously that was an opportunity to enjoy the Vice and Beer while I was there.
|
||||
And some of the other German beer as well, but in the South generally, particularly in
|
||||
the summers, I think you and Kevin alluded to in the last episode.
|
||||
The Vice and Beer is very much a summer evening, warm, barmy weather.
|
||||
It's a very nice drink just to sit and relax and enjoy.
|
||||
And would I go as far as to call it a session beer?
|
||||
I think session in Germany is maybe not the sort of thing that you see in the way it is
|
||||
in the UK.
|
||||
However, yes, you can drink Vice and Beer all evening, definitely.
|
||||
Well, the one that I've got for this episode is most definitely one that you could last
|
||||
all evening with.
|
||||
So I suppose I should ask you, given that Kevin and I discussed this on the very first
|
||||
episode of The Beer Garden, is Vice and Beer your favourite style of beer?
|
||||
That's a difficult question.
|
||||
I think if you were to say to me what's your favourite type of music, I would say that
|
||||
depends.
|
||||
And I think the same thing happens for beer, probably because different beer for me works
|
||||
in different places.
|
||||
So a nice winter evening in front of the fire may be a nice port or something with a
|
||||
bit more body, a summer barbecue, maybe a vice beer or something like that.
|
||||
I don't tend to be a lager drinker, to be honest, tend to stick with ails and ruby ails
|
||||
or darker ails, but I do like kind of honey ails as well.
|
||||
But if I was drinking in Germany, I would drink Vice and Beer and from time to time I'll
|
||||
drink it here as well.
|
||||
So it's a fairly popular one, yeah, it's fairly popular, but not necessarily my favourite
|
||||
at under all circumstances.
|
||||
Right, it's a really good call out actually, that yeah, it really does depend on when and
|
||||
where and the likes and I think Kevin may have mentioned this either on the last episode
|
||||
or possibly the episode before when we were discussing, what were we discussing?
|
||||
There was something that was particularly heavy or heavier than something like a lager
|
||||
or a light IPA session IPA or something like that.
|
||||
And we were talking about whether we would drink something like that in a hot country
|
||||
in the afternoon when the sun's about to go down, you wouldn't be sat there with an
|
||||
imperial stout, for example, but by the same token, if it was really cold weather and you
|
||||
wanted to warm up, you wouldn't have a lager.
|
||||
So it's all dependent on, yeah, so it's a really good call out.
|
||||
Right, so what have you brought with you?
|
||||
So I obviously, I listened to the episode four and you both had a, what I would call
|
||||
a Heller's Haphevitesum.
|
||||
So mom was a Francis Carter and mom was an Erdinger, I think, yeah.
|
||||
Now those two brands are very, very popular overseas.
|
||||
The other one you'll find sometimes is a Paulana, that's the other German Bavarian beer.
|
||||
I brought this evening an Erdinger Donkel Haphevitesum.
|
||||
So Haphevitesum comes in three different types.
|
||||
You have the Heller's Haphevitesum, which is the one that you drank last time, which
|
||||
is I would say the most common.
|
||||
A Donkel Haphevitesum is a dark, a much darker beer, as you'll see when I pour it.
|
||||
And then Christal Haphevitesum is like a Heller's Haphevitesum where this, the yeast and the
|
||||
wheat proteins have been filtered out.
|
||||
So you see someone drinking a Christal Haphevitesum, it looks like they're drinking something
|
||||
like a lager, you know, it's a clear, a light colored drink.
|
||||
Often with the Christal Vitesum, people put a slice of lemon in the top, which is definitely
|
||||
not my taste.
|
||||
You know, kind of summer refreshment, maybe that's what they do.
|
||||
So I brought a Donkel Haphevitesum, honestly speaking, I don't normally drink Donkel Haphevitesum,
|
||||
but I thought in the spirit of the beer garden, I would try this and see how I feel about
|
||||
it compared to the normal Heller's Haphevitesum that I would drink.
|
||||
Excellent.
|
||||
Why not?
|
||||
Experimentation in beer is one of the joys of it.
|
||||
Indeed.
|
||||
What did you bring, Dave?
|
||||
Before we get onto that, I want to just want to clarify something, because I understand
|
||||
as stood, potentially incorrectly, the reason of Haphevitesum was that the yeast was still
|
||||
present, and that's what gave it its hazy appearance.
|
||||
So if you then filter out the wheat and yeast to make a Christal Haphevitesum, is that not
|
||||
a contradiction in terms?
|
||||
Obviously, Haphevitesum is a wheat beer, so it's still fermented with the same ingredients
|
||||
that you have for the Heller's Haphevitesum.
|
||||
There's still a lot of wheat in the mix that goes into the beer.
|
||||
The yeast doesn't have to be in the beer for it to be a Heller's Haphevitesum.
|
||||
I think it's the ingredients that you brew it with that make it the Heller's Haphevitesum.
|
||||
It's just that the normal expectation is that it's fermented with a tertiary bottle
|
||||
fermentation, and there's still yeast present.
|
||||
Now, if you go in Germany, actually you'll get Heller's Haphevitesum draft, it doesn't
|
||||
have to be in a bottle.
|
||||
Normally people will be drinking Heller's Haphevitesum, but say, dunkel is another option,
|
||||
Crystal is another, I would say less popular option, but it is still there for those
|
||||
at once.
|
||||
Understood.
|
||||
That's an education for me, so I appreciate that.
|
||||
Thank you.
|
||||
I don't know much about beers.
|
||||
I know what I like, and I'm willing to learn new things, but I wouldn't say I was in
|
||||
any way educated in me.
|
||||
Please don't consider me an expert.
|
||||
I know you know more than I do, so on this at least.
|
||||
Anyway, to answer your earlier question, I looked at this earlier on and actually realised
|
||||
what it was.
|
||||
I have got here, and I'm going to probably butch the pronunciation, a chuffa-hoffa.
|
||||
Ah, chuffa-hoffa.
|
||||
Try me the ten.
|
||||
Sorry, chuffa-hoffa.
|
||||
Chuffa-hoffa.
|
||||
Chuffa-hoffa.
|
||||
Yeah.
|
||||
Oh, oh, oh.
|
||||
I'm allowed to say chuffa-hoffa.
|
||||
Chuffa-hoffa.
|
||||
Chuffa-hoffa.
|
||||
Chuffa-hoffa.
|
||||
Heller's Haphevitesum.
|
||||
Yes.
|
||||
Yeah.
|
||||
But a big banner underneath it, grapefruit.
|
||||
Yes.
|
||||
And I looked at that when I saw it on the shelf in Tesco and thought that looks really
|
||||
nice.
|
||||
I was thinking it will be hints of notes of it.
|
||||
Okay.
|
||||
And then I looked at the side of it.
|
||||
It's two and a half percent, and it says it's a wheat beer mix, a mixed beer beverage
|
||||
consisting of 50% chuffa-hoffa.
|
||||
Did you say chuffa-hoffa?
|
||||
Wheat beer and 50% grapefruit drink.
|
||||
Okay.
|
||||
So it's basically, it's a mixer.
|
||||
I would actually say, the other thing about heller's Haphevitesum, which is very interesting.
|
||||
Most of the companies that I know Erdinger do, they make a alcohol-free heller's Haphevitesum.
|
||||
And you kind of think, why would you drink alcohol-free beer?
|
||||
Actually, it's quite refreshing, and it's actually taste okay.
|
||||
And it's marketed as well as like an isotonic drink.
|
||||
So it's almost market like a health drink.
|
||||
You know, you can have it on your hot summer day.
|
||||
You can have an isotonic.
|
||||
I don't know if the chuffa-hoffa is something similar, but do you like fruity beers, generally?
|
||||
Are you a fruity beer lover?
|
||||
I would say generally, yes.
|
||||
There are some beers that I think are well over the time.
|
||||
Ironically, I enjoy a sour as well.
|
||||
Some of the fruity soures really go down well, but they're not ones you can spend the
|
||||
evening with, you have one, and then go on to something a little less harsh.
|
||||
But yeah, I would say definitely I do enjoy the fruity styles.
|
||||
Given the grapefruit, I would say probably the closest I've ever had to a grapefruit beer
|
||||
before is broodog's Elvis juice.
|
||||
I think there is actually grapefruit in the brew, but it's not overly grapefruity.
|
||||
There's essence of grapefruit from it.
|
||||
It's not a smacky in the face kind of grapefruit.
|
||||
Whereas this, just by the description, I think is going to be slightly different.
|
||||
It's going to be a lot stronger in terms of the citrusy flavour.
|
||||
But yes, I do.
|
||||
I do enjoy a fruity beer.
|
||||
The other thing I did bring, and you can see it, Dave, of course, the viewers can't
|
||||
actually do have a heifervites and glass.
|
||||
Oh, very nice.
|
||||
When you watch them pouring the beer in Germany, the professional bar staff are quite amazing,
|
||||
because they can pour two bottles of heifervites at the same time.
|
||||
And the way they do it, and I've actually put a towel on my desk, so I'm not sure if
|
||||
I dare try it on air or not.
|
||||
But the bottle will go into the glass, and the neck of the bottle will be under the top
|
||||
of the liquid, and you kind of draw it out, and what happens is the beer comes out of
|
||||
the bottle and it draws the head in.
|
||||
And then, as I think Kevin mentioned in the last episode, before you've poured it all
|
||||
out, you stop, and you swirl the bottle to make sure that any yeast stuck on the side
|
||||
is released.
|
||||
And then you can pour it in.
|
||||
And if you do it right, and looking at your pictures on the previous episode, I think
|
||||
you both did it right, because you should get a reasonable head on the beer.
|
||||
So if I mean this glass is a half liter glass, it's got narrow base, and it's probably
|
||||
about 10 inches tall, and it's a half liter glass of, and there's about, probably five
|
||||
centimeters gap from the top of the half liter mark to the top of the thing, and the head
|
||||
will normally fill that gap completely.
|
||||
Nice.
|
||||
So, yeah, I don't think you have that same with the grapefruit juice, but shall I give it
|
||||
a go? Shall I go for it, please?
|
||||
Let's see if we're going to get a sound effect on what I don't know.
|
||||
Okay, let's see what happens.
|
||||
This is where I make, I don't make a complete mess of this.
|
||||
Oh, okay, I'm with you.
|
||||
So you see, I'm pulling it up, and the beer's going in, and the head is being, and then
|
||||
take it out and give it a swirl, and then pour the remainder in, like that.
|
||||
So you end up with something like that.
|
||||
I should probably take a photograph of it for the, yes, please.
|
||||
For the stone hoots.
|
||||
That's how they pull it.
|
||||
And when the, the bar staff do it, they'll knock two, two crown caps off.
|
||||
Their glasses will be lying on their side, and they'll tip the bottles and kind of pick
|
||||
the glasses up, and then do two at a time as they pull it out.
|
||||
I suppose you have to have a little bit of show boating as well.
|
||||
Yeah.
|
||||
As a bartender.
|
||||
The other thing is amazing in Germany.
|
||||
And I, I, obviously, I have to be careful because I've been going for many, many years.
|
||||
I haven't been going to bars so often in my Latte years.
|
||||
But you used to go and drink all evening in the bar, and the only way you would,
|
||||
they would know what you've bought is because they would mark with a pen on a beer
|
||||
mat on the desk where you're drinking.
|
||||
And at the end of the evening, you pay for all the drink you've had in the evening.
|
||||
So we would go, we would go to the bar in Stuttgart.
|
||||
And there would be maybe, you know, you imagine a bunch of blokes going to Germany
|
||||
from Wales to go on a business trip.
|
||||
We spend the evening on a Saturday evening in the bar and we'd drink quite a bit of beer.
|
||||
And we would literally have a beer mat covered in little marks.
|
||||
And then at the end of the evening, she would top them up and, and pay.
|
||||
You don't go to the bar to get your beer.
|
||||
The bar staff move around and they will, you can kind of ask them to get it for you.
|
||||
And they'll bring the beer and then you, the marquee card and they've ended the evening
|
||||
you settle up, you pay.
|
||||
Apparently the bar staff are financially responsible for the money.
|
||||
So they, the bar basically track him what the bar staff release and the bar staff
|
||||
then get paid by the clients.
|
||||
And I don't know, I mean, obviously they'll get their salary from the bar as well.
|
||||
The trust is incredible.
|
||||
You imagine the UK if you could drink or leaving and then pay at the end of the evening.
|
||||
I would imagine a lot of people would be, would be running.
|
||||
Yes, yes.
|
||||
Yeah, that was, that was quite a surprise.
|
||||
You would have a great evening.
|
||||
Sit under the horse chestnut trees in the beer garden and barmy summer evenings,
|
||||
you know, 25, 28 degrees, drinking, pay for the vitamins.
|
||||
That sounds like a really good thing.
|
||||
Yeah.
|
||||
I suppose the dangerous side of it is that you're not actually getting up to go and get
|
||||
your beers.
|
||||
So therefore that hurdle of saying, well, I suppose I'm going to go and get another
|
||||
round in.
|
||||
Yeah.
|
||||
It's removed.
|
||||
Yes.
|
||||
It's like these Brazilian steak houses where you all you have is a card on the table
|
||||
that tells you whether you want more food or not.
|
||||
And they'll just come bring in it to you.
|
||||
Yeah.
|
||||
It's like that, but with beer.
|
||||
Yeah.
|
||||
I mean, it sounds like my kind of place.
|
||||
Yes.
|
||||
Anyway, please go for the taste.
|
||||
As you can, well, as you can see, but just for the purposes of the podcast,
|
||||
it's very dark.
|
||||
Very dark.
|
||||
You can't see through the glass.
|
||||
It's a reason my head on it and it has claps a little bit and it will probably
|
||||
go down a bit further.
|
||||
Let's see.
|
||||
It looks quite murky.
|
||||
Yes.
|
||||
It is quite murky, a little bit dirty, even, but is it quite, what's the word,
|
||||
dank?
|
||||
Smells nice.
|
||||
Smells like a Heifer Wiesen.
|
||||
When the last show, did you chill your beer before you drank it?
|
||||
Kevin wouldn't have done because he's quite a purist.
|
||||
He doesn't chill any of his beers.
|
||||
He'd has them at just below room temperature.
|
||||
This one I took out of the fridge about two hours ago.
|
||||
So it's still chilled, but it's not cruel.
|
||||
Right.
|
||||
Heifer Wiesen, you drink chilled.
|
||||
Right.
|
||||
It's like a lager, you drink it like lager, you drink it chilled.
|
||||
It is top brood because that was the other comment you made, I think,
|
||||
at the last episode versus bottom brood.
|
||||
Most beer in the UK is top brood.
|
||||
Most Heifer Wiesen is top brood.
|
||||
Bottom brood is really lager.
|
||||
So do you know where the lager term comes from?
|
||||
I do not, but I'm pretty sure I'm about to.
|
||||
Bottom brood beer is brood colder temperatures.
|
||||
Now in German, lager is storeroom or seller.
|
||||
So if you're brewing lager, you brew it in your coolest part of the property,
|
||||
which would be the seller or maybe a cold store, something like that.
|
||||
And it's fermentation where the yeast basically settles to the bottom.
|
||||
And obviously this type of beer and ails, that type of thing is top brood.
|
||||
So the yeast sits on top and is brewed between, I think, something like 18 and 30 degrees.
|
||||
Whereas lager is probably 8 to 10 degrees.
|
||||
That's sort of a temperature.
|
||||
So it's a different process and different yeast.
|
||||
I'm going to taste this before it goes off too far.
|
||||
So go for it.
|
||||
Well, that's very nice.
|
||||
It's quite tangy and it's, I would say it's a bit more yeasty flavour than I would expect for a Heller's Heifer Wiesen.
|
||||
I guess for, I should really have both here, shouldn't I?
|
||||
So I can try them both.
|
||||
Because then we could really do a comparison test.
|
||||
But I think from, I mean, I haven't had a Heifer Wiesen for probably a few months.
|
||||
But for me, this is a little bit more yeasty.
|
||||
It's quite a tangy flavour.
|
||||
Now, the tang, because it's a, it's a common feature of all wheat beers.
|
||||
And that's coming from the yeast, is it?
|
||||
I don't know to be honest, Dave.
|
||||
I don't know, but it is, it is quite a tangy flavour.
|
||||
Maybe it is the yeast.
|
||||
That's quite nice.
|
||||
That's quite nice.
|
||||
For me, it's still a drink, you'd probably drink on a warm summer's evening.
|
||||
You know, I think it's not a, not a winter drink.
|
||||
Even though it's dark.
|
||||
Even though it's a bit dark, yes, but I don't know.
|
||||
I should really have done some research about why it's darker.
|
||||
I don't know if it's in malt or wheat to make it darker.
|
||||
This is where the notes from, from Kevin may come in useful.
|
||||
Sorry, carry on.
|
||||
And I'll do some digging.
|
||||
So the other thing I thought I would mention, have you heard of Reinheitzkabord?
|
||||
No.
|
||||
Right.
|
||||
So Germany had back in, it's an old, and I forgive, please forgive me any German
|
||||
listeners to this podcast.
|
||||
And if you have more information and want to make a show, we'd love to hear it.
|
||||
Reinheitzkabord is the German beer purity laws.
|
||||
And they were, they were brought out something like three or 400 years ago.
|
||||
And basically specified that you beer can only contain water, barley, and hops.
|
||||
I was aware of this.
|
||||
I just didn't realise the name yet.
|
||||
And you'll see it sometimes on the bottle, it'll say German purity law,
|
||||
or Reinheitzkabord or, or Gabort or something like that.
|
||||
What I did discover, which I didn't know is it actually is no longer a law.
|
||||
It's been replaced by the provisional German beer law, which now allows
|
||||
wheat molds and cane sugar in beer production.
|
||||
So technically speaking,
|
||||
writes and beer does not fit into the Reinheitzkabord.
|
||||
It doesn't fit into German, the German purity laws because it has wheat in rather than barley.
|
||||
But it is permitted under the provisional German beer law.
|
||||
But you will often see marketing blurb from beer companies in Germany saying they work to
|
||||
Reinheitzkabord, so they don't put anything else in their beer.
|
||||
I guess for me, because I spend three and a half years living in Brussels.
|
||||
Belgium beer is another case entirely.
|
||||
Belgium, the Belgians put all sorts in their beer.
|
||||
You know, they're quite happy to put more sugar in.
|
||||
They're quite happy to put different flavours in.
|
||||
I mean, I asked about fruity beer earlier on.
|
||||
There's a good collection of Belgium beer, which is very fruity.
|
||||
The other type of beer, which you'll see in Belgium is like Lembic type beers,
|
||||
where they're actually the yeast is inoculated through contact with the atmosphere.
|
||||
So most beer brewing methods, you basically boil everything to kill off all the natural yeast,
|
||||
and put your brewing yeast in to give you what you want out of the beer.
|
||||
The Lembic brewery, they pump it up to a copper tank in the roof space,
|
||||
which is vented into the atmosphere and leave it there for a couple of days to be inoculated by the yeast,
|
||||
and then bring it down and ferment it in the barrels.
|
||||
So that's another topic for another show, I guess, Belgium beer,
|
||||
because there's a Belgium beer for every single taste, I would say.
|
||||
Yeah.
|
||||
Yeah, so the German purity law has kind of guided German beer making for the like,
|
||||
at least the last couple of centuries, and it means there shouldn't be anything else in your beer,
|
||||
apart from those key ingredients.
|
||||
Right.
|
||||
So I'm just looking through the notes that Kaby gave me for this episode,
|
||||
which I haven't needed to use to be fair.
|
||||
Until now, and he does mention the Rhine Heistkabort in terms of the ghost style of
|
||||
wheat beer, because it was one of the few, it says here, it's one of the few German beers
|
||||
brewed outside the Rhine Heistkabort law, the restricted the ingredients in the beer.
|
||||
So that actually does make sense.
|
||||
He also mentions the, the Lembic ones as well.
|
||||
And the wife and I are going to Brussels in December for our wedding anniversary.
|
||||
And we have been told that it is basically one beer festival all year round.
|
||||
So I'm really looking forward to it.
|
||||
So yeah, you need to go to Delirium in the middle.
|
||||
We're having told yeah, I should make you a list action.
|
||||
There is a Lambic and if one of the traditional lambic breweries near Garçon trial,
|
||||
and they do tours and you can go and see the whole process and sample the beers at the end.
|
||||
So it's a bit like a whiskey tour, but with lambic beer instead.
|
||||
Oh, nice.
|
||||
That's definitely what we're not going for the beers, but I think we will definitely.
|
||||
Well, I didn't say we weren't going to have beer.
|
||||
Are you staying in Brussels or would you go to anywhere else in Belgium?
|
||||
I mean, how long are you there for?
|
||||
Only a few days.
|
||||
So we've got four days off.
|
||||
We'll be Eurostarring on day one, two and three will be in Brussels or thereabouts.
|
||||
And then four will be coming back on the Eurostar again.
|
||||
Yeah.
|
||||
We haven't got an itinerary yet.
|
||||
I'm sure we will do.
|
||||
But I think what we'll probably end up doing as we do with most holidays we go on is we'll get there.
|
||||
Then we'll work out what we're doing.
|
||||
Yeah.
|
||||
Sometimes you can't book so close some attractions.
|
||||
If you don't book them kind of a couple of weeks and advance, you can't get in.
|
||||
So I think that's okay in in Brussels for most things, but it's just I would definitely have a look.
|
||||
The atonium is quite interesting.
|
||||
You can actually go inside it and all the way up the top and it come all the way down through the different expeditions.
|
||||
Definitely book it in advance and I say in advance that we can be an hour in advance.
|
||||
But do it online and then you miss the cues going in.
|
||||
Yeah, what I'll do, Dave, I'll ask if there's anything else I can think of and I'll get the name of that lambic brew in.
|
||||
I'll send you an email and with the details and so on.
|
||||
Thank you very much.
|
||||
I thought about it.
|
||||
Should probably get Caroline on this show.
|
||||
Caroline is only a recent beer enjoyer.
|
||||
We went to a beer festival in Leeds.
|
||||
As soon as they could reopen after COVID, I think it was 21 and we went to a beer festival.
|
||||
And I'll tell you, social distancing during a beer festival is not the easiest thing on the world, particularly two or three hours into the session.
|
||||
If you know what I mean, but it was fantastic and we go both got sufficiently belated.
|
||||
Anyway, I would like to introduce you and the listeners to today's glass.
|
||||
I don't normally choose a special glass.
|
||||
I tend to use my Northern Monk one, but this one is special to me.
|
||||
So this is the art of Harris brewery glass, Mark two.
|
||||
So I got this when I ordered a box of beer from the art of Harris brewery, which is where Kevin is from.
|
||||
And I use this for absolutely everything.
|
||||
It had an accident in the washing up bowl over there.
|
||||
Yeah, I was gutted at least one tier was shed and I told my mum that I had this glass and I broke it.
|
||||
And she got in touch with the art of Harris brewery and arranged the delivery of a replacement.
|
||||
And along with it came this lovely drinks coaster, which I have never and will never use.
|
||||
Oh, hang on.
|
||||
Yeah, there it is in which the owner of the brewery wrote a lovely little message on the back saying
|
||||
Merry Christmas Butterfingers.
|
||||
Very good.
|
||||
So this this glass does mean a lot to me because it was generally born out of love.
|
||||
My mum and the art of Harris brewery, both conspired to get me this.
|
||||
So that is what I shall be enjoying the chauffeur, for something like that anyway.
|
||||
So let's go for the go for the poor.
|
||||
I won't get the whole thing in the glass because the glass is only a 30.
|
||||
Yes, I would say it probably is actually.
|
||||
It's a half pipe marker on it, but there's a gap above.
|
||||
So so let's go for the to get sound effect in the poor.
|
||||
Oh, that's ahead.
|
||||
Whoops.
|
||||
Okay, not proud of that poor.
|
||||
It's a good color.
|
||||
It's a gorgeous color.
|
||||
That is that is amazing.
|
||||
That is that is almost orange.
|
||||
But it's kind of like the dark orange you dissociate with, oh, I can't think.
|
||||
Almost like a blood orange, orange.
|
||||
It's yeah, it's almost like a like a hazy ginger beer kind of color.
|
||||
And that is full of grapefruit.
|
||||
It really is.
|
||||
I'm going to give that a second to settle down and then I'll try it.
|
||||
Yeah.
|
||||
Like I say, this is a two and a half percent wheat beer mix, half wheat beer and half grapefruit drink, whatever that means.
|
||||
So grapefruit drink will be a mix of juice.
|
||||
I think it said five and a half percent grapefruit juice.
|
||||
So presumably that means 2.75% grapefruit juice in the final product.
|
||||
So here we go.
|
||||
That's quite dangerous.
|
||||
That is incredibly dangerous because that is chugable.
|
||||
All right, I could, if this was in a pint glass, it could quite easily go in a couple of gulps.
|
||||
I mean, it's two and a half percent.
|
||||
It's not so so bad that you can.
|
||||
But it has a beautiful, the wheat beer is there, but it is quite subtle, which you would kind of expect.
|
||||
The grapefruit is there.
|
||||
It's not in your face.
|
||||
It's quite sweet, which I would imagine is going to be from the grapefruit mixer in it.
|
||||
If this was handed to me with no preamble whatsoever, I wouldn't have necessarily said that this was a beer
|
||||
because it is more like a, I suppose like a bitter grapefruit.
|
||||
I mean, grapefruit is bitter anyway, but there's nothing in here that says this is a,
|
||||
I don't know, maybe there is actually, there is, there is a bit of a bit of a beery taste in there,
|
||||
and particularly the tanginess of the wheat beer itself.
|
||||
I think in Germany, you're allowed to drink beer from the age of 16.
|
||||
Is that a German specific thing or do you think is that a European union?
|
||||
Well, we never had it in this country and we were in the European Union.
|
||||
So I think it's a German specific thing.
|
||||
I think you can drink, you can drink kind of beer as regarded as a low alcohol drink,
|
||||
but you can't drink spirits until you're older.
|
||||
I think that's be 18 for spirits.
|
||||
Having chosen this beer for tonight, I'm really quite pleased with it.
|
||||
I think even the wife would enjoy this.
|
||||
In fact, I think that's one of my kids that don't like beer.
|
||||
Apparently, all beer tastes like vinegar to my second child.
|
||||
How old is your second child?
|
||||
18. Oh, okay.
|
||||
Because that's normally an attitude that changes when you get to about 15 or 16, I think.
|
||||
Well, my eldest, who's 20, well, he was 20 on Monday.
|
||||
He enjoys a good beer. He enjoys equality beer.
|
||||
In fact, I sacrificed one of my imperial's 12% in a can to him.
|
||||
And he was like, this is nice.
|
||||
So he has the appreciation for it.
|
||||
And he's started to join us when we go to the annual beer festival in Sheffield.
|
||||
But every time I get a beer, I'll offer it around the house.
|
||||
See if anybody wants to try it.
|
||||
He's my 12 year old.
|
||||
And he just like looks at it and says, now you're right.
|
||||
But Ethan, my middle child, he will try it and he'll go taste like vinegar.
|
||||
But I don't think he would be this one.
|
||||
I might have to get him to try it.
|
||||
Do you think it's along the lines of, I mean, it's not obviously Hoot, which is not me,
|
||||
but Hoot was when it first came out, was to kind of alcoholic.
|
||||
Well, alcohol pop, wasn't it really?
|
||||
Yes.
|
||||
The danger of alcohol pops and any drink that has red bull as a mixer in it is that they
|
||||
don't taste like alcohol, which was probably the draw for them because it kind of opened
|
||||
up the world of alcohol to people that know what to do with it, slightly concerning.
|
||||
Yeah.
|
||||
I think with this, it probably does the same thing.
|
||||
From a flavor perspective, this has got a full of flavor.
|
||||
It's got a lovely grapefruity citrusy punch to it, which I really appreciate.
|
||||
To somebody who is expecting a beer, I think they would be quite disappointed by it
|
||||
because a two and a half percent, there's not going to be a lot of character to the beer
|
||||
itself.
|
||||
The grapefruit is doing the heavy lifting on this, most definitely.
|
||||
Do you think a refreshing drink in the middle of the day in the summer?
|
||||
Oh, definitely, yeah, definitely.
|
||||
This would sit alongside the fruit punch quite nicely.
|
||||
If you go into a bar in Germany and ask for a Radler, you'll get a basically a
|
||||
Lager and it was like a Lager Shandy in a way, Lager and that's probably two and a half
|
||||
percent by the time it's blended down and quite refreshing for warm summer's day.
|
||||
Yeah, no, absolutely.
|
||||
Yeah, I think this would be lovely for a summer's evening.
|
||||
The sun's going down, barbecue, this would fit in absolutely perfectly.
|
||||
Yeah, really impressed.
|
||||
So with your Uncle Vyson, how would you score this?
|
||||
We're doing a scoring out of 10.
|
||||
I've actually created an untapped account the last few days as well, because I'd normally
|
||||
just drink my beer.
|
||||
I don't actually keep records and so on.
|
||||
But so I would give it, I mean, I would give it eight out of 10, I think.
|
||||
But again, as I said earlier, I would qualify that by saying I would want to be in the
|
||||
right circumstance, the right place and the right weather to drink it.
|
||||
But I would, yeah, I would drink.
|
||||
I mean, I've normally asked for a hell of a Vyson, but if someone offered me this,
|
||||
I wouldn't say no.
|
||||
Excellent.
|
||||
I'm going to have to see if I can get myself one of those because that does look really
|
||||
nice, but it is slightly masquerading itself as a beer that should be heavier than it is.
|
||||
Yeah, it's 5.3.
|
||||
I didn't say that when I first opened the box, but it's 5.3 by volume.
|
||||
So, yes, it's reasonable.
|
||||
I guess that's about the same as the hell of a Vyson, you drank last week.
|
||||
Yeah, that was a 5.3, I can't remember now.
|
||||
Yeah, it was about the same.
|
||||
I was interested in the last episode, you talked about Vyson Bach, which you said,
|
||||
so I had a look when I, when I, when I, when the Vyson Bach is between seven and nine and
|
||||
a half percent.
|
||||
So I will have a look for a Vyson Bach when I'm out shopping in Germany.
|
||||
Sorry for the silence.
|
||||
Ethan is just coming to try it.
|
||||
What's your, your opinion?
|
||||
It's the verdict of that's concerning because it's grapefruit.
|
||||
Sorry, he said he was expecting it to taste like vinegar, but it was, it actually tasted
|
||||
a orange. I get it, you know, such as he's different and stuff.
|
||||
But I mean, if somebody gave you that, would you drink the whole thing?
|
||||
Isn't that the first beer I've ever offered you to try that you've liked?
|
||||
Wow.
|
||||
Oh, I suppose it would do.
|
||||
It has a beer after Tati's, after Tati's, he says, so I have to last then, Dave.
|
||||
What would you score yours?
|
||||
Well, this is difficult because what was I expecting?
|
||||
So when I bought this, it was the only one of two wheat beers that were actually in Tesco.
|
||||
The other one was the one that I had in the last episode and this one week we kept.
|
||||
I think Kevin got one of these as well, but he looked at it.
|
||||
Sorry, it was 2.5% thought, not sure about this.
|
||||
So I hope he'll, he'll listen to, well, he'll listen to this when he edits this episode.
|
||||
And hopefully he'll try it for himself.
|
||||
But if I'm treating this purely as a wheat beer, then I don't think I would score it
|
||||
particularly highly.
|
||||
If I was viewing this as somebody has given me something and I'm not too sure what it is,
|
||||
and I've tried it, then I would score it really highly.
|
||||
So I'm going to land somewhere in the middle.
|
||||
And I think given the fact that I would probably go out and buy this again,
|
||||
purely for the session ability of it to start with, but also just the pure flavor
|
||||
the flavor is is divine.
|
||||
It's absolutely gorgeous.
|
||||
I'm probably going to score this a nine.
|
||||
I don't think I would get much of agreement from Kevin on this, but I don't want to preempt him.
|
||||
So I will give him the opportunity to respond to it himself.
|
||||
I'll post this on on on tap once we finished here.
|
||||
I have taken a photograph and I will score it as 4.5 on on on tap to is an equivalent.
|
||||
But no, really nice, really nice, but I'm going to have to go out and see if I can find
|
||||
some more wheat pears locally or go to one of the beer websites and try and order something.
|
||||
I did have a look, there's a specialist beer shop in Chester, but they didn't have
|
||||
anything other than they had Paul Anna, which is, I said, the third big company.
|
||||
And they had actually did have the sherfer offer as well.
|
||||
But they didn't have any other pay for vitamins.
|
||||
When you go to Germany, nearly every brewery has their own.
|
||||
And you know, you go into a village, go into the local bar.
|
||||
It'll be the local brewery that's making the beer.
|
||||
And but the flavor is pretty consistent in my experience.
|
||||
I'm sure there's people out there that would listen to this and go.
|
||||
You're talking over Tosh and you need to.
|
||||
You need to go further on wider and because some are better than others.
|
||||
But anyway, in my opinion, it's all drinkable.
|
||||
It's all good beer.
|
||||
And I've never felt how I'd rather have a Paul Anna over a herdinger or, you know,
|
||||
this, I've never had that kind of preference.
|
||||
Okay.
|
||||
I think when you're in, when you're in Brussels, you'll be able to find some more German beer
|
||||
there as well as the Belgian beer.
|
||||
Right.
|
||||
That makes sense because it's obviously going to be easier to get hold of being
|
||||
neighbours and all.
|
||||
No, awesome.
|
||||
All right.
|
||||
Is there anything else you wanted to add?
|
||||
No, I think that's fantastic.
|
||||
And yeah, thank you very much for inviting me and I look forward to the episodes in the
|
||||
future.
|
||||
But you may get invited back.
|
||||
So that's the penalty for being here once as you may have to come back once more.
|
||||
But no, seriously, thank you Paul for agreeing to come on.
|
||||
I've really enjoyed this recording purely on the basis of finally, I actually get to
|
||||
meet you having spoken to you a number of times and I'd completely forgotten about it,
|
||||
which I apologize.
|
||||
But also I'm learning stuff as I go and that's part of what this whole experience,
|
||||
what this, this project of the beer garden is all about.
|
||||
So yeah, thank you.
|
||||
Thank you.
|
||||
Right.
|
||||
So if you're listening to this and you want to send us any feedback, then the best thing
|
||||
to do a B to leave us a comment on the Hacker Public Radio website for this episode.
|
||||
And of course, if you are of a verbose nature, then please feel free to record an
|
||||
episode in response to this one.
|
||||
That would be absolutely fantastic.
|
||||
So thank you again, Paul.
|
||||
Thank you, everybody, for listening and join us again tomorrow for another exciting
|
||||
episode of Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording podcasts, click on our contribute link to find out
|
||||
how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an onsthost.com, the internet archive and
|
||||
our syncs.net.
|
||||
On the Sadois status, today's show is released under Creative Commons Attribution 4.0 International
|
||||
License.
|
||||
150
hpr_transcripts/hpr4510.txt
Normal file
150
hpr_transcripts/hpr4510.txt
Normal file
@@ -0,0 +1,150 @@
|
||||
Episode: 4510
|
||||
Title: HPR4510: Playing Civilization V, Part 5
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4510/hpr4510.mp3
|
||||
Transcribed: 2025-11-22 15:12:47
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio episode 4,510 for Friday the 14th of November 2025.
|
||||
Today's show is entitled, Playing Civilization V Part 5.
|
||||
It is part of the series' computer strategy games.
|
||||
It is hosted by Ahukah and is about 12 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, we continue our look at the game mechanics of
|
||||
Civilization V.
|
||||
Hello, this is Ahukah, welcome to You to Hacker Public Radio.
|
||||
And another exciting episode in our ongoing series on computer strategy games.
|
||||
And we're in the middle of the discussion of Civ 5.
|
||||
And what I want to turn to today are the topics of wonders.
|
||||
Now in Civ 5 there's actually two kinds of wonders.
|
||||
World wonders are things that can be built once and once only.
|
||||
So whichever player builds it first gets it.
|
||||
If two players complete it on the same turn, the player whose turn comes first gets it.
|
||||
So if you're building one and someone gets there ahead of you,
|
||||
you'll get a little bit of cash out of the deal, but you won't get the wonder.
|
||||
Now there's also something that they call national wonders.
|
||||
And national wonders can be built once by each player.
|
||||
So you can always build a national wonder.
|
||||
You can only build it once so you have to decide which city is going to host it.
|
||||
Then in addition to that, there are international projects
|
||||
that can be built with contributions by all players and give benefits
|
||||
according to the level of contributions each player makes.
|
||||
Deciding which ones you want to pursue and when is important.
|
||||
And you have to accept that you won't always succeed with world wonders,
|
||||
with international projects, whatever.
|
||||
If you lose out because another player built it first,
|
||||
you get some money in exchange, but not that much.
|
||||
It's still in that loss.
|
||||
So let's get into all the details here.
|
||||
Listing all of the wonders and related items here would just take up a whole lot of time.
|
||||
And the lists are already available online, such as at the Civilization Wiki.
|
||||
And I've put a link in the show notes for that.
|
||||
So consult that list for all of the details.
|
||||
There's a lot of them and each one provides different benefits.
|
||||
So some study here is warranted.
|
||||
Now world wonders are worth building if you want the benefits they provide.
|
||||
For example, if you build the great library, you get three science additional per turn,
|
||||
one free technology, and a free library in the city where it is built.
|
||||
And you also get an additional great person point each turn towards getting a great scientist.
|
||||
And it has two slots for great works of writing.
|
||||
Now if you are intending to go for a science victory, this will be a good one to have.
|
||||
It comes early.
|
||||
You can build it once you've discovered writing.
|
||||
This illustrates a few points about world wonders.
|
||||
The first is that there is a prerequisite discovery that unlocks the ability to build the wonder.
|
||||
The great library is an ancient era wonder, so it is unlocked by a very early discovery.
|
||||
But as you continue to research technologies, you unlock more world wonders.
|
||||
When you get to the medieval era, for instance, and discover theology,
|
||||
several wonders are unlocked, such as Barobador and Hayesafia.
|
||||
And in the modern era, the discovery of radio unlocks Broadway and Eiffel Tower.
|
||||
Another point is that many, though not all wonders, provide great person points each turn.
|
||||
That is something to watch out for.
|
||||
Now, you don't need to build any world wonders at all.
|
||||
But because of the benefits they provide, it usually makes sense to build a few.
|
||||
Of course, there is a trade-off.
|
||||
World wonders require many turns to create, and there is always the chance that you will invest 20
|
||||
to 30 turns of production into a wonder, only to be beaten to it by another player.
|
||||
And there is also the opportunity cost in that while you are building the wonder, you are not
|
||||
building units, other city buildings, and so on. There may well be wonders you would like to have,
|
||||
but one of your neighbors gets nasty and you have to focus on building military units.
|
||||
That does happen, and it is part of the game. The game is always forcing you to make choices.
|
||||
And if you choose wrong, you will pay a price.
|
||||
Now, one thing you have to understand right away is that you can only attempt a few of these wonders.
|
||||
Winding up with three or four of them by the end of the game is not unusual.
|
||||
There is one way to get wonders without building them, however.
|
||||
If you conquer a city that has a wonder, you get the wonder as part of your conquest.
|
||||
Now, the other one we want to talk about here is the National Wonders.
|
||||
That is one that you know you are going to be able to get. So, you are never going to lose out.
|
||||
But there is a prerequisite, and the prerequisite is you need to have built a certain building
|
||||
in each city you control directly. So, there is a concept of puppet cities. You can ignore puppet
|
||||
cities for this purpose. So, what do we mean by that? Well, let's say you are going for a science
|
||||
victory. Well, one of the National Wonders you would like to get is the National College.
|
||||
Now, that is unlocked when you have built a library in each city you control directly.
|
||||
It gives plus three science per turn, plus a 50% increase in the science output of the city where
|
||||
it is built. You get the maximum benefit from this wonder if you build it early, which suggests
|
||||
that you don't over expand too early. I would not go past four cities before I got libraries
|
||||
in all of them and built this National Wonder. Another example is the National Epic, which requires
|
||||
a monument in each city. Well, one little trick is you can choose the tradition policy tree and
|
||||
get legalism, and it will give you a free monument in your first four cities. If you only have four
|
||||
cities, you have your prerequisite right there without building anything. Once you understand how
|
||||
the National Wonders work, you see how the game is nudging you towards building only a few cities
|
||||
and not overexpanding. Many of the best players advise that you build no more than four to five cities.
|
||||
Now, there's also something called Guilds that you can build, and they're like National Wonders
|
||||
in that each player can build them once per player. They're designed to help you earn great writers,
|
||||
great artists, and great musicians. So, they are key if you're going for culture victory,
|
||||
but they're worth building for anyone because culture is how you get added policies, and we've
|
||||
already discussed that. Then there's projects. These come late in the game and can give you powerful
|
||||
options. One is the Apollo Project, which is necessary if you want to win a science victory since it
|
||||
lets you construct spaceship parts. The other is the Manhattan Project, which lets you construct
|
||||
nuclear weapons that may or may not be necessary depending on the circumstances of your game.
|
||||
Then there's International Projects. There are three of these international projects.
|
||||
The International Games, the International Space Station, and the World's Fair.
|
||||
Now, these do not just show up in the production queue. They have to be voted on in the World Congress.
|
||||
If one of them is proposed and the vote is positive, the clock starts to get the project done.
|
||||
Each empire can make their own decision about how much production they want to put into it,
|
||||
but you can have all empires participate, and you can decide to have multiple cities devote their
|
||||
production to the International Project if you wish to. The top three contributor empires are
|
||||
rewarded, so if you're the fourth or lower, you've simply lost the production you added.
|
||||
So this is a go big or go home situation in my view. Of course, it takes a lot of production to
|
||||
build these, so if you have other problems such as an ongoing war, you will probably have to pass.
|
||||
Now what are some of the strategic considerations? There's far too many wonders for you to contemplate
|
||||
building all of them, so you have to consider selectively to attempt to build one or more.
|
||||
Generally, you'll be in competition with other empires, so you need to have a city with high
|
||||
production that you can build a wonder in. Even so, you will sometimes lose out.
|
||||
There are ways to rush a wonder if it is really vital to your strategy. First, adjust your
|
||||
population in the city to focus on production. Second, make sure you have high production
|
||||
tiles, such as mines. Then if this focus causes food output to fall, you can use caravans to bring
|
||||
food to a city. Caravans are normally used for foreign trade, but if caravans are sent between
|
||||
two of your cities, they bring in food. Finally, if you have untouched forest tiles, you can use your
|
||||
workers to cut down the forest with edge production to your city. You can only do this once,
|
||||
of course, on any given tile, but it is a frequently used technique. Players refer to this as
|
||||
chopping to get the wonder. If you take a look at the list of wonders that I linked to,
|
||||
you will see the benefits of the wonders are quite varied. Some will help you get a science
|
||||
victory, some a culture victory, others a diplomatic victory, and so on. So you shouldn't just build
|
||||
random wonders really willy-nilly. You should have a strategy for getting a victory and pick wonders
|
||||
to focus on in line with that strategy. Here are a few suggestions. For science, two of the top
|
||||
ones I would suggest are the great library and the porcelain tower. For domination, the statue
|
||||
of Zeus and the Brandenburg Gate. For culture, Parthenon and Sistine Chapel. Now diplomatic is a
|
||||
little different. This one is indirect. The key to winning a diplomatic victory is to ally with
|
||||
virtually all the city-states. This can be done in two ways. First, station a spy in the city-state
|
||||
to rig elections in your favor. Second, shower them with money. So if you want to try this type of
|
||||
game focus on money. So, classes in Machu Picchu are examples of very useful wonders for going
|
||||
for a diplomatic victory. Now these are just a few obvious ideas, but wonders that increase production
|
||||
are good for any strategy, particularly a domination strategy. Since if you can crank out military
|
||||
units faster than your enemy, you are quite likely to win. The point is that you have to make choices.
|
||||
There are always competing demands on your resources, and you have to know which wonders you really
|
||||
want to compete for, which ones are nice to have, and which ones you can safely skip.
|
||||
Personally, I rarely attempt to build any ancient era wonders. The reason is I tend to focus on
|
||||
exploration and building up my empire in the early turns. Later on, if I'm in a more comfortable
|
||||
situation with 4-5 well-developed cities, I will build more wonders. But often when I do lose
|
||||
because I don't have anything else to build that is a priority, and I always prioritize the production
|
||||
buildings. When a workshop becomes available, for instance, I will make it the next thing in my
|
||||
queue for all of my cities. Now, if you have high production cities, you'll be successful more
|
||||
often in building wonders. So, that's enough on this topic. This is Ahuka for Hacker Public Radio,
|
||||
signing off, and as always, encouraging you to support free software. Bye-bye.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org. Today's show was
|
||||
contributed by a HBR listener like yourself. If you ever thought of recording podcasts,
|
||||
you can click on our contribute link to find out how easy it really is. Hosting for HBR has been
|
||||
kindly provided by an honesthost.com, the internet archive, and our syncs.net. On this
|
||||
otherwise status, today's show is released under Creative Commons, Attribution, 4.0 International
|
||||
License.
|
||||
345
hpr_transcripts/hpr4511.txt
Normal file
345
hpr_transcripts/hpr4511.txt
Normal file
@@ -0,0 +1,345 @@
|
||||
Episode: 4511
|
||||
Title: HPR4511: Audio-books
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4511/hpr4511.mp3
|
||||
Transcribed: 2025-11-22 15:15:02
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4,511 from Monday the 17th of November 2025.
|
||||
Today's show is entitled Audio Books.
|
||||
It is hosted by Lee and is about 30 minutes long.
|
||||
It carries an explicit flag.
|
||||
The summary is Lee walks through his audiobook library.
|
||||
Hello I'm Lee.
|
||||
Today I'm going to walk through the books in my audiobook library.
|
||||
I don't have an audible subscription at the present time.
|
||||
I have had one for some years though.
|
||||
I first started an audible subscription in about 2014.
|
||||
On this PC I'm using OpenAudible to access the books.
|
||||
I've also backed up the majority of my purchases, ZVET MP3 or .M4B files.
|
||||
Typically I'd actually listen to them via Bluetooth headset, pad to my iPad.
|
||||
I have in the past and I did three audio books from Project Gutenberg.
|
||||
At one time I got four DVD ROMs worth of supposedly free audio books posted to me
|
||||
from an online marketplace.
|
||||
Doing this seemed a little shady.
|
||||
However it turns out I've never listened at length to any of these two aforementioned sources.
|
||||
As you'll hear my favourite genre is sci-fi, then my taste evolved over the years.
|
||||
Also like some genres of non-fiction.
|
||||
My first ever audible purchase was Excession, Culture Series,
|
||||
Book 5, Buy in and Banks, Read by Peter Kenny, 16 hours long.
|
||||
The story was set in the far future mainly about sentient starships.
|
||||
There were also some human characters, an interesting part of the plot was
|
||||
people could through genetic re-engineering reassign their
|
||||
agenda within a short space of time.
|
||||
Right now I don't exactly remember how the plot transpired,
|
||||
but I did find the author's work worth listening to.
|
||||
Next was The Martian by Andy Weir, rated by RC Bray.
|
||||
I've seen an interview with the author on one of the
|
||||
this week in tech video podcasts and the then upcoming movie had probably prompted this.
|
||||
It's a story about an astronaut left for dead, the only inhabitant of an entire planet.
|
||||
At the time I listened to this I was moving out from my parents' house into a flat
|
||||
and did not have a TV or good internet so I was quite absorbed by this book
|
||||
and the theme of isolation was quite apt.
|
||||
My next book was Alien, Out of the Shadows, written by Tim Levin,
|
||||
Dirt Mags, and narrated by a host of readers, including the famous Rutger Hauer,
|
||||
who takes on the voice of the android famously played by In Home
|
||||
in the original film Alien.
|
||||
I chose this due to my obsession with these series of films
|
||||
that had at one point seen me studying the Open University course called
|
||||
Gender Technology in Representation, simply because these films were on the syllabus.
|
||||
My full 4J book was another sci-fi offering, this time an anthology from multiple authors called
|
||||
The Best Science Fiction of the Year, Volume 1. It had a whole bunch of different stories,
|
||||
most of which I found engaging. My next book, which in fact turned into a whole series of books,
|
||||
I got from a recommendation by Steve Gibson on his security now podcast.
|
||||
For some years I'd found myself unwittingly involved in cyber security,
|
||||
as I had to get a web server to pass credit card compliance scans every three months.
|
||||
I've been watching the other podcasts on the Twitch network.
|
||||
After watching security now a few times, I got quite obsessed by the topic,
|
||||
to the extent I later studied it at postgraduate level.
|
||||
The series of books recommended were Rick Brown's Frontier Saga,
|
||||
the first one being Aurora CV-01, narrated by Jeff Caffer.
|
||||
I won't list all the books in the series, they are about interstellar war,
|
||||
though with humans only, no aliens. That's as far as I've got through them at least.
|
||||
Including the one just mentioned, my next 10 audio books were from this series,
|
||||
each book is about 5 hours long. I'd sometimes be listening
|
||||
while playing computer games solo, like Call of Duty, Modern Warfare,
|
||||
since these two activities sometimes could complement each other.
|
||||
Possibly because I reached a natural pause in the storyline,
|
||||
next I broke away and went for something totally different.
|
||||
This was a translation of Ancient literature from the Far East, called The Journey West.
|
||||
I knew of this tale from a TV adaptation I'd watched as a child called Monkey,
|
||||
and the writer of the audio book was one of my favourite childhood presenters,
|
||||
also an accomplished comedian, called Kenneth Williams.
|
||||
The next book was another one by Andy Weir.
|
||||
This was set on a city on the moon and was called Artemis,
|
||||
read by Rosario Dawson. I don't remember the plot too well,
|
||||
the cool parts I like, similar to with the Martian,
|
||||
were characters navigating the realities of living daily life in this
|
||||
potentially hazardous environment. That sort of thing has often been a staple of sci-fi.
|
||||
I remember even from Alpha C Clark's books, like A Fall of Moon Dust.
|
||||
At that point I think someone had suggested some Japanese literature to me,
|
||||
and I ended up being interested in a book called Colorless,
|
||||
Sukuru Tazaki, and his use of Pilgrimage by Haruki Murakami,
|
||||
read by Michael Fenton Stevens. This is a realistic book
|
||||
about man's life, dissociation from the friends he knew during his coming of age,
|
||||
and reconnection with his past. The next book I will not mention, the author,
|
||||
since he has since fallen to distribute, but it was about myths from Norse mythology.
|
||||
The next book was stories from Celtic mythology,
|
||||
classic stories of the Celtic gods goddesses, heroes and monsters,
|
||||
classical mythology series book two by Scott Lewis,
|
||||
and read by Oliver Hunt. I studied some of these poems about
|
||||
its use by pronunciation, Kahulhan, in high school. At this point I revisited a series of books I'd
|
||||
read in print decades previously. The next books were June, June Messiah,
|
||||
and Children of June by Frank Herbert, with various narrators. It's a sci-fi inverse of the far
|
||||
future, interspersed with mystic elements, and the idea of engineering religions. Then I
|
||||
listened to a book telling the true story of the authors, C.S. Lewis and J.R.R. Tolkien.
|
||||
The book is called Band of Snatch by Diana Pavlat Glyar, and was read by Michael Ward.
|
||||
It was fascinating to hear about the collaboration between these and other authors,
|
||||
in a writer's club at the pub in Oxford in England. The fighters by C.J. Schivers,
|
||||
read by Scott Brick, was another non-fiction book. It was about people in the military,
|
||||
particularly those fighting overseas in the Middle East. It was interesting for anyone who'd
|
||||
been following international events following on from 2001, to see the conflicts from a
|
||||
not often misrepresented or untold perspective. The next book was Masters of Doom by David Kushner,
|
||||
and narrated by Will Wheaton of Star Trek fame. It again is non-fiction, about the programmers
|
||||
who created the eponymous 3D First Person Shooter. I have to say I love this kind of non-fiction.
|
||||
Finally I returned to fiction with another recommendation from Security Now Steve Gibson.
|
||||
This was salvation by Peter of Hamilton, read by John Lee, and it had my attention, but
|
||||
fell a little flat on me, if I recall. But my next book was another sci-fi book. This was
|
||||
from the expand series by James S.A. Corrie. I was an avid viewer of the TV series and had got
|
||||
impatient waiting for the next season to come out to see what happened next. The book was called
|
||||
Subbola Burn, narrated by Jefferson Mace. Then it returned again to non-fiction,
|
||||
this time with a journalistic style of book. A series of different stories put together called
|
||||
the John Ronson Mysteries, read by the author himself. This tells his true life interactions with
|
||||
well or lesser-known people in somewhat offbeat scenarios that all seem to tell us interesting
|
||||
things about the culture we live in. My next purchase was linked to my studies. The short title
|
||||
is simply Data Science, the full title being too expansive to repeat. It was by Herbert James
|
||||
and read by Sam Slydle. Then came another non-fiction by Adam Naiman, read by Rob Shapiro about the
|
||||
director's known collectively as The Cone Brothers. The book's catalogue each of their films to date
|
||||
at the time it was written. It was only reading this that I realised I'd fallen hookline and sinker
|
||||
for the statement in the intro to the movie Fargo that it was based directly on actual events
|
||||
with only the names changed. This book was followed by another of the expand series called Nemesis
|
||||
Games from the author and narrator mentioned previously. At this point in time I was trying
|
||||
moving out from my parents again and had gone into temporary accommodation. My key work
|
||||
helped me navigate this process. It was very much into philosophical and psychology books.
|
||||
And I believe he recommended my next book. This was The Ten Types of Human by Dexter Dias
|
||||
and the audio book was narrated by Tom Klake. It was 26 hours long so I got my money's worth.
|
||||
Now back to sci-fi and this was another book with the author interviewed on one of the shows of
|
||||
the This Week in Tech Network. It was called Delta V by Daniel Suarez and read by Jeff Gerner.
|
||||
I quite like this for perhaps not too distant future telling of potential working
|
||||
on the calamity and the beginnings of the era of asteroid mining. It had both elements of adventure
|
||||
and suspense as well as sci-fi and survival. A little similar to the Martian. I then continued with
|
||||
another book in the June series called God Emperor of June. This was read by Simon Vance. The next
|
||||
book was in my favourite genre of true life tech work called Dreaming in Code by Scott Rosenberg
|
||||
read by Carl McCarley. I don't remember the exact contents as it blends in my mind with other
|
||||
similar books. This was followed in a similar vein by Ghost in the Wires by Kevin Mittnik
|
||||
and William L. Simon read by Ray Porter. It was a realistic first-hand portrayal of being an
|
||||
actual hacker whose obsession with this special interest brought him into serious trouble with the
|
||||
law in the early days of hacking as we know it. Then I seem to take another recommendation
|
||||
from Steve Gibson and listen to Gibraltar Earth and Gibraltar Sun by Michael McCollum.
|
||||
This was about discovery of imminent danger from the stars and the proactive attempt to save
|
||||
humanity from being enslaved by an alien empire. I ended up rather skimming the second book,
|
||||
but I remember the first book in the series had a really good twist at the end, which out of
|
||||
character for me I'll try not to spoil by revealing it. If my nature is correct, I have here Ramon
|
||||
a campo down as the writer of the second book at least. Now I seem to be struggling for inspiration
|
||||
and took a leap into Shakespeare, listening to another adaptation of the Tragedy of King Rich in
|
||||
the Second. Perhaps I was still also trying to figure out why I failed my high school English literature
|
||||
exam back in the day, since this was only of the text I studied back then that at the time I just
|
||||
didn't get what it was about or what the point of it was. My next book was recommended to me by a new
|
||||
friend I'd made called Beno. It was by the comedian Ben Elton and was called Blind Faith
|
||||
narrated by Michael Maloney. It tells an o'wellian story of a future where social media does not
|
||||
just dominate life, but is central to everyday existence. In this future, science is demonised
|
||||
as heresy and things like inoculations to childhood illnesses are only accessible on the black
|
||||
market and obtaining one force's parents to risk severe punishment by the state. I think my
|
||||
key worker had recommended the next book which was called Talking to Strangers, what we should know
|
||||
about the people we don't know by Malcolm Gladwell. It takes a studied look at human nature and how
|
||||
humans have adapted to the modern age. Another fiction book I then listened to was The Hidden Life
|
||||
of Trees by Peter Moirleben and read by Mike Grady. It is quite in depth and I remember touches on
|
||||
theories that would be not out of place in a James Cameron film or Orson Scott Card novel.
|
||||
With Trees in an ecosystem being able to communicate with each other in some restricted sense.
|
||||
My next book was actually a physical book I found on the bookshelf at a day centre where there
|
||||
was an employment service. It was called Orcs and irrespective of the content, they had me at the
|
||||
title given my love of games like Walkraft 2, role-playing settings such as Warhammer 40,000
|
||||
and Tolkienist worlds in general. I ended up getting the audio book finding it easier to take in
|
||||
than reading the book. Although even in this form I ended up skimming or sleeping through much of
|
||||
it. This book was written by Stan Nichols and read by John Lee. Another book recommended by
|
||||
my key work was Behave by Robert M. Sapolsky and Read by Michael Goldstrom. It is again about
|
||||
the science of psychology, the human mind and modern culture. Strangely now I find my next book
|
||||
from Office E. Clarke was called City and the Stars, Read by Mike Grady but I have little recollection
|
||||
of it at all. Now I went back to historical fiction prompted perhaps by the occurrence of me
|
||||
moving into a new flat that was adjacent to a far eastern mini supermarket. The book was called
|
||||
The Forbidden City by Charles River, read by Colin Fluxman. It was quite short just an hour or so.
|
||||
I'm not sure if this predated the adaptation from Apple TV but I really listened to a book I'd
|
||||
read decades previously called Foundation by Isaac Asimov and rated by William Hope. It was only
|
||||
on this listening that I realised how dated it was, for example with every significant character
|
||||
being male. And on that I do not excuse myself from the fact that every single book I'm
|
||||
mentioning today perhaps with one or two exceptions has had an apparently male author. I next listened
|
||||
to Children of the Mind by Olsen Scott Card, read by Gabriel D'Aquir and John Rubin Stein. This
|
||||
continues the series that began with Ender's Game, a book I'd read actually before the film
|
||||
coming out. Another exploratory for eight into ancient cultures took the form of listening to
|
||||
the Epic of the Persian Kings with a notable introduction from Francis Ford Coppola. I have to say
|
||||
I remember very little of this and may not have listened to all 12 hours. The next book I'll
|
||||
meet due to the current disrepute of the author, as mentioned previously, but was a sci-fi fantasy
|
||||
bridging time space heaven and hell. The key narrator James McAvoy portrays the protagonist
|
||||
very well. Next was a nonfiction book about the true story of a female hacker called the
|
||||
cuckoo's egg written by Cliffsk doll and read by Will Damron. I forget exactly how I ended up
|
||||
listening to the next book, but it was called We The Living by Anne Rand, read by Mary Woods.
|
||||
It was a story set in Russia many decades ago and I did not get the point completely, had read
|
||||
some literary criticism about it. And it seems to be about whether serving the self isn't
|
||||
intrinsically valuable goal, especially when the culture you might be in is ostensibly all about
|
||||
serving society. I gathered this book may have been politicised to the extent it may be hard
|
||||
to appreciate this work of fiction on its own merits nowadays. The clock mirage was a book I listened
|
||||
to by Joseph Mazer, read by Keith Salon Wright, unsurprisingly about different concepts of time.
|
||||
As an experimenter in creating software for my friend Beno who devised his own time system,
|
||||
this was something that at least peaked my interest. The next book was instantalled to my studies
|
||||
at the time called The Psychology of Information Security by Leran Zinnatoulin, read by Peter
|
||||
Silva Leif. It was only two hours or so long. The next book I read after that I did not remember
|
||||
clearly. It was called On Psychology Illustration in Psychopathology written and read by Jay Z Murdoch
|
||||
and I must have come to it from my interest in mental health, but did not listen to it
|
||||
since. Then I was back to historical nonfiction with a book called GCHQ Centenary Edition
|
||||
by Richard Aldrich, read by Peter Noble. This may have come about through my interest in
|
||||
cybersecurity and modern technological espionage, wanting to look back at this fascinating
|
||||
institution with a remit that now includes protecting UK citizens from cyber threats. I've now
|
||||
circled back to almost my first author Andy Ware with the novel Project Hell Mary. This I
|
||||
found thoroughly enjoyable, even in so much as it puts the current threats to the world in perspective
|
||||
with the idea that something might come entirely off left field, trumping all of those things.
|
||||
If you don't want spoilers in my brief explanation of the plot and I suggest skipping ahead a few
|
||||
seconds. Basically, a scientist discovers an unlikely form of microbial life that exists in space
|
||||
and threatens the output of the Sun. This essentially leads him to going on a one-way trip into the
|
||||
foyer to ask aliens how they survived the same catastrophe. I love this book, even with a joking
|
||||
reference at the very end to an earlier book. Back to tech, nonfiction, I then listened to Sid Mayer's
|
||||
memoir, a life in computer games by himself, and Jennifer Lee Noonan, read by Charles Constant.
|
||||
If you like old computer games like SimCity, this is more worth the read or listen. The next book
|
||||
was a textbook related to my studies at the time. This was Dockery in Action by Jeff Nicholoth,
|
||||
read by Aidan Humphreys, and listened to a couple of books by Neil Stevenson, the first novel
|
||||
cryptonomicon, read by William Duffrey. Weaves between World War II, espionage, and near- and modern
|
||||
date computer hackery. The second book, Anatham, read by Oliver Wyman and others, was about the
|
||||
inhabitants of a scientific monastery in a world not to unlike a future version of our planet,
|
||||
discovering a spate scrapped from a parallel universe. Between these two novels, I've missed out
|
||||
a religious fictional novel called The Testament of Mary by Colm Toibin. This retails some of the
|
||||
story at the centre of Christianity from a different perspective, with a somewhat light touch,
|
||||
suggesting events rather than being thoroughly explicit. The next true life story is about a
|
||||
modern day outside by all accounts, called The Stranger in the Woods by Michael Finkel,
|
||||
read by John Johnson. This is about someone who leaves society and goes to live in complete
|
||||
isolation for decades in the woods, barely surviving, sometimes having to steal to survive,
|
||||
hence his eventual prosecution, which we're told about from the beginning. With more and more
|
||||
details about different aspects of this life, being filled in from chapters to chapter. Next,
|
||||
I discovered what a sum of my favourite books. Those Warhammer 40,000 Far Dark Future books by
|
||||
Dan Abner. These are quite gritty with lots of action and tech we would consider futuristic now,
|
||||
but in the far future is considered to be ancient. The lore to recreate it haven't been lost.
|
||||
He has a cast of characters not out of place in the real role-playing adventure,
|
||||
heroes who are quite often antiheroes, given they work for a somewhat literally xenophobic
|
||||
empire of humanity, where aliens are seen as a threat. There are a good smattering of monsters
|
||||
from the realm of chaos, which one might well call demons. The first series of these books
|
||||
centers around an imperial inquisitor called Eisenhorn. The second series is about the adventures
|
||||
of another inquisitor called Ravenna. The latter is a unique hero being completely paralysed
|
||||
due to events happening in the first series, but he has very strong psychic abilities which make him
|
||||
formidable at his job of dealing with threats to the empire. Morality is often in question,
|
||||
with the heroes sometimes at odds with the authorities who put them in their position. I won't
|
||||
list all these books as there are quite a few, though each one is quite substantial, more than
|
||||
just an episode, more a complete story in its own right, though the characters and stories from
|
||||
novel to novel are generally linked. The next book is Have Space Suitable Travel by Robert A.
|
||||
Highline, read by Martin Jurenski, which is a lighthearted adventure about a high school kids
|
||||
pursuit of adventure and getting more than he bargained for. Then was another book by the aforen
|
||||
not mentioned cancelled author. This had notable narration from as well as James McAlphoy,
|
||||
also Brian Cox, the actor not the physicist, John Liff Goe and Bill Nye. The next book was
|
||||
Claren the Sun by Katsuo Ishiguru, read by Sura Siu, about a terminally old girl who buys a robot.
|
||||
The story is told from the robot's perspective. Ishiguru is probably most famous for the novel
|
||||
remains of the day. My favourite Japanese literature led me to Sun and Steel by Yukiya Mishima,
|
||||
read by Matthew Taylor. This outlines an interesting perspective on the world and the events of
|
||||
the mid 20th century, if nothing else. Then I think the next book may have been another Steve
|
||||
Gibson recommendation, called The Silver Ships by S. H. Dukea, read by Grover Gardner,
|
||||
and I am somewhat ashamed to say I recall very little of it at all. My previously mentioned
|
||||
interest in history and literature led me to a book called The Globe, Life in Shakespeare's London
|
||||
by Catherine Arnold, read by Claire Stanford. This talks about some of the realities of that time
|
||||
period, the context of the plays and the Bard's career. Then I listened to another Katsuo Ishiguru
|
||||
novel called The Berry Giant, read by David Horowitz. This is set in a semi-fantastical time in
|
||||
England, when the Saxons were mixing with the native inhabitants. It tells the later lives of some
|
||||
characters from King Arthur, but is framed as a love story between a now elderly couple
|
||||
as they seek eternity together. The next book then is a book in the realm of writing the
|
||||
author Chuck Pahal New York, describes his transgressional fiction. It is highly historical,
|
||||
and on the face of it describes the adventures of an adolescent girl,
|
||||
finding herself passed away and in hell. The next book, Fallen Dragon, was a book by Peter
|
||||
F. Hamilton, read by John Lee. This was definitely a Steve Gibson recommendation. It's quite an
|
||||
explicit book and tells the lives of people in the future dealing with political issues,
|
||||
and the life of a man who joins the military then inadvertently comes across highly
|
||||
advanced technology from another civilization. It's a complex narrative spanning many years.
|
||||
Finally enough, at this point, I must have decided to continue with the Rick Brown Frontier Saga,
|
||||
though as the books are so numerous, I'm not detailing each one. After watching a film,
|
||||
I was recommended to read the non-fiction novel on which it was somewhat loosely based.
|
||||
This was The Revenant by Michael Punki, and the audio book was read by Jeff Harding. This
|
||||
brings me to a novel that was recommended to me at a support group I was attending,
|
||||
that it had ostensibly nothing to do with the reason we were there. This was tightest grain,
|
||||
the first of the gormon-gast novels by Mervyn Peak. It is long an epic in nature,
|
||||
setting a sort of medieval world for apparently European characters. Then I'll listen to some of
|
||||
the works of Edgar Allan Poe, read by Jonathan Kebel, and Peter Noble. Mainly these are short
|
||||
stories, also poems. The stories are all quite atmospheric and are imaginative, while also
|
||||
setting their historical context that was contemporary when they were written. The next novel I
|
||||
listen to, not forever, but for now. Again, in the realm of transgression or fiction by Chuck
|
||||
Pahal Nguogh, is the strangest of love stories, and covers some quite out there topics that can
|
||||
certainly be considered obscene. It's both tongue in cheek and satirical, probably not to many
|
||||
people's tastes unless you get where the author is coming from. It is very well read by Raphael
|
||||
Corkhill, though. I then listen to the sequel to tightest grain, called gormon-gast, read by
|
||||
the same narrator as the previous book in the series. The prince, who was an infant in the first
|
||||
novel, knows growing up. We see the character Steerpite, one of the key protagonists of tightest
|
||||
grain, become the antagonist. This is something I did not see coming, for the hero to become an
|
||||
all-out villain. Then, a book called British Woodland, is a nonfiction book for one of my favorite
|
||||
TV presenters, Ray Mears, who also narrates it. It goes beyond talking about trees and delves into
|
||||
how people all over the world lived in ancient times, using the reverses at hand. A canticle for
|
||||
Lieberwitz by Walter M. Miller, Jr., read by Tom Wiener, is another famous literary novel,
|
||||
I not encountered, but possibly came to me algorithmically. I did not get into it too deeply.
|
||||
It carefully makes real for the reader, a long-term future encompassing repeated cycles of scientific
|
||||
progress, leading each time to nuclear war. That, to be honest, seems a bit dated as future is
|
||||
devised in the past often do. The narrative sometimes makes heavy reference to religious symbolism.
|
||||
Moving the web is a book by Tim Berners-Lee, the inventor of the worldwide web,
|
||||
who also narrates the audio book. It's quite interesting to think about the way the web
|
||||
was destined to go because of technology and culture and economics, but also interesting to wonder
|
||||
if the original vision could be recaptured now much later in the game. The plum in the golden
|
||||
vase is a translation by David Todd Roy of a quite risque set of tales that follows some characters
|
||||
in medieval China. It is read by George Batman. I not realised how explicit it was going to be when
|
||||
I started listening, and this goes beyond what you might read in Chaucer's The Canterbury Tales
|
||||
even. It has an episodic or my so-pop quality, and the authorship is unknown. Stranger in a strange
|
||||
land is a book by Robert A. Heindland, read by Martin McDougall. It follows a man brought up by aliens
|
||||
with special powers as he returns to earth and has to gun the run ending up staying with an old man
|
||||
who runs a kind of commune, providing him sanctuary. A quasi-religion in shoes,
|
||||
though set in the future the context centers on sexual political and religious issues
|
||||
that were prevalent in the 50s and 60s America, like some works of fiction that may have been
|
||||
forward thinking at the time they were written, this might now suffer from being dated.
|
||||
My next book I listened to was Freakonomics by Stephen D. Levy and Stephen J. Dubner,
|
||||
narrated by the latter. This is a set of journalistic essays that tell some stories about
|
||||
social phenomena, especially in the west over the course of the last century and more recent
|
||||
decades, all through the lens of statistics, human behaviour and money. The pragmatic programmer
|
||||
by David Thomas and Andrew Hunt, read by Anna Katarina, is a guide for anyone doing serious
|
||||
software development of any kind. I like the style and what it has to say, at risk of putting
|
||||
myself into trouble with the person who has agreed to offer feedback to my script for this episode,
|
||||
I admit I struggled a bit with the tone and female American accent of the narrator.
|
||||
Nearly at the end, since I put my subscription to Audubon indefinitely at hold recently,
|
||||
not for any other reason, but for a while my brain was processing a lot and I was getting
|
||||
diminishing returns from listening to new material. I listened to I'm starting to worry about
|
||||
this black box of doom by Jason Pargin, narrated by Ari Fliakos. He has a central character
|
||||
who is certainly depicted as being neurodivergent and suffering with anxiety. This was not such a long
|
||||
book, but I could not make it my way to the end. I normally like satire, but this was not hitting
|
||||
the spot for me. It was well written, but was leaving me quite depressed about the things it was
|
||||
referencing, rather than getting that it was a setup that would later have a payoff. The next book
|
||||
I must have bought to use up my final credits but not listened to. I think it was after visiting
|
||||
the Imperial War Museum in London that I saw this and saw positive reviews. I've probably been
|
||||
searching for something related to the First World War. It's called Birdsong by Sebastian Fulkes
|
||||
by Harry Lloyd and Pippa Bennett Warner. The penultimate book I listened to was The Loosen
|
||||
Defense by Vladimir Nabokov, read by Mel Foster. This was recommended to me by friend who's
|
||||
an avid chess player and also into this author's work. The final book is The Three Body Problem
|
||||
and I was listening to some of this while I was on holiday in Netherlands recently. The authors and
|
||||
narrator have names I won't try to pronounce correctly, but the title is unique and easy to look
|
||||
up. It was made into a TV series though I've not watched it. It is set at different time periods
|
||||
and the main premise is normal laws of physics are all screwed up and characters experience things
|
||||
as a chess basically that someone is playing with their reality. I won't try to talk head
|
||||
about what I've not got to yet, but suffice to say, Earth is in danger and there's a lot the
|
||||
characters have to uncover before they can even start addressing the problem. This brings me to the
|
||||
end of my list. I found this interesting myself uncovering what got me to listen to different
|
||||
audio books, whether it was some algorithm or instance in my life or just random chance.
|
||||
I hope you might have found some of this interesting, even sparking and interesting books you'd
|
||||
like to read or listen to yourself. Anyway that's all for now, thanks for listening.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio does work. Today's show
|
||||
was contributed by a HBR listener like yourself. If you ever thought of recording a podcast,
|
||||
you click on our contribute link to find out how easy it really is. Hosting for HBR has been
|
||||
kindly provided by an honesthost.com, the internet archive and our syncs.net. On this
|
||||
otherwise status, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
License.
|
||||
352
hpr_transcripts/hpr4512.txt
Normal file
352
hpr_transcripts/hpr4512.txt
Normal file
@@ -0,0 +1,352 @@
|
||||
Episode: 4512
|
||||
Title: HPR4512: HomeAssistant - Nmap ("Network Mapper")
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4512/hpr4512.mp3
|
||||
Transcribed: 2025-11-22 15:16:13
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4,512 for Tuesday the 18th of November 2025.
|
||||
Today's show is entitled Home Assistant End Map Network Mapper.
|
||||
It is hosted by Rato and is about 37 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is Presence Detection in Home Assistant End More.
|
||||
Hi, this is your host Rato and this is a show about Home Assistant.
|
||||
Recorded in June 2025.
|
||||
I will focus on the application of End Map.
|
||||
This abbreviation stands for Network Mapper and Network Exploration Tool in Home Assistant.
|
||||
A bit more context from the main page of End Map.
|
||||
While End Map is commonly used for security audits,
|
||||
many systems and network administrators found it useful for routine tasks such as
|
||||
network inventory, managing service upgrade schedules,
|
||||
and monitoring host or service uptime.
|
||||
These are the headings I will talk about today.
|
||||
Short introduction and why End Map.
|
||||
My personal automation.
|
||||
Radiation of Bluetooth, CQP or Wi-Fi.
|
||||
Enhance my automation.
|
||||
The co-pilot.
|
||||
The outro.
|
||||
So let's get started.
|
||||
My short introduction and why End Map.
|
||||
Well, first of all, I would like to bring to you the terminology used within Home Assistant
|
||||
to you.
|
||||
When I started 20-23 or so with Home Assistant, I had to watch some videos on the terminology
|
||||
used and how to weigh on the terminology and what is what for, basically, because for
|
||||
me it didn't sound sometimes after what I was looking for.
|
||||
So this time I want to focus on automation and Blueprint.
|
||||
Notemation is, as the word says, without your interaction, basically, the system should
|
||||
do something that you expect.
|
||||
For example, if you walk into a room, the light goes on.
|
||||
Or if you turn on the TV, the different light goes on or the other light goes off.
|
||||
Now, there are situations where you may need the same automation for different rooms.
|
||||
And instead of copying it over from one room to the other, there is a thing called Blueprint
|
||||
in Home Assistant.
|
||||
It's the Blueprint you can also share with other users from Home Assistant and other
|
||||
users from Home Assistant can share it with you.
|
||||
This is really handy.
|
||||
Often, you find them in a blog post, in a forum post, and it will lead you mostly to
|
||||
GitHub Guests page, where you can sometimes, if it is well done, you even have a link
|
||||
in the forum, and it will do it mostly automatically, and then you get a nice GUI, basically, to
|
||||
put in all the parameters you need, like which lamp or which light and which sensor and
|
||||
to combine them and how you would like to have the color of the light, for example.
|
||||
And this is the thing with automation in Blueprint.
|
||||
So first, you basically experiment with automations in YAML and such.
|
||||
You can now a switch between YAML and go back to the visual editor, and we'll go back
|
||||
to the YAML.
|
||||
And finally, it is nice to get the Blueprint in case you need it again.
|
||||
So that's my short introduction for automation in Blueprint.
|
||||
The next one is why using NMAP, there is the thing about Presence Detection within
|
||||
Home Assistant.
|
||||
This can be, well, different Presence Detection, of course, well, one of the Presence Detection
|
||||
could be somebody at home or not.
|
||||
I name now the Presence Detection is my PC running or not.
|
||||
One of the offers to use within Home Assistant is NMAP.
|
||||
You can use the Ping command, and if it is a mobile phone or a mobile device, you can
|
||||
use the Home Assistant Companion app, I think that's the name.
|
||||
So what's mine is about Tower PC, and I wanted to use NMAP because the idea of a Ping
|
||||
that is pinging my PC to find out if it is still here or such, I don't know, didn't
|
||||
sound so nice, and maybe I read something else because NMAP can do really a lot.
|
||||
Anyway, so I went for NMAP.
|
||||
NMAP is very interesting, the usage within Home Assistant.
|
||||
At some point I read that there are some Home Assistant integration that you can work
|
||||
together with your router, and so the Home Assistant can really connect to your router.
|
||||
You then have to edit somehow in the menu in there, if you have such a router, and NMAP
|
||||
can do even more, however my router of course doesn't support that function, and so I cannot
|
||||
use that.
|
||||
If you want to use or play a little bit around with NMAP, this is quite easy.
|
||||
If you go to Settings, go into your Home Assistant, you go to Settings, Integration, and usually
|
||||
at the bottom somewhere there is a plus sign, and there you can look for the NMAP tracker.
|
||||
The beginning of my personal automation, so in 2023 I built the server, the base of
|
||||
the server was Open MediaVolt, and on top of that is the Home Assistant.
|
||||
So in 2023 I was building an overview in Home Assistant that's, I guess, what everybody
|
||||
does a little bit to get on the screen what you really want.
|
||||
Part of it was a server state, like free storage, memory, temperature, a weather forecast, and
|
||||
others.
|
||||
Then you also get, come along with Hex the Home Assistant, store anything.
|
||||
Once this was running I started learning about automation.
|
||||
I tried to learn from others with little success, way to complex for me, and way more than
|
||||
I needed.
|
||||
There were blueprints to download, they could do nearly everything, but then not exactly
|
||||
what I was looking for.
|
||||
Many of us are looking for small solutions that fit their own purpose, because we also
|
||||
think that a lot of overhead can make things, can later on get a problem.
|
||||
One thing and the other thing is you want to optimize it as much as possible, well, not
|
||||
all of, not all people have that feeling, but I have it.
|
||||
So I built my own automation from scratch.
|
||||
The idea was as much as needed, but as little as possible, to understand my code in a
|
||||
years time and comments all around it.
|
||||
Even if it was clear to me at that moment in a years time, it won't be.
|
||||
So I tried to carefully put some comments what each section was doing and so, and yeah,
|
||||
my chest is on GitHub, I will link it there.
|
||||
I think it is a good place to begin.
|
||||
And from there you can enlarge it to your needs or whatever.
|
||||
I called it motion-illuminance light source sun brightness.
|
||||
To do that, I needed some devices around it, and there were three devices, well, actually
|
||||
two was enough.
|
||||
So the one was the Xiaomi Aquara motion sensor, the RTCQ, I put the link in the zone out,
|
||||
and the Draught Free Bulb E27 from IKEA, this is just a white one.
|
||||
I also added, because I heard from some guy on the internet, not the one from HPR, the
|
||||
Xiaomi Miya Thermohugrometer with Bluetooth BLE, it's called LYWSD, also the link in the
|
||||
show notes.
|
||||
So with them connected to my home assistant, I had a motion sensor, and within the motion
|
||||
sensor is also an illuminance sensor, so I can find out how many looks are in the surrounding.
|
||||
The light source is clear, is the bulb, and the sun is also clear, well, the sun parameter
|
||||
was actually whether it is daytime or it is nighttime, so sunset, sunrise.
|
||||
And the brightness I just explained in a moment.
|
||||
So when you walk in my room, in my office, the light should go on if the illuminance is
|
||||
below a value of 37, in my case.
|
||||
And if it is during the day, so if the sun is up, it should be a brighter light than after
|
||||
sunset, it should be a little bit less bright.
|
||||
So that's what the brightness is for.
|
||||
And I got all these things together kind of easily, but then there is one thing.
|
||||
When you sit on your chair for a while, and you're not moving a lot in your chair while
|
||||
sitting on the computer, and even if you have this motion sensor, two and a half meter,
|
||||
I don't know how many foods that are, two and a feet, two and a half meter behind you,
|
||||
would that be seven feet, even if you have seven feet behind you approximately, it wouldn't
|
||||
recognize you after a while.
|
||||
Sometimes it does, sometimes it doesn't.
|
||||
And so I set the timer to a couple minutes, and then I had to add some counter measurements
|
||||
that the light would not suddenly go off.
|
||||
So I had like, if it doesn't have any motion for six minutes, then it would go to like
|
||||
30% of light for another 40 seconds.
|
||||
And within this time frame of the 40 seconds, I had enough time to move my hands around
|
||||
until the light got bright again, so the timer was reset.
|
||||
This is not that bad, because you move instead of just sitting still all the time, right?
|
||||
So it is good for your body, basically, nonetheless, after a while, you get fed up with it.
|
||||
But that's in a later section of that podcast.
|
||||
Anyway, so my first chist had a lot of counter measurements because of this not moving enough
|
||||
to trigger motion sensor.
|
||||
The motion sensor also is interesting if not the motion sensor, sorry, the illuminance
|
||||
is interesting because if there is a thunderstorm coming, a really dark one, and you sit in your
|
||||
office during the day and the light goes below a certain threshold, then your bulb will
|
||||
turn on and bright up your office.
|
||||
And once the thunderstorm is over and it gets bright outside again, the light switches
|
||||
itself off, and it's just nice to have, right, when somebody is serving you.
|
||||
So much about my automation, so motion, illuminance, light source, sun, brightness.
|
||||
And I had that created around, I don't know, autumn of 2023, somewhere there.
|
||||
And or even it's no, no, wait, no, this was later, this was in spring 24.
|
||||
And so I had that for almost a year and this spring now I got a little bit tired of it.
|
||||
And so I started the enhancement that finally leads to this podcast, but that's in the next
|
||||
section.
|
||||
Radiation of Bluetooth, CQP or Wi-Fi.
|
||||
As I'm talking here about devices that make use of some of the services, I would also
|
||||
like to make you aware about some things about it.
|
||||
Well, first of all, if you use these tools or these connection, it is good as long
|
||||
as you have no interference.
|
||||
So before you start to really integrate Bluetooth, CQP or Wi-Fi, a lot, make sure that you
|
||||
learn about the Wi-Fi channels that you learn about, collision and interference that you
|
||||
can have between CQP and Wi-Fi and how you choose the right channel, like if you are on
|
||||
channel one and channel two, they are so close to each other that they will have interference.
|
||||
Usually these numbers about the channel are, you have to learn about it and then place
|
||||
and choose your channel wisely based on your surrounding and others.
|
||||
Maybe if you are in a single family home in a house, maybe easier than when you live
|
||||
in a block in a city.
|
||||
So Bluetooth uses the lowest power which can be easily understood by its very small
|
||||
range and it is not a contagious transmission as well, continuous transmission as well.
|
||||
It is very energy, its energy impact is very minimal unless you have many Bluetooth devices
|
||||
around your body.
|
||||
So it is about the radiation and how it is going on, how it is the effect on your body.
|
||||
The Bluetooth is maybe quite little, then there is CQP, CQP is a mesh network so one bulb
|
||||
can talk to the next one and the next one and the next one.
|
||||
But on the other hand CQP doesn't transfer a lot of information but it is good to be
|
||||
aware that it builds up a mesh network.
|
||||
Next is Wi-Fi, this is quite stronger than Bluetooth and CQP.
|
||||
A Wi-Fi router sits in your house and is constantly emitting beacon signals and uses the maximum
|
||||
bandwidth of the ISM, 2.4 and 5 GHz.
|
||||
Energy impact on your body is maximum since there can be a lot of Wi-Fi access points
|
||||
around and you may constantly using Wi-Fi to connect devices at home.
|
||||
Now the next in the level this is 4G, so mobile phones versus Wi-Fi.
|
||||
In terms of potential harm there is no clear evidence that one technology is significantly
|
||||
more harmful than the other, especially learn about the baseband.
|
||||
What I mean, how does your mobile phone know about the strength of the connection to
|
||||
do your mobile tower or Wi-Fi hotspot?
|
||||
Because the station does constantly send a baseband signal, why?
|
||||
Because it gets power from the wall in opposite to your mobile phone or CQ.
|
||||
So I wasn't aware of that until 2008 when on the next house an antenna was mounted and
|
||||
I started when I got interested in how this thing with the radiation works and then
|
||||
first they come and tell you yeah no problem with the mobile phone because it will just
|
||||
emit data and such if a mobile phone is connected.
|
||||
They didn't mention the baseband which is constantly sending a signal and your Wi-Fi hotspot
|
||||
may as well.
|
||||
So some people believe their government and health industry with shareholders and put all
|
||||
this stuff in their body.
|
||||
I don't, I'm a scrutinizer, what suits me and what not.
|
||||
Why should I stop when it is my body?
|
||||
So my approach is I reduced the emitting power to 60% of my Wi-Fi router.
|
||||
I use Wi-Fi when I need it.
|
||||
I turn it off afterwards.
|
||||
In any case I turn it off while I am sleeping.
|
||||
Yes, it would make my life easier to let it run all the time.
|
||||
But what are the side effects in the long run?
|
||||
I leave you a couple of links here if you want to look a bit deeper and now back to the
|
||||
main topic.
|
||||
So let's talk about how I wanted to enhance my automation.
|
||||
There are the things in place that I needed and map was in place.
|
||||
I was playing a little bit around with this device tracker.
|
||||
This is either not home or not null.
|
||||
I had a sensor with its illuminance.
|
||||
I had a sunrise sunset that I could take over as well as the illuminance before.
|
||||
So I had my blueprint, my YAML from my previous settings and thought it was the easiest way
|
||||
to adjust this YAML to my new configuration.
|
||||
I have the modem with the DHCP server on it.
|
||||
I have a nook Intel nook computer where everything is running and I have a switch in between
|
||||
the modem and the tower PC.
|
||||
Always connected via Ethernet cable, so at least no struggling with Wi-Fi.
|
||||
Well I had to find out it was not so easy for me to simply go ahead and adjust the code.
|
||||
I had, I stumbled and stumbled and so I decided to delete as much out of it that I just
|
||||
have the base functionality.
|
||||
And then from then, write it again, build it up again and see step by step how that works.
|
||||
And to support you in this process, if you go to home assistant on your web interface,
|
||||
you have on the left hand, you have the developer tools and if you go inside there, you have
|
||||
on top a couple of topics and one is called states and there you can change this design.
|
||||
So I had to find out since the last time I opened it, please it feels like.
|
||||
Then you can go there and set a current entity state of a sensor or whatever.
|
||||
So this can be helpful.
|
||||
And I was doing that and then I opened the second tab with home assistant as well and there
|
||||
I opened the history of the sensor, the light and the device tracker.
|
||||
And so I could on one on one tab play with the state and on the other tabs, see what
|
||||
the history of the thing was doing of the sensor and so on and how the light was reacting
|
||||
to it.
|
||||
Well, okay, I would see the light.
|
||||
But anyway, you have then all this thing very nicely lined up.
|
||||
And then it was an evening, I was somewhere, can't remember the month, maybe July or so.
|
||||
And there was a fun storm coming in and then it got very dark or so, it was around six
|
||||
o'clock or whatever.
|
||||
And my value of the illuminant sensor went below 37, that meant I wouldn't have to take
|
||||
care of it because it would tell to my light to switch on because it is below 37.
|
||||
Now while I was testing, this fun storm went over.
|
||||
And as I said, it was around July, so the sun was quite high and it got bright again.
|
||||
And if it is more than 37 illuminants, my trigger wouldn't trigger.
|
||||
I found it out after a while, but of course, it took a bit, just to make you aware if you
|
||||
are working in the developer tools, playing with the states of the entities and switch
|
||||
them manually and they come back sometimes automatically after a certain amount of time
|
||||
or such.
|
||||
So make sure you refresh your web interface from time to time so you're not missing
|
||||
that.
|
||||
Any state in the device tracker is equal to null as I found out.
|
||||
And while I was working with the whole thing, you have the graphical things with what you
|
||||
can play in the YAML or you can play in the graphical user interface on the website.
|
||||
And I did a little bit of both to see how it changes when I add this or that.
|
||||
And I was at the point where I wanted to have an end function.
|
||||
But the trigger is always an OR.
|
||||
It does trigger this or that.
|
||||
So I needed an end and the end is called a condition in the YAML.
|
||||
On the web interface, it is called end if.
|
||||
So when my desktop changes its states from null to home, so it is running.
|
||||
And if the motion sensor and the illuminance is triggered, then turn on the light based
|
||||
on the sun.
|
||||
And you are just as I'm telling you now that it is on the one interface, it is a condition
|
||||
at least on my screen job.
|
||||
And on the other, it is an end if.
|
||||
So it's an if statement or it's a condition statement, YAML versus graphical interface.
|
||||
So yeah.
|
||||
Now you know, I had to learn it.
|
||||
Maybe you all know then what else did I find out?
|
||||
Yeah, this was basically it.
|
||||
So the developer tools the states, the second tab for the history in the web browser,
|
||||
in Firefox preferably.
|
||||
And that the condition in the YAML is an end.
|
||||
So you can have the trigger.
|
||||
So the trigger could be a motion sensor.
|
||||
And then you have the condition plus it is not this the illuminance is below certain value.
|
||||
Now while I was troubleshooting the whole thing, there were, well, it sounds now pretty easy
|
||||
on the microphone, but I can tell you it took me a couple of days to get that sorted.
|
||||
Well, and well, there was a year in between from one development to the next one.
|
||||
And yeah, most of it was last and some new stuff came in.
|
||||
So I started to write in the home assistant forum.
|
||||
I put the link in the show notes.
|
||||
So if you like, you can go and see, see there.
|
||||
And I put in a description what I was trying to do and that I had no success.
|
||||
And I was waiting a couple days, unfortunately, nobody came in and told me what I would have to do.
|
||||
So I started to write down what my problem is.
|
||||
So I started to reply to myself.
|
||||
So I kind of documented in this forum post my next changes the code I put in.
|
||||
And then after a while, somebody started to answer me.
|
||||
And so it was already felt a little bit better than just being by yourself.
|
||||
And yeah, you can follow up finally, I found a solution.
|
||||
And it worked.
|
||||
I tested it for a couple of days to make sure that it works.
|
||||
And then it was actually time to build the blueprint from this one, as I mentioned before.
|
||||
The co-pilot while I spent way, way, way more time to get this automation up and running the way I had it in my mind.
|
||||
I heard someone in a podcast mentioning co-pilot.
|
||||
I was going to solve my problem with co-pilot because that's a no-no.
|
||||
Of course, many people do that.
|
||||
But for me it was, I wanted to understand what I do and I wanted to do it in the most efficient way.
|
||||
But as it was running now, I thought I have some comments in my YAML.
|
||||
I have an introduction text to my YAML.
|
||||
Why not open, where did I go to do that?
|
||||
Yeah, I simply went on Bing.com, as far as I remember, with my Firefox.
|
||||
And I was looking there for co-pilot, put in my complete YAML,
|
||||
copied my YAML stuff and paste it on the comment prompt.
|
||||
This one in and then co-pilot asked me, do you want a quick answer or a long answer?
|
||||
And I'm waiting for the long, not do you want a quick think about it or a longer thinking about it, more like that.
|
||||
I go for the longer one and I was hoping to get the better result.
|
||||
And so it came back after, I don't know how long,
|
||||
30 seconds or a minute, I don't remember.
|
||||
And I was looking at the code and on the first side, it looked quite good.
|
||||
So I copied the code given from co-pilot and I have to admit that
|
||||
the text it generated to explain what it is actually doing was quite well.
|
||||
So for example, well, okay, I guess I already adjusted this one a little bit, but he says like
|
||||
triggers and conditions. The blueprint uses both a state change from not home to home
|
||||
for your PC tracker and the motion sensor activation.
|
||||
A numeric state condition ensures that the automation only runs when the ambient lighting
|
||||
from your illuminant sensor is below the defined threshold, default 37 locks.
|
||||
This minimizes unnecessary operations when the area is already well lit.
|
||||
So the wording itself and so on came over quite nicely.
|
||||
And so then it was time to test the code.
|
||||
So I copied the code as it is and put it in the home assistant and it wouldn't work.
|
||||
So I was a little bit disappointed as I thought everything was done.
|
||||
I mean, with such a nice text in the intro.
|
||||
So the co-pilot didn't add a device class.
|
||||
So I had to, when I used this KDIF, I'm using KDE, I used this KDIF to compare the
|
||||
the code I had with the blueprint and then I saw some differences.
|
||||
Well, several differences, some are relevant and some are because it is a blueprint and not a
|
||||
pure yellow. And also missing was a minimum and maximum value per input.
|
||||
And therefore, the list showed useless items in the graphical user interface.
|
||||
Instead, the one with necessary capabilities.
|
||||
The device class does define whether it should show up with a bulb with a light
|
||||
or whether it should show up with motion sensor or such.
|
||||
So I added, for example, device class motion or the device class illuminance.
|
||||
And so when I added that, I tried it again and it worked.
|
||||
And I was almost happy, but just almost.
|
||||
Because co-pilot changed my terminology of some of the entities or the input devices.
|
||||
And I wanted to have the same entities or text as I used in my previous
|
||||
blueprint. Because, well, you do that once and the next time you look at it and you compare it,
|
||||
you're much faster up to speed and understand what is going on.
|
||||
So anyway, with KDE, with the text editor in KDE, it was kind of easy to search for this pattern.
|
||||
And replace it with that one. And so he did, this was quite quick and without any error.
|
||||
And finally, I had my blueprint.
|
||||
I hope this was a lot of motivation for you to go ahead and try to do another
|
||||
automation on your home assistant. By the way, with Enmap, you can, of course,
|
||||
detect several things. For example, if you have your TV on a cable or on your Wi-Fi or if you have
|
||||
your TV box connected to it, you can base on that presence. Think about you want to change the
|
||||
light, you want to change anything in based on this TV on or off or the box, whatever.
|
||||
So if you like, leave a comment, send me a message or record your thoughts on that topic,
|
||||
what I've done wrong, what I should have done better. Oh, and before I forget it,
|
||||
where is the squirrel? I haven't heard it for a long time. Have a nice one.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio.
|
||||
Today's show was contributed by a HBR listener like yourself. If you ever thought of recording
|
||||
a podcast, you click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the internet archive and our
|
||||
things.net. On this otherwise status, today's show is released under Creative Commons,
|
||||
Attribution 4.0 International License.
|
||||
187
hpr_transcripts/hpr4513.txt
Normal file
187
hpr_transcripts/hpr4513.txt
Normal file
@@ -0,0 +1,187 @@
|
||||
Episode: 4513
|
||||
Title: HPR4513: Living the Tux Life Episode 2 - Ventoy
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4513/hpr4513.mp3
|
||||
Transcribed: 2025-11-22 15:16:17
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio episode 4,513 for Wednesday 19 November 2025.
|
||||
Today's show is entitled Living the Tux Life Episode 2 Ventoy.
|
||||
It is hosted by Al and is about 12 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is Al discusses using Linux as a daily driver.
|
||||
In this episode, I talked about Ventoy and Linux Mint.
|
||||
Hi and welcome to episode 2 of Living the Tux Life.
|
||||
I'd like to apologise to the poor quality of the audio on episode 1, I'll try and be
|
||||
better.
|
||||
So to recap, I want to get rid of my windows on my laptop and try to run Linux as my daily
|
||||
driver.
|
||||
This podcast see documents my story.
|
||||
Since last time, I was doing a lot of digital hopping as I normally do, but I think I found
|
||||
something I really like.
|
||||
To start, I'd like to introduce a piece of software called Ventoy, which has one end
|
||||
is normal USB A and the average USB C. So you can use it on new and modern hardware,
|
||||
new and modern and old hardware.
|
||||
It's a piece of software that makes any USB stick beautiful.
|
||||
We could set it up by either Windows or Linux, a process divides USB stick into two
|
||||
partitions.
|
||||
The first is a part of the one, the Ventoy boot OS, and the second is where you can store
|
||||
your ISO files, simply copy your ISOs to the storage partition.
|
||||
Using whatever message you like, fight through the file browser, unplug the USB stick and plug
|
||||
it into the machine you want to install the OS on.
|
||||
The piece you will boot into the Ventoy OS and it will display a load and a nice boot
|
||||
menu with all the ISOs on your USB stick.
|
||||
You can intersect the one you want to boot into to install.
|
||||
This is a gateway to try different distributors having to write each ISO to two USB using DD
|
||||
command.
|
||||
I've always been an Ubuntu fan, but I'm not clicking of the main no-no release.
|
||||
I've not found the side up, that's the dock, or having to install GNOME extension.
|
||||
That's two simple things.
|
||||
In the past, I said a little uncompany because I like how custom-arbitable it is using KDE.
|
||||
However, I ran an intern issue with Installer.
|
||||
One thing important to me is to make sure the laptop hard drive is encrypted in case I
|
||||
leave the house with the laptop.
|
||||
Also want to be able to hibernate the laptop, but there seems to be a bug with Ubuntu
|
||||
Installer which seems to etting up custom partitions with encrypted lugs using the Kaya Mara installation.
|
||||
It does crash it.
|
||||
There's an open bug for this, and even if you create the partition outside Installer,
|
||||
it still crashes.
|
||||
I did manage to get it working by installing an old version of Ubuntu and setting up a
|
||||
liquid-ed-lux partition, and then upgrading it too, but it seems a bit of a fath way
|
||||
of doing it, because I want to be able to run it through my laptop and just install
|
||||
the ISO and start again from scratch.
|
||||
So one of the main goals is to get the best battery-op installation possible on my laptop.
|
||||
I want to be able to close lid, have it go into deep-seeping, then quickly resume right
|
||||
where I left off when I opened it again.
|
||||
I'll talk more about this later in the show.
|
||||
I really like the look of operating system like Castio S, which is based on Art6, as a
|
||||
great design.
|
||||
Unstored it, and it was nice and fast, and then enjoyed the overall feel, but hibe-ladies
|
||||
didn't seem to work until a good couple of hours tinkling when it would know that.
|
||||
I also had a podcast that set some that they also had a received an update and it broke
|
||||
their system.
|
||||
A common issue would be the Edge1 releases.
|
||||
It also had an issue with the ButterFS install where his machine had crashed, and it basically
|
||||
corrupts his fast system, and he had to fix it by running some scandals.
|
||||
But for me, I want stability, it's important.
|
||||
This is why I like Ubuntu Dissues when using things like 8x4, 8x4 and LVM, and looks
|
||||
equipped with partitions.
|
||||
I've never had any problems in the past, so even though Castio Edge looks cool, it's
|
||||
not the right fit for me.
|
||||
I also tried some tiny managers.
|
||||
Tiling when they manage like Hyperland, which is interesting, but managing to be going
|
||||
far easier in files, isn't for me, or taking a time to learn the shortcuts for me, so
|
||||
I have to use Windows for work, I'm never going to remember when I keep swapping between
|
||||
the two.
|
||||
The only thing that I said before, that I want to put links on my wise t480 thinkpad,
|
||||
as it's a good machine, and I, an 8x5 with 16K RAM, and one of those external batteries
|
||||
so it can go for days without being plugged in.
|
||||
There's nothing wrong with it, the only reason I like looking to put links on it is not
|
||||
supported by Windows 11, because it has got no TPM in it, so I started to think, what
|
||||
display should I put on it?
|
||||
Well, my wife isn't very tech savvy, but once she knows how work flows, she's fired.
|
||||
I saw KDE with my first op, might be the best too much, and a bit overwhelming for her.
|
||||
Her name felt a bit too different, because I don't think she would get on well with the
|
||||
Mac kind of way of doing things.
|
||||
I don't think the standard of Bintu setup wouldn't be the right fit either.
|
||||
Then I remembered, my friend Kevin from the network maintained the next min, which got
|
||||
me thinking it's often recommended for beginners, first I saw, it seemed a bit basic for someone
|
||||
like me, and I wondered why I would like to run the next min, but then I realised I should
|
||||
put something I'm happy to use to myself, that's why I remembered that I was doing some
|
||||
tests with the hibernation couple of months ago, reading some bog boat that the next min worked
|
||||
at the book with hibernation.
|
||||
There I am, recording the episode.
|
||||
On my laptop, running later for the next min, with the chimera desktop.
|
||||
My current laptop is the think pad X, Y, carbon, they've been to Gen, i7 with 16KG, and
|
||||
the 4K touch screen, I swapped out my SSD with my Windows 1, I put a new one in, but
|
||||
at the vent I started a live session, and saw the next min onto the cryptid, so I'd gone
|
||||
to the cryptid luck partition with an LVM disk.
|
||||
Within 50 minutes, I had a fresh install up and running, the first thing I wanted to
|
||||
check was with hibernation and deep sleep worked, deep sleep is a power saving state, where
|
||||
you can close a laptop lid, the system save it state to RAM, while most components power
|
||||
down is a life of significant power saving and the fast wake up time.
|
||||
There's two sleeping modes, in the next, S2 idle, suspend idle, and deep suspend to RAM.
|
||||
S2 idle is always available, but the deep one depends on your hardware, I wanted to
|
||||
check quick sleep mode was enabled on my laptop, so I ran cat, space, 4x6, 4x4, 4x6
|
||||
mem underscore sleep, and those that deep wasn't in the list, after a bit of research, I
|
||||
found out that I'd often need to enable deep sleep in the bias, and this is a specific
|
||||
setting for this as well, I rebooted into my bias, enabled into the next setting, and
|
||||
rebooted by machine, once I did that, deep appeared my list again when I run that
|
||||
command, but it had bracket around it, I ran it S2 idle, but you needed to have the
|
||||
brackets ran, the deep to make the work, so I ran the command echo space deep, greater
|
||||
than space, 4x6, 4x4, 4x6 mem underscore sleep, it was then enabled with the name, but
|
||||
I'll put links to that in the show note of those commands, so I really wanted to test
|
||||
out how well deep sleep and hibernation worked on my laptop, I closed the lid and put it
|
||||
to sleep, when I opened up again, it woke up instantly right where I left off, I had
|
||||
to add to enter my password, and everything was fine, after overnight I shut down the
|
||||
lid, and it went to sleep, next when I powered up next morning, only left was 5%, it lost
|
||||
only 5% charge, next I wanted to see what happened, if the battery got low when I still had
|
||||
things open, would a laptop go into hibernation, hibernation of the mobile, instead of shutting
|
||||
down the laptop, it says it's shutting down the laptop, the laptop says everything
|
||||
in the running in a ram to file on a disc or to a swap partition, then the laptop powers
|
||||
off completely, so there's no battery train, when you turn it back on it loads everything
|
||||
from that file or partition back into ram, and you're right where you left off, it does
|
||||
take a bit long to be up compared to waking up from the deep sleep, but it's a great
|
||||
option if you need to stay power or leave your laptop unplug for a while, since I'm running
|
||||
and I quit the hard disk, I had to enter a password every time I left off bits, which
|
||||
makes things a bit more complicated, if you want to use hibernation, you need to swap
|
||||
file or a partition, a swap partition, when I set up the next minute it created a
|
||||
2G white swap partition you might before, but the recommendation you have the swap space
|
||||
to twice double sides of your ram, because of my, because my system is using LVM and
|
||||
encrypted duct volume, I followed the guide which I cleaned in the show notes, to boot
|
||||
the laptop using a live CD, live I, so even, and my own was in the next minute, I carefully
|
||||
mounted the encrypted duct partition, LVM, it could see it, and I ran a couple of commands
|
||||
to shrink the main volume and expand the swap partition, after a reboot I had a 32 gig
|
||||
port partition which is perfect for hibernation, which involves updating the graph file, you also
|
||||
need to name a hibernation button in the shutdown menu, once I did that the option appeared,
|
||||
so I selected the hibernation, on the screen I always screen went blank and the laptop
|
||||
powered off, when I pressed the power button, the laptop booted back up, asked and asked
|
||||
my disk for the encryption fast rate, I then brought it to an important lock screen,
|
||||
after the password I was right back to where I left it off, over the next week I used
|
||||
the laptop, daily without charging it, just shutting it in when I was done, when the
|
||||
battery finally dropped to 510, I close the laptop that night, and I also went in, I
|
||||
closed the lid that night, and the laptop automatically went hibernation overnight, next
|
||||
day I plugged it back in, booted it up, it right away, and again it booted up again, asked
|
||||
my encryption password, and I was back, and I was back to where I was before, the first
|
||||
thing I do, when I start customisation, when I, with the next mint, as I went to the bottom
|
||||
panel, I made it a bit smaller, I like how the apps appear, along the bottom night they
|
||||
do in Windows, to start, when you look, good, I don't know what that actually called
|
||||
in the ink spent, and the search feature works well, I can find things easy, that pack support
|
||||
is included out of the box, while snap is disabled by default, which is which type of
|
||||
versions I'm not a fan of snap anyway, I saw the few essentials, like VS code and quake,
|
||||
quake is a top down terminal, you can access by pressing S12, it pops down from the top,
|
||||
you can run your commands, press S12 and it'll hide away, but it'll still be running
|
||||
in the background. I've also set up DiLoad, a clipboard manager, but had to add a tentaking
|
||||
set up, so it would show up properly in a state bar, because I got double, if not, I changed
|
||||
the matter pointer from the large white one to a smaller black, triangular style, where
|
||||
I would type a fur, I also saw the Dacity and VLC using flatback, and everything works
|
||||
smoothly. I also have Microsoft Edge installed, because it has worked best for the office,
|
||||
freezing to apps I need to use, I'm still using official ones off repositories, and
|
||||
update for Edge showed up right in the Linux Mint update manager. I like having an update
|
||||
manager icon down by the time shows you have updates. I like setting up key bindings to
|
||||
quickly launch certain apps, which is something I always find not easy to do in Windows. On
|
||||
X-Winch, you do use the keyboard setup, there are also tutorial cuts for tiling on
|
||||
tapping Windows to the side screen, plus you get virtual desktops for all of your workspaces.
|
||||
Quite well. So I've got everything working hard, I like it, and I've really impressed
|
||||
after running the X-Winch for a week, all the key buttons work. I like the key to adjust
|
||||
the brightness, one thing I'll say so is a battery life, I know it's never going to
|
||||
be much to a MacBook with an M series processor, but I do like a good thinkpad. I current X-1,
|
||||
which is recording this on, gets about 2-3 hours of battery life. It has a 47-hour battery,
|
||||
but about 90% health, but because it's got 4k set of screen, it doesn't last long. So
|
||||
I spent a lot of time on the thinkpad separate, trying to find out which model is the best
|
||||
battery life. Recently, I've been found out that the T4S Gen 2 would AMD to business class
|
||||
laptop with a 14-inch screen, and the S means it gets a larger battery compared to a
|
||||
version. People say it can get 8-10 hours of battery life. I've been watching one on
|
||||
the eBay, and they have come, they haven't come very often, but I found one this week with
|
||||
16 year RAM and it went for $260. It should arrive soon, so my plan is to store the next
|
||||
mint on it and see how the battery life compares. I've also been looking at plans to check out
|
||||
for these years to monitor battery life and performance. This is it this episode, I'm
|
||||
still looking for a cave host, as I think it would be great to bow and tie tears off from
|
||||
someone else. If you're interested, leave a comment on the show or find my email on the
|
||||
host page. See you tomorrow for another episode of Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio, as Hacker Public Radio does work. Today's
|
||||
show was contributed by a HBR listener like yourself. If you ever thought of recording
|
||||
broadcast, you can click on our contribute link to find out how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an honesthost.com, the Internet Archive
|
||||
and our Sync.net. On the Sadois status, today's show is released on our Creative Commons
|
||||
and Extribution 4.0 International License.
|
||||
134
hpr_transcripts/hpr4514.txt
Normal file
134
hpr_transcripts/hpr4514.txt
Normal file
@@ -0,0 +1,134 @@
|
||||
Episode: 4514
|
||||
Title: HPR4514: YouTube Subscriptions 2025 #9
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4514/hpr4514.mp3
|
||||
Transcribed: 2025-11-22 15:16:56
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio episode 4,514 for Thursday 20 November 2025.
|
||||
Today's show is entitled, YouTube Subscriptions 2025 hash 9.
|
||||
It is the 360th show of Ahukah, and is about 18 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is Ahukah shares part 9 of his list of subscribe channels.
|
||||
You are listening to a show from the Reserve Q.
|
||||
We are airing it now because we had free slots that were not filled.
|
||||
This is a community project that needs listeners to contribute shows in order to survive.
|
||||
Please consider recording a show for Hacker Public Radio.
|
||||
Hello, this is Ahukah welcoming you to Hacker Public Radio and another exciting episode.
|
||||
This one is coming to you from the Reserve Q.
|
||||
You know what that means.
|
||||
There have not been enough shows submitted.
|
||||
And has had to pull from the Reserve Q to keep the schedule going.
|
||||
That's not good.
|
||||
Hacker Public Radio is a community project and it relies on the members of the community to submit shows to keep going.
|
||||
And you know, if that we get to the point that we don't have any shows, we'll just shut everything down.
|
||||
I'm going to assume if you are listening to this, you are probably subscribed and would not want that to happen.
|
||||
So I encourage you to submit a show.
|
||||
So I'm going to continue on the series that I have done of my YouTube channel subscriptions as of January of 2025,
|
||||
which is when I'm recording this, because it's going in the Reserve Q.
|
||||
You know, who knows when you'll hear it, but.
|
||||
So I'm going to start this with NASA 360.
|
||||
I've got a number of NASA channels.
|
||||
They're different in some ways.
|
||||
So NASA 360 has recently been doing videos about the Europa Clipper, which is the mission to send spacecraft to Europa,
|
||||
which is considered to be one of the prime areas to look for possible signs of life.
|
||||
Because there's obviously a substantial amount of water under the surface.
|
||||
You know, the top of the surface is ice, but under the ice there's signs that there's liquid water and possibly a lot of it.
|
||||
And what we know is that in general, every place we found water, we've found life.
|
||||
So that's what this is.
|
||||
Those videos are generally pretty short, a couple of minutes.
|
||||
Unlike NASA Edge, NASA Edge is a channel that does longer videos.
|
||||
And I'd say they probably average about a half hour per video, some longer, some shorter.
|
||||
But they will do things like follow the launch of a spacecraft or visit where the craft is being developed and interview the engineers and things like that.
|
||||
So, you know, if you're a big space geek like I am, that's worth taking a look at.
|
||||
Then there is NASA Goddard.
|
||||
And again, NASA Goddard is put out by the Goddard Space Flight Center.
|
||||
If you know anything about the history of rockets and space that Robert Goddard was one of the pioneers in developing rockets.
|
||||
And so they named one of NASA's centers, named after Robert Goddard.
|
||||
Some of their videos are very long, you know, anywhere from half hour to an hour, in some cases.
|
||||
Like, you know, 33, 133, sorry, 133 days on the sun, or a half hour long one on the mind bending math inside black holes.
|
||||
A lot of the others are rather short, you know, 2345 minutes, a lot of them are heliophysics.
|
||||
Heliophysics is simply the sun, you know, how does the sun work?
|
||||
Then there is the NASA Jet Propulsion Laboratory, and they have a channel.
|
||||
The Jet Propulsion Laboratory, they do, well, they're responsible for developing a lot of the spacecraft that get launched.
|
||||
And most of the videos on this channel are, you know, short ones.
|
||||
So they do a monthly thing called What's Up that tells you about what you can see in the sky.
|
||||
So if you wanted to know where the planets are going to be during the month and, you know, the phases of the moon and stuff like that.
|
||||
This is a guide for amateur astronomers.
|
||||
They do things like, you know, Mars report, what happens in Martian Spring, stuff like that, but generally not too terribly long.
|
||||
Then there's NASA Johnson. That's another space center. This is the one that's located in Houston.
|
||||
So if you ever remember Houston, we have a problem. Well, Houston is the Johnson Space Center.
|
||||
I'm sort of hoping to get there. I have not gotten to it yet.
|
||||
I did spend a week at the Kennedy Space Center and several days in Huntsville, Alabama at the U.S. Space and Rocket Center.
|
||||
So it would be nice to add this in. Now, NASA Johnson does a number of things. They do space to ground.
|
||||
Their videos are just a little longer, maybe six, seven, eight minutes, and space to ground is usually talking about what's going on with the International Space Station.
|
||||
And, you know, if the way things work is that the Kennedy Center is responsible for the launch of the vehicle and then once it is in orbit, everything gets turned over to the Johnson Space Center.
|
||||
So they will talk about what's going on on the ISS because now that's their responsibility to take care of that.
|
||||
They will do animations, for instance, of space walks periodically. The astronauts on the ISS need to do a space walk to repair a piece of equipment, something like that.
|
||||
And they'll plan all of that and then they do an animation that shows you how that should work.
|
||||
Then there is NASA X. Now, NASA X, I think, is sort of on hiatus right now, but it was a series of basically half hour shows that they did.
|
||||
Like, things like making the skies safe for unmanned spacecraft, revolutionizing the efficiency of air travel.
|
||||
So, you know, we think of NASA as being mostly concerned with space, but in the United States, NASA also, it's national aeronautics and space administration.
|
||||
So, they're also responsible for research on airplanes and flying and things like that, so that's where the NASA X comes in.
|
||||
Then there's nature video. This is from the publication nature, which is one of the leading science journals.
|
||||
In fact, it's one of those that if you were a scientist and you wanted to get tenure, getting one of your articles published in nature would be a big boost to getting that tenure, because it's very prestigious.
|
||||
Now, they do a podcast, they do videos, and it's all really good stuff.
|
||||
So, most of the videos are actually pretty short, like a three-minute guide to muon colliders, four-minute thing on vaccines against cancer.
|
||||
So, they'll give you an example of the sort of thing you get on nature video.
|
||||
Now, next one I have is Nixie does Linux, and Nixie is a young lady who is into open source and has a channel.
|
||||
I would say she has of late tended to do longer videos primarily, often from conventions and things like that.
|
||||
But her videos are infrequent, so the fact that the videos are longer, they don't come out that often.
|
||||
The next one is Normulator, and it's N-O-R-M-U-L, the number 8-O-R.
|
||||
Normulator is another one of the gaming people who particularly does civilization a lot, but also other games in the general sort of strategy Forex area.
|
||||
And he will do videos of coaching sessions with people on how to be a better player.
|
||||
Sometimes he'll do something where he takes a look at a game that he has played, and so, you know, fear into gaming, that would be something.
|
||||
Then there's Norwegian Cruise Line. As I've already mentioned, I am someone who's interested in cruises, my wife and I like to travel.
|
||||
That's kind of our objective for our retirement years.
|
||||
So this is the official channel of the Norwegian Cruise Line company.
|
||||
And a number of people that I have subscribed to that have their own channel as cruisers get recruited to doing cruise videos for Norwegian Cruise Line.
|
||||
So a lot of overlap there.
|
||||
The next channel is Notes in Spanish, and that goes with my interest in learning Spanish as I've been doing.
|
||||
And it's a couple. The husband is English, I believe, and the wife is Spanish.
|
||||
And they got married, and he moved to Spain, and so they do videos.
|
||||
And they're, I'm going to say six, seven minutes long.
|
||||
And we'll be talking about some aspect of Spain and Spanish culture and the Spanish language.
|
||||
Then there's objectivity. Now objectivity is kind of fun.
|
||||
There's a fellow Brady Heron who has sort of a guiding light behind the number of the channels I have subscribed to.
|
||||
And what he has done is he's gotten involved with different kinds of scientific topics.
|
||||
So he's got one we'll get to it a little bit about chemistry.
|
||||
And so he's got a very prominent well-known chemist who helps him do these videos.
|
||||
Objectivity it has to do with the Royal Institute in Britain.
|
||||
So he'll go there and it's mostly the Royal Institute, occasionally something else.
|
||||
But he's looking at objects that have a history within science, what he calls science treasures.
|
||||
So it might be, you know, here's an instrument that Isaac Newton used.
|
||||
And it's the actual one.
|
||||
So these are kind of interesting and he'll frequently have guests come on.
|
||||
And what they do is they will randomly pick items that they want to look at and see, you know, how interesting is it exactly?
|
||||
The first one is OLF Conference, OLF being Ohio Linux Fest.
|
||||
Now I was affiliated with Ohio Linux Fest some years back and there are videos on video audio on hacker public radio from that time.
|
||||
I was in charge of public relations, publicity, that sort of thing.
|
||||
You know, I did it for a few years and then moved on.
|
||||
But they set this channel up because they wanted to be able to stream videos from the conference.
|
||||
Well, sometimes streaming, sometimes recorded and then shown later.
|
||||
But if you weren't able to get to the conference, you know, you could take a look at these videos and at least see some of the things that went on.
|
||||
And I think I'll finish up with our fake history.
|
||||
Because as you know, history is one of my interests and our fake history is a channel.
|
||||
It's also a podcast and Sebastian Major will take something and people have ideas historically.
|
||||
So for instance, take a look at Columbus and, you know, what did Columbus do exactly?
|
||||
You know, the United States, at least there is this whole mythology of Columbus discovered the Americas.
|
||||
And so, well, of course there were people here already, but it turns out he had a false log.
|
||||
In a number of ways, he faked some of the things he was doing.
|
||||
And that's the kind of thing Sebastian loves to tear into.
|
||||
Another one being on witch hunts, which is another thing that people often get wrong.
|
||||
A lot of people think, for instance, that during the medieval period that there were witch hunts and witches were burned at the stake and all of that.
|
||||
And that didn't happen actually.
|
||||
When there was witch hysteria, it was later in history.
|
||||
It was basically coincided with the Protestant Reformation for reasons we could argue about.
|
||||
But anyway, our fake history is a fun thing to learn about things that you thought you knew and it turns out maybe you didn't or you didn't know it that well.
|
||||
So this is a hookah for hacker public radio signing off and is always encouraging you to support free software.
|
||||
Bye-bye.
|
||||
You have been listening to Hacker Public Radio at Hacker Public Radio does work.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording podcasts, click on our contribute link to find out how easy it really is.
|
||||
Posting for HBR has been kindly provided by an honesthost.com, the internet archive and our sings.net.
|
||||
On this advice status, today's show is released under Creative Commons Attribution 4.0 International License.
|
||||
52
hpr_transcripts/hpr4515.txt
Normal file
52
hpr_transcripts/hpr4515.txt
Normal file
@@ -0,0 +1,52 @@
|
||||
Episode: 4515
|
||||
Title: HPR4515: Privacy? I don't have anything to hide...
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4515/hpr4515.mp3
|
||||
Transcribed: 2025-11-22 15:16:35
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 4515 for Friday the 21st of November 2025.
|
||||
Today's show is entitled, Privacy?
|
||||
I don't have anything to hide.
|
||||
It is part of a series privacy and security.
|
||||
It is hosted by Archer 72 and is about three minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is, Archer 72 implements some tips from a YouTube author.
|
||||
Hello, this is your host, Archer 72, for Hacker Public Radio.
|
||||
In this episode, what do you have to hide?
|
||||
This topic was brought to my attention when I came across this video from the hated one.
|
||||
This YouTube host is extremely privacy focused and has interesting opinions not only on
|
||||
US privacy and security topics, but also internationally.
|
||||
This particular video was regarding locking down the settings on Firefox.
|
||||
The claim, besides increasing security, is to lower bandwidth and memory usage and
|
||||
double rendering speeds.
|
||||
While a lot of these steps, the author took seemed excessive, they might help you.
|
||||
I used a few of these settings as a takeaway to this video, as well as one extension
|
||||
that I find very useful.
|
||||
The author is correct in saying that a browsing habits track a lot about your personal life,
|
||||
so here are a few steps I did follow.
|
||||
First I selected strict blocking under content blocking.
|
||||
Next I did not set my history settings to use custom settings for history and always
|
||||
use private browsing mode, though this may be useful for some people.
|
||||
Under Address Bar I left everything unchecked besides search engines, so that when I'm
|
||||
in the search bar, I can choose which engine I want to search with.
|
||||
You won't get any more search suggestions in the URL bar, but that is part of privacy
|
||||
that the author was trying to get across.
|
||||
Next check the box and you block origin settings to enable advanced user settings to enable
|
||||
more granular control.
|
||||
After that you will want to change the default behavior of you block origin to block media
|
||||
elements, block remote fonts, disabled JavaScript by checking the boxes for these items.
|
||||
I've used these settings for a couple of months now and found that it was a good way to
|
||||
block scripts in addition to blocking ads.
|
||||
There are a lot of advanced settings that I haven't explored and if you listener find
|
||||
use from this and find settings that work for you, feel free to record a show of your
|
||||
own or if you would like just make a comment after this show.
|
||||
This has been Art or 72 for Hacker Public Radio.
|
||||
You have been listening to Hacker Public Radio at HackerPublicRadio.org.
|
||||
Today's show was contributed by a HBR listener like yourself.
|
||||
If you ever thought of recording a podcast, then click on our contribute link to find out
|
||||
how easy it really is.
|
||||
Hosting for HBR has been kindly provided by an onesthost.com, the internet archive and
|
||||
our syncs.net.
|
||||
Onestodwise status, today's show is released under Creative Commons, Attribution 4.0 International
|
||||
License.
|
||||
217
index.js
217
index.js
@@ -45,7 +45,14 @@ function formatEpisode(episode, includeNotes = false) {
|
||||
const host = dataLoader.getHost(episode.hostid);
|
||||
const seriesInfo = episode.series !== 0 ? dataLoader.getSeries(episode.series) : null;
|
||||
|
||||
let result = `# HPR${String(episode.id).padStart(4, '0')}: ${episode.title}
|
||||
let result = `# HPR${String(episode.id).padStart(4, '0')}: ${episode.title}`;
|
||||
|
||||
// Add match type indicator for fuzzy matches
|
||||
if (episode.matchType === 'fuzzy') {
|
||||
result += ` *(fuzzy match, distance: ${episode.matchDistance})*`;
|
||||
}
|
||||
|
||||
result += `
|
||||
|
||||
**Date:** ${episode.date}
|
||||
**Host:** ${host?.host || 'Unknown'} (ID: ${episode.hostid})
|
||||
@@ -69,6 +76,97 @@ ${episode.summary}`;
|
||||
return result;
|
||||
}
|
||||
|
||||
function formatTranscriptSearchResults(results, args) {
|
||||
if (results.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const descriptorParts = [];
|
||||
if (args.query) {
|
||||
descriptorParts.push(`phrase="${args.query}"`);
|
||||
}
|
||||
if (Array.isArray(args.terms) && args.terms.length > 0) {
|
||||
descriptorParts.push(`terms=[${args.terms.join(', ')}]`);
|
||||
}
|
||||
if (descriptorParts.length === 0) {
|
||||
descriptorParts.push('"no explicit query provided"');
|
||||
}
|
||||
|
||||
const firstSummary = results[0]?.matchSummary || {};
|
||||
const matchMode = firstSummary.matchMode || 'phrase';
|
||||
const contextLines = args.contextLines ?? 3;
|
||||
const caseSensitive = args.caseSensitive ? 'yes' : 'no';
|
||||
const wholeWord = args.wholeWord ? 'yes' : 'no';
|
||||
const maxMatches = args.maxMatchesPerEpisode ?? 5;
|
||||
const hostFilters = [];
|
||||
if (args.hostId) hostFilters.push(`ID ${args.hostId}`);
|
||||
if (args.hostName) hostFilters.push(`name "${args.hostName}"`);
|
||||
|
||||
let text = `# Transcript Search Results (${results.length} episodes)\n\n`;
|
||||
text += `Searching for: ${descriptorParts.join(' | ')}\n`;
|
||||
text += `Match mode: ${matchMode} | Context lines: ${contextLines} | Case sensitive: ${caseSensitive} | Whole word: ${wholeWord}\n`;
|
||||
text += `Maximum matches per episode: ${maxMatches}\n`;
|
||||
if (hostFilters.length > 0) {
|
||||
text += `Host filter: ${hostFilters.join(' & ')}\n`;
|
||||
}
|
||||
text += '\n## Summary\n';
|
||||
|
||||
text += results.map(result => {
|
||||
const host = dataLoader.getHost(result.episode.hostid);
|
||||
const matchedTerms = result.matchSummary.matchedTerms.length > 0
|
||||
? result.matchSummary.matchedTerms.join(', ')
|
||||
: 'N/A';
|
||||
const termCounts = Object.entries(result.matchSummary.termHitCounts || {});
|
||||
const termCountText = termCounts.length > 0
|
||||
? termCounts.map(([term, count]) => `${term}: ${count}`).join(', ')
|
||||
: null;
|
||||
const truncatedNote = result.matchSummary.truncated ? ' (truncated)' : '';
|
||||
let line = `- HPR${String(result.episode.id).padStart(4, '0')}: ${result.episode.title} — ${result.matchSummary.totalMatches} match${result.matchSummary.totalMatches === 1 ? '' : 'es'}${truncatedNote}; terms: ${matchedTerms}`;
|
||||
if (termCountText) {
|
||||
line += ` (${termCountText})`;
|
||||
}
|
||||
line += ` | Host: ${host?.host || 'Unknown'} (${result.episode.date})`;
|
||||
return line;
|
||||
}).join('\n');
|
||||
|
||||
text += '\n\n';
|
||||
|
||||
results.forEach(result => {
|
||||
const host = dataLoader.getHost(result.episode.hostid);
|
||||
const matchedTerms = result.matchSummary.matchedTerms.length > 0
|
||||
? result.matchSummary.matchedTerms.join(', ')
|
||||
: 'N/A';
|
||||
const termCounts = Object.entries(result.matchSummary.termHitCounts || {});
|
||||
const termCountText = termCounts.length > 0
|
||||
? termCounts.map(([term, count]) => `${term}: ${count}`).join(', ')
|
||||
: null;
|
||||
|
||||
text += `## HPR${String(result.episode.id).padStart(4, '0')}: ${result.episode.title}
|
||||
**Host:** ${host?.host || 'Unknown'} | **Date:** ${result.episode.date}
|
||||
**Matched terms:** ${matchedTerms}
|
||||
**Matches captured:** ${result.matchSummary.totalMatches}${result.matchSummary.truncated ? ' (additional matches omitted after reaching limit)' : ''}
|
||||
`;
|
||||
if (termCountText) {
|
||||
text += `**Term counts:** ${termCountText}\n`;
|
||||
}
|
||||
text += '\n';
|
||||
|
||||
result.matches.forEach((match, index) => {
|
||||
const termInfo = match.terms && match.terms.length > 0
|
||||
? ` | terms: ${match.terms.join(', ')}`
|
||||
: '';
|
||||
text += `### Match ${index + 1} (line ${match.lineNumber}${termInfo})
|
||||
\`\`\`
|
||||
${match.context}
|
||||
\`\`\`
|
||||
|
||||
`;
|
||||
});
|
||||
});
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
// List available resources
|
||||
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
||||
const stats = dataLoader.getStats();
|
||||
@@ -199,6 +297,10 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||
{
|
||||
name: 'search_episodes',
|
||||
description: 'Search HPR episodes by keywords in title, summary, tags, or host notes. Can filter by host, series, tags, and date range.',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -237,6 +339,10 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||
{
|
||||
name: 'get_episode',
|
||||
description: 'Get detailed information about a specific HPR episode including transcript if available',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -258,13 +364,27 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||
},
|
||||
{
|
||||
name: 'search_transcripts',
|
||||
description: 'Search through episode transcripts for specific keywords or phrases',
|
||||
description: 'Search through episode transcripts using phrases or multiple terms with AND/OR matching and optional host filters',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
query: {
|
||||
type: 'string',
|
||||
description: 'Search query to find in transcripts',
|
||||
description: 'Search phrase to find in transcripts. Combine with terms/matchMode for advanced searches.',
|
||||
},
|
||||
terms: {
|
||||
type: 'array',
|
||||
items: { type: 'string' },
|
||||
description: 'Explicit list of terms to search for; useful when pairing with matchMode "any" or "all".',
|
||||
},
|
||||
matchMode: {
|
||||
type: 'string',
|
||||
enum: ['any', 'all', 'phrase'],
|
||||
description: 'How to interpret the query/terms. "phrase" (default) matches the phrase exactly, "any" matches if any term is present, "all" requires every term.',
|
||||
},
|
||||
limit: {
|
||||
type: 'number',
|
||||
@@ -274,13 +394,37 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||
type: 'number',
|
||||
description: 'Number of lines of context around matches (default: 3)',
|
||||
},
|
||||
hostId: {
|
||||
type: 'number',
|
||||
description: 'Restrict matches to a given host ID.',
|
||||
},
|
||||
required: ['query'],
|
||||
hostName: {
|
||||
type: 'string',
|
||||
description: 'Restrict matches to hosts whose name contains this value.',
|
||||
},
|
||||
caseSensitive: {
|
||||
type: 'boolean',
|
||||
description: 'Perform a case-sensitive search (default: false).',
|
||||
},
|
||||
wholeWord: {
|
||||
type: 'boolean',
|
||||
description: 'Match whole words only (default: false).',
|
||||
},
|
||||
maxMatchesPerEpisode: {
|
||||
type: 'number',
|
||||
description: 'Maximum number of excerpt matches to include per episode (default: 5).',
|
||||
},
|
||||
},
|
||||
required: [],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'get_host_info',
|
||||
description: 'Get information about an HPR host including all their episodes',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -303,6 +447,10 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
||||
{
|
||||
name: 'get_series_info',
|
||||
description: 'Get information about an HPR series including all episodes in the series',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -395,50 +543,50 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
||||
}
|
||||
|
||||
if (name === 'search_transcripts') {
|
||||
const results = dataLoader.searchTranscripts(args.query, {
|
||||
const searchOptions = {
|
||||
limit: args.limit || 20,
|
||||
contextLines: args.contextLines || 3,
|
||||
});
|
||||
contextLines: args.contextLines ?? 3,
|
||||
terms: args.terms,
|
||||
matchMode: args.matchMode,
|
||||
hostId: args.hostId,
|
||||
hostName: args.hostName,
|
||||
caseSensitive: args.caseSensitive,
|
||||
wholeWord: args.wholeWord,
|
||||
maxMatchesPerEpisode: args.maxMatchesPerEpisode ?? 5,
|
||||
};
|
||||
|
||||
const results = dataLoader.searchTranscripts(args.query || '', searchOptions);
|
||||
|
||||
if (results.length === 0) {
|
||||
const descriptorParts = [];
|
||||
if (args.query) descriptorParts.push(`phrase "${args.query}"`);
|
||||
if (Array.isArray(args.terms) && args.terms.length > 0) descriptorParts.push(`terms [${args.terms.join(', ')}]`);
|
||||
if (args.hostId || args.hostName) descriptorParts.push('host filter applied');
|
||||
const description = descriptorParts.length > 0 ? descriptorParts.join(', ') : 'the provided criteria';
|
||||
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text: `No transcripts found containing "${args.query}".`,
|
||||
text: `No transcripts found matching ${description}.`,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
const text = results.map(result => {
|
||||
const { episode, matches } = result;
|
||||
const host = dataLoader.getHost(episode.hostid);
|
||||
const formatArgs = {
|
||||
...args,
|
||||
contextLines: searchOptions.contextLines,
|
||||
maxMatchesPerEpisode: searchOptions.maxMatchesPerEpisode,
|
||||
};
|
||||
|
||||
let episodeText = `# HPR${String(episode.id).padStart(4, '0')}: ${episode.title}
|
||||
**Host:** ${host?.host || 'Unknown'} | **Date:** ${episode.date}
|
||||
|
||||
**Matches found:** ${matches.length}
|
||||
|
||||
`;
|
||||
|
||||
matches.forEach(match => {
|
||||
episodeText += `### Line ${match.lineNumber}
|
||||
\`\`\`
|
||||
${match.context}
|
||||
\`\`\`
|
||||
|
||||
`;
|
||||
});
|
||||
|
||||
return episodeText;
|
||||
}).join('\n---\n\n');
|
||||
const text = formatTranscriptSearchResults(results, formatArgs);
|
||||
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text: `# Transcript Search Results (${results.length} episodes)\n\nSearching for: "${args.query}"\n\n${text}`,
|
||||
text,
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -465,7 +613,14 @@ ${match.context}
|
||||
};
|
||||
}
|
||||
|
||||
let text = `# ${host.host}
|
||||
let text = `# ${host.host}`;
|
||||
|
||||
// Add match type indicator for fuzzy matches
|
||||
if (host.matchType === 'fuzzy') {
|
||||
text += ` *(fuzzy match, distance: ${host.matchDistance})*`;
|
||||
}
|
||||
|
||||
text += `
|
||||
|
||||
**Host ID:** ${host.hostid}
|
||||
**Email:** ${host.email}
|
||||
|
||||
331
server-http.js
331
server-http.js
@@ -17,12 +17,14 @@ import HPRDataLoader from './data-loader.js';
|
||||
// Configuration
|
||||
const PORT = process.env.PORT || 3000;
|
||||
const MAX_CONCURRENT_REQUESTS = 10;
|
||||
const REQUEST_TIMEOUT_MS = 30000;
|
||||
// Increased the timeout for the long-lived SSE connection connect() call
|
||||
const REQUEST_TIMEOUT_MS = 60000; // 60 seconds (was 30s)
|
||||
const RATE_LIMIT_WINDOW_MS = 60000; // 1 minute
|
||||
const RATE_LIMIT_MAX_REQUESTS = 50; // 50 requests per minute per IP
|
||||
const RATE_LIMIT_MAX_REQUESTS = 100; // 100 requests per minute per IP
|
||||
const MEMORY_THRESHOLD_MB = 450;
|
||||
const CIRCUIT_BREAKER_THRESHOLD = 5;
|
||||
const CIRCUIT_BREAKER_TIMEOUT_MS = 60000;
|
||||
const CIRCUIT_BREAKER_TIMEOUT_MS = 60000; // 60 seconds (how long it stays OPEN)
|
||||
const SSE_HEARTBEAT_INTERVAL_MS = 20000; // 20 seconds to prevent proxy timeout
|
||||
|
||||
// Initialize data loader
|
||||
console.error('Loading HPR knowledge base data...');
|
||||
@@ -30,6 +32,9 @@ const dataLoader = new HPRDataLoader();
|
||||
await dataLoader.load();
|
||||
console.error('Data loaded successfully!');
|
||||
|
||||
// Map to store active SSE transports, keyed by connectionId
|
||||
const activeSseTransports = new Map();
|
||||
|
||||
// Circuit Breaker class for graceful degradation
|
||||
class CircuitBreaker {
|
||||
constructor(threshold = CIRCUIT_BREAKER_THRESHOLD, timeout = CIRCUIT_BREAKER_TIMEOUT_MS) {
|
||||
@@ -134,7 +139,14 @@ function formatEpisode(episode, includeNotes = false) {
|
||||
const host = dataLoader.getHost(episode.hostid);
|
||||
const seriesInfo = episode.series !== 0 ? dataLoader.getSeries(episode.series) : null;
|
||||
|
||||
let result = `# HPR${String(episode.id).padStart(4, '0')}: ${episode.title}
|
||||
let result = `# HPR${String(episode.id).padStart(4, '0')}: ${episode.title}`;
|
||||
|
||||
// Add match type indicator for fuzzy matches
|
||||
if (episode.matchType === 'fuzzy') {
|
||||
result += ` *(fuzzy match, distance: ${episode.matchDistance})*`;
|
||||
}
|
||||
|
||||
result += `
|
||||
|
||||
**Date:** ${episode.date}
|
||||
**Host:** ${host?.host || 'Unknown'} (ID: ${episode.hostid})
|
||||
@@ -147,17 +159,113 @@ function formatEpisode(episode, includeNotes = false) {
|
||||
${episode.summary}`;
|
||||
|
||||
if (seriesInfo) {
|
||||
result += `\n\n## Series
|
||||
result += `
|
||||
|
||||
## Series
|
||||
**${seriesInfo.name}**: ${stripHtml(seriesInfo.description)}`;
|
||||
}
|
||||
|
||||
if (includeNotes && episode.notes) {
|
||||
result += `\n\n## Host Notes\n${stripHtml(episode.notes)}`;
|
||||
result += `
|
||||
|
||||
## Host Notes
|
||||
${stripHtml(episode.notes)}`;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function formatTranscriptSearchResults(results, args) {
|
||||
if (results.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const descriptorParts = [];
|
||||
if (args.query) {
|
||||
descriptorParts.push(`phrase="${args.query}"`);
|
||||
}
|
||||
if (Array.isArray(args.terms) && args.terms.length > 0) {
|
||||
descriptorParts.push(`terms=[${args.terms.join(', ')}]`);
|
||||
}
|
||||
if (descriptorParts.length === 0) {
|
||||
descriptorParts.push('"no explicit query provided"');
|
||||
}
|
||||
|
||||
const firstSummary = results[0]?.matchSummary || {};
|
||||
const matchMode = firstSummary.matchMode || 'phrase';
|
||||
const contextLines = args.contextLines ?? 3;
|
||||
const caseSensitive = args.caseSensitive ? 'yes' : 'no';
|
||||
const wholeWord = args.wholeWord ? 'yes' : 'no';
|
||||
const maxMatches = args.maxMatchesPerEpisode ?? 5;
|
||||
const hostFilters = [];
|
||||
if (args.hostId) hostFilters.push(`ID ${args.hostId}`);
|
||||
if (args.hostName) hostFilters.push(`name "${args.hostName}"`);
|
||||
|
||||
let text = `# Transcript Search Results (${results.length} episodes)\n\n`;
|
||||
text += `Searching for: ${descriptorParts.join(' | ')}\n`;
|
||||
text += `Match mode: ${matchMode} | Context lines: ${contextLines} | Case sensitive: ${caseSensitive} | Whole word: ${wholeWord}\n`;
|
||||
text += `Maximum matches per episode: ${maxMatches}\n`;
|
||||
if (hostFilters.length > 0) {
|
||||
text += `Host filter: ${hostFilters.join(' & ')}\n`;
|
||||
}
|
||||
text += '\n## Summary\n';
|
||||
|
||||
text += results.map(result => {
|
||||
const host = dataLoader.getHost(result.episode.hostid);
|
||||
const matchedTerms = result.matchSummary.matchedTerms.length > 0
|
||||
? result.matchSummary.matchedTerms.join(', ')
|
||||
: 'N/A';
|
||||
const termCounts = Object.entries(result.matchSummary.termHitCounts || {});
|
||||
const termCountText = termCounts.length > 0
|
||||
? termCounts.map(([term, count]) => `${term}: ${count}`).join(', ')
|
||||
: null;
|
||||
const truncatedNote = result.matchSummary.truncated ? ' (truncated)' : '';
|
||||
let line = `- HPR${String(result.episode.id).padStart(4, '0')}: ${result.episode.title} — ${result.matchSummary.totalMatches} match${result.matchSummary.totalMatches === 1 ? '' : 'es'}${truncatedNote}; terms: ${matchedTerms}`;
|
||||
if (termCountText) {
|
||||
line += ` (${termCountText})`;
|
||||
}
|
||||
line += ` | Host: ${host?.host || 'Unknown'} (${result.episode.date})`;
|
||||
return line;
|
||||
}).join('\n');
|
||||
|
||||
text += '\n\n';
|
||||
|
||||
results.forEach(result => {
|
||||
const host = dataLoader.getHost(result.episode.hostid);
|
||||
const matchedTerms = result.matchSummary.matchedTerms.length > 0
|
||||
? result.matchSummary.matchedTerms.join(', ')
|
||||
: 'N/A';
|
||||
const termCounts = Object.entries(result.matchSummary.termHitCounts || {});
|
||||
const termCountText = termCounts.length > 0
|
||||
? termCounts.map(([term, count]) => `${term}: ${count}`).join(', ')
|
||||
: null;
|
||||
|
||||
text += `## HPR${String(result.episode.id).padStart(4, '0')}: ${result.episode.title}
|
||||
**Host:** ${host?.host || 'Unknown'} | **Date:** ${result.episode.date}
|
||||
**Matched terms:** ${matchedTerms}
|
||||
**Matches captured:** ${result.matchSummary.totalMatches}${result.matchSummary.truncated ? ' (additional matches omitted after reaching limit)' : ''}
|
||||
`;
|
||||
if (termCountText) {
|
||||
text += `**Term counts:** ${termCountText}\n`;
|
||||
}
|
||||
text += '\n';
|
||||
|
||||
result.matches.forEach((match, index) => {
|
||||
const termInfo = match.terms && match.terms.length > 0
|
||||
? ` | terms: ${match.terms.join(', ')}`
|
||||
: '';
|
||||
text += `### Match ${index + 1} (line ${match.lineNumber}${termInfo})
|
||||
\`\`\`
|
||||
${match.context}
|
||||
\`\`\`
|
||||
|
||||
`;
|
||||
});
|
||||
});
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
// Create MCP server factory
|
||||
function createMCPServer() {
|
||||
const server = new Server(
|
||||
@@ -301,6 +409,10 @@ All content is contributed by the community, for the community.`,
|
||||
{
|
||||
name: 'search_episodes',
|
||||
description: 'Search HPR episodes by keywords in title, summary, tags, or host notes. Can filter by host, series, tags, and date range.',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -339,6 +451,10 @@ All content is contributed by the community, for the community.`,
|
||||
{
|
||||
name: 'get_episode',
|
||||
description: 'Get detailed information about a specific HPR episode including transcript if available',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -360,13 +476,27 @@ All content is contributed by the community, for the community.`,
|
||||
},
|
||||
{
|
||||
name: 'search_transcripts',
|
||||
description: 'Search through episode transcripts for specific keywords or phrases',
|
||||
description: 'Search through episode transcripts using phrases or multiple terms with AND/OR matching and optional host filters',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
query: {
|
||||
type: 'string',
|
||||
description: 'Search query to find in transcripts',
|
||||
description: 'Search phrase to find in transcripts. Combine with terms/matchMode for advanced searches.',
|
||||
},
|
||||
terms: {
|
||||
type: 'array',
|
||||
items: { type: 'string' },
|
||||
description: 'Explicit list of terms to search for; useful when pairing with matchMode "any" or "all".',
|
||||
},
|
||||
matchMode: {
|
||||
type: 'string',
|
||||
enum: ['any', 'all', 'phrase'],
|
||||
description: 'How to interpret the query/terms. "phrase" (default) matches the phrase exactly, "any" matches if any term is present, "all" requires every term.',
|
||||
},
|
||||
limit: {
|
||||
type: 'number',
|
||||
@@ -376,13 +506,37 @@ All content is contributed by the community, for the community.`,
|
||||
type: 'number',
|
||||
description: 'Number of lines of context around matches (default: 3)',
|
||||
},
|
||||
hostId: {
|
||||
type: 'number',
|
||||
description: 'Restrict matches to a given host ID.',
|
||||
},
|
||||
required: ['query'],
|
||||
hostName: {
|
||||
type: 'string',
|
||||
description: 'Restrict matches to hosts whose name contains this value.',
|
||||
},
|
||||
caseSensitive: {
|
||||
type: 'boolean',
|
||||
description: 'Perform a case-sensitive search (default: false).',
|
||||
},
|
||||
wholeWord: {
|
||||
type: 'boolean',
|
||||
description: 'Match whole words only (default: false).',
|
||||
},
|
||||
maxMatchesPerEpisode: {
|
||||
type: 'number',
|
||||
description: 'Maximum number of excerpt matches to include per episode (default: 5).',
|
||||
},
|
||||
},
|
||||
required: [],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'get_host_info',
|
||||
description: 'Get information about an HPR host including all their episodes',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -405,6 +559,10 @@ All content is contributed by the community, for the community.`,
|
||||
{
|
||||
name: 'get_series_info',
|
||||
description: 'Get information about an HPR series including all episodes in the series',
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
openWorldHint: true
|
||||
},
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -497,50 +655,50 @@ All content is contributed by the community, for the community.`,
|
||||
}
|
||||
|
||||
if (name === 'search_transcripts') {
|
||||
const results = dataLoader.searchTranscripts(args.query, {
|
||||
const searchOptions = {
|
||||
limit: args.limit || 20,
|
||||
contextLines: args.contextLines || 3,
|
||||
});
|
||||
contextLines: args.contextLines ?? 3,
|
||||
terms: args.terms,
|
||||
matchMode: args.matchMode,
|
||||
hostId: args.hostId,
|
||||
hostName: args.hostName,
|
||||
caseSensitive: args.caseSensitive,
|
||||
wholeWord: args.wholeWord,
|
||||
maxMatchesPerEpisode: args.maxMatchesPerEpisode ?? 5,
|
||||
};
|
||||
|
||||
const results = dataLoader.searchTranscripts(args.query || '', searchOptions);
|
||||
|
||||
if (results.length === 0) {
|
||||
const descriptorParts = [];
|
||||
if (args.query) descriptorParts.push(`phrase "${args.query}"`);
|
||||
if (Array.isArray(args.terms) && args.terms.length > 0) descriptorParts.push(`terms [${args.terms.join(', ')}]`);
|
||||
if (args.hostId || args.hostName) descriptorParts.push('host filter applied');
|
||||
const description = descriptorParts.length > 0 ? descriptorParts.join(', ') : 'the provided criteria';
|
||||
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text: `No transcripts found containing "${args.query}".`,
|
||||
text: `No transcripts found matching ${description}.`,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
const text = results.map(result => {
|
||||
const { episode, matches } = result;
|
||||
const host = dataLoader.getHost(episode.hostid);
|
||||
const formatArgs = {
|
||||
...args,
|
||||
contextLines: searchOptions.contextLines,
|
||||
maxMatchesPerEpisode: searchOptions.maxMatchesPerEpisode,
|
||||
};
|
||||
|
||||
let episodeText = `# HPR${String(episode.id).padStart(4, '0')}: ${episode.title}
|
||||
**Host:** ${host?.host || 'Unknown'} | **Date:** ${episode.date}
|
||||
|
||||
**Matches found:** ${matches.length}
|
||||
|
||||
`;
|
||||
|
||||
matches.forEach(match => {
|
||||
episodeText += `### Line ${match.lineNumber}
|
||||
\`\`\`
|
||||
${match.context}
|
||||
\`\`\`
|
||||
|
||||
`;
|
||||
});
|
||||
|
||||
return episodeText;
|
||||
}).join('\n---\n\n');
|
||||
const text = formatTranscriptSearchResults(results, formatArgs);
|
||||
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text: `# Transcript Search Results (${results.length} episodes)\n\nSearching for: "${args.query}"\n\n${text}`,
|
||||
text,
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -567,7 +725,14 @@ ${match.context}
|
||||
};
|
||||
}
|
||||
|
||||
let text = `# ${host.host}
|
||||
let text = `# ${host.host}`;
|
||||
|
||||
// Add match type indicator for fuzzy matches
|
||||
if (host.matchType === 'fuzzy') {
|
||||
text += ` *(fuzzy match, distance: ${host.matchDistance})*`;
|
||||
}
|
||||
|
||||
text += `
|
||||
|
||||
**Host ID:** ${host.hostid}
|
||||
**Email:** ${host.email}
|
||||
@@ -661,9 +826,11 @@ ${match.context}
|
||||
// Create Express app
|
||||
const app = express();
|
||||
|
||||
// Trust proxy headers (required for Render, Heroku, etc.)
|
||||
// This allows rate limiting to work correctly behind reverse proxies
|
||||
app.set('trust proxy', true);
|
||||
// Create a single MCP server instance
|
||||
const mcpServer = createMCPServer();
|
||||
|
||||
// Trust first proxy hop (Render/Heroku) without allowing arbitrary spoofing
|
||||
app.set('trust proxy', 1);
|
||||
|
||||
// Enable CORS
|
||||
app.use(cors());
|
||||
@@ -671,6 +838,9 @@ app.use(cors());
|
||||
// Enable compression
|
||||
app.use(compression());
|
||||
|
||||
// Apply JSON body parsing globally for the SDK to read POST bodies.
|
||||
app.use(express.json());
|
||||
|
||||
// Rate limiting
|
||||
const limiter = rateLimit({
|
||||
windowMs: RATE_LIMIT_WINDOW_MS,
|
||||
@@ -698,8 +868,22 @@ app.get('/health', (req, res) => {
|
||||
});
|
||||
});
|
||||
|
||||
// ⭐ NEW ENDPOINT: Circuit breaker reset
|
||||
app.post('/reset', (req, res) => {
|
||||
if (circuitBreaker.state === 'OPEN') {
|
||||
circuitBreaker.reset();
|
||||
console.error('Circuit breaker manually reset.');
|
||||
res.json({ status: 'ok', message: 'Circuit breaker reset to CLOSED.' });
|
||||
} else {
|
||||
res.json({ status: 'ok', message: 'Circuit breaker already CLOSED.' });
|
||||
}
|
||||
});
|
||||
|
||||
// SSE endpoint for MCP
|
||||
app.get('/sse', async (req, res) => {
|
||||
let pingInterval = null;
|
||||
let transport;
|
||||
|
||||
try {
|
||||
// Check system health
|
||||
checkMemory();
|
||||
@@ -708,45 +892,83 @@ app.get('/sse', async (req, res) => {
|
||||
activeRequests++;
|
||||
console.error(`New SSE connection. Active requests: ${activeRequests}`);
|
||||
|
||||
// Create a new MCP server instance for this connection
|
||||
const server = createMCPServer();
|
||||
|
||||
// Create SSE transport
|
||||
const transport = new SSEServerTransport('/message', res);
|
||||
// Create SSE transport, specifying the POST message path
|
||||
transport = new SSEServerTransport('/message', res);
|
||||
activeSseTransports.set(transport.sessionId, transport);
|
||||
|
||||
// Connect server with timeout and circuit breaker
|
||||
await withTimeout(
|
||||
circuitBreaker.execute(() => server.connect(transport)),
|
||||
REQUEST_TIMEOUT_MS
|
||||
);
|
||||
// This calls transport.start() internally, which sets up headers and sends the endpoint event.
|
||||
await circuitBreaker.execute(() => mcpServer.connect(transport));
|
||||
|
||||
// Handle connection close
|
||||
// 2. Start the heartbeat/ping interval (after transport.start() has set up res.write)
|
||||
pingInterval = setInterval(() => {
|
||||
// Send a comment line every 20s to keep the proxy alive
|
||||
res.write(':\n');
|
||||
}, SSE_HEARTBEAT_INTERVAL_MS);
|
||||
|
||||
// Handle connection close (will execute when client closes the connection)
|
||||
req.on('close', () => {
|
||||
activeRequests--;
|
||||
if (pingInterval) {
|
||||
clearInterval(pingInterval);
|
||||
}
|
||||
if (transport) {
|
||||
activeSseTransports.delete(transport.sessionId);
|
||||
}
|
||||
console.error(`SSE connection closed. Active requests: ${activeRequests}`);
|
||||
// Ensure the server stream is ended gracefully if it hasn't already
|
||||
if (!res.writableEnded) {
|
||||
res.end();
|
||||
}
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
// Handle error during connection establishment or connection timeout
|
||||
activeRequests--;
|
||||
if (pingInterval) {
|
||||
clearInterval(pingInterval);
|
||||
}
|
||||
if (transport) {
|
||||
activeSseTransports.delete(transport.sessionId);
|
||||
}
|
||||
console.error('SSE connection error:', error.message);
|
||||
|
||||
if (!res.headersSent) {
|
||||
// Case 1: Error before SSE headers were flushed (e.g., checkMemory failed)
|
||||
// We can still set the status code.
|
||||
res.status(503).json({
|
||||
error: error.message,
|
||||
circuitBreaker: circuitBreaker.state,
|
||||
});
|
||||
} else {
|
||||
// Case 2: Error after SSE headers were flushed (stream is open)
|
||||
// Send an SSE 'error' event and end the connection.
|
||||
const errorData = JSON.stringify({
|
||||
message: error.message,
|
||||
circuitBreaker: circuitBreaker.state
|
||||
});
|
||||
res.write(`event: error\ndata: ${errorData}\n\n`);
|
||||
res.end();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// POST endpoint for MCP messages
|
||||
app.post('/message', express.json(), async (req, res) => {
|
||||
app.post('/message', async (req, res) => {
|
||||
const headerConnectionId = req.headers['x-connection-id'];
|
||||
const queryConnectionId = req.query.sessionId;
|
||||
const connectionId = headerConnectionId || queryConnectionId;
|
||||
const transport = activeSseTransports.get(connectionId);
|
||||
|
||||
if (transport) {
|
||||
try {
|
||||
// SSE transport handles this internally
|
||||
res.status(200).send();
|
||||
await transport.handlePostMessage(req, res, req.body);
|
||||
} catch (error) {
|
||||
console.error('Message error:', error.message);
|
||||
res.status(500).json({ error: error.message });
|
||||
console.error('Error processing MCP message via POST:', error);
|
||||
res.status(400).json({ error: 'Bad Request', message: error.message });
|
||||
}
|
||||
} else {
|
||||
res.status(404).json({ error: 'Not Found', message: 'No active SSE connection for this ID.' });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -769,6 +991,7 @@ app.listen(PORT, () => {
|
||||
console.error(` - Request timeout: ${REQUEST_TIMEOUT_MS}ms`);
|
||||
console.error(` - Rate limit: ${RATE_LIMIT_MAX_REQUESTS} requests per ${RATE_LIMIT_WINDOW_MS / 1000}s`);
|
||||
console.error(` - Memory threshold: ${MEMORY_THRESHOLD_MB}MB`);
|
||||
console.error(` - SSE Heartbeat: ${SSE_HEARTBEAT_INTERVAL_MS / 1000}s`);
|
||||
});
|
||||
|
||||
// Graceful shutdown
|
||||
|
||||
84
test-annotations.js
Normal file
84
test-annotations.js
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Quick test to verify tool annotations are present
|
||||
*/
|
||||
|
||||
import EventSource from 'eventsource';
|
||||
import fetch from 'node-fetch';
|
||||
|
||||
const SERVER_URL = 'http://localhost:3000';
|
||||
const SSE_ENDPOINT = `${SERVER_URL}/sse`;
|
||||
const MESSAGE_ENDPOINT = `${SERVER_URL}/message`;
|
||||
|
||||
let requestId = 1;
|
||||
let sse;
|
||||
let connectionId = null;
|
||||
|
||||
async function testAnnotations() {
|
||||
console.log('Testing tool annotations...\n');
|
||||
|
||||
// Connect to SSE
|
||||
sse = new EventSource(SSE_ENDPOINT);
|
||||
|
||||
await new Promise((resolve) => {
|
||||
sse.addEventListener('endpoint', (event) => {
|
||||
const url = new URL(event.data, SERVER_URL);
|
||||
connectionId = url.searchParams.get('sessionId');
|
||||
console.log(`Connected with session ID: ${connectionId}\n`);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
// Wait a moment for connection to stabilize
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
|
||||
// Send tools/list request
|
||||
const message = {
|
||||
jsonrpc: '2.0',
|
||||
id: requestId++,
|
||||
method: 'tools/list',
|
||||
params: {}
|
||||
};
|
||||
|
||||
const messagePromise = new Promise((resolve) => {
|
||||
sse.onmessage = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
if (data.result && data.result.tools) {
|
||||
resolve(data.result.tools);
|
||||
}
|
||||
} catch (e) {
|
||||
// Ignore
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
await fetch(MESSAGE_ENDPOINT, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'x-connection-id': connectionId
|
||||
},
|
||||
body: JSON.stringify(message)
|
||||
});
|
||||
|
||||
const tools = await messagePromise;
|
||||
|
||||
console.log('Tool annotations check:\n');
|
||||
tools.forEach(tool => {
|
||||
const hasAnnotations = tool.annotations &&
|
||||
tool.annotations.readOnlyHint === true &&
|
||||
tool.annotations.openWorldHint === true;
|
||||
const status = hasAnnotations ? '✅' : '❌';
|
||||
console.log(`${status} ${tool.name}: annotations = ${JSON.stringify(tool.annotations || 'MISSING')}`);
|
||||
});
|
||||
|
||||
sse.close();
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
testAnnotations().catch(err => {
|
||||
console.error('Error:', err);
|
||||
process.exit(1);
|
||||
});
|
||||
113
test-fuzzy-http.js
Normal file
113
test-fuzzy-http.js
Normal file
@@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Test fuzzy search via HTTP/SSE MCP Server
|
||||
*/
|
||||
|
||||
import EventSource from 'eventsource';
|
||||
import fetch from 'node-fetch';
|
||||
|
||||
const SERVER_URL = 'http://localhost:3000';
|
||||
const SSE_ENDPOINT = `${SERVER_URL}/sse`;
|
||||
const MESSAGE_ENDPOINT = `${SERVER_URL}/message`;
|
||||
|
||||
let requestId = 1;
|
||||
let sse;
|
||||
let connectionId = null;
|
||||
|
||||
async function sendMessage(method, params = {}) {
|
||||
const message = {
|
||||
jsonrpc: '2.0',
|
||||
id: requestId++,
|
||||
method,
|
||||
params
|
||||
};
|
||||
|
||||
return new Promise(async (resolve) => {
|
||||
const handler = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
if (data.id === message.id) {
|
||||
sse.removeEventListener('message', handler);
|
||||
resolve(data.result);
|
||||
}
|
||||
} catch (e) {
|
||||
// Ignore parse errors
|
||||
}
|
||||
};
|
||||
|
||||
sse.addEventListener('message', handler);
|
||||
|
||||
await fetch(MESSAGE_ENDPOINT, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'x-connection-id': connectionId
|
||||
},
|
||||
body: JSON.stringify(message)
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function test() {
|
||||
console.log('Testing fuzzy search via HTTP/SSE MCP\n');
|
||||
|
||||
// Connect to SSE
|
||||
sse = new EventSource(SSE_ENDPOINT);
|
||||
|
||||
await new Promise((resolve) => {
|
||||
sse.addEventListener('endpoint', (event) => {
|
||||
const url = new URL(event.data, SERVER_URL);
|
||||
connectionId = url.searchParams.get('sessionId');
|
||||
console.log(`Connected with session ID: ${connectionId}\n`);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
|
||||
// Test 1: Search for host with typo
|
||||
console.log('=== Test 1: Fuzzy Host Search ===');
|
||||
console.log('Searching for host: "klattu" (typo for Klaatu)\n');
|
||||
|
||||
const hostResult = await sendMessage('tools/call', {
|
||||
name: 'get_host_info',
|
||||
arguments: {
|
||||
hostName: 'klattu'
|
||||
}
|
||||
});
|
||||
|
||||
const hostText = hostResult.content[0].text;
|
||||
const hostLines = hostText.split('\n').slice(0, 8);
|
||||
console.log(hostLines.join('\n'));
|
||||
console.log('');
|
||||
|
||||
// Test 2: Search episodes with typo
|
||||
console.log('=== Test 2: Fuzzy Episode Search ===');
|
||||
console.log('Searching for episodes: "pythoon" (typo for python)\n');
|
||||
|
||||
const episodeResult = await sendMessage('tools/call', {
|
||||
name: 'search_episodes',
|
||||
arguments: {
|
||||
query: 'pythoon',
|
||||
limit: 2
|
||||
}
|
||||
});
|
||||
|
||||
const episodeText = episodeResult.content[0].text;
|
||||
// Extract just the first episode header
|
||||
const firstEpisode = episodeText.split('\n---\n')[0];
|
||||
const episodeLines = firstEpisode.split('\n').slice(0, 10);
|
||||
console.log(episodeLines.join('\n'));
|
||||
console.log('');
|
||||
|
||||
console.log('✅ HTTP/SSE fuzzy search tests completed!\n');
|
||||
|
||||
sse.close();
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
test().catch(err => {
|
||||
console.error('Error:', err);
|
||||
process.exit(1);
|
||||
});
|
||||
82
test-fuzzy-search.js
Normal file
82
test-fuzzy-search.js
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Test script for fuzzy search functionality
|
||||
* Tests both episode and host fuzzy matching
|
||||
*/
|
||||
|
||||
import HPRDataLoader from './data-loader.js';
|
||||
|
||||
console.log('Loading HPR data...\n');
|
||||
const dataLoader = new HPRDataLoader();
|
||||
await dataLoader.load();
|
||||
console.log('Data loaded!\n');
|
||||
|
||||
// Test 1: Exact host match (should use exact matching)
|
||||
console.log('=== Test 1: Exact Host Match ===');
|
||||
console.log('Query: "ken"\n');
|
||||
const exactHosts = dataLoader.searchHosts('ken');
|
||||
console.log(`Found ${exactHosts.length} results (exact match)`);
|
||||
exactHosts.slice(0, 3).forEach(host => {
|
||||
console.log(` - ${host.host} (${host.hostid}) [matchType: ${host.matchType}]`);
|
||||
});
|
||||
console.log('');
|
||||
|
||||
// Test 2: Fuzzy host match with typo
|
||||
console.log('=== Test 2: Fuzzy Host Match (typo) ===');
|
||||
console.log('Query: "klattu" (should match "klaatu")\n');
|
||||
const fuzzyHosts = dataLoader.searchHosts('klattu');
|
||||
console.log(`Found ${fuzzyHosts.length} results`);
|
||||
fuzzyHosts.forEach(host => {
|
||||
console.log(` - ${host.host} (${host.hostid}) [matchType: ${host.matchType}, distance: ${host.matchDistance}]`);
|
||||
});
|
||||
console.log('');
|
||||
|
||||
// Test 3: Another fuzzy host match
|
||||
console.log('=== Test 3: Fuzzy Host Match (another typo) ===');
|
||||
console.log('Query: "dav" (should find hosts like "Dave")\n');
|
||||
const fuzzyHosts2 = dataLoader.searchHosts('dav');
|
||||
console.log(`Found ${fuzzyHosts2.length} results`);
|
||||
fuzzyHosts2.slice(0, 5).forEach(host => {
|
||||
console.log(` - ${host.host} (${host.hostid}) [matchType: ${host.matchType}${host.matchDistance ? ', distance: ' + host.matchDistance : ''}]`);
|
||||
});
|
||||
console.log('');
|
||||
|
||||
// Test 4: Exact episode search
|
||||
console.log('=== Test 4: Exact Episode Match ===');
|
||||
console.log('Query: "linux" (exact match in title/summary)\n');
|
||||
const exactEpisodes = dataLoader.searchEpisodes('linux', { limit: 3 });
|
||||
console.log(`Found ${exactEpisodes.length} results`);
|
||||
exactEpisodes.forEach(ep => {
|
||||
console.log(` - HPR${String(ep.id).padStart(4, '0')}: ${ep.title} [matchType: ${ep.matchType}]`);
|
||||
});
|
||||
console.log('');
|
||||
|
||||
// Test 5: Fuzzy episode search with typo
|
||||
console.log('=== Test 5: Fuzzy Episode Match (typo) ===');
|
||||
console.log('Query: "linx" (should match episodes with "linux" in title)\n');
|
||||
const fuzzyEpisodes = dataLoader.searchEpisodes('linx', { limit: 3 });
|
||||
console.log(`Found ${fuzzyEpisodes.length} results`);
|
||||
fuzzyEpisodes.forEach(ep => {
|
||||
console.log(` - HPR${String(ep.id).padStart(4, '0')}: ${ep.title.substring(0, 60)}... [matchType: ${ep.matchType}${ep.matchDistance ? ', distance: ' + ep.matchDistance : ''}]`);
|
||||
});
|
||||
console.log('');
|
||||
|
||||
// Test 6: Another fuzzy episode search
|
||||
console.log('=== Test 6: Fuzzy Episode Match (misspelling) ===');
|
||||
console.log('Query: "pythoon" (should match "python")\n');
|
||||
const fuzzyEpisodes2 = dataLoader.searchEpisodes('pythoon', { limit: 3 });
|
||||
console.log(`Found ${fuzzyEpisodes2.length} results`);
|
||||
fuzzyEpisodes2.forEach(ep => {
|
||||
console.log(` - HPR${String(ep.id).padStart(4, '0')}: ${ep.title.substring(0, 60)}... [matchType: ${ep.matchType}${ep.matchDistance ? ', distance: ' + ep.matchDistance : ''}]`);
|
||||
});
|
||||
console.log('');
|
||||
|
||||
// Test 7: No match (distance too large)
|
||||
console.log('=== Test 7: No Match (distance too large) ===');
|
||||
console.log('Query: "xyzabc" (should find nothing)\n');
|
||||
const noMatch = dataLoader.searchHosts('xyzabc');
|
||||
console.log(`Found ${noMatch.length} results`);
|
||||
console.log('');
|
||||
|
||||
console.log('✅ All fuzzy search tests completed!');
|
||||
139
test-http-mcp.js
139
test-http-mcp.js
@@ -4,9 +4,10 @@
|
||||
* Test script for HTTP/SSE MCP Server
|
||||
*
|
||||
* This script tests the deployed MCP server by:
|
||||
* 1. Connecting to the SSE endpoint
|
||||
* 2. Sending MCP protocol messages
|
||||
* 3. Displaying responses
|
||||
* 1. Resetting the Circuit Breaker on the server.
|
||||
* 2. Connecting to the SSE endpoint.
|
||||
* 3. Sending MCP protocol messages sequentially.
|
||||
* 4. Displaying responses and closing the connection cleanly.
|
||||
*
|
||||
* Usage: node test-http-mcp.js
|
||||
*/
|
||||
@@ -14,57 +15,85 @@
|
||||
import EventSource from 'eventsource';
|
||||
import fetch from 'node-fetch';
|
||||
|
||||
const SERVER_URL = process.env.MCP_SERVER_URL || 'https://hpr-knowledge-base.onrender.com';
|
||||
const SERVER_URL = process.env.MCP_SERVER_URL || 'http://localhost:3000';
|
||||
const SSE_ENDPOINT = `${SERVER_URL}/sse`;
|
||||
const MESSAGE_ENDPOINT = `${SERVER_URL}/message`;
|
||||
const RESET_ENDPOINT = `${SERVER_URL}/reset`; // New endpoint for circuit breaker reset
|
||||
|
||||
let requestId = 1;
|
||||
let sse; // Declare outside for scope
|
||||
let connectionId = null; // To store the connection ID from the server
|
||||
|
||||
console.log('🧪 Testing MCP Server over HTTP/SSE');
|
||||
console.log(`📡 Server: ${SERVER_URL}`);
|
||||
console.log('-- Testing MCP Server over HTTP/SSE');
|
||||
console.log(`-- Server: ${SERVER_URL}`);
|
||||
console.log(`-- Message Endpoint: ${MESSAGE_ENDPOINT}`);
|
||||
console.log('');
|
||||
|
||||
// Test health endpoint first
|
||||
console.log('1️⃣ Testing health endpoint...');
|
||||
// === 0. Reset Circuit Breaker ===
|
||||
async function resetCircuitBreaker() {
|
||||
console.log('0. Resetting Circuit Breaker...');
|
||||
try {
|
||||
const resetResponse = await fetch(RESET_ENDPOINT, { method: 'POST' });
|
||||
const result = await resetResponse.json();
|
||||
console.log(`OK Reset check: ${result.message}`);
|
||||
} catch (error) {
|
||||
console.error('ERROR Circuit breaker reset failed (Server not fully up or endpoint missing):', error.message);
|
||||
}
|
||||
console.log('');
|
||||
}
|
||||
|
||||
// === 1. Test Health Endpoint ===
|
||||
async function checkHealth() {
|
||||
console.log('1. Testing health endpoint...');
|
||||
try {
|
||||
const healthResponse = await fetch(`${SERVER_URL}/health`);
|
||||
const health = await healthResponse.json();
|
||||
console.log('✅ Health check:', JSON.stringify(health, null, 2));
|
||||
console.log('OK Health check:', JSON.stringify(health, null, 2));
|
||||
console.log('');
|
||||
} catch (error) {
|
||||
console.error('❌ Health check failed:', error.message);
|
||||
console.error('ERROR Health check failed:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Connect to SSE endpoint
|
||||
console.log('2️⃣ Connecting to SSE endpoint...');
|
||||
const sse = new EventSource(SSE_ENDPOINT);
|
||||
// === 2. Connect to SSE Endpoint ===
|
||||
function connectSSE() {
|
||||
return new Promise((resolve, reject) => {
|
||||
console.log('2. Connecting to SSE endpoint...');
|
||||
// Use the EventSource polyfill to handle the SSE GET connection
|
||||
sse = new EventSource(SSE_ENDPOINT);
|
||||
|
||||
sse.onopen = () => {
|
||||
console.log('✅ SSE connection established');
|
||||
console.log('');
|
||||
|
||||
// Run tests after connection is established
|
||||
setTimeout(() => runTests(), 1000);
|
||||
console.log('OK SSE connection established');
|
||||
// Resolve the promise once the connection is open
|
||||
resolve();
|
||||
};
|
||||
|
||||
sse.addEventListener('endpoint', (event) => {
|
||||
// The endpoint event data contains the sessionId in the URL
|
||||
const url = new URL(event.data, SERVER_URL);
|
||||
connectionId = url.searchParams.get('sessionId');
|
||||
console.log(`OK Received sessionId: ${connectionId}`);
|
||||
});
|
||||
|
||||
sse.onmessage = (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log('📨 Received:', JSON.stringify(data, null, 2));
|
||||
console.log('');
|
||||
console.log('RECEIVED:', JSON.stringify(data, null, 2));
|
||||
} catch (error) {
|
||||
console.log('📨 Received (raw):', event.data);
|
||||
console.log('');
|
||||
console.log('RECEIVED (raw):', event.data);
|
||||
}
|
||||
console.log('');
|
||||
};
|
||||
|
||||
sse.onerror = (error) => {
|
||||
console.error('❌ SSE error:', error);
|
||||
console.log('');
|
||||
// Log and ignore to let the rest of the test run, as EventSource auto-reconnects
|
||||
console.error('ERROR SSE error:', error.message || JSON.stringify(error));
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
// Send MCP messages
|
||||
// === 3. Send MCP Message (POST) ===
|
||||
async function sendMessage(method, params = {}) {
|
||||
const message = {
|
||||
jsonrpc: '2.0',
|
||||
@@ -73,32 +102,51 @@ async function sendMessage(method, params = {}) {
|
||||
params
|
||||
};
|
||||
|
||||
console.log('📤 Sending:', method);
|
||||
console.log('SENDING:', method);
|
||||
console.log(JSON.stringify(message, null, 2));
|
||||
console.log('');
|
||||
|
||||
try {
|
||||
const response = await fetch(MESSAGE_ENDPOINT, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'x-connection-id': connectionId // Include the connection ID
|
||||
},
|
||||
body: JSON.stringify(message)
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
console.log('✅ Message sent successfully');
|
||||
console.log('OK Message sent successfully');
|
||||
} else {
|
||||
console.error('❌ Message send failed:', response.status, response.statusText);
|
||||
// Log the full error response body if it's not successful
|
||||
const errorBody = await response.text();
|
||||
console.error('ERROR Message send failed:', response.status, response.statusText, errorBody);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('❌ Send error:', error.message);
|
||||
console.error('ERROR Send error:', error.message);
|
||||
}
|
||||
|
||||
console.log('');
|
||||
}
|
||||
|
||||
// Run test sequence
|
||||
// === Main Test Sequence ===
|
||||
async function runTests() {
|
||||
console.log('3️⃣ Running MCP protocol tests...');
|
||||
// Ensure the health check runs first
|
||||
await checkHealth();
|
||||
|
||||
// Ensure the circuit breaker is reset before trying to connect
|
||||
await resetCircuitBreaker();
|
||||
|
||||
// Establish a fresh, single connection for the test sequence
|
||||
await connectSSE();
|
||||
// Wait for connectionId to be received
|
||||
while (connectionId === null) {
|
||||
await sleep(100);
|
||||
}
|
||||
await sleep(1000); // Give the server a moment to finalize setup
|
||||
|
||||
// Log the start of the protocol tests
|
||||
console.log('3. Running MCP protocol tests...');
|
||||
console.log('');
|
||||
|
||||
// Test 1: Initialize
|
||||
@@ -111,17 +159,17 @@ async function runTests() {
|
||||
capabilities: {}
|
||||
});
|
||||
|
||||
await sleep(2000);
|
||||
await sleep(1000);
|
||||
|
||||
// Test 2: List tools
|
||||
await sendMessage('tools/list');
|
||||
|
||||
await sleep(2000);
|
||||
await sleep(1000);
|
||||
|
||||
// Test 3: List resources
|
||||
await sendMessage('resources/list');
|
||||
|
||||
await sleep(2000);
|
||||
await sleep(1000);
|
||||
|
||||
// Test 4: Call a tool (search episodes)
|
||||
await sendMessage('tools/call', {
|
||||
@@ -132,22 +180,22 @@ async function runTests() {
|
||||
}
|
||||
});
|
||||
|
||||
await sleep(2000);
|
||||
await sleep(1000);
|
||||
|
||||
// Test 5: Read a resource
|
||||
await sendMessage('resources/read', {
|
||||
uri: 'hpr://stats'
|
||||
});
|
||||
|
||||
await sleep(3000);
|
||||
await sleep(2000);
|
||||
|
||||
console.log('✅ All tests completed!');
|
||||
console.log('OK All tests completed!');
|
||||
console.log('');
|
||||
console.log('💡 The MCP server is working correctly over HTTP/SSE');
|
||||
console.log('🔮 Once AI tools add HTTP/SSE support, they can connect to:');
|
||||
console.log('-- The MCP server is working correctly over HTTP/SSE');
|
||||
console.log('-- Once AI tools add HTTP/SSE support, they can connect to:');
|
||||
console.log(` ${SSE_ENDPOINT}`);
|
||||
|
||||
// Close connection
|
||||
// Close connection explicitly at the end of the test run to stop auto-reconnects
|
||||
sse.close();
|
||||
process.exit(0);
|
||||
}
|
||||
@@ -156,9 +204,12 @@ function sleep(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
// Start the test sequence
|
||||
runTests();
|
||||
|
||||
// Handle Ctrl+C
|
||||
process.on('SIGINT', () => {
|
||||
console.log('\n👋 Closing connection...');
|
||||
sse.close();
|
||||
console.log('\n-- Closing connection...');
|
||||
if (sse) sse.close();
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user