Year: 2016

  • The Party of Lincoln

    Something that struck me as absolutely outrageous (more than other things that I’ve seen this week) was the connection of the roots of the Republican party to the modern Republican party.

    While it never hurts to be proud of where the party comes from, it is completely unreasonable to claim that the modern-day party stands for the same things it did when it was founded.

    The Republican party was founded in 1854 on an anti-slavery platform, where it filled in the power gap in the north left by the collapsed Whig party. It saw strong support in the north of the US, where Republicans fought to end slavery. Abraham Lincoln was elected as the first Republican president in 1860.

    When Lincoln ended slavery with the Emancipation Proclamation, Democrats in the south resisted, sometimes violently, and sometimes with laws, known as Jim Crow laws.

    Eventually, northern Republicans made rich by civil war industry grew tired of supporting the rights of freed slaves in the south. These rich white men became party officials and did not want to give up any of their power. The aimed to protect their own interests. In this manner, the Republican party became the party of big business.

    The parties as we know them today were solidified in the ’80s.

    It’s entirely inaccurate to claim that the Republican party of today resembles in any way the Republican party at the time of its founding.

    I was inspired to write this article by mention of this idea at the convention, as well as this Vox video.

  • RNC in Cleveland – Day Four

    UPDATE looks like an article of convention notes by two of our reporters ran in the Mining Journal!

    Trump is officially the Republican nominee for President of the United States of America. My first reaction to this news was a feeling of impending doom.

  • RNC in Cleveland – Day Three

    Something that has been on my mind all week is the utter lack of minority representation at the convention. Inside the security perimeter, most black people that you see are working here. I check everyone’s credentials to see what their role here is. Of all the ones that I’ve seen, one hand would be enough to count all of the non-white delegates here.

    White people are an enormous majority here. Seeing a hispanic or black speaker on stage seems entirely incongruous with the messages and platform of Donald Trump of the Republican party itself. It seems self-defeating for anyone who is not white to be a Republican.

    Black guy quotes Martin Luther King Jr.’s I have a dream speech to limited applause from the white delegates on the floor.

    This is an excerpt of some notes that I made while watching the convention.

    • If you’re tired of brokenness elect Donald Trump.
    • Conservative leadership is working in States with Republican governors? In Wisconsin? Fact check
    • Claims that our economy is in the toilet are unfounded
    • The whole premise of America coming back or becoming great again is flawed. What is it coming back from? When was it great? Whom was it great for?
    • Apart from race relations, things are relatively good, compared with what Obama inherited when he took office in ‘08.
    • Freedom means no one can tell me what I do with my body. Freedom means no one can tell me whom I marry.
    • Education, healthcare, marriage dictated out of Washington by hildawg? Nope, that’s what Republicans want to do.
    • Brexit mentioned -> cheer -> profound victory for uneducated populace
    • Build a wall -> cheer
    • Admitting Isis terrorists as refugees? Has that happened before?
    • Freedom will lift people out of dependency to the dignity of work? Wat
    • Rep founded to defeat slavery? True, but the party has since done a 180…
    • Abe Lincoln
    • That’s our legacy although the media will never share it? Because that’s not how the modern Republican party is
    • Cruz is all over the place. Didn’t endorse Trump. Booed off the stage.

    Tonight was Republican Vice Presidential nominee Mike Pence’s first appearance on the stage of the convention. He seems fully aware of how boring he is, making a point to mention it to the audience. It’s interesting to see him finally joining the Trump train. Especially in contrast to his endorsement of Ted Cruz around the primaries.

    Another interesting day at the Republican National Convention.

    Bonus video

  • RNC in Cleveland – Day Two

    Our second day at the RNC began once again at the Michigan Delegation Breakfast Session.

    Michigan Speaker of the House Kevin Cotter addressed the delegation with a report on the state of the state. His moderate, compromising stance was all but booed out by the delegation. To me, this highlighted the increasing radicalization of partisan politics. A reasonable politician who understands that things get done through compromise is criticized for not doing enough for the “party.”

    Despite not attending the RNC itself, Ohio Governor John Kasich addressed the MI delegation immediately following Speaker Cotter at the breakfast. As I expected, he didn’t mention the white elephant in the room: Trump. Trump and other party Republicans have called Kasich out for his absence from the Convention proceedings at the Quicken Loans Arena. Many delegates expected him to endorse Trump, but were left unsatisfied.

    Delegates who were originally sent to represent Kasich were left confused, expecting him to give some sort of indication (that would have been made clear by some sort of endorsement). Once Kasich left, it seemed that these delegates would end up falling into party lines by voting Trump.

    After returning to edit some stories and get lunch, we drove to an event that had been recommended to us by a local contact. The American Dream included a 4000 pound ice sculpture of “The American Dream” that was left outside to melt, a metaphor for the idea of the American Dream.

    A panel of local artists and coordinators discussed the potential of art to be a powerful force for change. It was refreshing to hear some reasonable voices and empowering to hear about the experiences that these people have had in working together to produce a series of documentaries called The Fixers

    Bonus video:

    UPDATE: Looks like Donald is now officially the Republican nominee… the votes are in.

  • RNC in Cleveland – Day One

    Michigan delegates to the Republican National Convention got fired up for New Jersey Governor Chris Christie as he addressed them this morning at their first breakfast meeting. Christie stressed the importance of party unity behind the presumptive nominee, Donald Trump.

    However, the enthusiasm for Trump was not as strong as expected. The emphasis was placed on bashing Hillary, rather than promoting a Trump presidency. It makes sense, as it’s very hard to promote a candidate who has nothing to offer.

    The scene downtown has been peaceful so far. There are, however, huge crowds, but everyone has been respectful aside from some jeers and boos for Hillary.

    We have had to take turns in the convention center, as we only have three (of which only two are valid for entering the arena itself) passes for six people.

    At the convention center, any mention of Hillary Clinton’s name generates a huge boo from the audience.

    According to Willie Robertson, of Duck Dynasty fame, Trump is:

    • “a man who knows how to get things done”
    • “a man who says what he means and means what he says”

    and will

    • “Make America America again”

    It’s really showing that the Republican Party had trouble finding people to speak here at the convention. What place do reality TV stars have in our political process?

    Overall, it’s a disturbing display of the state of our country.

    UPDATE: Melania’s Plagiarism of Michelle’s 2008 speech So that’s pretty blatant, right? pic.twitter.com/EPnHME7afV— Mike Hearn (@mikehearn) July 19, 2016

    UPDATE: Tony Schwartz, ghostwriter of The Art of the Deal, spoke out about writing the book. He believes that if Trump wins and gets the nuclear codes, there is an excellent possibility it will lead to the end of civilization. Source: NY Times

  • Blue Lives Matter? I thought All lives matter

    #BlueLivesMatter completely misses the point. And it makes #AllLivesMatter hypocritical.

    This cartoon says it all.

    The same people that pioneered the #AllLivesMatter movement are now claiming that #BlueLivesMatter. Do they not understand the irony of this?

    By claiming that all lives matter, this minimizes the importance of lives that currently need the attention, much like the house on fire in the cartoon above.

  • Republican National Convention

    I was asked to chaperone a group of youth journalists with 8-18 Media (a youth journalism program in Marquette that I was once a part of)

    Disclaimer: these blog posts represent my opinion!

    I plan on writing a post for each day of the RNC journaling my thoughts about the event.

    • Day One – Benghazi and weaponization of grief
    • Day Two – Make America Work Again (It’s already working with a very low unemployment rate)
    • Day Three – Make America First Again featuring the second and third place candidates from the Republican primary
    • Day Four – Make America One Again
  • Why I chose Silex for this website

    UPDATE: this is a very old post imported from my old site… I’m including it for historical purposes. deployed version and the source for it

    This is an introduction to my choice of framework in building this website.

    Several options I considered for my website:

    • Django
      • Django’s opinionated Model model with its strong database ties seemed a bit much for a relatively static site
      • It’s huge and unnecessarily complicated for a simple website
      • It would be a great learning experience in Python
    • Vanilla PHP
      • I have a lot of experience in vanilla PHP at my internship at Northern Michigan University working in the Information Services department where I develop web applications for internal use.
      • I often find myself frustrated with PHP’s quirkiness and wouldn’t learn new material if I used this for my personal website.
    • Silex
      • This is a micro-framework built using components of the much larger Symfony framework.
      • I discovered Silex in Heroku’s PHP deployment guide where I noticed that it was small enough to not draw unneeded overhead and extensible enough for my website to grow as it needed.

    I opted to go with Silex. The source code is available here for your perusal.

    I have gone through many iterations of this site. The first version was simply a clone of the homepage that I have on my university’s computer science department server. This wasn’t a very useful homepage as many of the projects that I wanted to show in a portfolio were tied to a database on that server.

    I eventually moved towards a one-page style layout (in this commit) where the links in the navbar would scroll the page to pre-defined regions. I then ditched the old multipage layout and at this point I discovered Grav. After difficulties integrating Grav within my app (read more here), I decided to roll my own blogging solution modeled after Grav’s markdown content system.

    I included a YAML Front Matter + Markdown Parser and used that to define the metadata for a blogpost.

    There is still much to do (post sort order, paging, tagging, etc), but I appreciate the experience that I have gained in building this blogging system.

  • Heroku with Grav flat-file CMS

    NOTE: this is a historical post imported from my old site.

    When I started building a website (sparked by the purchase of my first personal domain name), I started looking into many different solutions to my web development process.

    I had already decided that I would use a free dyno on Heroku for hosting.

    As I researched additional solutions, I came upon the world of the PHP CMS (Content Management System, for the uninitiated). Just the sheer number and variety of CMS is terrifying.

    The free tier for databases in Heroku felt lacking in peace of mind and ease of setup so I focused my search to the realm of the “flat-file” CMS.

    I discovered Grav purely by chance. Grav claims to be fast and extensible. I was enticed by the flashy admin interface replete with responsive UI and a gorgeous built-in Markdown editor for content creation.

    After a bit of configuration, I managed to deploy a Grav instance into a Heroku dyno (a rather annoying affair which involved deploying caches to Heroku and mod_rewrite rules in .htaccess).

    The tricky part came when I brought the Admin Plugin into the picture. Without the Admin Plugin, you need to directly change the configurations and add content from the filesystem and then deploy that to the web. You are able, however, to use PHP’s built-in development webserver (php -S localhost:9000) to test your changes.

    Once I got the Admin plugin working (don’t forget to clear your cache if you’re deploying to Heroku – or make sure that the cache directory is in your .gitignore file), I started making changes to my .yml configuration files and writing some content with the built-in Markdown editor. I was very impressed with the Admin interface. It’s very modern-feeling, while still being lightning-quick.

    Then I needed to make a change that wasn’t available from the Admin interface… After the next deploy to Heroku, every change that I had made from within the Admin interface was obliterated. This is the main flaw in hosting a Grav app on Heroku. The ephemeral file system for a dyno on Heroku works just fine, but when the dyno restarts, it is regenerated to the state at the latest build. It’s important to note that dynos go down any time you push a new build and at least once a day.

    Dynos restart when:

    • create a new release by deploying new code
    • change your config vars
    • change your add-ons
    • run heroku restart

    I then read more about the ephemeral filesystem of Heroku dynos.

    Each dyno gets its own ephemeral filesystem, with a fresh copy of the most recently deployed code. During the dyno’s lifetime its running processes can use the filesystem as a temporary scratchpad, but no files that are written are visible to processes in any other dyno and any files written will be discarded the moment the dyno is stopped or restarted. For example, this occurs any time a dyno is replaced due to application deployment and approximately once a day as part of normal dyno management.

    This is a useless setup for a Grav application where everything is a file. This may sound a bit harsh, but changes to the live app will be destroyed within a day. This just means that there are two options:

    1. Ditch the Admin plugin
    1. Use a full LAMP stack locally to make changes to the files from within the Admin interface before deploying to Heroku

    I chose to ditch the Admin plugin. Making changes to the project from within the filesystem in my text editor was totally acceptable.

    Not long after trying to integrate a Grav app within the Silex application that is my website (rather than linking to the Grav app through a subdomain of benhh.com), I gave up Grav for my blog entirely and decided to roll my own blogging solution.

  • Welcome To My Blog

    This is my first post.

    I’m Ben Harris. I study computer science at Northern Michigan University.

    I’ll be writing about some of the experiences I’ve had in software and in other areas of my life.

    Some of my hobbies include:

    • writing software
    • biking
    • traveling
    • ultimate frisbee

    Thanks for checking out my blog!