After 7 years, the new version, 3.0, of GIMP (GNU Image Manipulation Program) has been released.
From Heathkit vacuum tubes to first-gen Arduino LEDs, electronics has been my lifelong passion. Though not my profession, I've journeyed from analog circuits to microcontrollers, hacking Arduinos since they appeared. This blog shares that journey—the successes and struggles. If you're a fellow hobbyist, a curious beginner, or just love to tinker, you're in the right place. Welcome!
The Open To Debate site debated the statement "Death is not finale". The moderator-in-chief John Donvan does his usual great moderator job.
For the statement is Eben Alexander, Neurosurgeon, Author of ‘Proof of Heaven’ and Raymond Moody, Medical Doctor, Author of ‘Life After Life’.
Against is Sean Carroll, Physicist & writer and Steven Novella, Academic Neurologist at the Yale School of Medicine.
From the web site "If consciousness is just the workings of neurons and synapses, how do we explain the phenomenon of near-death experience? By some accounts, about 3% of the U.S. population has had one: an out-of-body experience often characterized by remarkable visions and feelings of peace and joy, all while the physical body is close to death. To skeptics, there are more plausible, natural explanations, like oxygen deprivation. Is the prospect of an existence after death “real” and provable by science, or a construct of wishful thinking about our own mortality?"
Look for the 2025 forecast from the Future Today Institute at https://ftsg.com/.
Six Easy Pieces grew out of the need to bring to as wide an audience as possible a substantial yet nontechnical physics primer based on the science of Richard Feynman. We have chosen the six easiest chapters from Feynman’s celebrated and landmark text, The Feynman Lectures on Physics (originally published in 1963), which remains his most famous publication. General readers are fortunate that Feynman chose to present certain key topics in largely qualitative terms without formal mathematics, and hese are brought together for Six Easy Pieces.
Hello there, fellow hobbyists!
As many of you know, my journey with electronics is a never-ending adventure, from vacuum tubes to Arduinos. Lately, I've been diving into Python, and I have to say, it's been a game-changer for a lot of my projects. From controlling microcontrollers to analyzing data, Python has proven to be an incredibly powerful and versatile tool.
When I started out, I was on the hunt for good resources, and I found a goldmine of free books on archive.org. You don't need to spend a fortune to get a solid foundation in programming, and I wanted to share some of the titles that have been most helpful to me.
Whether you're just starting out or looking to expand your skills, these books are a fantastic resource. They cover a wide range of topics, from basic syntax to more advanced concepts and practical applications. They’ve been essential companions in my Toronto workshop.
Here is a list of some of the best free Python books I've found so far, all available in PDF format. Happy coding!
Automate the Boring Stuff with Python (PDF)
Mark Lutz - Learning Python (PDF)
A Comprehensive Introduction to Python Programming and GUI Design Using Tkinter (PDF)
Python by Example: Learning to Program in 150 Challenges (PDF)
Python Anti-Patterns (PDF)
Think Python (PDF)
From the page:
Welcome to Operating Systems: Three Easy Pieces (now version 1.10 -- see book news for details), a free online operating systems book! The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence. In understanding the conceptual, you will also learn the practical, including how an operating system does things like schedule the CPU, manage memory, and store files persistently. Lots of fun stuff! Or maybe not so fun?
"Advanced Linux Programming" is a comprehensive guide for developers working with the GNU/Linux system. The book is divided into two main parts, covering both general UNIX programming concepts and advanced Linux-specific topics. It's intended for a wide audience, including those new to UNIX-like systems, developers migrating from other platforms like Windows, and experienced Linux programmers seeking to deepen their knowledge.
The first part, "Advanced UNIX Programming with Linux," covers foundational topics for developing applications, such as:
Getting Started: This section introduces essential development tools like GNU Emacs for editing, GCC for compiling, GNU Make for automating the build process, and GDB for debugging. It also provides guidance on finding further documentation.
Writing Good GNU/Linux Software: This part focuses on best practices, including interacting with the execution environment through command-line arguments and environment variables, using standard I/O, and defensive coding techniques with error checking. It also discusses the differences between static and dynamic libraries.
Processes and Threads: The book delves into process management, covering topics like process creation with fork()
and exec()
, process termination, signals, and process scheduling. It then moves to the more fine-grained concurrency model of threads, detailing thread creation, synchronization with mutexes and semaphores, and the distinctions between processes and threads.
Interprocess Communication (IPC): This section explores various methods for processes to communicate, including shared memory, memory-mapped files, pipes, FIFOs, and sockets.
The second part, "Mastering Linux," focuses on features unique to the Linux kernel and advanced system-level programming:
Devices and the /proc File System: It explains how Linux handles device drivers and how applications can interact with them through device files in the /dev
directory. It also provides an extensive look into the /proc
file system, which serves as a window into the running kernel's state, providing information on processes, memory, hardware, and system statistics.
Linux System Calls: This section is a reference for important system calls beyond basic I/O, such as sendfile()
for efficient data transfer, getrlimit()
for setting resource limits, mlock()
for locking physical memory, and uname()
for obtaining system information. It also covers strace
for tracing system calls.
Inline Assembly and Security: The book provides an introduction to using inline assembly code for performance-critical tasks and direct hardware access. It concludes with a critical look at security, detailing user and group IDs, file system permissions, and common security vulnerabilities like buffer overruns and race conditions.
The book wraps up with a detailed example of a complete GNU/Linux application—a modular Web server that demonstrates many of the concepts discussed throughout the text. It also includes appendices on other development tools, low-level I/O, and a table of signals.
Ubuntu Linux Toolbox is a detailed reference guide for power users and system administrators who want to master the command line for Ubuntu and Debian-based systems. It focuses on providing a collection of over 1000 command-line examples to help users perform various administrative tasks efficiently. The book is not intended for beginners but for users who have a foundational understanding of Linux, including how the shell operates and the concepts of file systems and network interfaces.
The book is structured by topic, guiding readers through essential areas of system administration and daily usage.
System and Software Management: The first two chapters introduce Ubuntu and its relationship with Debian. They detail how to use command-line tools like
grep
and sed
, and handling multimedia files for tasks like playing music or converting images.
Advanced Administration: The second half of the book is dedicated to more complex administrative tasks. This section provides commands for managing file systems, including partitioning disks and performing backups with
tar
and rsync
. It also delves into monitoring system resources like memory and CPU usage, configuring network connections, and locking down security with firewalls and user management.
The book emphasizes the enduring value of command-line skills. Many of the commands covered have been used in Unix systems for over 30 years and are more stable than graphical tools, which tend to change more frequently. By focusing on commands, users can solve problems more quickly and gain knowledge that is transferable across different Linux systems. The authors aim to provide a more efficient reference than searching online, allowing users to rapidly find the information they need to troubleshoot problems and optimize system performance.