iFixit Grab Bag

Coding can be hard. But it can be made easier by writing out the designs beforehand. What follows is some designs for a current project.

The Project

iFixit is an awesome website about repair. This idea is a tiny web app for new users to see what sort of content iFixit has. The user will put their phone, laptop, and other devices they own into a “Grab Bag”. Then the app will display repair guides and parts for sale that match those devices. Sounds simple enough.


During an internship with iFixit, I got to travel to Makerfaire. I stood in front of a monitor, explaining the website to people. I want this webapp to offer that experience, without me as a developer having to stand there and do the explaining.

This gives me several requirements to consider

  • Inviting – If this app was open on a monitor at a convention, I want it to look like it’s meant to be spontaneously used. It should look like a demo, not a product ordering page.
  • Self-explanatory – There shouldn’t have to be a representative explaining what iFixit does. Though, I’m not against having light text direction inside the app.
  • No typing – It would be nice if the app was mouse-based. People at conventions don’t always have both hands free. They might be carrying a drink or a swag bag.
  • Quickness over Thoroughness – The demo should be succinct. It’s okay if the user doesn’t find their exact phone brand in the grab bag. The main iFixit web page already has a great hierarchy system for finding specific devices.  I don’t want to attempt a rewrite of what already works.


First Draft

device pics from iFixit.com
Device icons from iFixit.com

Here’s what I thought about the design.

  • Checkboxes aren’t very interactive. This looks like a form.
  • I really should put everything on the same screen. It might be harder to design though.
  • Having to wait till the end to see the relevant statistics is no good.
  • The sum total of guides doesn’t strike me as useful. The guides and parts have interesting titles and pictures that I’d like to show that.

Second Draft

device pics from iFixit.com
Logo and device icons used from iFixit.com

Oh gosh, this ended up looking very confusing.

  •  My idea was to have the left side of the screen be devices orbiting around the logo, and the right side be content rising out of the grab bag for the user’s selected devices.
  • It’s extremely cluttered. More white space is needed to make this divide more obvious.
  • Maybe the grab bag should be on the top instead of bottom, with the repair guides falling down out of it?
  • I’m not sure how to decide which devices to show, and likewise which repair guides to show. I was thinking of allowing the user to scroll through them. But if I’m worried about clutter, I don’t think I need more buttons.

Even so there are 3 features here that I like:

  1. The devices continuously floating onto the screen. That way the page could be left open to be used at a whim. There’s no need to reset the page after a user is done.
  2. The drag and drop for selecting devices. Who doesn’t like drag and drop?
  3. The repair guides folding out from the grab bag after the user drops a device into it. Confetti is optional.

I’m going to start coding, keeping in mind I want those features. Once I have a working prototype, I hope it’s more obvious how to rearrange things to reduce clutter.

Final Thoughts

Sharing this process helps me stay grounded in the scope of the project. Maybe I’ll even get some feedback before it’s completed. And best of all, the motivation and accountability to work quickly.

What Being Sober for 2 Years Feels Like

May Third

May 3rd marks 2 years of sobriety for me. I haven’t had a drink or a smoke in this time. I want to celebrate the accomplishment by speaking about the experience.

Ups And Downs

When I first began, every month was a new milestone. My motivation grew as I completed the goals I set for myself. But with more time under my belt. I’ve realized that my willpower levels don’t correspond to my clean time. My resolve ebbs and flows. So on days like today, I make it part of my identity. I embrace it. And then on days when I’m unsure, I embrace the uncertainty. Who knows where my journey will take me? It’s acceptable for sobriety to be a vague answer to an undefined problem. Experience has taught me, there’s usually something to motivate me just around the corner.


When I first quit drinking, I was too scared to set foot in a bar. Eventually, I could comfortably go to a bar and not be tempted to drink. I was pretty pleased with myself. But now, going downtown simply isn’t fun. If there’s dancing or pool tables, I can make do. But in most cases, I end up feeling like a dud. There’s no perfect replacement activity for partying. Instead, I’m constantly picking up new activities. Yoga, electronics, writing this blog, learning new songs. Staying busy is important. Even if I drop hobbies as quickly as I pick them up, at least I’m keeping my life juicy. It’s a solution for the time being.


The best part of sobriety is the new friends I’ve made. Turns out, my hometown has an active local recovery community. Having a support network to fall back on makes life much simpler. A lot of my worries about relapse were solved when I learned how to ask for help. I never acquired this skill in school. Looking back, my internships during college would have gone a lot smoother if I had been open to accepting help. I’ve realized asking for help can help others too. Everyone likes to feel useful, and I’m happy to provide that use.

Quitting drugs and alcohol has allowed me to move towards my goals. This morning, I finished my final for Operating Systems, after failing that same class 4 years ago. I can’t thank my friends and family enough. Thanks for sticking with me and thanks for listening to what I have to say!

Graphing Brainwaves with the Mindflex

The Mindflex is marketed as a concentration game. It’s a toy that connects to a fan and moves a ball through an obstacle course. While wearing the Mindflex, the power of the fan relates to the power of one’s concentration.

My friend Sterling and I changed the wiring to a USB connection in order to graph our brainwaves on a computer screen.

We used an Arduino to facilitate communication between the Mindflex and the computer.

What the Mindflex Can Do

The Mindflex works by sensing a voltage difference across several metal contacts. When playing around with the MindFlex, one gets a sense of the intensity of concentration. It turns out the Mindflex sensors pick up 7 different brainwave frequencies, not just one. By hacking it, we got access to all these pieces of data.

Ben’s Brain While Playing Violin
Sterling’s Brain While Juggling

There’s no limit to the sort of things could be controlled with the Mindflex once it’s hacked.


Before we managed to print these graphs, we ran into connection quality issues. The connection to the PC was affecting the Mindflex’s ability to sense a slight voltage difference in the brain. This was due to the PC being plugged into the wall outlet.

We fixed this problem by introducing a new component to the circuit, an Optoisolator, also known as an Optical Coupler.

The Optoisolator keeps the Mindflex and Arduino electrically isolated from each other. It does this by transferring data through an LED and a Photosensor instead of through a wire. Our connection quality improved greatly with this new addition.

We added LEDs for testing purposes as well as looking neat. We notice a worsened connection with red LEDs compared to green LEDs. Perhaps the voltage drop across certain LEDs interferes with the data transmission. A final product might want to exclude them.

Final Thoughts

For my first Arduino project, I’m happy with the results, but there’s a lot more the Mindflex could do. I would like to play an instrument controlled by one’s thoughts, or a video game that used the Mindflex as a controller. I also wonder if there’s any practical applications to these graphs. Would analyzing them help someone practice meditation?  Perhaps a Psychology study could be designed around using the Mindflex.


Here’s the program we used for gathering the input data from the Mindflex to the Arudino: https://github.com/kitschpatrol/Brain

Here’s the program for displaying the inputs over time in a graph on the computerhttps://github.com/kitschpatrol/BrainGrapher

My Future in California

Winter Bird Festival

I visited California to see my grandparents. The trip also took me to Cal Poly, San Luis Obispo. Seeing so many college students walking to class, I thought I might feel a sense of longing.

Instead I felt calm. Meeting with my ex-professors,  I thought they would have questions about why I left school. In reality, their questions were focused on my vacation. I excitedly explained my new plans to return.

I would take a couple classes back in Illinois. Then, at the end of the year, I would move back to California to finish my last class along with my senior project.

I told my plan to as many people as possible. Friends and family, advisers and professors, ex-coworkers and boss. One listener responded with a unique piece of advice:

“Don’t live in the wreckage of your future”.

I already understand not living in the wreckage of my past. Dropping out has transformed from a negative experience into a humbling one. Moving forward has become more important.

Which is why the advice surprised me. Could my intense focus on the future be harmful? I thought back to when I enrolled in a track to get a Master’s degree. When my plans fell through, I ended up falling down with them. I didn’t even earn my Bachelor’s.

For me, this advice is about not clinging too hard to a set path.  I ought to reconcile with the uncertainty of life. I might not end up in California in 2017. I might not get my degree before my 10 year school reunion.

I tried to internalize the advice and spent the rest of my trip in the present. Hiking up the hills, running down the beach, and visiting all the tourist shops. I ate good food with friends and family, and celebrated my 27th birthday, one of my most memorable yet.

Grandparents' House


Friends from Urbana

Winter Bird Festival

Birthday Dessert

Happy New Blog

My resolution for this year to to blog once a week. Writing my challenges in programming will be helpful to me as well as other programmers. I can be another voice in the chorus of programmers trying to conquer procrastination, anxiety, and focus problems. I like to read the more down-to-earth, realistic experiences that people face. It makes me calmer about my own progress in my career. Hopefully this blog will be this.

Also, writing itself has also been a challenge for me in the past. Even though I once called myself a good programmer, I never have called myself a good writer. One of the reasons I haven’t graduated was a Master’s thesis became an impassable wall. I’m not working on that thesis anymore but it’s never too late to be a writer.

I still want to get my Bachelor’s and that involves doing a senior project. A college in California called Cal Poly, which I dropped out of in 2014, is still where I want to return. The past two years then have been spent in Illinois, living at my parents house. I’ve worked several odd and end jobs, had some relationships, and changed slightly as a person but it’s difficult to say how much. Regardless, it’s 2017 and my priorities are shifting back to programming, graduating, and my career. Therefore…

  •  In one week I’m traveling to California. To see my grandparents, to see some friends, to visit iFixit, and to visit Cal Poly. I will talk to some ex-professors about finally doing my senior project. At the least, seeing the central coast will inspire me to work my butt off.
  • Once I’m back in Illinois I have a week until I start 2 classes at my local colleges. Mainly a class about Operating Systems, which is the last Computer Science class required for my Bachelor’s. Cal Poly has already approved it to transfer and count toward the degree that I put on hold 2 years ago.

I’ll let you know how it all goes.