Photo Frame (2015 edition)

Newest approach to photo frames: Raspberry Pi. There’s also an excellent wallpaper changer called Variety, by Peter Levi. I wrote directions originally at Peter Levi’s blog:

I have recently purchased a Raspberry Pi B+, which might be more updated than the RPi I originally used (a model B from last year sometime.) For my reference, here are directions from installing on the B+.

Complete directions for posterity’s sake:

1. Install dependencies:
sudo apt-get install gir1.2-notify-0.7 python-configobj python-pyexiv2 python-pycurl gir1.2-gtk-3.0 python-dbus gir1.2-pango-1.0 gir1.2-glib-2.0 python-imaging python-cairo gir1.2-gdkpixbuf-2.0 python-bs4 gir1.2-webkit-3.0 yelp imagemagick python-lxml gir1.2-appindicator3-0.1

2. Install bzr:
sudo apt-get install bzr

3. Checkout from the repository:
bzr branch lp:variety

4. Run

5. Edit Variety preferences to enable start when RPi starts up

6. Edit .config/autostart/variety.desktop to fix path (Exec=sh -c "/home/pi/variety/bin/variety")

7. Install unclutter to hide the mouse cursor:
sudo apt-get install unclutter

8. Run unclutter at startup and disable screen blanking:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
– delete line that starts xscreensaver
– Add 4 lines:

@xset s off
@xset -dpms
@xset s noblank

9. Reboot and enjoy



Comments (0)


Gitting rid of merge commits from git pull

Some of you may know about git merging.  I’m learning.  I am contributing a bit of work to an open-source library, Scikit-Image.  One of the things you do out of politeness, to keep the commit history clean, is to rebase your (possibly many) commits into just one, so that the project’s history shows your addition as truly one addition.  If, as in my case, your addition ends up taking a long time to get reviewed, you may end up in the situation where you need to pull in the upstream changes that have happened in the meantime.

Let’s go through the process I used:

# Add upstream source to pull from:
git add remote upstream
# Merge upstream's changes into current branch
git pull upstream master
# Check the git log
git log
commit 7bdcdeef0d4146d630d2937ba7b619cd23f233fd
Merge: b9c82d0 f822439
Author: Michael Sarahan <>
Date:   Sat Dec 6 20:27:20 2014 -0800

    Merge branch 'master' of into PhaseCorrelation

commit b9c82d03f2c6c9584c834b05ffd5c3714248de4e
Author: Michael Sarahan <>
Date:   Mon Apr 28 08:03:15 2014 -0700

    Add subpixel-precision phase correlation function to feature module

This is bad: an extra commit for the merge to update.  What’s worse, I had already pushed my branch with this extra commit to github, so it showed up in the pull request.  Let’s try to get rid of it:

git rebase -i master

(this contains all of the commits I brought in with the merge, but not the merge commit itself!)

How do I get rid of it, then?

git reset --hard BRANCHNAME~1

(Replace BRANCHNAME with the branch that you’re currently working on.)

Now, a better way to bring in the updates from master:

git pull --rebase upstream master


Comments (0)


Political machine learning

After being rather disappointed with the recent election, coming to grips with Jim Inhofe taking control again of the Senate Environment Committee, I’ve been wondering what I can do for future elections.

In the wake of the elections, NPR featured a former Bush (W) administration official gladly claiming that America had spoken clearly that they didn’t like that the average family income had gone down by 2600$ per year since 2007.  This infuriated me.  It left everyone to draw their own conclusions, but one was obvious: it is Obama and the Democrats’ fault for the decrease.  Well, let’s think for a moment – what happened in 2007?  Some kind of economic crash?  Was his reference point before or after the crash?

This kind of news is exceedingly misleading, and I am infuriated by how often this kind of thing influences people.  We only ever get news with selective context, never the whole story.  Anyone wanting the whole story needs to find it themselves, and that’s really hard.  There are some reliable journalistic sources, but people generally go to the loudest source, or to the one they trust most (often one politically aligned with them).

Enter my newest idea: can you come up with a machine learning system that is capable of aggregating facts, classifying news articles based on their usage of facts, and generally providing a tool for enlightening the public?

I’ve come up with a few ideas of what this system might do:

  • Monitor news sources; aggregate them into meta-pages on topics, sort of like Wikipedia summaries, with links about where content originated to read more.
  • Expand contexts for all numeric figures stated.  People always choose whatever contexts push their agenda.  This system should be able to restate facts/statistics in many ways (at least whatever ways the aggregate news source collects), and also be able to make simple inferences about related events (such as average annual salary going down since 2007 <-> recession).
  • Provide something like a browser extension to overlay sites with ratings/warnings about slanted facts.  (perhaps something like this:
  • Provide lobbying/contribution information to examine which interests are involved in events/decisions (see the already excellent browser extension, Greenhouse:

Whether anyone would read such a thing is another question, but the burden on people to collect facts outside of sound bites is currently too great.  The opportunity for voting based on reason rather than emotion is limited as such.

Next: how to get more people to vote.


Comments (0)


CMake and HDF5 revisited

Thanks to JC of Kitware at SciPy 2014, the situation with CMake and HDF5 on windows has greatly improved.

First, there’s been a new release of HDF5 (1.8.13).  This release removes a buggy CMake library finder (targets) file.  The improperly generated file in HDF5 1.8.12 was the hdf5-targets-release.cmake file.  Go get the new release now:

Secondly, there is a bug in CMake’s builtin script for finding HDF5.  On Windows, it finds a DLL before the Lib file, and won’t link properly (  Thanks to JC, I understand that the way forward is not to patch that file, but rather to move towards removing CMake’s builtin scripts entirely, and push the responsibility of finding these libraries out to the library authors.  Several library authors have already done this (including HDF5, thankfully).  The included FindSomething.cmake scripts should be treated as a legacy, fallback approach.  CMake has a great option for forcing the use of the library’s scripts for defining libraries and headers.  When calling the find_package function, you need to specify the NO_MODULE argument, like so:


This bypasses much of CMake’s internal FindHDF5 script, and instead goes looking for hdf5-config.cmake in several locations, ideally finding it in the place we installed the HDF5 libraries.  The new version of the HDF5 libraries now properly tells CMake where to find everything, and life is peachy.


In summary, use NO_MODULE when the library you’re using provides a -config.cmake file.  It will likely be better (more current) than CMake’s internal Findsomething.cmake file.  However, be careful!  If not all platforms actually provide this file, then your build will break where this file does not exist.  Notably, Ubuntu does not (currently) ship the hdf5-config.cmake files with the libhdf5-dev package.  So, you’ll need a code section like this (based on

# back up any user-defined HDF5_DIR setting
FIND_PACKAGE(HDF5 "1.8.5" NO_MODULE) # First look for hdf5-config.cmake in defined locations. This file is generated by HDF5 team and is likely more up to date than FindHDF5.cmake included in CMake.
 # didn't find hdf5-config.cmake. Need to fall back on CMake's built-in FindHDF5.cmake logic.
 # required says we fail if it isn't found.
 # Restore the value reset by the previous call to 'find_package(HDF5 "1.8.5" NO_MODULE)'
 set(HDF5_DIR ${_SAVED_HDF5_DIR} CACHE PATH "HDF5 install dir" FORCE)


More information:
details on find_package:
Creating your own package descriptions to make includes and libraries easy for downstream users:

Thanks again to JC for helping me figure this stuff out – now I need to get QSTEM using it!


Comments (0)


CMake + SWIG

I was beating my head against CMake + SWIG, trying to get started, but for some reason, I was never actually getting SWIG to generate its intermediates. If I specified things manually on a command line, it worked.

Here was my problem:
I had my SWIG input with a .swg extension, rather than .i – I found the .swg extension to be a more clear indicator that I was using SWIG, but I guess it confuses CMake.


Comments (0)


HDF5 and VS2012

HDF5 is my latest computing fad.  I think it’s definitely the best way to handle file I/O, and I’m using it in several projects.  Most recently, I’ve been working to use it with QSTEM, which is my first real C++ project that I’ve used HDF5 in.  The pre-built binaries are only available for VS2010 at the moment, so I’ve needed to rebuild HDF5 for VS2012.

There are directions for this here:

They don’t work.  Not for me, anyway.  I had several issues:

  1. I did not have svn installed on my system.  Digging in the install log pointed this out to me.  After installing TortoiseSVN, and making sure to enable its console tools, the ctest instructions got further.  Things still didn’t work though.  MSBuild complained about an out-of-date project file that I needed to open in the GUI.
  2. I could have built SZip and ZLib separately and done a more traditional CMake build, but ZLib would not cooperate.  I got some linker errors that I didn’t understand, and that Google turned up nothing on.

What I discovered is that after step 1 ran to completion, it had left me with a decent CMake cache of settings.  I ran the cmake gui and disabled Fortran, but kept everything else.  I could now open the solution file output by CMake, and everything (including ZLib) was happy.

To save future travelers time, binaries for x64 are here:
Win 32 had problems with SZip and ZLib, even with the setup that worked for x64.  Some issue with the “generator” – something going wrong with CMake.  If you need 32-bit HDF5 built, sorry.


Comments (0)


Windows 8

As a long-time anti-Microsoft person, I am somewhat ashamed to admit that I actually really like Windows 8.  Here’s why.

A lot of people get hung up on the tile view.  I don’t particularly care for it.  Indeed, I have found several aspects disorienting, especially how to get to my old familiar control panels.  Here’s what made everything better, and indeed actually made Windows 8 superior to any other version of Windows I’ve used.

At the tile view, you can just type, and your computer will automatically start searching.  It searches for programs, files, and settings.  For example, if I want to run chrome, I simply type chrome and windows finds it.  I can just hit enter, and go.  No mouse involved.  If I want to change my system environment variables – how the hell do I find that control panel?  I don’t have to find that control panel.  Type in “variable” at the tile view, and under the settings results, I get a direct link to the panel for editing these variables.

So, the tile view for the purposes of being a UI sucks.  It’s overly customized for touchpad people.  I agree.  But the ability to simply type and have windows be so active in finding what I want to do is amazing.  It’s like they’ve turned the mouse experience into the touchpad experience, and enhanced the keyboard experience, which now can stand independent of the mouse experience much more strongly.  It is empowerment of the keyboard for interaction with the UI.  I don’t want a touchpad.  I like interacting with Windows 8 from my keyboard.

So, the tile view sucks.  How do we work around that?  Well, essentially all of the applications I use do not have “metro-style” full-screen views.  They open in the desktop view, which aside from the absence of a start button, is the same as Windows 7.  Thus, I have not lost my familiar experience with, say, Steam.  The start screen for me serves only as a quick way to search for things to interact with on the alternate desktop view.

A lot of people (notably Gabe Newell of Valve) are upset with Microsoft for moving towards the Apple model of closed-garden software.  I’m with them.  If Microsoft shifts further, and begins to remove the alternate desktop environment for me to run things like Steam, I’ll cry foul, too.  For now, I’m enjoying the ability to utilize my keyboard for several mundane Windows interactions.

Linux still makes several things (mostly programming) easier, and the file hierarchy makes more sense, but Windows 8 gives my hugely positive experience with KDE a run for its money.


Comments (0)


Python with Wing IDE

I have been generously granted a Wing IDE license for my hobby programming on Analyzarr ( ).  It has taken me a while, but I owe this review to the generosity of WingWare.

First off, I have been programming python for several years now.  I have always used only a combination of a text editor and an interactive prompt (IPython, especially). I’m writing this review as my first experience with a Python IDE.

In my new job, I have been using visual studio for C++ programming.  I have gotten used to handy things like debugging tools.  I’m sure there are ways to do this in Python, but Visual Studio makes it, well, visual.  In IPython, I rather used the pdb magic call to turn on automatic pdb calling.  It was of mixed use, probably because I didn’t know how to use it.  I was very excited to try Wing’s debugging facilities.

Before I get ahead of myself, let me start where I should start, and that is first with a description of my system, followed shortly by the tutorial.

I have Ubuntu 12.04 x64, running on an AMD platform.  I am using Enthought’s EPD distribution, to which I subscribe (it is well worth it.)  That gives me Python 2.7, and several up-to-date scientific libraries.


  • A lot of effort obviously went into this.  It is very detailed, and it walks you through nicely.
  • I encountered a crash when setting my python path.  I repeated it twice, then gave up.  I don’t use pythonpath anyway.  Rather, I generally install my code in development mode using something like ‘pip install -e ./’ from my source folder.  I hope this won’t be a problem down the road…
  • Completion/”Source Assistant” – this thing is great!  Having the docstrings right next to the editor, along with links to function declarations?  This is fantastic!  I’m left wishing for a way to jump back to the part I was just editing, before I clicked the link to jump to a function definition
  • Debugging in the tutorial: I crashed again.
  • Debugging, attempt 2: OK, now I encounter a problem with the path_example import.  There’s a helpful comment explaining that this won’t work if you don’t have the PYTHONPATH set from earlier in the tutorial.  Very nice of them to not let users wonder about this!
  • Well, I’d really like to set that PYTHONPATH, but again, I’m bombing out.  I’m resorting to just copying the file from subfolder into the folder with
  • OK, on with debugging.  Breakpoints.  Yes.  This often exactly what I want when I’m trying to figure out an annoying bug.  But wait, things get better
  • When things go wrong in Python, you get a traceback.  It tells you the locations in all of the files up the call chain where things went wrong.  It’s very useful for tracking down bugs, but here’s the hitch – if you have a bug in your code that is messing up someone else’s code, then the last error is not obvious.  Wing really shines here – in its exceptions view, you can navigate that whole call stack, jumping to the source where the exception occurred.  Very nice!
  • Debugging just gets better!  You can enter code at breakpoints, up to even redefining functions.  As the tutorial states, when a bug depends on program state, you don’t always want to start from the beginning. Instead, you can fix the bug, test it, and move on.  All without restarting the potentially lengthy process leading up to this point.
  • Lots of shortcuts for matching parentheses, jumping around, and generally getting lost in unimaginably useful ways.

Wing looks like a great environment, and I’m eager to get my feet wet.  I might post again soon on my experience using it to actually replace emacs/IPython as my development platform.


Comments (1)


Windows 8 install

It’s a blue screen. Flat, plain blue, with white text. Aside from cryptic memory addresses, this is the blue screen of death. Seriously. Why didn’t they pick a different color?


Comments (0)


1984 today

I have just reread 1984 for the first time in 6 years.  It’s always good to refresh once in a while, and I was driven to it by the odd comment here and there that 1984 was a warning, not an instruction manual.

I kept this comparison in mind through my read, and found some interesting parallels and differences that I found worth mentioning here.  There are plot spoilers, so read on only if you’ve enjoyed 1984 for yourself.


First, I had not remembered that the Party was portrayed as socialist/communist.  The only thing that stood out in my memory was authoritarianism.  I had originally intended to share 1984 with a friend from work who hasn’t done quite as much philosophizing politically as I have.  He was saying something along the lines of “spying isn’t bad – if you’re not doing anything wrong, what could go wrong?”  I’m of the opinion that they can change the goal posts on what is wrong, and you can find yourself a criminal for simply not agreeing with someone.  1984 takes that to an extreme, and I hoped that it might highlight for him how conceivably bad being spied on can be.  However, with the nominal nod towards communist as evil, I fear many people will simply dismiss the warning and use it to support their anti-socialist mentality.  The strongest support against the use of 1984 in this light was the part towards the end when O’Brien is reeducating Winston (trimmed for brevity.)

O’Brien: What is our motive? Why should we want power?

Winston: You are ruling over us for our own good.  You believe that humans are not fit to govern themselves, and therefore—

O’Brien: That was stupid, Winston, stupid!  You should know better than to say a thing like that.  Now I will tell you the answer to my question.  It is this.  The Party seeks power entirely for its own sake.  We are not interested in the good of others; we are interested solely in power.  Not wealth or luxury or long life or happiness; only power, pure power. […] [N]o one ever seizes power with the intent to relinquish it.  Power is not a means; it is an end.  One does not establish a dictatorship in order to safeguard a revolution; one makes the revoltuion in order to establish the dictatorship.  The object of persecution is persecution.  The object of torture is torture.  The object of power is power.

The Republican party and media of today is smearing Obama’s governance as socialist.  Inasmuch as socialism interpreted as greater equality and care for humanity as whole, I believe that Obama has made some effort.  This socialism is not the socialism of 1984, and condemning Obama’s efforts with 1984 as justification is inappropriate.  However, I also feel the undercurrents of a direction towards a police state over which Obama may or may not have much control.  Police brutality, authoritarianism of the TSA in airports, legalization of domestic drones, domestic spying programs, increasing prosecution of government whistleblowers – all of this is taking America to the dangerous land where dissention (and thus change of conditions) is no longer possible.

Composition of the Party

The nominal makeup of the Party struck me.

The new aristocracy was made up for the most part of bureaucrats, scientists, technicians, trade-union organizers, publicity experts, sociologists, teachers, journalists, and professional politicians.  These people, whose origins lay in the salaried middle class and the upper grades of the working class, had been shaped and brought together by the barren world of monopoly industry and centralized government.  As compared with their opposite numbers in past ages, they were less avaricious, less tempted by luxury, hungrier for pure power, and, above all, more conscious of what they were doing and more intent on crushing opposition.

As a scientist, I find this makeup fascinating.  There was a sort of technocracy in the first part of the nuclear age, where it was more realizable for scientists and technicians to have some influence over government policy.  I feel that that period passed with McCarthyism.  Those who were traditionally in power – professional politicians and the financial forces behind them – recognized the danger of placing power in the hands of people whose opinions were based primarily on reason, and were ultimately trained to operate on their own evidence-based conclusions.  In modern times, it is as though most of the people that Orwell mentions have intentionally been ostracized and politically neutered.  Particularly, scientists, technicians (who are often considered inferior scientists, perhaps a step or two above janitors these days, generally unsupportable on grants, and thus a dying breed), trade-union organizers, and most importantly teachers are discarded as elitist at best, and varying degrees of greedy, useless, and subversive at worst.  Scientists are kept in check with funding (or lack thereof) and by bureaucratic control over communication.  Labor leaders are villainized (sometimes justifiably, mind.)  The most painful to me personally are the teachers.  Education is key to egalitarianism.  The golden ages of civilizations are those in which education is valued, supported, and encouraged.  Uneducated people do not generally evaluate information under the light of reason, and can be controlled by religious beliefs and media misinformation campaigns.  By maintaining slogans such as “those who can, do; those who can’t, teach,” and never rewarding the teaching profession adequately, we limit recruitment to those who are truly dedicated to teaching (those invaluable individuals who truly make a difference in people’s lives), and those who are actually not as capable in their understanding of content (the bane of my educational upbringing, and the death of curiosity for many.)  The other classes are primarily focused on the control of public opinion, and have indeed claimed power, if only as back-scenes operators, mouthpieces, and enablers.  Those truly in power are the capitalists of monopoly industry and the centralized government that for the most part, rests in their collective pocket.  They are so extraordinarily wealthy that wealth in itself cannot possibly be their motivator.  There is nothing that they can’t buy.  It is power that their money buys, and in that, they represent the Orwellian purpose of the pursuit and maintenance of pure power.  In a way, I guess I hope for the change that Orwell describes.  I am not so pessimistic that scientists and teachers would be so thirsty purely for power.  I have experienced a broad concern for egalitarian advancement amongst my scientific peers and teachers.  Perhaps it is a lack of power that allows that to exist, but I am wishful that it would be better.

Scarcity of goods

A theme of 1984’s world is the lack of common goods, and the maintenance of just less than what was necessary.  The constant need kept people out of luxury, and ultimately kept them from pursuing idle means that may have educated them.  Modern America does not have that at all in my opinion.  We have fully embraced the production capacity that industrialism has offered.  Rather than keeping people in want, America has emphasized overconsumption.  It is not consumption of the necessities of life, but value of junk – plastic, and ceaseless novelty and obsolescence.  The net effect is no different – constant want, and enslavement to your desires, and thus employment that enables some degree of fulfillment of these manufactured desires.  The further key in this pattern in America is the always increasing exportation of manufacturing.  The destruction of valuable real-life skills further prevents the population from breaking away from the enslavement to the system.  This is extremely personal to me.  My wife, a PhD geneticist, has been unable to find work for the past 7 months.  It is absurd that without me, her livelihood would depend on welfare of some sort – whether governmental or familial.  She has myriad skills, especially in traditional fiber arts and gardening.  The devaluation of her practical skills, and the apparent unemployability of her so-called modern, valuable education has highlighted the absurdity of our society, and left me longing for a simple agrarian self-sufficiency where our efforts are directly correlated to our livelihood, and not subject to someone else’s ability to employ our skills.

Reality control/manufacture

The Party has complete control over information in all media in 1984.  They retroactively maintain control of reality by rewriting history as necessary to maintain the truthfulness of any current statement.  Dissent results in complete removal from society – you aren’t merely killed, you cease to exist in the past as well as the present and future.  America is decent in this regard.  History is generally written by the victors, and a large part of our educational content is horribly distorted against any opponent of America.  However, deeper, often contradictory information is available for those who seek it.  The leadership and media of America do not have complete control over the past.  However, by instilling the distaste for intellectualism and discouraging any curiosity about true history at the earliest age possible, America controls perception of the past effectively enough, bending it to serve whatever end anyone with power finds necessary.  It is infinitely more difficult to dislodge an initial idea than it is to put it there in the first place.  Modern media’s exceedingly effective spin networks serve as an echo chamber for people of any political persuasion.  It is not the same ultimate control that the Party has, but it is more distributed reality control inasmuch as people allow someone else to define the world they live in.


In the world of 1984, sex is a necessary evil.  It is solely for propagation of the species.  Winston’s wife calls their duty to the party.  She is described as “stiffening as soon as he touched her … she seemed to be pushing him from her with all her strength, even when her arms were clasped tightly round him.”  Young women were encouraged/required to be part of the Junior Anti-Sex League.  America has a fascinating dual approach to sexuality.  On one hand, in (Christian) religion it is for the most part strongly discouraged.  On the other, sex is a remarkably effective marketing tool, and we are bombarded more or less directly from the onset of our consciousness.  With regards to the former, I actually respect the simplistic viewpoint of saving sex for marriage for the sake of avoiding pregnancy and STDs until one is old enough and mature enough to understand and deal with the potential physical and emotional consequences of the joyous act.  The so-called promise-keepers of modern society are related to the Junior Anti-Sex League, but certainly less extreme.  Delaying sexuality, but ideally not destroying it.  I grew up Catholic.  I am still so terribly mixed up about sexuality.  I want it, I’m afraid of it, ultimately I am not completely in touch with those feelings.  You can’t expect sexuality to suddenly turn on like a switch when it is suddenly allowed at the time of marriage.  It took me several relationships and a great deal of sinful premarital sex to establish a healthy place for sex in my relationships.  Society would be greatly improved by encouraging healthy sexual relationships at age-appropriate times, and by implementing effective sex education and provision of easily accessible contraceptives.  Sex as a marketing tool is exceedingly destructive to this end.  Attaching sex to consumerism perverts sex, distorts people’s psyche, and ruins the natural evolution and development of sexuality.  More than anything, it feeds and creates images of what sex should be into people’s minds.  Sex should be the movies.  Sex should be the completely perfect girls in magazines.  Sex generally occurs independent of emotional relationships.  This exploitation of sex has taken a brutal toll on women, and is extending to ever-younger populations.


Children in the world of 1984 serve the dark purpose of spying on their parents, propagating the party rather than their family.  In this regard, I am thankful that modern America is not so terrible.  Children are manipulated through advertising into tools for extending consumerism, but they are not trained to betray their parents to Thought Police.

Perpetual war

Perhaps the most philosophically offensive aspect of 1984’s world was the continual war that served no purpose aside from consumption of industrial output.  In this regard, America does not compare favorably.  We have entered the war on terrorism.  It can never be won, as it is a war on an idea.  The Cold War was nominally a war on communism.  However, it was still a war against easily recognizable nations, and could thus come to a close.  As long as America is offending someone sufficiently, there will always be malcontents, and ultimately someone angry enough to act on their emotions.  Killing people will never solve the problem; it can only make more people angry at worst, and merely scared at best.  A cornered wild animal is the least predictable and most dangerous.  War in modern times is similar to war in 1984 – a convenient reason to spend vast sums of money that produce no good will, and generally impacts the lower class in the most negative ways.  It also serves as a critically important means of thought control.  It provides an easy external source of fear, and reason to believe in the government.  It promotes ostracizing anyone who questions the government – do you not want to be safe from “those savages?”  If you don’t care about being safe, then I hate you for not wanting me to be safe.  In 1984, it is a channel for hatred.  The government steers all of the dissatisfaction of the people to something that is completely controllable, not crushing dissent, but actually preventing it by diverting negativity towards the outside.  Is our hatred for muslims any different?  What about the Nazi hatred of Jews?  The perceived threat from outsiders is an exceedingly effective distraction from the disastrous state of domestic affairs.

All of this is political conjecture that you may or may not agree with.  One thing I hope we can agree on is that it is atrocious to offshore American manufacturing for so many of our daily needs, and yet maintain our capacity to manufacture the implements of death and destruction.  What sick society would rather maintain the capability to kill people over the capability to clothe its own people?  What country abandons its pride in quality manufacturing and collectively settles for undeniably inferior products, solely for the sake of instantaneous cost (as opposed to total cost of ownership over the lifetime of a superior, easily repaired product)?  It is myopic at best and unsustainable at worst.

Needlessly Cerebral
Philosophical musings

Comments (0)