Hi, my name is Scott Radcliff and I am a software developer, part-time musician, husband, father, and wanna be innovator. These days I write web applications in Rails and JavaScript. Previously a PHP programmer, and have been know to write a line or two of Perl.

Rails Rescue Projects

Everyday Rails has a great series of posts on a Rails rescue project. Definitely recommended. Part 2 talks about testing.

While the previous developer did have some tests in place, I quickly lost faith in them: On first run I got a number of deprecation warnings, then 60 percent of the provided tests failed.

I see this too, but it's important to note that blaming the developer is never the right move. There are so many variables that you are unaware of. Blame the code, not the developer.

I began writing request specs (now known as feature specs in Capybara 2.0 and onward). I started with something basic: What happens when a user logs in?

That's pretty much how I approach untested applications. Start from the outside and see what happens. I'm looking to see what setup is required, what files are touched, and the responses are.

Also, I'm not sure I would completely wipe the spec directory. It's probably the right thing to do, but I would prefer to keep something there while I build out the other tests, and then remove the old tests.


Changing Habits

I've been thinking about over consumption a lot lately. I do think it's a thing. Not sure if it's an addiction, but it definitely can grab hold of a person and effect their productivity, attitude, and overall mood.

The problem for me is that I am not a big believer in fads or whatever happens to be the latest thing, so I avoided the Information Diet as much as I could. But it really is helpful, if used properly for your habits.

I see it more as changing habits versus avoiding information outlets. Because the truth is, those outlets; like Hacker News, Twitter, or Reddit have great content and help me learn new things. Expanding my knowledge is a central point of my life and I love learning.

Here is what I have started trying. Notice I said trying. This is harder than it looks.

I schedule as much of my information reading as I can. A 1/2 hour to an hour before I actually start work, then about a 1/2 hour after lunch. This forces me to focus on the important things. I often look around when I'm taking a break from programming and without Twitter and the like I don't know what to do. This is the difficult part. I try to keep a list of tools, programming practices, topics, etc… I would like to try, and use that spare time to for those.

I also put my phone up when I am at home. I know! Crazy!

I place it on my dresser while I am in the other room. Now I can't look at those time suck activities and I am forced to actually do something else, like watch a movie with my family, play guitar, or walk outside.

I do slip a lot. I have days where I find myself checking Twitter over and over. Or RSS feeds over and over. But all in all, it's been a nice change and I'm certainly happier and more productive when I schedule effectively.


Throw Out That Code

At the base of almost every web application is authentication. The app needs to know who it's dealing with. Sometimes there are roles and sometimes not, but there is almost always authentication.

Needless to say, it's important to get authentication right. But not at the risk of adding something that doesn't seem to be working for you.

While building Velocity, I ran into this issue. I almost always use devise for authentication. I have to confess, I'm not sure why, I've used it since it was released. It just always seems to fit.

But this time it was a little different. I needed a little more control over authentication, and devise hides a lot of details. So I found myself looking up how to do simple things a lot, like customizing the sign in screen.

In hindsight, I should have stripped out devise after the first couple of times it seemed like the wrong tool, but I kept building and integrating devise deeper and deeper into the application.

A Turning Point

When I get to the students feature, where an instructor can add students to a course, I started to really feel the pain. I finally decided to delete all that code I had written and replace it with something a little simpler and more easily customizable.

After replacing devise, I feel better about the code. It's easier to update and customize and is moving along much faster that it was before.

Don't be afraid to delete code that doesn't work for you. Use the right tool for the job.


What Is An Educator

When I set out to build Velocity, I had a certain vision I wanted to fulfill. I wanted to make the best software available for an educator. I know what an educator is to me, but sometimes I wonder if everyone shares my idea.

Being an educator is pretty simple. It has nothing to do with college degrees, formal training (although it does help), or age. All you need to have to be an educator is knowledge, and the desire to share that knowledge to those that don't have it.

That's it. There's no more. I could end this post right now, but that would be pretty boring.

We are all educators

The guy that has been programming for 20 years and wants to show newbies how it's done. He's an educator.

The guy that has a associates degree from some college you never heard of, but has been working in the field for a few years. He's an educator.

Of course the guy with the multiple degrees is an educator.

But what about the guy that took a 6 month trip to Africa and learned their culture? Is he qualified to educate? Absolutely.

My point is we are opening new avenues for education. It's not always about classrooms, tuition, and professors. It can be about everyone.

If you agree with me, sign up for Velocity and we can teach someone something new in an awesome new way.


Towards Zero Unemployment

Once again, Seth Godin has made me think. Seriously, whether you like the guy or not, you owe it to yourself to subscribe to his blog.

He raises some good points about how employment became a thing

A dozen generations ago, there was no unemployment, largely because there were no real jobs to speak of. Before the industrial revolution, the thought that you’d leave your home and go to an office or a factory was, of course, bizarre.

And what should be next

I can’t wait until we return to zero percent unemployment, to a time when people with something to contribute (everyone) pick themselves instead of waiting for a bureaucrat’s permission to do important work.

Source: http://sethgodin.typepad.com/seths_blog/2013/03/toward-zero-unemployment-.html


Hybrid Rss

I'm one of the ones that love RSS and have been thinking about it a lot lately. My problem is this. I like the Reader inbox style some, and I like the river style some. I need something in between.

I'm pretty confident that there is going to be a lot happening in the RSS space. A lot of really talented people are going to use RSS in interesting ways. And some already have. But I done like anything out there right now. The newspaper style escapes me. I don't get it and I think it's a terrible way to read my RSS sources.

Here is what I would like to have:

A river of interesting things to look at and read. All of my favorite things, updated every few minutes.

A way to act on these items. Share somehow, or save for later.

And way to view all items from a source so I can still keep on my favorite sources in case I do miss something.

I am fighting the urge to build this thing. I'm hoping someone builds it first.


Removing User Registration In Devise

I prefer Devise for authentication in my Rails apps. While working on Velocity, I needed to remove sign ups. Foolishly, I tried some redirects and custom routes with no luck. The work is all done in the model. Remove :registerable and you're all set.


Go Make Something

As Seth Godin puts it:

If you get more news, faster, via Twitter, say, you're not going to have a significant advantage over someone who has just enough news. Understanding what every single person is saying about everything, all the time, leaves you little opportunity to actually make something.

Perfect and true. Set a data constriant and build something.

source: http://sethgodin.typepad.com/seths_blog/2013/03/sometimes-more-is-not-what-you-want.html


Semi Launching And Motivation

So I semi launched a thing yesterday. It's a landing page for a soon to be released product I am working on called Velocity. It's a really cool tool for educators of all kinds to concentrate on creating an awesome learning environment in the simplest way possible. There's a blog post on my company website describing how it works.

The thing that caught me off guard was the burst of motivation I received watching people visit the site, sign up, and share links. Gauges is the perfect tool to watch traffic. Highly recommended.

As I sat there and watched the traffic, the feeling of fear starting to go away, and was replaced with this rush of adrenaline. I was already stoked about the app and the possibilities it has, but that rush made me want to work that much harder to get the whole thing out there.

Whatever you are working on, release it now. Don't wait, just release it and iterate. I deployed about 7 times yesterday as I noticed things I missed; a link here, better copy there, and so on. You won't catch everything before you deploy so you might as well deploy now and get to work.


Setting Constraints

In the design community, setting contraints is quite common. I don't hear about it as much from programmers, but I'm starting to think that I should.

As many programmers can attest to, I have a growing library of half-finished projects. Everything from RSS readers to bookmarking tools. Every time something pisses me off, I fire up my editor with the intention of building my own.

I started asking myself why these projects sat; unfinished and private. It's fear. Releasing software is one of the scariest things I've encountered. Not releasing software for work, but releasing something that I wrote for me. It's scary as hell, and that's why programmers have directories full of these projects.

So I asked myself a question. What if I had a deadline? I know, terrible word, but stick with me here. What if I set a contraint of two days? Say I'm building an RSS reader (I'm on a bit of a RSS kick), and I start on Friday with the constraint of stopping by Monday. No matter what, Monday it's shipped. How would that effect my decisions and work flow? Would it break that fear? Would I grow as a software developer?

I bet the answer is yes.