Thursday, January 29, 2015

Toasting Marshmallows Around the IndieWebCamp Fire

Have you heard of IndieWebCamp.com yet? I hadn't heard about it until a couple weeks ago, but as soon as I started digging into what it is I really liked what is going on there. Basically, what you're looking at is the beginnings of a federated social web. It's the idea that blog posts and comments shouldn't belong to a single central company but that they should be built into the web's infrastructure. The best part is that it's already working. Let me take a moment to slow things down a bit and explain it as I understand it from the ground up.

Facebook owns your account; I mean, it's your account but it belongs to them. If one day Facebook decided that they wanted to pack up their website and make a restaurant chain that serves cheeseburgers instead of crappy BuzzFeed listicles they could do that and you wouldn't have a Facebook anymore or a way to send messages to your friends. You might say, "So what? I'll start using Twitter, Google+, or whatever then!" Sure, you can do that but there is nothing (except revenue and business reasons) that ensures they're going to stick around either. What you would have to do is make your own social network and then get all your friends to join it. That's a lot of work! What if there was a way that you could make your own website that you own and use it as your online social account that interacts with your friends' websites in a way very similar to Facebook, Google+, or Twitter. There is and it's called the IndieWeb!

If you've already got a personal site it is extremely easy to get started. I set up my site with the most basic features in about 10 minutes; it would have been quicker if I didn't want to take a Photoshop break in the middle of it all to make a new picture for my new social profile. I don't want to go into super long detail here but I definitely recommend checking out their site, they've got a really helpful and easy getting started guide.

There are two really simple basic things that you can do to get started and they are your rel=me links and your h-card. Basically for every URL on your site that links to another page that is also you simply put a rel="me" on your a tags like this.

<a href="http://philcorbett.net" rel="me">My Website</a>

This tells any other sites using IndieWeb markup that these links are also owned by the same person that owns this current page. The next step is to create your h-card. This is a small amount of markup that will tell other IndieWeb sites various bits about you; essentially, these make up your profile information. The markup is pretty easy but I'll link to the h-card microformat page for it because there are a lot of options.

I'm not an expert at this at all but I really like the idea and wanted to write this up to help get the word out. If you're interested in seeing exactly how I updated my site for it check it out at http://philcorbett.net or view the code on GitHub at https://github.com/PureMunky/philcorbett.net.

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.

Tuesday, March 12, 2013

On Internet Webcams

When I tell people that I bought a webcam it almost always illicits a, "what the heck kinda creep are you?" reaction. I'm going to assume that I'm a fairly non creepy person and that it isn't because of my personality that people think this (I may, however, be completely wrong). I completely understand the inherit fear people have of webcams because it means that, if I wanted to, I could record and post everything on the internet that happens within the private walls of my house. I wouldn't do that because that does sound creepy but none-the-less I have a webcam.

There was a day in the fall where I accidentally left my girlfriend's dog (Ricci) outside all day while I was at work. I felt so bad because I had neglected him and, worse of all, didn't even realize it happened until after I got home. Now, this wasn't an issue because it was spring and a beautiful day, but it sets me up for a worrisome day that winter.

It was especially cold one day and Ricci asked to be let outside before I left for work. I won't leave you in suspense, I let him back in before I left. The problem is that, for the entire day, I couldn't remember for sure if I had let him in or not. I worried about it all day and if it wasn't for back-to-back meetings that day I would have taken off to make sure. I let it get to me so badly that I bought a webcam that day before I left for home. I knew that it wouldn't help me now but it would allow me to solve this worry in the future and that piece of mind was worth so much to me in the moment and I have never been in the same situation since.

The best part about having the webcam is that I set it to take random photos periodically and upload them to my private FTP server. So far these photos have been very boring, but there is some fun at going through them every now and then to see my life as captured by a 3rd party. As an example, to the right is a fairly uninteresting photo taken by the webcam at 6:15 AM on the morning that I wrote this. You can see Ricci staring longingly out the window and a few bits of "teacher scrap" left on the floor from the night before.

I've been enjoying the webcam because it's nice to know what's going on in my house but it is also an interesting conversation topic. Ashlee loves to ask people if they want to see her puppy and proudly pulls up the live stream on her phone. The only problem with webcams is that they can be very addictive; I think I want a few more, is that creepy?