• A More Balanced Internet

    The problem with the news that IE is going to a Chromium browser is that the things that Google is doing, or trying to do (require SSL on all sites, favor AMP) gets worse. When they own market share, or even worse almost total dominance, nothing stops them from attempting even more of these types of things.

    This is the main reason why choice is a good thing. I like Firefox and I think I’m going back to that to help support a more balanced internet.

    Continue Reading A More Balanced Internet →
  • Building a Color Palette

    Steve Schoger has a book coming out called Refactoring UI and it looks like it’s going to be awesome. He just released a teaser for building a color palette. I’ve read quite a bit about color palettes, and while I’m not a designer, I have taken some design courses and I did win 2nd place in design competition for a Led Zeppelin collage (humble brag).

    Also, if you are interested in UI design and have not seem the Refactoring UI videos , stop everything and go watch them.

    Continue Reading Building a Color Palette →
  • Attempting to Read Equations in Machine Learning

    I ran into my first issue that caused me to stop and try to dissect what was happening. I’m not bad at math, but I’ve never studied calculus or something similar. I have taken algebra and trigonometry many years ago. I knew the math involved with machine learning would slow me down considerably. Especially since I am the type of person that likes to understand things on a deep level.

    The equation was for Root Mean Square Error. I have been able to dissect it down to where I understand most of it. Here is what I know.

    • m is the number of instances in the dataset. Here I am working with housing data.
    • x(i) is a vector of all the feature values of the ith instance of the data set. So it works in conjunction with summation to iterate through each row of features in the data set.
    • y(i) is the label for x(i).
    • X is the matrix for all the feature values.
    • h is a hypothesis function.


    All of that is from Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

    RMSE Equation

    So the equation says: Take each instance in a data set, run the features through the hypothesis function, subtract the labels, and square the result. Sum all the results and return. At least that’s what I think it says.

    Just so know, what this equation does is determine how much error the prediction would have.

    Here is what I don’t know. I don’t know what 1 over m is there for. I also don’t know if I need to understand this to proceed. I’m pretty sure scikit learn will do this for me. But it’s good to try to understand these things so I know what to use and when.

    Continue Reading Attempting to Read Equations in Machine Learning →
  • Digging into Machine Learning

    Since RockstarNinja has an AI element to it, I’ve decided to really dig into parts of AI. Primarily machine learning. I’ve dabbled a bit and I do understand the basics, but I decided to dig a little deeper.

    I know that video courses are really popular, but I still feel that if you really want to learn something, you just can’t go wrong with an in depth book. I decided on Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. So far, it seems really good. Through the first chapter, I’ve learned a few things even though it’s just a general overview of machine learning.

    Looking forward to sharing what I learn as I work my way through.

    Continue Reading Digging into Machine Learning →
  • Broken Dependencies

    One of the most frustrating things in building apps are things you can’t control, like an external API, breaking your app. A broken production app is the worst. A dependency you can’t control breaking and then causing havoc for customers is clearly worse than a developer pulling his hair out because something isn’t working the way it should. But a broken dependency in development feels like the equivalent of slow internet versus no internet.

    I would rather the whole things be broken than have the feature all set except for an external dependency that isn’t working.

    I guess the fix is to make sure there is always a fall back option you control for development.

    Continue Reading Broken Dependencies →
  • RockstarNinja in Progress Wireframe

    Nearing completion of the wireframe portion of RockstarNinja and reflecting back about how important this phase is, I thought I should the wireframe for the candidate page.

    Note: The avatar and user name were randomly generated with Sketch

    "RockstarNinja Wireframe

    Continue Reading RockstarNinja in Progress Wireframe →
  • Dysfunctional Single Page Apps

    I have been a vocal critic of modern single page apps. I feel like they are often (not always) over engineered, and because JavaScript frameworks change so fast, they are really hard to maintain.

    But more importantly, I don’t think they meet the users needs nearly as often as we think they do. I’ve been in more than one client meeting where the developers try to sell benefits that clients/users don’t care about. Things like:

    Developer: Look! Notice how the page didn’t reload?

    Client: Uh, yea. That’s cool.

    Most likely, the client only cares about the task at hand. The truth is it’s the developers that care about the tooling or of pages reload.

    Jim Newery has done a superb job describing patterns that single page apps follow that lead to being dysfunctional.

    So many quotes I could pull from the article. But my favorite is this.

    Mistake 4: Use naïve dev practices Under-investing in front end skills has knock-on effects.

    The relative ease with which we can create working software with JavaScript frameworks is alluring. But naïve development practices can threaten the long-term maintainability and quality of products.

    Poor development practices reinforce each other:

    • Poor or no test coverage, results in…
    • Highly-coupled code, that encourages…
    • Over-engineered solutions, that leads to…
    • Big monolithic balls of mud, that forces us to deliver…
    • Giant monolithic asset bundles

    Each of those is spot on and directly leads to the next. Almost all single page apps I have worked on lack tests and lead to hard to maintain code because of how interconnected it is. I’m at fault too. I never take the time to think about the front end architecture like I do the backend.

    Source: Create your own dysfunctional single-page app in five easy steps

    Continue Reading Dysfunctional Single Page Apps →
  • Rockstar Ninja

    One of the things I enjoy the most about working on software development teams is the mentoring part. I really do enjoy sharing knowledge and teaching what I know to other developers as they grow in their craft.

    With a surplus of new developers from bootcamps, online courses, traditional universities, and other paths to software development; mentoring will be important. Maybe the most important.

    Of course, in order for the mentorship to work well, it has to be the right person.

    Finding the right person is tricky. Do you hire based on skill? What about character? No one wants to work with a jerk. Maybe it’s a combination of both?

    Continue Reading Rockstar Ninja →
  • Fitness for Programmers

    I started getting into fitness about three years ago. And by getting into fitness, I just mean doing something. Anything. It started with running. The first time nearly killed me. Then I migrated to cardio at a gym. Then cardio at a gym with some strength training with cable-based machines. Then cardio and weight training. Then I ended up where I am now. Weight training following a plan with some cardio.

    If I could bundle what I’ve learned from trial and error, and reading, into some tips, it would be this.

    1. Just start. Seems obvious. But even walking is better than doing nothing. Fear is big. But it goes away.

    2. Cardio is for health. It doesn’t do a lot for weight loss. It can, but it will require way more work. If your plan, like mine was, is to lose weight, there are more efficient methods.

    3. Follow a weight lifting plan. Strength and resistance training are proven to be the best for weight loss. As your muscles recover, they are hungry, and they use fat to regenerate. So lifting weights in the morning will burn fat and use calories all day. Where as running only burns calories while you’re running. Just randomly lifting weights seems like a good plan. It’s not. Let someone who knows what they are doing tell you what to do, and how much. There are tons of inexpensive weight lifting plans online.

    4. That reminds me. Losing belly fat is a myth. You cannot target a body area to lose fat. Your body loses fat from wherever it can. Bad news. Belly fat (for men) is visceral fat, and it’s the hardest to lose.

    5. No one at the gym cares about what you are doing. This was a big mental hurdle for me. But look around. They are all looking in the mirror. Everyone at the gym cares about themselves. Do your thing and know no one is watching what you are doing.

    Continue Reading Fitness for Programmers →
  • Using pkill to Kill All Ruby Processes

    I have found that at the end of the day closing all open apps on my computer is a great to signal that I am done for the day. It’s easy enough. Alfred has a command for Quit All Apps. Launching that shuts everything down.

    The problem is that it will leave any local web servers for Rails apps in a weird state where starting a new Rails server the next day will error out because one is already running on that port.

    In the past I have a done a couple of things. Using Activity Monitor to find and kill all Ruby processes works. So does using ps aux and grep to find Ruby processes and kill them one by one. But recently I’ve found the best yet.

    pkill ruby will kill them all with one command. Super useful and a great time saver.

    Continue Reading Using pkill to Kill All Ruby Processes →

If you enjoyed reading this and would like to know when the next article is posted, please enter your name and email address below. Nothing spammy. Ever. And you can unsubscribe at any time. Thank you in advance!

Subscribe for updates

* indicates required