Qt's Home

The Story of a french guy discovering the world

Week 4 - Day 3 - Building, Testing, and Deception

| Comments

Building

So, yesterday’s challenges were : Build apps. In the morning, we had to finish the Craigslist one that we started the day before, and in the afternoon, we had to make a non-authenticated blog.

The teachers have to change a lot from last phase 2 program. We are different, and our phase 1 was so different than previous cohorts’ than in the end, we don’t code like our big brothers and sisters at all. While some of the previous cohorts (Thanks to their program/material ) tended to focus a lot on speed, and quantity, we tend to spend a ton of time on specific challenges, to master them to the end. While some would probably go for the “Quantity of knowledge”, we are going for “Mastery”. So in the end, while previous cohorts finished 10 challenges by the end of day 3, we finished only 4 but we did learn just as much and mastered a lot of things that previous people did not know about. An example would be Rspec testing. We literally spent all of yesterday testing…

Anyway, at the end we finished one app, with Johnny : Anonymous Blog. It is not beautiful, not responsive, nothing like that, but the idea was not to make beautiful things, but to make a functional blog system that allows you to have posts that can have tags, and tags that can have many posts, with the corresponding pages.

We are about to finish Craigslist so I’ll show you that right after.

Testing

We tested! For 2 days!

In the beginning, we just started to assert that things we wanted were equal. If we call “5 + 5”, we ask for it to be equal. That was phase 1.

Then we started playing with some more tests, witnessing teachers/talking about re making Rspec (The testing suite for testing in ruby. Think about it as a toolbox with a LOT of tools).

Now in Phase 2, we have Rspec, we have other tools, and we need that. The syntax is easy, very close to english. For example :

expect(5+5).to be 10

And so the hardest part was : figuring out how ENGLISH it was. Is it “.to”? Is it “ to”? Do I want to test if “5+5 =10” is true? or if “5+5” is 10?

That, guys, is what we spent two days working on. We figured out a lot (and for future reference for students : You should not use should! but expect is cool and Shoulda is your best friend if you’re testing Sinatra or Rails… Anything with ActiveRecord, even if it needs should and not expect), but it did take a lot of time.

Now, I feel like I know much more about things like one a quote from one of my favorite books : “You don’t have to test everything to destruction just to see if you made it right.”, Neil Gaiman, Good Omens. Testing is good, but can be time devouring if not done right.

But anyway, let’s not talk about that more, there is always much to write and read about that, but there are places and times to do so!

Deception

Yesterday I was disappointed by Interflora. If you don’t know that brand, it’s a flower selling service that is offered in France. It is a chain, you hear a lot about it, and so I thought I would use it when I needed that kind of service.

Yesterday was my fiancee and I’s 6th anniversary. I can’t be with her (Obviously…), so instead, I planned on making the biggest bouquet I could find delivered at her house when she would be coming home on this day. That was a long time plan, I kept the exact money I needed on my french bank account, I did some research to find how to get flowers delivered, and talked to a lot of people about that to never ever forget.

Then, a few days ago when I got the confirmation that I had the money I needed to do so (last week), I took the biggest chain I could find, for safety, I took the biggest bouquet I could find, and make it delivered at 4PM at her house, right after she comes back home from work.

Yesterday, when she woke up, I did not even send her a text. She was, of course, disappointed, but I was planning on that (and am very bad with time differences sometimes)! She thought I had forgotten that fateful day! But then she would be so happy when she would get back home from a long and hard day and find these flowers!

But then… No flower was delivered. None. I checked the time, checked in with her to see if she had them, check the site to be sure they were delivered, and the site even told me “The flower delivery guy has the order”, which eventually turned to “Your flowers have been delivered”… But none got to her house. So I had to explain everything, my plan fell apart, and today she called them to check about the order and… Guess what? … Apparently the girl on the phone told her the delivery guy never got the order.

So in short : I planned, I payed, went for safety over better shops, and in the end I feel just like an ass that did not do anything for our 6th anniversary, but just a couple of texts saying that I love and miss her.

I am so sorry, Thuy, I am very unhappy about that, and I will never stress that enough: I WILL NEVER USE INTERFLORA AGAIN IN MY LIFE

Time to go back to coding now, see you tomorrow ;)

Week 4 - Day 2 - Testing, Helping, and Buying

| Comments

Testing

Yesterday, we paired with Elliot, a new Banana Slug who is re doing Phase 2. We had 4 challenges… and ended up not really finishing one. We had a great dynamic, we both learned tons and spent most of the day working on testing with Rspec on Sinatra, the tool we’re working with at the moment.

The challenge we worked on was making a simplified version of CraigsList.
So to do that you need to meet these requirements :

  • The front page creates a list of categories
  • Each category has many posts
  • A user can create a post in a category, and/or create a category
  • A user that created a post gets a key/url that allows him and only him to edit or delete that post

For that, we created tests, a lot of them. But then we forgot one of the basic principle : When you finish writing your test, you need to make it pass before working on the next one.

Just for that, we worked and learned a lot but being at the end and having to work on all that from scratch was a mess and we ended up working on other things.

Helping

So, I was told I am a patient person. Hell, I was even talk this very morning that I was a Cool person! Also, I already said that I have a bit of experience with the stuff we work with.

From that, I can tell you that I like helping, and spend a lot of my days doing so.

Yesterday, we worked with Elliot, and I actually spent a lot of time trying to solve a lot of problems and explaining what we did to the people who were stuck. People came, people go, came again, and we spent like half of the day working on solving people’s bugs. I have no problem with that, and I like to think that I learn much more by doing that than by just coding by myself, but then I also feel bad for Elliot who basically spent half of his day not … working on solving our problem.

When we thought about stopping with that craigslist challenge, I went around and tried to help the people that I had not seen before. I ended up working on stuff with Golden Bears, and that was fun too (And took less of Elliot’s time, so I’m even happier about that haha)

In the end, that was a fun day anyway.

Buying

I started buying a couple of things. First thing is that I bought socks and underwear. I ended up in Uniqlo this weekend, a brand I really like, and they had sales… That coupled with the fact that I did not bring enough socks to have at least a 7 days period before I need any laundry made me buy a lot of socks… and then other stuff on sales haha. Don’t worry though, I took advantage of the Dollar being lower than the Euro, and the conversion being a 1 to 1 in everyday’s prices.

Another thing I had to buy was a beard trimmer. I was thinking about going to the barbershop (because the US HAS barbershops), but I ended up not having the time, the opportunity, or even the reason since I feel like spending valuable time there would be a waste if I just wanted to trim a bit.
So instead of that I bought a beard trimmer, and played with it. I spent a lot of time playing with it yesterday. I spent a lot of time playing with it today, and now I love my beard even more.

Now, I also bought other stuff, but then some are surprises so… brace yourself, news are coming tomorrow too ;)

PS : Today is my fiance and I’s 6th anniversary… I love you Thuy, you make me happy and I will do my best to make that happen for you to… Everyday of the rest of my life.

Week 4 - Day 1 - New People, New Challenges, Personal Projects

| Comments

New People

Welcome to the Golden Bears!
Yesterday was our Phase 2 first day, but also Phase 1’s first day. A load of new people arrived in that small place that is DBC’s current office, and so, we had to welcome them!

The idea is that we got to get here at 8-8.30AM. Then, we shouted, gave advices, talked, ate,… All in all, a very good day!
The new guys look cool, and it was really nice to see them approach the problems we had a different way. People ended up, from what I saw, working a lot on challenges where we did not really work much, and not care much about the ones we spent a lot of time on. That was refreshing, and fun to discover new bugs, new problems. Different approaches, different paths, I can’t wait ‘til they get on harder problems and blow my mind with problems I can’t solve… again!

And among the new people, they have another french dude! Plus, they also have a Korean girl who lived in France… New people to bother with conversations in random languages!

New Challenges

We started phase 2. Phase 2 is more about web development. We play with Sinatra, and are starting to make stuff that is actually stuff we can share with people who are not developers and they can use it and even get impressed with that with some luck.

On these first challenges we paired with Jose. We had a great dynamic, no complex, and ended up helping each other into not getting stuck much, and completing the challenges. I feel like I learned a lot, and I really enjoyed that day. Even when I would think I was spending too much time on something, I checked around and found out that we were actually going quite fast. That problem was taking a bit more time than the rest of it, but then we went a bit fast on the other things and so in the end, what was confusing was our own change of pace more than the real speed at which we were going at that moment.

Anyway, at the end of the day I learned, I worked, finished what I wanted, and if I had to sum it up… it was a great day.

Personal Projects

Now we can work on stuff that we can show to “normal” people. But then we’re also using some stuff that I already know. I am not nearly good enough at all of these, but I do have some experience on some of these topics, and could just use that and be fine with that. But then I am not here to take the easy path. I am here because I want to learn.

To do so, I figured (= People told me I should… ) I’ld start working on some personal projects. I have ideas, things to do, and so why not learn by pushing even further and work on that, independently of the things we work on.

I’ll try to work on blog articles to explain what I do, and share as much as I can. First day’s work was quite long so I ended up not being able to do much, but expect more once I have more time!

Also, phase 2 is full of “Portfolio Projects”. We’ll have a lot of them, to be delivered on sundays. I’ll share every one of them, and try to explain the thought process every time I work on one, so that’ll be another thing to look for!

Anyway, time to get back to coding, see you guys tomorrow!

Week 3 - Day 5 - Party~

| Comments

‘twas the day before the end of the phase. People were happy, exhausted, and alcohol and songs mixed up to help the moods enlighten.
Week 3 Day 5, everybody has had his assignment. The outcome of these assignments is just an advice, then people had time to make their choices. Some of our cohort (2 I think, but we’ll get the confirmation on monday) chose to go back to work on the same phase again, not feeling ready for the next one yet yet. Most chose to go on to the next level of difficulty. And That applies for phase 1 as for phase 2.

One thing to know is that there are 2 differences between a phase and the next one.
The first difference is : The next one is always more difficult that the current one. It starts higher, has a higher rhythm, everything will be harder.
The second one is : The next phase will get harder much faster that the current. You start higher, and you’ll have more work, to do in less time. More projects, and you’ll have to learn things faster, and better.
Behold, fellow students, winter is not coming, Mayhem is.

Now, on the last friday of each phase, everybody knows where they’re going, phase 1, phase 2, phase 3. Everybody finished their projects, presented what they wanted, and now they just have to “wait” for monday. So on this friday, we get beer, pizzas, mics, music on the big screen, and we partayyyyy~

Wait is a big word though, everybody who was in this program will tell you that. New material, new studies and all that are on the next monday so on this weekend, people are stressed out and tend to study as much as they can about the new stuff we’ll have to deal with on the next monday.

For me, I spent one day discovering stuff. I went to Target, Whole Foods. I went to the Chinese New year’s parade in San Francisco. And now, I am studying a bit about Sinatra and stuff. Things are going well, but I prefer resting before the mayhem. It’ll get crazy whatever I do, so I might as well just rest before that ;)

Anyway, see you on tuesday for news about monday… And the new cohort! And Welcome to the Golden Bears!

(PS : Marching bands are AWESOME! : A nice picture of me in there! )

Making a New Faker Gem

| Comments

Let’s me sum some stuff up first before I start :

  • Gem : A Gem is a “library”, a pack of code, in the programmatic language we call Ruby, that enables us to use functions not built in the languages without having to rewrite the code. When one feels he has enough code to share, he can wrap it up in a “Gem” that will be easily installable and usable by the other Ruby programmers.
  • Faker : Faker is a gem that basically gives you random data. Let’s say you want to make a huge database and want to test the load for when you have more than 1000 users. Instead of writing either 1000 times the same name or use 1000 names you write one by one, Faker will generate a random one for each of these entries. Pretty useful.

But then, Faker generates what it has been built for. Generating team names, or even slogans, are not what it has been made for. So as a 2 days project with my fellow boots of Phase 1 DevBootcamp we created one that made the things we want. You can check the code here : Github, and more info on how to download the gem on : Rubygem.

Basically, we used bundle to make the gem architecture, the files we needed. Then, we took a look at how Faker was built and decided to go around that same way, with our data stocked in a yaml file, and using the yaml module to load it and get the data we wanted in ruby.

And we end up with a gem that has 4 different functions :

1
CoolFaker::Character.name

generates a random Character name from a famous movie, or tv show. The titles include The Lord of the Ring, Superman, Starwars, friends, or futurama.

1
CoolFaker::Character.name_from(movie_or_tv_show)

generates a random name from the movie or tv show that you called. Your options are :

  • friends
  • entourage
  • sex_and_the_city
  • batman
  • startrek
  • superman
  • star_wars
  • the_lord_of_the_rings
  • napolean_dynamite
  • snow_white
  • back_to_the_future
  • the_wizard_of_oz
  • toy_story
  • the_simpsons
  • futurama
  • monty_python
1
CoolFaker::Team.slogan

generates a random slogan from a 587 quotes database

1
CoolFaker::Team.name

generates a team name from a list of adjectives and a list of animal names. Expect some funny names, gender-confused pandas is a good one ;)

With all that, we ended up making the gem with a simple

1
gem build cool_faker.gemspec

And then send it to rubygems.org, and here we go.

All in all, we ended up shipping a gem without knowing about gem building/shipping, building dozens of tests without knowing about rspec… a good 2 days of intense learning, a lot of fun, and we end up with an usable tool. I’m pretty happy about it!

Week 3 - Day 4 - Group Project and Good News

| Comments

Group Project

Yesterday we started a new group project. This time, it’s a 2 days stretch. You can follow how it’s going on Github.

The idea is that we are building an open-source project. More specifically, we are building a Ruby Gem (A code library, a set of tools for people who use ruby) that will generate random people names, team names, and useful info like that from a database of funny and famous words/names/quotes. The idea is that there is a gem called “Faker”, and we are building the cool version of this one, with Armando, Jamie, and Nicholas.

So far, it’s doing good! I got my voice back so I can participate much more in whiteboarding and all that, we planned everything decently and managed to get an MVP (Minimum Viable Product, the smallest thing you could build on your idea) in half the time. We’re pushing for more options and some kind of implementation to show nice usage of that gem.

It’s exciting to be working on some tool that may very well be used by others all around the world. Plus, learning how to make gems is a very interesting thing. I think that when I have time later, I’ll try to make some gems just for the sake of helping around. Open-source is awesome!

Good news

Among the good news :

  • I may see my fiancee before I come back. This is by far the best news I could ever had heard. I miss her, and knowing that I may see her sooner than I expected is just the best thing that could have happened.

  • I had a beer with Jonathan and got more info about after Dev Bootcamp. That was such a relief. Coming here as a frenchman, I just had no idea how the job market was, and how things were supposed to happen after that. I kinda get ideas from here and there, but finally being able to have some feedback from a guy who has the same experience, and comes from the same place, is really a relief. Now I just have to continue giving my best ‘til the end of these 9 weeks.

  • I’m going to Phase 2! I got my assessment and it went ok. I overthought part of it so I wouldn’t say I did perfectly, but with the goal being : Assess whether I know Phase 1 material or not, I did ok for that. That is perfect! So now it’s time to learn even more!

Anyway, going back to the project… See you tomorrow!

Week 3 - Day 3 - EE Cooldown, ActiveRecord and My First Solo Day

| Comments

Engineering Empathy Cooldown

Two days ago was our last Engineering Empathy session of Phase 1. Like the other cohort told us : “You thought the first session was heavy? Wait ‘til you see session 3”.

First week was “The superego”, and the exercise that we got was “Share what your inner voice tells you”. This week was “Dive deeper in what you let people know about you”… And so we sat in circle to tell people stuff, while starting every sentence with “If you really knew me”. Now let me tell you guys… There were tears, hugs, revelations, but no shocked reaction, no judgement, nothing like that. And everything told in this room stays in this room.

Diving deeper than the usual in what you tell people is an exercise that does make us grow, but that also hits you hard at the moment you do it. And listening to all of the others’ is not even easier. I think I can safely say that I will keep that day in my mind for a very very long time.

ActiveRecord

ActiveRecord is the design pattern I told you about yesterday. In Rails, the most well known web framework for Ruby, this design pattern is implemented in its own. What it does, in short, is mapping a database with an object. Columns of the database become attributes of the objects, you can create objects and save them to the db, or get objects from an entry in the db. Quite easy and practical!

Yesterday, we worked on that for the whole day. The morning was the introduction, and the afternoon the application. I’ll say that it was a pretty good day, I learned a lot, and ActiveRecord is cool… Wait… Better than that : ActiveRecord is coolER than SQL!

My first solo day

Wednesdays are optional solo days. That means that every other day, we have to pair or group with more people, but on wednesdays, we choose our pairs/groups. I did not solo until then, but I thought that to save my voice I’ld try and do so yesterday.

In the end, I did finish the exercises, which was my goal. I had to go to other people soloing a couple of times, to get my mind off of the problems that were blocking me, and to help me figure out solutions sometimes, but I did it and I am pretty happy about it.

The beginning was hard and I just … felt like I did not know where I was going. But I got on it after I expressed my incomprehension a first time, and then I just worked, with a decent speed.

I don’t know if I’ll do that again, probably not next week, but probably another time. It was a good day but I prefer picking my pairs in the people I do well with (Looking at you Irene!).

Anyway, today is assessment and group project… time to have fun !

Week 3 - Day 2 - More SQL, Testing, Cookies and Syrup

| Comments

More SQL

Yesterday was another day when we used SQL, apparently the last (Yay!). We implemented our own version of ActiveRecord, a tool used in Rails that we will, apparently, use all the time and that will be the one talking with the base. But to use your tools correctly you first have to learn how they were built… And so that is what we did.

I paired with Erin for this day and it was really great. We had a good dynamic and we ended up finishing everything without any real problem going on. All in all, it was a great day for Quentin in DBC!

Testing

Shadi is back! So testing is back too ;)
He explained how to make our own version of Rspec, the testing suite for Ruby, and then handed us a series of tests for the exercises we had for the day. Things are getting complicated pretty fast, but I love it !

Testing is getting trickier but soon enough we’ll get into some deep Rspec testing and for the newcomers : TESTING IS IMPORTANT! TEST ALL THE TIME!

Cookies and Syrup

So, I came here thinking americans ate junk food and only junk food. Such a disappointment to be in a house, in a program, and in a city where it is absolutely not the case!
I ended up being on some kind of sugar withdrawal in a few days, that is absolutely not the thing I would have suspected.

So, to compensate that, I buy cookies! And then, once or twice a day, take my usual bite. But then, I am now seen as some sort of cookie monster for eating a lot more than any other around… So strange.

As for the syrup, small but funny story : Ivan bought syrup, I took some (The throat is not 100% ok yet), then I got incredibly sleepy, and slept. The bad part is that it was 9AM and I was fighting sleep in the middle of a very interesting lecture on Testing.
The conclusion I got from that is : Read the fucking manual. Don’t take syrup without reading all about it.

Week 3 - Day 1 - SQL, Games, and Assessments

| Comments

SQL

In the world of development, we could say that you have plenty of choices when picking your tools. Among these tools are hundreds, if not thousands, of languages. Some are pretty specifically used, even though they may not have been made for, some are pretty “fast” while others are “not”… But all in all, we can say that a hammer is a hammer. No matter the brand or the specs, the hammer will fulfill his role and that’s it.

Anyway, yesterday we used SQL for the second time in phase 1. It is a language used to talk to a specific type of database (Any derivation of SQL), which may very well be one of the most common database type in the world, and that has been the case for more than 20 years. The language used to do so has been around for almost the same time too…
I paired with Tim, a very nice and tall guy, and we ended up doing as much as we could for the day. We learned tons, we played a bit, and it was fun. All in all, a good day, even if we spent the day on SQL…

Games

So, Web Development, and maybe even particularly in Dev Bootcamp, is a world of hard work combined with games. My opinion is that we party, we play, we develop games even, to cope with the rest of the hard day. A lot of brain-twisting challenges and very not fulfilling days spent on solving that bugs that would have taken 2 minutes to solve if you had seen that semi-colon earlier will do that to you and may ask for harder entertainment.

In DBC, we play. There are games all around, the Giant Djenga falls a couple of times a day, we did a Hack-a-thon this weekend (A coding contest where teams build stuff and compare at the end of the day. All with beer, pizzas, and a lot of laughter), and all in all, people are playful.

Yesterday we played Magic The Gathering with a couple of boots. I did not win but I loved the game. A long game, hard, where you have to think before you do stuff. It had been a long time and now I just regret I did not bring my cards myself ;)

Assessments

DBC is not about grading students. It is not the style of the house. But they do have to test us to make sure we can understand the next phase. So, to do that they assess us at the end of every phase.

This week is the end of the first Phase. Teachers will get with us for a short amount of time on Thursday and will review some of our code at this point. At this moment, no more help, just some control of your knowledge. At the end of that, we can be given one of 3 different options :

  • Your level is high enough, welcome to Phase 2
  • You may want to spend 3 more weeks on Phase 1, just to make sure you get it all
  • Are you really sure you are learning anything? If not, DBC may not be the best thing for you…

Now, let’s hope for mine being the first one! I’ll do my best anyway.
Small info for the people in the next cohorts : We chose our assessments. The output may be the same but you may not get the same.

Anyway, lecture is about to start again, let’s go. Thank you for reading and see you tomorrow!

Week 2 I Am Still Alive

| Comments

Apparently, getting sick is a trend among DBC cohorts. When you get here, expect to get sick. Bad weather this week, and me being very stupid with the weak points I know I have just made me get sicker than I do usually.
So, I ended up feverish, sleeping more or less the whole day… for 2 days, in DBC, waking up 5 minutes at a time, just enough to get some work done so that I don’t feel too far behind, and then go back to sleep. Then I woke up on friday but had no more voice…
All in all, a good week of fun times.

In other news, we went through some SQL introduction. We will be using Postgres mostly. Now I just have to figure out if my experience with MySQL will be a good or a bad thing. Different implementations of SQL can save you some time to get into the syntax, but then the small differences are what can just be the tricky things that make you get in so many bugs. Only time will tell.

Friday was the first group project, and we did a Tournament Manager. Again, I couldn’t speak and was a bit dizzy so I ended up not being able to give my 100% and I hate that… Yesterday was the first DBC-Alumni hackathon and I was still not close enough to awake-ish to be able to participate. Damn throat…

Anyway, sorry to my pairs this week for having my mind pretty far off the planet, sorry to my friends who I may make sick, to those who took time to help me get better when they clearly had better things to do, and to the people who may be reading this blog and had no food for thoughts for 4 days.

But don’t worry, I’m back, I’m good now, and hungry for knowledge, experience, and opportunities to show the world what I’m made of!