Success is made from lack of sleep

Month

May 2012

3 posts

Fly me to the moon, let me code among those stars

Over the past several weeks, I’ve talked a lot about what I planned to build. Now, it’s time for me to spend a little time talking about what I have actually built.

One of the things that help developers organize their project plan are user stories. A user story is pretty much a really high level description that describes what a user visiting your site can do and also what an admin of the site can do. By breaking up the entire project into multiple user stories it really helps me to visualize how my application will work and also serves as a way for me to track my progress.

Typically user stories are short and concise, and they describe one specific function of a type of user. For example:

“As a user, I want to see a list of products that I can click on to buy.”           

“As an admin, I want the ability to add/remove products so I can manage my site.”

Listed below are some user stories that I’ve completed for the recipe project I mentioned in my previous post, which I’ve named  Instalish, (pronounced [in-sta-lish]). I’m still taking suggestions for the name so feel free to shit on it and give me some feedback, I can take it!

  • As a user, I want to see a list of recipes I can click on to cook.
  • As a user, I want to add recipes to share with others.
  • As a user, I want the ability to review dishes that I’ve tried.
  • As a user, I want to see detailed information for a recipe so I can see the ingredients and cooking instructions.
  • As a user, I want to add images to a recipe I submit.

I only have about 100 more user stories to build so stay tuned for the demo…In the mean time click on the link following this image for an amazing Shredded Beef Taco recipe. Actually, do that after you finish reading my post, RESIST THE URGE!

RESIST THE URGE! - RECIPE LINK

One thing I would like to note for any future Code Academy students that get accepted into any future term: It’s extremely helpful to enter the program with an idea of the type of application you’re interested and/or passionate about building rather than spend your time going to lecture and completing class assignments. I can see Jeff (our professor) jumping out of his seat right now… Don’t get me wrong, I do the homework assignments, but I apply all of it to the personal application I’m building rather than the standard application that the homework is designed to build. So, instead of heading into Memorial Day Weekend dreading my homework assignment, I was genuinely excited to get cracking so I could learn a new skill to apply to my app. Though I admit, as I watched people running around the streets in their beach gear getting ready to hit the ocean..I mean lake..I was slightly bummed to be bundled up either at school or home coding, studying, snacking… then more coding. 

For those of you that watched Men In Black III this weekend I actually had the opportunity to meet a real life alien this past thursday… YES I SAID IT, a walking, talking alien!

Okay, just kidding, I’m sure I had all of you fooled. This was actually an amazing class field trip we took to the Adler Planetarium. I highly recommend this to anyone visiting Chicago or for all you Chicago natives out there that clearly have issues. If you need more convincing reasons to go below is a night time shot of the city from the planetarium. 

There’s a plethora of activities to do once you’re inside, but if there is one thing that you absolutely must do is watch a show inside the theatre. With comfy chairs that lean back to extend beyond your peripheral vision, for 30 minutes you can feel like Bruce Willis in Armageddon (minus the destruction of earth part).

May 28, 20121 note
#codeacademy
Challenge Accepted!

So here I am, exactly 1 month away from Demo Day and the end of Code Academy. Wow, time has flown by! Am I freaking out? Just a little..

I only traveled 2153 miles away from home, with no meaningful income for 3 months and a boat load of expenses. It certainly doesn’t help that there isn’t a coffee maker in my house, and there’s an Intelligentsia coffee shop 10 ft from our classroom. (If you enjoy paying $5 for a small cup of coffee from Rwanda click here)

The remaining 4-5 weeks will be the most crucial period at Code Academy. I need to be able to harness everything I’ve learned to produce a web application that I can pivot into a succesful startup company. NO PRESSURE AT ALL.. My goal for Code Academy has been to learn enough coding to build at a viable product. As mentioned in my previous post, before I moved to Chicago cooking was never something I felt comfortable doing. I was pro at burning food and microwaving pre-made dinners (though my microwave skills were pretty shitty at that… I’ve learned you can’t put metal inside a microwave…TWICE…) My parents, who had to pay to replace my microwave(s), are loving this right now. After moving to Chicago I’ve been left with no choice but to face the almighty Kitchen with it’s army of spatulas, spices, and cutting board. To my surprise I’ve been able to code up quite a few tasty dishes, like this one, pork loin chops with garlic spinach, 20 minutes from start to finish :-)

This lead me to my web idea, what if there was a site that provided simple 30 minutes or less recipe dishes that catered to people exactly like me. Just because your mom or wife isn’t near you doesn’t mean you should starve. (the wife part was mentioned by a few hungry classmates of mine who moved out here without their BETTER half)

Unlike myself, many of my classmates have goals that aren’t entrepreneurial focused.  Their main objective is to learn as much Ruby on Rails as possible in order to get a job as a developer. Besides the monetary incentive that comes with securing a development job, my classmates will be able to continuously deep dive to practice and perfect their craft. This is definitely the more mature and safe route to go, but it’s not for me. I guess I was born with a sickening case of perseverance even if it means I’m old and wrinkly before success is in sight. “If I find 10,000 ways something won’t work, I haven’t failed. I am not discouraged, because every wrong attempt discarded is another step forward.” ~ Thomas Edison

This post is a official challenge to myself to build a functioning web app before the end of my program on June 22nd. If you don’t have something you can play with by then feel free to throw eggs at me next time you see me.

May 21, 2012
#Codeacademy
"If I can code, I can cook."

WEEK 4

There’s a good reason why I’m combining week 4 and week 5 into a single post and that reason is something that happened yesterday in class. I couldn’t wait till next week to tell everyone…

Last week we covered a wide range of topics from DRY, partials, git hub, to model validations. The first topic DRY stands for “Don’t Repeat Yourself,” this is a methodology many in the development community follow and is something everyone in the RAILS community SHOULD follow. It basically means not to repeat the same code over and over again in your application. The best way to do this is through what’s called a partial, which allows us to write a set of code in one location that can be accessed by multiple areas in our app.

One the most useful tools we developers use when saving our code is GIT. Git is a version control system that takes snapshots of code, which makes it useful to go back and forth between different versions of our code. Mac users can compare this to Time Machine for code; OR Windows users can compare this to “system restore”. If I want to save my code in the cloud, I can use a service called Github, which is a web-based service for Git and is used for hosting all code in case my computer craps out. Github allows me to store my code in public repositories which means anyone can access my code; OR I can keep my code in private repositories – (which is where I keep the top secret Facebook DESTROYER app I’m building, which I will eventually launch and IPO one day at a much higher valuation than the one in Palo Alto coming up…

Last week we worked on building data based backed applications, and this week we learned how to add model validations, which are extremely useful in ensuring valid data for our applications. An example of model validation would be a dating site requiring a valid photo and age, which I’m sure people never lie about.

WEEK 5 (TODAY)

Here’s some sample code that I wrote in class last week

 get “lines”, :controller => “lines”, :action => “index”, :as => :train_lines

  post “lines”, :controller => “lines”, :action => “create”, :as => :train_lines

  get “lines/new”, :controller => “lines”, :action => “new”, :as => :new_train_line

  get “lines/:id/edit”, :controller => “lines”, :action => “edit”, :as => :edit_train_line

  get “lines/:id”, :controller => “lines”, :action => “show”, :as => :train_line

  put “lines/:id”, :controller => “lines”, :action => “update”, :as => :train_line

  delete “lines/:id”, :controller => “lines”, :action => “destroy”, :as => :train_line

You don’t need to know what anything above means, the most important thing to note here is that we spent the past month grinding and memorizing it and today our professor presented us a SINGLE line of code that eliminated the need to type all this out………..ARGH!……..

Wait there’s more……..

Next, he gave us another SINGLE line of code that generates an ENTIRE APPLICATION, I repeat, an ENTIRE APPLICATION that we just spent weeks learning how to build! I filled up an entire spiral notebook with lecture notes, when all I really needed was this ONE LINE of code!

What did I do with the 100 pages of notes?

image

ajdsfhousdfafsdgjio!!!

I’ll get over it… I guess they just wanted us to build a strong knowledge base before they teach us shortcuts.

On a different note - Last week I promised I would talk about my experiences here in Chicago other than coding so here goes…

As much as I’m sure that you’re all really interested in my adventures at the local bars and my experience in the Chicago nightlife scene, I’ll save that for a dedicated blog post titled “21 shots later”. 

One thing I’ve been doing religiously has been cooking my own food. Cooking and baking are things I’ve always left up to my Mom and Bubba, but they aren’t in Chicago with me. Considering my dwindling bank account, I cannot afford to eat out 3 meals a day in Chicago.  So, I have been left little choice but to bring out my inner Emeril. At first I was a little apprehensive, but I kept telling myself, “If I can code, I can cook”.

So far, I’ve had nothing but what seems to be success, and I realize that there are plenty of tasty dishes that can be made on a budget, in a short amount of time. I am constantly creating new dishes, and my cooking has led me to work on a web application that provides simple recipes for busy or inexperienced people. (more details to come in future blog posts)

I attend class on Mondays, Wednesdays and Fridays at an awesome building in downtown Chicago. Words don’t do it justice, so I’ll show you guys some pictures. The Merchandise Mart was once regarded as the largest building in the world and even had it’s own zip code until 2008. The actual space I work out of is called 1871, and here is the glimpse of the building in all its magnificence.

1871 workspace by day: 

1871 by night: 

May 8, 2012
#code academy

April 2012

3 posts

Code Academy Week 3

Some of you are probably wondering, “After 2 weeks of web development class, what is Ed actually capable of?”… The inclusion of several pieces of technical jargon in my previous blog posts did a great job exaggerating my abilities…

Well this past week I finally had my ‘aha’ moment!

It’s clear to me that I probably won’t be co-starring with Angelina Jolie in the remake of Hackers, but the concept of creating my own web application seems more within reach than ever. Code Academy lectures with in class examples of coding models are beginning to seem less like French, and more like English.

All the material I’ve been learning for the past 2 weeks came together this week when we created a data-base-backed Ice Cream application that allows users to add new flavors, delete flavors, and edit the price/name, basically just a bunch of CRUD. Ben and Jerry’s here I come!

*My favorite in case you were wondering :-)

Now when I say CRUD it’s not the slang word that we hear high schoolers use everyday… 

CRUD stands for:

C reate new records

R ead existing records

U pdate existing records

D elete existing records.

Pretty much everything you need for a data-based application. Now that I’ve been introduced all of the parts needed to build a basic website, I’m expecting classes to pick up major speed over the next several weeks. I couldn’t be more stoked!

I know everyone is probably tired of me blogging about coding, so I promise to have some more interesting posts about the “fun” things I’ve done since my move to Chicago next time. My lack of entertaining content is probably a good testament to how hard I’ve been studying… so at least be proud of me for that!

I’m ending this weeks post with two words:

GO LAKERS!!!

Apr 29, 2012
#Code Academy
Code Academy Week 2
Class Recap:

The picture above does a spot-on job describing my life this past week. On the first day of class, my professor told me that my Code Academy experience would feel like I am an airline pilot, taking flight for the very first time. Two weeks in, it feels more like I’m piloting a space rocket, not a Boeing 787. As crazy as it is, I’m loving every moment of it!

Using various Ruby concepts such as arrays, hashes, and classes, last Wednesday my classmates and I were able to create a simple ecommerce shopping cart application that allowed us to add products and calculate the total price of goods. Building the shopping cart felt super easy, since my teacher was monitoring our progress. I was proud to have built something tangible…. I felt like a professional hacker- birds were chirping, champagne was flowing, life was good.

After class, I headed to a nearby computer lab to continue practicing coding and I was quickly turned on my butt when…

After class students usually migrate over to a work space across the hall to continue practicing coding. In front of the whole class Neal (co-founder of Code Academy) asked me to  recreate the shopping cart application from SCRATCH with my laptop connected to the projector screen so everyone could watch. My first thought was “@#%#*… Gee thanks for VOLUNTEERING me Neal!”

Long story short the experience was quite embarrassing as I struggled to reproduce anything we had just learned in class. I only made it through with Neal guiding me with hints every step of the way. To Neal’s credit this was by far my greatest learning moment at Code Academy. Being put in a high-pressure situation to think through the coding processes was challenging, but it helped engrav Rails knowledge in my mind.

The next class we quickly dove into develop of a real-life web application using Rails, the moment I’d been waiting for! Although the application I built was nothing more than a page with some simple text, it felt liberating to finally be able to translate lines of code into a live webpage on my browser. Finally understanding the model-view-controller (MVC) pattern really made me appreciate the beauty of Ruby on Rails:

Click here to learn more about MVC

Resources:

One of the great things about Code Academy is the plethora of resources the program provides to help prepare me for my coding/entrepreneurial journey after I finish Code Academy. This past week we were lucky enough to have a corporate lawyer come in as a guest speaker. Let’s just say I took full advantage of the opportunity to ask probing technology-law questions in what would have otherwise been a $500/hour attorney-client session

My biggest take away from the talk: Seek help from a lawyer as soon as the risk increases, (such as adding a new member to your team, or if you’re in the process of raising funding).

Another great resource provided to us is the Mentor Program, where we are matched with hacking veterans who will personally answer our annoying questions. I was lucky to have gotten Eric Marden as my mentor. He does a wonderful job keeping me grounded and helping me to map out a realistic game plan to complete my own functional web application by the time I finish the program. 

Weekly Goal:

By the end of this week I hope to have a solid foundation in my knowledge of Ruby so I can focus more on building and less on coding.

Edward Chiu
E:
edward@flirpy.com

T: @edwardchiu38

Apr 23, 2012
#Code Academy
Code Academy Week 1

This is my SECOND time writing this post as I forgot to press the button titled “save changes” the first time I wrote it, so if you sense some awkwardness throughout it’s because I’m now writing with a bit of frustration and anger.

The previous post gave a detailed account of my journey in building Flirpy.com, the countless hours I spent managing over-seas developers via nightly 2am Skype conversations, and the chunk of $$$ I spent paying other people to build my product. 

Napoleon once said, “If you want a thing done well, do it yourself,” which brings me to the end of week 1 of Code Academy, by far the greatest personal investment I’ve ever made. From application to my move to Chicago, it’s been a whirlwind of a 1.5 months!

   irb(main):015:0> def h(name)

   irb(main):016:1> puts “Hello #{name}!”

   irb(main):017:1> end

   => nil

   irb(main):018:0> h(“World”)

   Hello World!

   => nil

Exactly 5 days ago the text above would’ve seemed like the Klingon alphabets, and now it’s like I’m Neo realizing he is able to read the Matrix for the first time. For those that didn’t bother to click on the link above, Code Academy is a 3 month development program that teaches software illiterate people like me how to develop web applications. git push

Day 1 - 3:  The class began with the typical overview of course material and an introduction to basic code concepts like HTML/CSS. After listening to the founders and alumni speak about their love for Ruby on Rails, it is evident the startup community in Chicago is very much like a startup in itself. It’s a burgeoning community, filled with hard-working, enthusiastic entrepreneurs and web developers. The energy and passion of my professors and peers in the program gives me butterflies… I think I’m in love!!!…(with the program)

It’s refreshing to see Neal (one of the co-founders) take an active role in helping out with the course, nothing better than to see the leader take an active role in the future of his students. Jeff Cohen our professor for the course does a great job making even the most complex concepts seem elementary, if only he was my high school Spanish teacher I’d be speaking some serious español right now!

Day 4 - 5: Ruby on Rails is the beloved programming language and framework we’re all here to learn and the installation part of it was a sign that great things come at a cost. I spent 1.5 excruciating hours installing Ruby and Rails, which consisted of on-screen messages like…

database.c:47: error: (Each undeclared identifier is reported only once
database.c:47: error: for each function it appears in.)
database.c:47: error: 'SQLITE_OPEN_CREATE' undeclared (first use in this function)
database.c:72: error: 'SQLITE_OPEN_READONLY' undeclared (first use in this function)
database.c: In function 'set_sqlite3_func_result':
database.c:278: error: 'sqlite3_int64' undeclared (first use in this function)
make: *** [database.o] Error 1

Seeing errors like this might send an impatient person packing, and I admit it was frustrating…. But I pushed through and took my time to crack the code. I felt so proud and accomplished in my ability to problem solve my way through errors in the installation process. Now I’m ready to take on the world one code at a time!

Oh did I mention Code Academy took us to a Cubs game? I got to sit in the Pritzker’s family box suite!

“Take me out to the ball game, take me out with the crowd; Buy me some peanuts and Cracker Jack, I don’t care if I never get back. Let me root, root, root for the home team, If they don’t win, it’s a shame. For it’s one, two, three strikes, you’re out, At the old ball gameee.”

Edward Chiu
edward@flirpy.com
@edwardchiu38

Apr 14, 2012
#code_academy

March 2012

1 post

How I built Flirpy without any programming knowledge

It’s 1:28 AM Sunday morning and I just finished two glasses of Johnnie Walker neat, clearly this is the perfect time to start my very first blog post…

Here I am just another entrepreneur looking to fix a problem that needs solving. Deciding what or where to eat is probably the most annoying uncertainty I come across during lunch or when figuring out dinner plans before a full night of debauchery.

I now present to you Flirpy.com. If you’re wondering where the name came from, after 2 days of spinning my wheels brainstorming on Thesaurus.com I decided to name the site after the first word or noise that came out of my mouth, [flur-pee].

Rather than babbling on some more following this paragraph will be 7 STEPS to how I created Flirpy without any programming knowledge. For those that are wondering why this is on Hacker News, my goal is to help non-technical entrepreneurs take that very first step. 

Step 1: Find a problem that annoys the hell out of you and write it down.

Step 2: Think of a way to solve that problem. I thought high quality food pictures would entice hungry people (or at the very least serve as pure entertainment for the pot heads out there, ha!)

Step 3: Write down a list of features you want for your website, in order of preference. Now remove all but the top 3 from the list.  Simplicity is key in the beginning - You need to focus on two or three features that will make your application useful. All the other features can be layered in over time.

Step 3.5: Now create a detailed list of all the functionalities needed for each feature. Functionalities are the individual actions you can do on the site such as writing a review, liking a picture, or even changing your username and password. You should also create another set of functionalities reserved specifically for the administrator (you), these actions can include changing the content on the site or resetting the password for one of your users. The more detailed you are when creating these lists the less stress you’re going to have later. 

Step 4: Create mockups of your idea. This is the MOST EXCITING part in the whole process. Start by drawing it out on ordinary paper. Next, use whatever graphics editing software you’re familiar with to create screenshots of what it should look like. Don’t worry about it not looking like Facebook, it will eventually evolve itself. See below for how awful Flirpy used to be:

image

*You can also use Balsamiq, it’s a great and simple tool for creating mockups using a library of templates, wire-frames, and buttons. 

Step 5: Interview and hire overseas developers. Considering I came from a non computer science background, went to a college where the closest thing to a tech community was Starbucks, I knew product management would be my best bet. 

Finding a talented coder who will work within your budget is no easy feat. I’ll provide the nitty gritty in a more detailed post later on, for now I’ll provide a few tips based on my experience. Note: the tips below are based on my experience using oDesk.com, an online freelance employment platform.

Tip #1: Make sure they have plenty of references and a solid track record. Play around with the apps they’ve listed on their portfolio to get a feel for their skills and sense of design.

Tip #2: Hold firm to your budget. The more work you put in the mockups and feature list, the less work they have to do, which means more money in your pocket. (see steps 3 & 4)

Step 6: Set milestones. It’s important to break up the project into checkpoints, allowing yourself to review their work and making sure you and the developer are on the same page. I can’t stress the importance of this step, don’t wait till the end of the project to find out your application is completely useless.

Step 7: Communicate, communicate, and communicate. Actively communicate with your coder via Skype or email. Be the pilot of your project. I would stay up till 3 to 4 am every night managing developers in Russia, India, and China to ensure Flirpy was being built the way I wanted. This includes checking for errors and acting quickly on it.

So that’s pretty much an overview of how you can build a functioning web app without programming knowledge or upcoming plans to become best friend with a coder.

Now that I’ve gone through a few rounds of product management, it’s time for me to work on a more game changing idea. Maybe one day I’ll be lucky enough to meet a hacker who will save me the hassle of staying up till 3 in the morning every night. 

- Edward Chiu, @edwardchiu38, edward@flirpy.com

p.s. I’m fully aware that the Flirpy prototype has many flaws, bugs, and limited results. I welcome any feedback, questions, or feature suggestions to make it better!

Mar 5, 2012
#entrepreneurship #web development #Flirpy
Next page →
2012
  • January
  • February
  • March 1
  • April 3
  • May 3
  • June
  • July
  • August
  • September
  • October
  • November
  • December