Entries RSS Comments RSS

Archive for the ‘Uncategorized’ Category

So I Heard You’re Writing an App for Bed Bugs… Or are you?

Wednesday, August 3rd, 2011

Confession: I stopped blogging and started working (and fighting. see http://stopforgetting.tumblr.com) But I’m back for a minute. :)

For the past 6 months, I’ve been working at a small but steady email marketing SaaS provider in Durham, NC. I’ve been doing tech support, account management, and QA. I’d like to focus on QA and have more time available to write unit tests and play in codeland, but as I said, I work at a small company. :) I have been programming in my spare time, though — a mix of PHP and Ruby.

Cool news: I have finally broken down the barrier of “I need someone to help me write the app I’ve been wanting to write for 3 years because I don’t feel confident that I can do something this awesome on my own.” Here’s the major bullet points of what I’ve learned and the route I’m taking:

  • Writer’s block is silly. I sat down a few weeks ago and opened and closed an html tag and said, for all it’s worth, this is my app, and at least I’ve started it.
  • Bare minimum functionality is my immediate focus. I’ll separate core functionality from ‘features’ and get this sucker working before making it pretty, even if it pains me.
  • I’ll spec out the UI using the data I have on the existing idea. (I essentially have a “Smoke Test”/Vapor of what I want to build.) Focus on high traffic areas and features for those areas first.
  • I’ll write it from scratch. If I can’t decide on a framework (and I tried), just do it from scratch. Why not? It’s liberating to know what every file and directory in your app is from the getgo, and I’m not scared. :)
  • Use the resources available. Writing an app from scratch has advantages in that you don’t need framework specific examples for the tools you’re using. For instance, Googlemaps (I’m using their API) has wonderful examples for PHP and jQuery. Perfect. (not that I couldn’t use those examples for good if I was using a framework, but I’d have the extra thought-step of wondering ‘where does this fit in to my framework?’)

Edit: I’ve spec’ed this app out pretty thoroughly but then came to a bump in the road. I think Rails might actually be the best solution for this. After going to Ruby Hoedown this year, I got re-amped on Ruby and Rails… and I started digging in much deeper than I ever have before, into the nitty gritty of Rails 3, the intricacies of Active Record, and appreciating all the serious awesome that is done for me, rather than having to write 482 lines of PHP code for it.

So, I’m pausing on this. And I’m building out a Rails app to take the place of this blog as well as ashumz.com. Or at least moving forward with a blog/portfolio style site layout to get hands on experience. I think that project makes the most sense for now, and I still have my radar on this project for the future. Yes, this means I’m putting it off yet again, but I’m more serious this time. I figure, in the long run, it’s going to save me a lot of time and headache.

I know my thought process here couldn’t be more recursive– but that only means I’m still thinking, right?

Ruby Hoedown & A Quick Note on nm-applet

Wednesday, September 8th, 2010

I went to my first Ruby conference — Ruby Hoedown in Nashville, TN. I loved it and very much appreciated the “Nuby Hoedown” on Thursday. I couldn’t have learned more from Scott Chacon’s talk about github. We had a great time afterwards at an impromptu github drinkup, too! At the conference, I got a lot of code written, (played a lot of Ruby Warrior), and learned some new (to me) awesome features of Ruby.

I also finished Chris Pines’s book, Learn to Program, on the drive out to Nashville. It made me wish I had read that book first, before Peter Cooper’s book, Beginning Ruby. Despite reading the two books in the wrong order, I still got a lot out of both.

The real thing that prompted me to write this blog post was a recent issue with nm-applet. This is solely for my own sanity in case I experience another nm-applet fail on Ubuntu:

1. Kill nm-applet. Don’t do anything fancy. Kill ALL instances of nm-applet.
2. Open the command line and type “nm-applet” — AND JUST THAT. Again, nothing fancy.
3. Make sure you’ve only got one instance of the process running.

I know it sounds simple, but the Ubuntu forums screwed me over on this simple problem. I was trying some fancy command like “–disable ahisixhxisoi293″ and it didn’t help.

NOTE: man page for nm-applet not an option on this one… no help there!

Celebrate why day!

Thursday, August 19th, 2010

Thankfully, this morning I was reminded by tweets that today is why day! One year ago today, unfortunately, why the lucky stiff left the Ruby community (and took his projects with him.) Thanks to his fellow rubyists, many of his projects survive and are still being hacked on and improved.

Why really helped change the way I approached learning to program. I probably would have never developed an interest in programming if it hadn’t been for shifting the way I think about writing code and creating applications … creatively. :) Why’s Guide influenced and changed the way a lot of people think about approaching new programming concepts for new programmers as well. If you haven’t read Why’s Poignant Guide to Ruby, now would be a good time:
Read it here

I also really love why’s work focused around teaching programming to kids. Hackety Hack and Shoes are examples of this. I need to leave for work in about an hour, but I plan on coming home tonight and hacking on a Shoes project for the evening. I’ll write another post in the future about the easiest way for beginners to get started with these tools (it can be less than straight forward.) Here’s the links for those of you interested in Shoes & Hackety Hack:

http://hacketyhack.heroku.com – “Hackety Hack is the coder’s starter kit. Programming should be fun, and easy! Hackety Hack provides an easy and fun way to create things with your computer.”
http://shoes.heroku.com – Shoes is a cross-platform toolkit for writing graphical apps easily and artfully using Ruby.

Cheers!

Scratch Rules

Friday, May 14th, 2010

Scratch is an awesome visual programming environment written in Squeak Smalltalk. It was designed by the lifelong kindergarten branch of the MIT media lab for the purpose of inspiring kids of all ages. Absent of the barrier of syntax, you can create fun animations and games by dragging and dropping ‘code blocks’ to form ’scripts.’ Scratch supports serious programming concepts: you can learn about operators, control statements, events, threads… all within the context of a cute and easy to use environment.

One of the best features of Scratch is its introduction to social coding and its amazing social networking twist: go home Facebook. You can easily share your projects online at the Scratch website. Sharing your projects allows others to ‘like’, ‘comment’, ‘download’, and even ‘remix’ your application (social coding ftw!). Best of all, if someone wants to check out your project and he or she don’t have Scratch installed, the project will run on the Scratch website in a java applet without the need to download anything! Yeah, that’s right. I made a snowman math fact game for practicing addition facts, and my not-super-computer-savvy-but-has-java-installed mom played it! :) Gotta love it.

This is an awesome video of Harvard professor David Malan teaching CS50 with Scratch as an initial introduction to key programming concepts: loops, iterators, booleans, events, and threads. I’m excited to go through the whole course, but particularly loved the first two class sessions using Scratch!

http://academicearth.org/lectures/introduction-to-programming-and-scratch

I’m doing a lightning talk tonight on Scratch. I have basically taken a hiatus from “real programming” and am just hacking on baby games. You should try it. :)

update: http://www.ustream.tv/recorded/6923784 <- my lightning talk on Scratch. I gave this talk at an event I helped plan and organize at Coworking Rochester -- cosponsored by Coworking Rochester and Interlock Rochester.

One year ago today – Learning to Embrace the Tech Community

Sunday, April 4th, 2010

This post is inspired by Sarah Allen’s blog post: “one year of sf ruby”

One year ago today, I also had a very pivotal experience. I attended my first technical conference– an unconference, a barcamp — at the Rochester Institute of Technology. (http://barcamproc.org) I had just moved to Rochester, NY from San Diego, CA with my husband, Alan. Up until that point, I had only ever seen HTML and CSS (sparingly.) I was familiar with HTML and in-line styles. And I knew how to use things like myspace and facebook. My background was exclusively education and English (literature and writing.) I was interested in programming, but I felt a severe barrier to entry: I thought it was too technical for me.

At my first barcamp, also my first technical conference/unconference experience ever, I was intimidated. My heart raced when I had to introduce myself. I claimed I was going to help Alan do a talk on his server-side Javascript framework that I had no clue about, but I really did nothing. I didn’t give a talk. I felt guilty, given the nature of a barcamp and the expectation that all attendees speak on something, but I also felt I had nothing to contribute.

That day, despite my intimidation, I was inspired by the things I saw. I attended an excellent talk on Haskell during which the presenter admitted he had very little experience with the language. Still, I was intrigued by the syntax and grammar, and I felt an inclination towards programming that I had never felt. I love natural language, grammars, and syntax in general. I have always been fascinated by English and the field of linguistics. I was no less fascinated by Haskell than I am with Basque (an incredibly interesting language isolate.) I saw another talk on the OLPC/XO by an awesome woman, Karlie Robinson, who detailed the effort and reached out to the tech community to engage their skills towards a cause for education. I could relate. I even brought myself to go up to her after the talk and give her my e-mail address, given my experience in education, thinking maybe I could help. For the first time, I thought, maybe there is something worthwhile that I can contribute to the tech community.

I started programming one year ago today, because I was inspired by the technical talks I saw that day, and because I realized I am not any different than any other extraordinary geek.

About six months ago today, I got involved in a movement in Rochester to form a hackerspace. Within three months, we had a space and a place to call our own. I have learned about basic circuitry, soldering, programming, and even some basic networking concepts thanks to Interlock, Rochester’s first hackerspace. I love Interlock, and I can barely imagine my life without a hackerspace anymore. Exchanging ideas, learning new concepts, and thinking beyond my normal realm of every day thought has made me a stronger person. I was not born to be a hacker, a coder, an electrical engineer: but I know I CAN be one. Nothing is stopping me from learning new things. The only barriers we have are the ones we create for ourselves.

I have never been to school for anything technical. I am pretty sure I never will. I will continue attending technical conferences, participating in hackerspace activities, and searching each day for new or refactored technology that makes me think outside of my normal train of thought. I feel challenged, excited, and motivated by learning new things, as most people do (whether they realize it or not.) I embrace this challenge as a way to grow as a person, a developer, and a great mind. I am happy to say my mind is no longer limited by the barriers I perceived one year ago today.

I gave a talk on learning programming today at BarcampRoc 2010. I had a very small audience, but I enjoyed discussing Ruby and entry level programming with them. I am passionate about the best way to teach programming as an art rather than simply a tool. I have learned so much in the past year, and I am only limited by my own interests. I no longer feel limited by what I don’t know. Because I know I can learn. I didn’t know this small, and seemingly obvious bit of knowledge, one year ago today.

Today, I know.

Finding Ada – on Hacker News

Wednesday, March 24th, 2010

If there is one thing I have learned from my short time poking my head in at science and technology, it’s that women are everywhere doing awesome things– we just don’t always hear about them unless we listen. For that reason, I believe more women should make their voices heard. That being said, it’s really awesome when women are noticed without having to yell, and when they get the same media coverage afforded to males in the field about equally awesome projects they are doing. I found out about a really neat project by Chloe Fan through Hacker News.

Chloe says, ” I created a simple version of Super Mario Bros using an 8×8 LED matrix (one color), an Arduino Nano, two buttons for the input (forward and jump), and a piezo sensor hooked to a separate Arduino for the theme song.” After researching more about Chloe Fan, she seems to be a very passionate woman in tech. She says on her website, “I am primarily interested in how engagement with technology in public spaces can increase environmental and behavior awareness, and encourage positive behavior changes. I am also interested in emotional and social interfaces, and assistive social robots.” I can barely attempt to paraphrase that, so I figured a direct quote would be best. But Chloe: Hack on! You’re doing something right.

(Note: I’m subsequently inspired by the possibilities of my Arduino nano that I just received in the mail today. How appropriate!)

Defining Useful Methods in Ruby: Adding a rand method to the Array Class

Tuesday, January 26th, 2010

The ‘rand’ method in Ruby is a method of the Kernel class that generate a random float between 0 and 1 (and thus will always round down to 0 when converting to an int.) Being a new Ruby developer, I decided to make an array and try to pull a random element like so:

@name=%w[bob, judy, don, john]
@get_random_name = @name[rand]

But this will always return ‘bob’, the 0th element of the array.

Instead, to pull a random element from an array (of any length), you need:

@get_random_name= @name[rand(@name.length)]

But that’s icky and unRubyish, and Ruby really SHOULD have a rand method for the Array class, shouldn’t it? So let’s make one, because we can! :)

class Array
def rand
self[super(self.length)]
end
end

@name.rand will now return a random element from the array. Awesome.

Interlock – The Rochester, NY Hackerspace

Saturday, January 23rd, 2010

Lately I’ve been spending a lot of free time at Interlock, the hackerspace a bunch of us in Rochester have been working hard to get up and running. We’re about to move into our permanent space next month, and currently we’re in a temporary space until that point comes. We should be transferring to the new space on or before February 5th.

One thing I’m really excited about is an event called “First Friday” (firstfridayrochester.org) that happens on the first Friday (imagine that) of every month here in the city of Rochester, NY. First Friday is an event to promote the exposure of all of the awesome art that is happening in Rochester. From what I understand, it is an effort to maintain sustainability, promote the value of, and encourage collaboration amongst art venues and artists within the city. A large part of the mission is also to establish ties between university students and the wealth of art within the city. As soon as we heard about this event, we knew Interlock would be a regular part of it.

Interlock’s vision and goals are very much in line with the ideas of sustaining art and culture within Rochester and promoting collaboration between makers of all kinds. Many of our members are students and it’s certainly worthwhile to encourage them to make Rochester their home by providing limitless technical and artistic opportunities with the comfort of an open, socially collaborative environment outside of the university grounds. To accomplish this goal, a bus (or two or three? not sure on the details) takes people from universities to galleries within the downtown. The bus stops at the building that we’re located in, which is packed with many artsy organizations — 1115 East Main St. Exciting!

Organizations can register officially for the event for a small fee, or they can informally open their doors and welcome people with snacks, drinks, and a display of their art/projects. Last first Friday was pretty dead being that it was New Years day, but the previous first Friday in December at our building was booming. We had just moved in that night into our temporary space, so we didn’t have an event. This upcoming first Friday, on February 5th, we plan on having our doors to our new space open, with some projects and/or demos to show off to the public. We are in the basement of our building so signage will be key in trafficking people downstairs to check out our space. If we even get 3 people to come down, it will be a success. Next month, we will plan even bigger, given that we will be settled in and ready for a larger event. In general, I’m pretty excited that we’re positioned to become a significant part of First Friday festivities each month, and I’m anxious to see people’s reactions to Interlock’s dynamic and culture.

Currently computing: A simple ‘fortune cookie’ Sinatra app. More on that next time. :)

Lifehacker Quote

Thursday, November 12th, 2009

“Good coders are a special breed of persistent problem-solvers who are addicted to the small victories that come along a long path of trial and error.”

-From a Lifehacker post by Gina Trapani, ‘Programmer 101: Teach yourself how to code’