Hey, I’m Parker.

Creator of music, photography, and (mostly open) software.

It's Just Semantics: App.net Alpha

This post was originally written as an assignment for INFO 2450: Communication & Technology taught by Professors Jeff Hancock and Drew Margolin in Fall 2013. The course focuses heavily on design of technologies. The assignment asked for an evaluation of an online application or product based on the principles outlined in Donald Norman's "The Design of Everyday Things". It's a very basic look at the technology, but I thought I'd share it anyhow.


App.net is a social platform designed from the beginning to be nothing more than a platform for developers to build great social apps upon. This blog post will be about the very first application built upon App.net, called Alpha. App.net will henceforth be referred to as "ADN."

The main purpose of Alpha is to demonstrate the ADN API in a somewhat familiar way. Alpha behaves much the way Twitter does: a user creates posts, users can follow other users and interact with them in the familiar way. The divergence from Twitter (and other "microblogging" social applications) is twofold: a user pays for his or her account, and the posts may be longer.

By asking the user to pay for an ADN account (which is used by Alpha as the poster's identity), the normal business incentives shift from building an application (or platform) which optimizes for advertisement revenue to an application (or platform) which optimizes for the happiness of the user (if users like to use the service, they will continue to pay the $5/month or $32/year). Twitter, Facebook, and Google are well-known for accepting user detriment (in terms of the virtual design of the products) for greater advertisement revenue. This is not the case with ADN (and by extension, with Alpha).

On Alpha, posts may be up to 256 characters long and users can choose to attach media to their posts. The "@" symbol is used to mention another user (the other user receives a notification when this happens) and the "#" is used to denote topics. With the longer character limit, one could easily surmise that Alpha is attempting to make having asynchronous, open conversations online a bit easier. The openness of being able to write anyone (divergence from Facebook) coupled with the 256 character limit (a physical constraint) (divergence from Facebook, and extension of Twitter's idea that a post should be "bite-sized") produce a fantastic application for having chats with anyone about anything in a way conducive to conciseness and to expressiveness. One common frustration with Twitter is that conversations on it are very challenging, as 140 characters is far too few to really say anything substantive. ADN hopes to remedy this problem, and in my experience, arguments (and general discussions, for that matter) have been incredibly easy and productive.

Screenshot of alpha.app.net

Above, you see the home screen of Alpha (namely, mine). This shows the user's stream. The search box and post box (based on their physical attributes) afford writing. The change of the "POST" button from grey to a nice deep red-orange highlights a change of the mapping from a button that may not be pressed to one that may be pressed (I would consider the change itself feedback). As the user types in a post, the number (shown here as "256") decreases by one for each character that is typed into the box above it, providing very valuable feedback about the user's actions. This number's presence also provides visibility for the physical constraint placed on the size of the posts allowed in the service. The buttons on the right of each post afford clicking and change color (feedback) when clicked. All of the aforementioned design elements, in addition to the placement of the post box at the top, suggest that the application is trying to get the user to submit content to his or her stream. The feed below seems to indicate that the application wishes for perusal and interaction of other users' posts by the logged-in user.

Screenshot of a singular post

As you saw above, each post is given its own box. There are 5 interactions which only show up when the user mouses-over the post: "Discussion," "Reply," "via (app)," "Mute User," and "Report". In order to better facilitate the app's goal of interaction, it would make sense for the "Discussion" and "Reply" buttons to always be shown. This would improve the visibility of the interaction paradigms and afford interaction without the user making the first move (to mouseover).


That's it.

Launching a Rails Console With Capistrano

If you're using the popular Capistrano web deployment framework, you will likely have wished you had an easy way to perform a quick task in the production rails console on one of your servers. Many thanks to @colszowka for this solution:

NOTE: This is for Capistrano v2. Things are different for v3.

namespace :rails do
desc "Remote console"
task :console, :roles => :app do
run_interactively "bundle exec rails console #{rails_env}"
end
desc "Remote dbconsole"
task :dbconsole, :roles => :app do
run_interactively "bundle exec rails dbconsole #{rails_env}"
end
end
def run_interactively(command, server=nil)
server ||= find_servers_for_task(current_task).first
exec %Q(ssh #{server.host} -t 'cd #{current_path} && #{command}')
end

And, vòila! Run cap rails:console and you're in business.

Dealing With Distraction

Dealing with distraction for those of us who live with AD(H)D is a constant struggle, and can be especially difficult for those of us who must daily solve large, complex problems. This post describes what it is like to be a programmer with ADD and some strategies I've developed to help make myself more effective.

To solve complex problems by programmatic means, one needs to be able to focus. To find the best solution to any problem, one needs to be able to focus. In short, an effective worker is one who can focus.

For those of us who live with the difficulties of AD(H)D every day, this fact - this dependence upon a kind of mental discipline - is glaringly obvious. Our constant struggle to focus means we are not as efficient as our non-ADD peers when asked to complete a single task. We get distracted by the sound of the wind, the tap of a colleague's fingers on his desk, or the sound of people talking walking past our window. The slightest noise or change (by a separate entity) in the visual landscape will cause us to loose our train of thought nearly immediately.

For those of you who can focus relatively easily in distracting environments, I offer this metaphor to help you understand a bit more of how it is it live with such an affliction. Imagine you are swimming in a lake with a basketball. The depth at which you swim is your level of concentration - the deeper you swim, the more focused you are and thus the less susceptible to distraction you are. Imagine further that a day's worth of work is like swimming the length of the lake, and your goal is to swim as deeply as possible for as far as possible. The problem is that you have to do all this while holding onto the fully-inflated basketball. The longer you swim underwater, the harder it is to keep the ball (and yourself) deep underwater. During your swim from one end of the lake to the other, you are pulled up to the surface very frequently, only able to keep the ball underground for a short while at a time. This is what it's like to live and work with ADD.

The inability to focus on a given problem for more than a few minutes at a time causes severe problems for all employees with ADD, but especially for developers who have to delve into a problem, process it, and produce a solution quickly and efficiently.

The effectiveness of various solutions will vary person to person, but these helped me:

  • Find a quiet, solitary place to work (avoid working in a place where people socialize)
  • Turn off all notifications when working (fetch updates at will instead)
  • Play calm, simple music without words, or work in a place where the background noise doesn't change
  • Keep the room cool in temperature
  • Work on one thing at a time and work until it is completed
  • Plan out finer details for a large project
  • Get enough sleep
  • Medicate with some sort of stimulant
  • Keep your workspace empty of clutter and visual distraction
  • Keep snacks by your desk (like almonds or dried fruits) to keep your energy up throughout the day
  • Exercise to exhaustion at least every other day
  • Consciously avoid doing several things at once, like listening to a YouTube Lecture and checking your Twitter feed on your phone at the same time
  • Avoid depressants like alcohol
  • Write or engage in a creative, exciting activity which asks for your full concentration

Following all of these with ADD can even be a challenge, but limiting the frequency of distracting stimuli goes a long way to achieving focus and increasing your productivity.

If you have other suggestions, hit me up on ADN or Twitter. How do you cope with distractions?

Get Rid of Senate Prayer

Earlier today, I was watching a C-SPAN video of a U.S. Senate session on February 1, 2012. This was the first time I had ever watched a Senate session from the beginning and, to my surprise, they began with a prayer.

Hold up. A prayer? In a session of one of our government's highest legislative bodies?! I suppose I shouldn't be too surprised, what with the (often crazy) Religious Right getting after the government with Bible-backed policies and all. It was nevertheless astonishing to see the institutionalization of religion in our government.

I generally like our government, but this changes everything. Man, I was angry. I felt betrayed and undermined - like I was worth nothing to anyone in D.C.

So I wrote to my senators:

Dear Senator,

I wish to ask for the Senator's thoughts on the opening prayer which begins a Senate session. I have done my research and see that this prayer has been a part of Senate procedure since 1789 and was recommended by Benjamin Franklin about two years previous, but I question its place in our secular government. It is, frankly, inappropriate that any governmental body in our United States of America be so closely tied to one religious creed in a nation with many hundreds and thousands of religious belief systems. I will not deny that religion is a part of politics - a belief in a certain religious creed often results in an election win - but it has absolutely no place in governance. It is insulting to think that any one religion is given special treatment in our governments.

I ask the Senator to introduce a bill which will put an end to this Senate Prayer, for, while Mr. Franklin may have been right in 1789, he is most certainly wrong now. We have moved past a blind reliance on God, and it is, now more than ever, a hindrance on our Great Government. God's interference in our government has forced limited civil rights for minorities, was a rationale for slavery, and is still fighting against a Woman's Right to Choose, a Citizen's Right To Marry Whomever He or She Wishes, Scientific Advancement in many fields and so on.

It is our imperative as citizens to think of each other first and to respect the different viewpoints and beliefs of our fellow Americans. Honoring any religion on our Senate floor is a betrayal of this principle, and it must be stopped.

Thank you,
Parker Moore
Constituent

If you care about religious freedom at all, I would urge you to do the same.

Jekyll 1.0 Released

Today, I'm proud to announce the release of Jekyll 1.0. There are a million goodies and fixes to enjoy, and we're (the still-active Jekyll core team members: Tom, Matt and I) really excited to share this first major release with you. Be sure to follow @jekyllrb for updates on future releases and links to cool plugins.

Some quick highlights:

  • New subcommands: new, build, serve, and import
  • Amazing new docs at http://jekyllrb.com (thanks to @cobyism)
  • jekyll new creates a new scaffold so you can get blogging even faster
  • Drafts, i.e. posts without dates
  • New "excerpt" feature on posts
  • Timezone configuration
  • 'gist' liquid tag
  • Source directory protection

... and so much more!

We also have an Upgrading page that clarifies some breaking changes and tips for upgrading to Jekyll 1.0.

As many of you know, Jekyll lay mostly stagnant for quite some time. At 0.11.2 and 0.12.0, it was pretty stable. It had some annoying bugs, but nothing much that couldn't be worked around or monkey-patched.

After using Jekyll last summer to help build Cornell's College of Agriculture and Life Sciences website, I took a renewed interest in seeing this project move forward. Last December, Tom answered my offers to help with the development of Jekyll by adding me as a contributor. I'm happy to say that it has come a long way since then, and I'm very proud to be a part of a team that has pushed this project to new heights.

Thank you to everyone who submitted a pull request, and/or gave me advice along the way. It has been great fun so far, and I look forward to working with you all to push out future versions!

An Afterlife?

I am not a religious man, yet I find myself curious about the prospect of an afterlife. Is there something beyond this life, in this dimension, in this universe? While I don't believe in the traditional conception of an afterlife (one's soul ascends to a blissful place, where it inhabits all space and time for eternity), I do like to think we live on beyond the time we take our last breath.

In ninth grade, I graduated to a Sunday School class which resembled a forum — discussion-based learning. A retired history teacher, a Public Defender, and a social worker led the discussions in this class. The dialogue probed our most deeply held beliefs and asked profound questions about life, spirituality, goodness, happiness, beauty, and other similar topics.

One day, we were discussing the afterlife. The normal answers dominated the conversation: "When one dies, one's soul ascends into Heaven to be with one's family members and with God," and "We exist everywhere and with everyone. We watch over those we love and help them live good lives." When the question came to me, I wasn't sure how to respond. Can an atheist believe in an afterlife? If so, did I?

I hadn't given it much thought before, but I pondered it for a moment and concluded, "An individual's afterlife is the culmination of the memories others have of the individual. It is the legacy that individual leaves behind and the impact that individual had on those he or she encountered."

The more I thought about it, the more it made sense. If we don't have souls, how do we explain this legacy of the afterlife concretely? The afterlife is not something experienced by the deceased individual, but by everyone else he or she impacted.

I have not yet met anyone else who holds this belief I hold, but I invite you to explore it and see of you can reconcile it with your beliefs about the afterlife. Banksy once famously said (paraphrased by a friend): "They say you die twice, once when your heart stops beating, and again when your name is said for the last time." I can't believe there is something I will experience beyond my death, but I can believe that others will experience their memories of me beyond my departure from this world.

We Mustn't Idle

Our legacies on this Beautiful Earth are inextricably tied to the work we do, the principles we stand for and the messages we spread. The apathetic nature of many of my peers nowadays is heresy to the nth degree, and we can no longer stand idly by and watch young people refusing to talk about the hard issues. If we’re to make any progress and maintain this More Perfect Union, we had better get our act together and stand and fight for the things we believe in.

It comes with a price, however. We must be informed. We must read the arguments of the other side, debate them and reformulate our stance given the new evidence. In the same way Newton used this inductive methods to formulate his three famous Natural Laws, we must start with a problem we observe in our society, generalize a solution in the form of legislation, judicial action or grassroots campaigning, and revise our message as new information becomes available.

It is not enough to let Gov majors, English majors and law students run the country, making sweeping decisions about how we may live our lives. It is not enough to defer to those with means and wealth – those with the ability to run a traditional campaign for public office and influence those in public office – in fact, it is the worst offense to this Great Nation to allow the aristocracy of special interets to continue determining the rule of law. We must stand up, as citizens, and fight for what sparks fire in our bellies! We must stand up, as citizens, and say “enough is enough” to special interests and lobbyists who control Washington. Now is our time. If our country is to change for the better, it will be because we – the citizens – made our voices heard and fought with much gnashing of teeth for what we believe in and what we know is right.

This is the imperative of our generation. Let us act!

This post was originally published on Medium.

Downtime Is Good

I just started working as an intern at 6Wunderkinder a couple weeks ago. I am by no means an expert in devops (hell, I have only dabbled with a little sysadmin in the past - nothing too serious) and I don't really know what goes into keeping a huge series of server up and running. I can say, however, that I know the customer's side of things. I know what it's like to be a user of a service which periodically goes through downtimes of noticable lengths. (I know I'm not the only one here so you will probably relate to this observation as well.

So today there was a blip of downtime for Wunderlist, a really awesome task- management application by 6Wunderkinder. During this downtime, it occurred to me: downtime can help the visibility of an application or service.

Hear me out: when the service is running smoothly, few will actually talk about it. When it goes down, Twitter blows up with complaints and "ZOMG MY LIFE IS OVER" tweets. These tweets, in a way, promote the service. The more frustrated the tweet, the more apparent it is that the tweeter cares about this service.

As one who sees these frustrated tweets often about many services, I can only conclude that a little downtime here and there is a great way for outsiders to gauge how awesome a service is: if it goes down and people are upset, then the service is probably worth trying out (once it goes back up again). If the service goes down and no one cares, then it probably isn't worth your time.

So next time you see angry tweets, write down the name of that service and check it out once everything is back in order. In all likelihood, you will like the service, too, and you'll be angrily tweeting next time it goes down.

It's all about perspective.

Install Rbenv on Ubuntu 12.04

So, I'll admit it: I absolutely adore rbenv.

In light of this, I've been using it at my work at 6Wunderkinder the past couple weeks. 6W uses AWS like nobody's business, and the Ubuntu EC2 instances I've been interacting with are really bare-bones. So I wanted to write this script for you, the Ubuntu & Ruby user, in order for you to very quickly get up and running with rbenv & the latest Ruby MRI. Just copy it and run it.

Installing rbenv on Ubuntu 12.04
sudo apt-get install zlib1g-dev openssl libopenssl-ruby1.9.1 libssl-dev libruby1.9.1 libreadline-dev git-core make make-doc
cd ~
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL # Restart the shell
mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git
git clone git://github.com/sstephenson/rbenv-gem-rehash.git
rbenv install 1.9.3-p362
rbenv rehash
rbenv global 1.9.3-p362

Connect to 3G on Simyo in Germany

I recently signed up for simyo, a German cell provider. After installing the Nano SIM into my phone, I noticed that the 3G connection to the mobile data network was failing. Got a weird error that said I was not subscribed to a mobile data network. Which was obviously false.

So, I tweeted about it. Expecting a several-day delay in my support query from simyo, I totally resigned to wait on mobile data until they got back to me. But luckily this new 6W family & friends totally came to my rescue. Rafif Yalda, a former Wunderkind, totally came to my rescue in a tweet (which has since been removed).

So if you ever run into a problem with your mobile network, ensure that your APN settings are correct. In this case:

APN: internet.eplus.de
username: simyo
password: simyo

THANK YOU RAFIF. This surely saved me many hours of frustration.