Regular Expressions & grep
I needed to search for a character sequence of tab0tab [...]
Starting with The End in Mind
It is important to point out that I have very little “religion” or emotional attachment to any particular operating system, vendor, or commercial software model (close or open source); and further, currently have XP, OS X and Linux running to meet my computing-related needs. As you read on, you will find that Linux has taken over the central roll for much of what I do, but, I still use iWeb to write this page; I still use iMovies to edit and build the movies on this site (although I have gone to some length to get away from Quicktime in favor of Flash); I still have XP installed on a Virtual Machine (VM) within the Macbook Pro and on my Ubuntu Server as I need it for my CNC workflow.
If you are fairly new to this topic or you are searching for an answer about what OS or OSs will best suite your needs, I hope you will read on, as my intention is to inform, not espouse emotion. Read on and I will take you through my journey, issues that I encountered and generally overcame, why Linux is good (even amazing) for me and possibly you, why I still user OS X (Apple) and XP, and what the tradeoffs are between these various environments from my real-world experience.
A Bit of Background
I have a degree in computer science and have held various technical and architectural roles across my career. I have also coded in the past, both in college, and throughout the early part of my career, but I have not coded in earnest in about two decades. I have also worked on mainframes, some of the first 8086 “PC”s, and much between.
Until recently, when it came to personal computing, I have been on various flavors of the evolving Microsoft OS and related applications. Microsoft has been an influential factor in my life and I have benefited and enjoyed older version of Word and Excel, and also found XP to be a solid and enjoyable OS.
Gaining New Perspectives
Then, about three years ago, I purchased a Macbook Pro, mostly because of the quality industrial design of the laptop hardware, and because trying Apple and their Unix-like OS might be interesting. As I started to make this new machine my own, there were numerous issues and/or weaknesses that I needed to augment such that this machine suited my needs. For example, Apple’s IM client did not allow for interaction with other IM services, like MSN and others so I installed and configured OpenFire; I also added Fuse Kernel extension so I could write to other machine’s NTFS shares; Apples iWeb was rather restrictive in its initial releases and tied publishing to Apples MobileMe (since enhanced and corrected by Apple), so I added various FTP, difference comparison tools, etc, to ease the publishing. It was a large investment of time that goes beyond what I have described here, but more about this later. The primary point is that this experience with the Apple better educated me around Unix-like OSs, and prepared me for the next step.
Next, one of my old Windows 2000 machines was getting flaking and needed a reinstall. It had been up and running for about 8 years and didn’t owe me anything, but I couldn’t find my copy of Windows 2000, so a quick reinstall was now out of the question.
Considering the machines age, it was not worth purchasing another copy of XP, so I researched open source alternatives for about 2 hours and downloaded Ubuntu. It installed and ran beautifully straight from the vanilla installation. It came loaded with Pidgin, which allowed me to connect to any other IM user, Open Office, and numerous other applications, and was very friendly with the other OSs and machines on my network. I was very happy with this choice as it has cost me nothing to try and for what I needed, it fit the bill perfectly. And again further refreshed and deepened my exposure to Linux.
For those that might have the conception that Linux is for servers, it is, but my current Linux servers also serve as my primary workstation or PC, whatever you call that computer that you sit in front of many hours a day, playing music; working your spreadsheets, documents, and presentations; accessing the Internet; reading email; and so one. And on that very same server, I also record TV 7×24; run backups to a remote building on my property; play live TV; play any movie or song from my entire life’s library to any computer in my house, on my property, or anywhere in the world, securely; and even stream live music to a client on my Android based phone.
Organize & Plan
If you are still with me, I should now drop back and tie off a few things. As noted above, I do have a technical and computer-oriented background and I also like to tinker and architect solutions to meet my own unique needs. These inclinations combined with the new experience gained above and I decided to write a requirements document outlining many features and capabilities that I had pent up in my head for sometime: basically to build a far more robust and feature-rich home media and computing environment.
The feature set is rather broad, and in addition to the fairly standard requirements such as word processing, picture management, IM, email, Web surfing, etc, here is a limited set of requirements that are outside of my traditional scope: backup and recovery; disaster recovery (I would hate to loose more than 40,000 photos, numerous family videos, etc, should the house burnt down); a comprehensive set of music and video requirements including streaming, storage, transcoding in real-time, etc; TV recording, including place and time shifting; event based home video surveillance, and secure remote access to my primary stores and functionality just noted. I should also point out that my requirements were written for the various needs of a family with children and adults, and all of the disparate needs that this brings.
I had also run into other “walls” with my MacBook Pro, especially in the areas of music, videos, streaming, and TV. And while Apple provides a very rich experience around music and video if you stay within their walled garden, there were too many limitations and difficulties with Apple’s own-everything approach, especially when viewed against my requirements.
Build, Test, & Continual Evolution
With all of that as a background, I am going to cut this section a bit short for now as I am out of time and my requirements document morphed into a requirement/design/notes/planning/tasks/test document and is not all that useable to anyone but me, for the moment.
I should close, however, with the confirmation that I have met and exceeded the requirements that I originally established, and provide the following information, leaving you with at least fair understanding of what is possible: (More about the how in a later update.)
-
–Web access to my property for direct music steaming, to remote clients (PC, MAC, Linux) and even my Android phone.
-
–Web access to my property for control of TV recording schedules and playback.
-
–Remote access via PC, MAC, or Linux, even over EVDO (Sprint wireless) to watch TV and change channels, all with dynamic transcoding to align with the available bandwidth of my remote computer; all done with Linux based software and a few applications that I wrote myself. I should also point out that this does not interfere with watching TV for those at home.
-
–The ability to watch live TV and recordings in my barn or anywhere on my property to any laptop, (Windows, Apple, or Linux) that I own, over Ethernet or 802.11n Wifi.
-
–The ability to establish music/movie streams such that I can have all rooms, garage, barn, etc all playing the same music for larger parties, or, more likely for me as I work around the property.
-
–Automated backup to a disaster site on my property, in a separate building – the Barn in my back yard, which is remote enough that even if the house should burn down, the backup site should not. Yes big bombs or possibly a tornado might result in a loss of both, but the odds of either are very low.
-
–Port daemons monitoring and locking any malicious accesses to my environment.
-
–Various maintenance and health scripts that run daily or at other intervals, reporting key information, such as storage, login attempts and failures, etc, via email and/or SMS.
-
–And all of this on a server that also serves as my primary PC, with a user interface, that in my opinion and for my needs, is the richest available. I can’t comment to any of the later Microsoft releases and I have bought too many Microsoft licenses over the years, and at least for now have no need to buy another.
Linux Distribution
-
•Ubuntu – Primary Server
-
•Arch Linux – High-end PC, Gnome 3
-
•Puppy Linux – Carried on USB for boot on any machine
-
•Linux Mint Debian – Debian Test on older laptop, stable, clean
-
•Native Debian Test on older P4 laptop, stable, clean
-
•Untangle – a Universal Threat Management (UTM) distro – primary router, firewall, virus scanner
-
•Fedora – testing to better understand RedHat
-
•Crunchbang – tested for a bit – very nice
-
•Slitaz – tiny, fast, and very usable
-
•Many others
Office Tools
-
•LibreOffice – Office Suite
-
•Evolution – Mail, Calendar, Contacts
-
•Firefox – Browser
-
•Chrome – Browser
-
•Pidgin – Cross Platform IM Client
-
•Freemind – Visual mapping tool
-
•Much More
Music, Photo & Video
-
•Rhythmbox – Music Player with mt-daap / firefly server
-
•MPD – Music Player Deamon
-
•ncmpcpp – ncurses music player
-
•Songbird – Music Player & More, but have since stopped usage
-
•Ampache – Web site for my Music
-
•VLC – Plays, transcodes music, video & more
-
•Mythtv – Record TV & more
-
•Handbrake – Transcode DVDs
-
•Sound Juicer – Transcodes CDs
-
•EasyTag – MP3/Music Tag Editor
-
•Boxee – Internet Entertainment
-
•XBMC – A Complete Media Center
-
•Gimp – Image Editor
-
•F-Spot – Photos Manager
Utilities
-
•ssh
-
•sshfs
-
•conky – Desktop display
-
•WordPress – Blogging tool
-
•Mediawiki – Wiki tool
-
•UNetbootin
Virtualization
-
•Virtualbox – Virtual Machine
-
•Wine – A Simple & affective VM
3D/Visual Affects
-
•Gnome 3 – Running on arch
-
•Compiz – 3D Visual Affects
-
•Cairo-Dock – OS X like Dock
-
•Screenlets – Widgets for Linux
Misc
-
•Mp3Tag – MP3/Music Tag Editor
-
•Keepassx – Password Administrator
-
•Ubuntu Tweak – System tool
-
•Openfire – Jabber Server
-
•NTFS-3g & FUSE – File System
-
•Clonezille – Low level disk copy
-
•ReMastersys – a great ISO builder
-
•Rednotebook – a great daily journalling tool
-
•Getting Things GNOME – a simple light task master