Saturday, August 30, 2014

Push-up Experiment: The Nerdy Parts

I wrote The Push-up Experiment earlier and got enough responses asking about the nerdy parts that I'm now writing this one. So, buckle-up and hold on, this could be a long nerdy ride.

Tools

Here are the tools that I used with links:

Collecting the Data

Google Drive allows you to build surveys and send them out; it's called "Google Forms". Your drive options might look a little different than mine but here's the gist of it. Create a new form and make a question for it. For the push-up survey I simply asked "How many push-ups did you do?" and left it as a "Text" type question. When you do this it shows up as a simple text box on the survey and when opened on the phone brings up the keyboard. One other thing I did was only allow for numbers to be entered into the text box because obviously I can't do "abcxyz" number of push-ups. This also has the added benefit of simplifying the Android keyboard so that it only displays the number keys; a simple thing but it makes life just that much easier.
When you're done with your form click the "Send Form" button in the top right and copy the URL from the dialog box, you'll need this later. Google will now take any results from this survey and drop them into a sheet that has the same name as the survey with "(Responses)" after it. It will also time stamp every response. It's inside this sheet that I set up the graph. I chose an easy to read area chart but you can play with that to make it fit with how you want it to look. After your chart looks good you can publish it which gives you two options "Interactive Chart" and "Image". I'm a fan of the image option but it doesn't really matter which one you go with honestly. Now that you've done that you can copy/paste that embed into any web page or you could probably get creative tweet it out or whatever, sky's the limit! Alright, now that we've got this all set up there is on more important thing to do, remind yourself to do push-ups and make it easy to record that I used IFTTT for this.

Reminders and Magic

This part isn't too hard but it could vary greatly depending on a couple things: 1. Android or iPhone and 2. the notification service. I've got an Android phone and I'm using a notification service called Pushover but IFTTT works with a lot of notification services (they even have their own app for Android and iOS) so you don't have to use Pushover. Regardless the steps will be basically the same.

If you're not familiar with IFTTT be warned, it can be a little overwhelming at first but once you dig into it a lot of wonderful uses start to come to mind. Basically it is a simple service that says when "ABC" happens on the internet trigger "XYZ" to happen. It has a list of triggers and a list of actions for all kinds of services like Twitter, Facebook, RSS feeds, Reddit, so many more. As a silly example you could have it post a tweet on your behalf every time a Craigslist ad goes up matching the search term "shopping cart". Enough about that, let's get back to the task at hand: reminding us to do push-ups.

Using IFTTT I created a new recipe that triggers every day at 6:45 and when that fires it sends a Pushover notification with the URL to the survey we created earlier. The trigger is under the "Date & Time" channel and I selected "Every day at..." then just put in 6:45 and go to the next step. Select the Pushover channel (or whatever notification service you're using) and in the step after that paste in the URL for your survey. Finish off your steps for creating the recipe and you're done! You'll now get a notification every day with a link to your survey and the results from that survey will go into your Google sheet to be graphed and automatically published wherever you included the publish code.

Conclusion

Yes, this is a bunch of work and a lot of weird tools that may or may not have been created to work with each other but it was a fun problem to solve and now I have an image that I put anywhere and it will always show my most recent push-up progress. What other things can you think of that this might be useful for?

"The Push-up Experiment" or "How I learned that being able to see progress is motivating..."



I've found that when I'm able to visualize progress it motivates me. I'm not a productivity expert or a psychologist but this makes a lot of sense and I figured I'd share it even if you've heard it before.

Since March 28th, I've been doing push-ups and tracking the number of push-ups I achieve in a spreadsheet. Yes, I know this completely classifies me as a total nerd, but I'm OK with that; I'm writing a blog post about my push-up spreadsheet, I'm well aware of the overall nerdiness going on here. I won't get into the nirty-gritty about how I used IFTTT to send me a Google Drive survey every morning on my phone reminding me to do push-ups as well as providing a convenient place to simply enter the numbers. I won't go into the details about how that survey automatically goes into a Drive sheet and the graph (pictured below) automatically updates with each response. No, I won't go into that because I'm afraid that you will think I'm very nerdy, but if you really want me to then let me know and I'll write that up too.

In order to make sure that this data actually meant something I wanted to put a couple rules in place for myself.

  1. Push-up until I physically can't do another one.
  2. Do them at roughly the same time every day.
The first rule ensured that I wouldn't be future padding results by holding back now so that I could get a consistent improvement day-by-day. The second rule, since I picked just after waking up, prevents as much outside influence as possible. There is still the chance that a good or bad night's sleep would impact my numbers but I figured it's better to narrow it down to as few external factors as possible.


Now that I've been doing push-ups every morning for a few months here's what that information looks like in a graph form. I started at just over 10 with a couple days of exactly 10 and have grown to be able to do over 30 push-ups as of August 30th. I'm not trying to brag because honestly 30 push-ups isn't really a viable bragging right but I think it's interesting to visualize this information which brings me to my main point and title of this post, "being able to see progress is motivating."

I love looking at this chart, it makes me feel good that I'm improving. It is very simple and very clear that I'm making progress, not rapid progress but it's visual and easy to see.

Wednesday, August 27, 2014

Mentorship Education

Disclaimer: This is a work in progress, I'm mostly curious about what you think about this idea. Also, sorry about the wall of text.


As a software developer, I try to identify places were technology can help people. I've had many conversations with a few people about how the education industry is on the cusp of a large reform because of the Internet. I'm not sure if that's true but I'm going to act like it is for the sake of argument at the moment. Many people believe that this is going to come in the form of a centralized education platform or standard that delivers online education. We're already seeing things like this, Kahn Academy (https://www.khanacademy.org) and Lynda (http://www.lynda.com) are two excellent examples. I'd like to look at how technology can help education from a different perspective because I think the idea of online education (or eLearning) is flawed in one very serious way; it completely ignores the human aspect of learning and assumes that we're going to learn on a cookie cutter assembly line.

I'm not denying that education is possible through online resources because I go to Google whenever I don't know the answer to something, but there is a difference between answering a trivia question and understanding the fundamentals of economics, the events that lead up to World War II, or software engineering. The fact of the matter is that, when it comes to learning, each human is different. I think this means that we can't expect that a one-size-fits-all education process is going to be the most efficient method of learning for everyone. We have to tailor education to the individual if we want to make the most out of the time that we're spending learning.

This leads me to the guess that the most effective education is a one-on-one environment where a single mentor educates a single learner. This way the mentor can adapt to the needs of the individual. We already know that this method works because when a student is doing poorly we give them individualized tutoring. Why should this method of teaching be reserved for when a student is behind? The only real reason I can come up with is because we don't have enough teachers to educate our entire population individually.

Let's break education up. If we focus on teaching/learning a single topic at a time then, theoretically, we're able to master one topic quickly. Once we've mastered a single topic shouldn't we be able to then pass on our understanding of that topic to someone else? I believe that one of the best ways to learn something is to teach it so what if part of our learning process was to teach it to someone else? Realistically this means we would learn a topic from a mentor and then once our mentor believes we understand it well enough we would graduate to a mentor of the topic and teach someone else. After we've mentored someone we become a reference to that person as they become a mentor. We're not actively engaged in the education of our "grand-learner" but we act as a reference to their mentor, your previous student. This is all done at a single topic level because this is a living educational platform that focuses on a student learning a single topic from a single mentor. In this ideology you're always teaching and always learning.

Here is where technology comes in, there is no way that this would be possible without a software platform to find mentors across the world who are experts in their field. I envision this working very similar to a pyramid scheme but without the sleazy sales pressure. If the learner were able to rate their mentor on how well they felt they were able to teach the topic then that data could also be applied to their mentor's reference but at a fraction of the impact. This allows us to build a pyramid of data that holds the mentor responsible for ensuring that their student understands the topic well enough to then be able to teach it.

I don't have all the answers for this yet but I'm thinking about this at the moment and wanted to hear what you thought. What are some of the stumbling points or gotchas that I have missed? Any suggestions for how this could work better? Am I completely insane and this would never work?

Saturday, August 2, 2014

Looking For: Software Mechanic

Software development appears to be heading in a similar direction as automobile assembly. Before Henry Ford revolutionized the industry every car was unique and complicated. They required specialized mechanics who knew the specific vehicle inside-and-out. This sounds very much like software development today; it is possible for any developer to get into an application and make changes but it is only efficiently done by someone intimately familiar with the specific nuances of the application.

We're very close to a tipping point in development where applications may be created on an "assembly line". It is already beginning, you no longer (and haven't for quite a while) need to know HTML to create a website because many hosting companies have a WYSIWYG editor that allows you to generate the markup needed to display content on a site. I'm writing this in a blogging engine right now that doesn't require me to change my CSS to alter the look/feel of my post. Using Google Drive you can already create forms that accept data and store it for analysis. When you're talking about a simple application there isn't much left that needs to be automated for anyone without development experience to be able to create an application.

Many developers (including myself) would say that the last part is probably the most difficult because it consists of what many would call the business logic. These rules around what needs to happen when certain data is entered or certain events occur is where many developers spend their time because it is so intricate and specific. Perhaps the "assembly line" will end up creating everything except for this detailed logic but the possibility for this to become computer generated seems inevitable as well.

Developers are inherently efficient; we strive to solve a problem only once and allow tools to manage it from then out. How many different tools do you use in your development workflow and how many of them are designed to automate a portion the process? The development for the software assembly line has already begun and it exists in small disparate tools created by individuals to help solve a small problem or annoyance.

When we finally hit this point where software is generated by more software where will all the developers be? Will developers become more like auto mechanics today only jumping into applications to fix things when normal wear-and-tear as taken it's toll? Should the focus now be on building, maintaining, and updating better assembly lines?

Gosh Darn It! Writing is Hard!

I wandered back to Blogger today after taking a long break (even though I told myself that I wouldn't take breaks) and I realized that I have several posts that are only half finished. I don't think that I'm going to finish most of them because by now the urge that I had when I started them has either dissipated or the information is completely irrelevant. Although, I'm having a very hard time convincing myself to actually delete the drafts. I wanted to make this small post to at least say that writing is not easy. This isn't a, "boo-hoo I'm so busy" post but it is an attempt to kick start my brain into getting used to writing more. I have two large hurdles in my mind when it comes to posting here. One of them is criticism and the other is finding information that I think is worthy of sharing.

My fear of criticism isn't what you would probably think of at first glance; I feel like the general public looks at a blog as a narcissistic action. Sort of like standing on the tallest mountain and saying, "I have really interesting things to say look at me." My fear of criticism isn't an aversion to people disagreeing with my subject but that they would assume that I'm doing this because I believe that I'm smarter than them. Deep inside, I know that there are so many things that I don't understand and I want to explore them all which is part of why I want to have a blog. Criticism is something that always comes with putting yourself out there and I realize that no matter what you do in public (the internet is definitely public) you'll attract people over time and some of those people with poke holes in your thoughts, I think that is awesome! This brings me to my second goal in maintaining a blog: I want to learn and share what I've learned. If you have an alternate view on anything that I say please let me know, I welcome all feedback.

I realize that creating interesting content is part of why I want to write to begin with; I want to get better at writing and the only way to accomplish that is to actually write. So, here I am, writing about writing.