Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
This episode we take a look at a web application called OutfitHash by our amazing student Benyam Ephrem.
About The Project
About Ben
Learn More
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Welcome to The Treehouse Show.
0:00
The Treehouse Show is our weekly
conversation with the Treehouse community.
0:01
In this episode,
we'll be sharing another student project.
0:08
Today's project is so much fun.
0:11
It's from Benjamin Ephrem from Maryland.
0:13
Let's let him introduce himself.
>> Hey, what's up?
0:15
My name's Benyam Ephrem,
0:18
and I've been a Treehouse student for
about, I think, three to four years.
0:19
I had one account,
I think I cancelled it like two years ago.
0:24
And then I started another
one about a year ago.
0:29
So in less than 30 seconds, this project
I'm working on called OutfitHash,
0:32
I'm a University of.Maryland Student,
I'm a freshman.
0:37
And during this winter break,
I had all this free time.
0:40
And I thought, why don't I make a project
now that I've learned all these things?
0:43
I taught myself Java Spring,
Node.js JavaScript, and, recently,
0:47
Python from Team Treehouse.
>> Wow, Ben,
0:51
I love that you're jumping around and
learning all those languages here.
0:53
You're definitely a polyglot.
0:57
That's the term we use for
someone who knows and uses many languages.
0:58
Now if that sounds overwhelming to you,
1:02
I think you'll quickly learn that
once you start to get your feet wet
1:03
in understanding one language,
the others get much easier to learn.
1:07
Let's let Ben talk about
his project OutfitHash.
1:11
>> Basically, the project, the idea is,
1:14
when you wanna create an outfit,
there's so many choices, there's so
1:16
many ways that you could
put things together.
1:20
And a lot of the times, what I find myself
doing is I randomly pick items that I just
1:22
don't end up wearing.
1:27
I don't think of the overall picture of
how this would fit in with an outfit.
1:28
And then I just pick it up.
1:32
And then sometimes, we all know this,
1:33
a lot of people pick up clothing
items that you never end up wearing.
1:35
The basis of it is you find
an item that you like, right now,
1:38
it's only Amazon because you have to
pars URL for the information and stuff.
1:42
But right now, it is only Amazon,
but basically, you take the URL.
1:46
And you grab piece of clothing that you
like, say a jacket, you grab the URL.
1:50
You throw it into the outfit generator.
1:54
And what it does is the application
take URL, takes keywords out of it,
1:56
things like that.
2:00
And then asks the Amazon API for
clothing items back.
2:01
And basically, it fills out a grid
of items, creating a whole outfit.
2:06
And then what you, like you can pin it.
2:09
And then you can keep randomizing.
2:11
And what you don't pin will
continue to get randomized.
2:14
And then once everything is pinned,
then you have a complete outfit.
2:16
And you've completed what
you were trying to do.
2:20
So there's that module.
2:22
And then there's the individual modules,
2:24
where you can generate
individual outfit items.
2:26
So currently,
the application's kind of rigid.
2:30
It only does male clothing.
2:32
And it doesn't really cater to,
2:34
the algorithm's kinda weird in
the backend with the keywords.
2:35
That's like getting
into semantic analysis,
2:38
which I don't know that much about,
which I have to learn about.
2:40
But right now, it's kinda rigid, but
I hope to expand this later, possibly.
2:43
I'm trying to gauge interest,
2:48
is this something people would ever use?
>> I totally have that issue, too.
2:49
I mean, you all know how many
times I wear this hoodie and
2:54
this green Treehouse shirt?
2:56
Let's give the site a spin.
2:57
Okay, so it's outfithash.com.
2:59
This is awesome already, go from lame
to fame, from boring to soaring.
3:01
This is gorgeous, look at this over here,
this looks great, Ben.
3:08
I'm gonna go ahead, I'm gonna Try It Now,
as the call to action says.
3:10
Okay, so make something fresh.
3:16
So I need to go to an Amazon product URL.
3:19
So lets go ahead,
lets start with what I have.
3:22
So I've got let's see, I've got
a codling hoodie, that sounds fun.
3:24
Eat, Sleep, Code, that's a good one.
3:29
Happiest when I'm coding.
3:32
The only program joke I know is your code,
that sounded kinda mean.
3:33
I love coding & pickles,
very specific, I'm gonna use this one.
3:37
Grab this, here we go, and
I'm gonna paste it here.
3:42
Let's go ahead,
let's generate this outfit.
3:47
True, I would look
pretty good in this tie.
3:51
Let's see, I do like retro glasses,
so that's a nice accessory for me.
3:54
And I can pin them here.
3:58
I literally have these shoes, so
let's go ahead and generate that again.
4:01
Nice, that's a cool jacket,
Ben, this is amazing.
4:07
And let's see, okay, so
he shows how it works.
4:13
This is really cool, this is nice for
people using the site.
4:15
And it's pretty specific, the coding,
this is nice, showing how it works.
4:19
Awesome job here, man.
4:24
He also gave us access to the GitHub repo,
so
4:27
check it out here,
also in the notes below.
4:30
Awesome, he talks about at
the problems and the solutions,
4:35
how the idea came about, this is great!
4:38
He talks about what is this project for
him.
4:41
Talks about some challenges that happened.
4:43
Here we go, Challenge,
I'm a Treehouse student and there I taught
4:45
myself Java when I was 16, what?
>> So
4:50
I have a lot of challenges
that I faced in this project.
4:53
I actually wrote them in the GitHub,
that's why I'm glancing over to my laptop.
4:57
So number one thing was just
figuring how to do this.
4:59
You have an idea, and
then you don't really think you can do it.
5:03
There are so
many skill gaps that you have.
5:06
There are so
many things that you don't know how to do.
5:08
And I learned that, over time,
you just bridge it.
5:10
As you're growing,
you just figure out how to solve it.
5:13
And it's just a matter of doing it,
and then you'll find it.
5:15
Stack Overflow, you'll find it some where
on the Internet and learn how to do it.
5:19
So it's really not a problem,
the small skill gaps.
5:22
But one of the biggest problems for
me was signing the request.
5:26
So what Amazon wants from the URL,
it wants you to sign it.
5:30
It's like an intricate ten-step process
where if you're off one character,
5:34
Amazon will just reject your
request as if it never happened.
5:38
So basically, I just created
modular functions to sign different
5:42
kinds of requests, image requests,
item requests, category requests.
5:47
I just created functions that
would take a query string and
5:52
then add a signature at the end.
5:55
And it's kinda intricate process,
I don't wanna get into docs.
5:57
That was the hardest challenge,
6:00
that took me a few days to get.
>> Ben,
6:01
I love your attitude about bridging
the skills gap and sticking with it.
6:03
Just keep at it,
the answer's out there, love that tone.
6:06
A good job getting through
those strict requirements and
6:09
making nice reusable functions.
6:11
That will pay off in the future when
you go back to look at your code or
6:13
when others come in to help you out.
6:16
He has some more interesting challenges,
6:18
too.
>> And another thing was Node.js was
6:19
different from Spring, which I learned
first, because it is asynchronous.
6:22
And the idea of asynchronous calls,
and functions, and switching from the,
6:26
what's it called, the paradigm of
functional, switching over to that
6:31
from the declarative approach that
Java uses, if that's the right term.
6:36
But yeah, yeah,
that was an amazing course by Craig.
6:42
Craig, I really did not wanna learn that,
but
6:45
that course that he taught
really made things clear.
6:48
And it took it step by step.
>> Shucks, thanks,
6:51
Ben, I always love feedback like that.
6:54
Ben's talking about a course
that we have called
6:57
Introduction to Functional Programming.
6:58
It's a more advanced Java course, but
7:00
we have broken out blog posts that help
explain the paradigm shift from more
7:02
imperative languages to
a more declarative style.
7:05
That's what he's talking about.
7:08
Check the notes attached to this video for
more info.
7:10
Thanks again, Ben.
7:12
Ben talks a bit more about some
7:14
additional challenges.
>> So
7:15
the third challenge I faced
was error handling debugging.
7:17
So if a request comes back from Amazon,
and it's screwed up, what do I do,
7:21
what do I tell the user?
7:25
Currently, the way I handle that
is I have placeholder items.
7:26
So the user doesn't even
know an error happened.
7:29
There's placeholder items
that rotate through so
7:31
the user experience stays smooth.
7:34
Another challenge is I learned Java first,
which is a backend language.
7:35
And also JavaScript, which is frontend,
but I always had a backend mentality.
7:40
And doing the front end was really tough.
7:46
Working with layouts, working with the way
divs lined up, and all that stuff.
7:48
I'm not a designer,
7:53
and it was very challenging, but I used
a service called Flaticon, I believe.
7:54
And the icons as great, and
it makes the site look nice.
7:59
I think it looks okay, at least.
>> Okay, dude, this looks great.
8:01
Now it's true that there are new skills
that you have to pick up when switching
8:05
between back end and front end.
8:09
And it looks like you're picking those up,
too.
8:10
Now Ben also talks about a couple more
8:12
challenges.
>> And
8:14
then another thing was
handling libraries in Node.
8:16
That's just a thing that I
just had to Google and stuff.
8:18
And then a huge, huge, hard thing that
I found was deployment was very tough.
8:22
I personally use Heroku, which is amazing.
8:27
They make deployment very easy.
8:29
It's just, literally, you can type
something in command line, and
8:31
it just deploys.
8:34
But deployment's really hard.
8:35
You're shifting from running your
application on local host or
8:37
locally to a domain and
figuring out how DNS works.
8:42
The SSL certificates,
installing that on the server,
8:48
that's another thing that's really
annoying that I had to learn.
8:50
And then the final thing, as a project
grows and becomes bigger, you realize that
8:52
infrastructure decisions you make and
the way you, the hard thing is,
8:57
the really hard thing is naming things
later on that will really bite you.
9:01
And it gets really
annoying to name things.
9:06
And you'll look back, and then you'll see,
why did I name this like this?
9:10
And then you change it, but then you
realize you named something else that.
9:13
And then it just becomes confusing.
9:16
So always having infrastructure
in mind and the overall way,
9:18
a map of how things work is really good.
9:22
I personally used Trello for this project.
9:25
It's the GitHub,
a link to the Trello that I used.
9:28
But it's good to have all of
the tasks sectioned out and
9:31
sort of have a web drawing
up the application.
9:35
I feel like I'm rambling, but.
>> Ugh, naming things is so hard.
9:38
Now there's an old joke
that goes like this.
9:43
The two hardest things about
programming are naming things, and
9:45
validating cache, and off by one errors.
9:48
We asked Ben what his advice for someone
building a project like this one would be.
9:52
>> Any advice for
9:57
someone building something similar,
9:57
I think the number one thing
is don't be afraid to learn.
9:59
Like I said, the skill gap,
you will think that you can't learn it.
10:05
But then eventually at the end,
10:08
you're just like, it just becomes common
knowledge to you, becomes normal.
10:09
I did not wanna learn jQuery,
I did not wanna learn how to do Ajax.
10:13
I didn't even understand
how this is happening.
10:17
Client server, they're talking,
I'm literally coding the server.
10:20
And then I'm coding what's on the client.
10:23
And that just made no sense to
me until I did the project and
10:25
then until I got into it.
10:28
So don't be afraid of the skill gaps
that deter you away from a project.
10:30
I remember sitting in my college diner,
I did not even think I could do this.
10:34
I didn't think it was possible.
10:37
I remember reading the Amazon
documentation, being so intimidated.
10:38
But when you just dive into and do it, you
realize that it's just something you do.
10:41
>> Excellent advice, you can do this.
10:46
Man, you're giving me goosebumps, Ben.
10:48
Thank you for being on the show and for
10:50
providing such thoughtful and
inspiring advice.
10:51
Let Ben know what you think about his app.
10:54
And employers,
[COUGH] Ben's contact information and
10:57
GitHub profile are in the notes.
10:59
You might wanna nab him
quick cuz he's going places.
11:01
Wasn't that awesome?
11:04
We'd love to have you on the show, too.
11:06
Check the teacher's notes with
how to submit your project.
11:07
Thanks for watching the Treehouse Show.
11:14
Reach out to me on Twitter or
email us at show@teamtreehouse.com.
11:16
I'm gonna go ahead and
let Ben close this one out, hit it, Ben.
11:18
>> At Team Treehouse,
11:23
what you guys are doing is amazing.
11:24
I've been a student since I was a kid,
or four years ago.
11:25
I remember taking Android
with Ben Jacobin.
11:29
I don't know if this will be in the show,
but I'd say this anyway.
11:31
What Ryan Carson,
what you're doing is amazing.
11:34
Literally, Team Treehouse is the future,
just bringing education to everyone.
11:40
In my object-oriented one class,
just boring PowerPoints, boring slides.
11:44
I see so many people come in with
bright eyes, ready to learn.
11:50
And then they end up failing
the class because it's so tough.
11:54
I love the way Team Treehouse teaches
visually versus the way certain colleges
11:58
teaches, the way my college teaches there,
at least the professor I had.
12:02
And most teach through PowerPoints,
dry, dry code.
12:07
When you're just starting,
it's so hard if you don't see it.
12:11
It took me a few months
to really grasp the job,
12:13
even with Craig's amazing courses.
12:16
And now when I look back at it,
it's like reading English.
12:19
It just didn't make sense at first, but
then later on, it becomes very good.
12:21
But yeah, so that's just the message,
just basically, don't be afraid to learn.
12:25
And just continue to work at it
every day and learn something new.
12:29
So thank you, guys, thank you so
much, everyone at Team Treehouse.
12:35
Ryan, Craig, you're awesome.
12:38
And Ben Jacobin, I took your
Android course, you're awesome.
12:40
And everyone else whose courses
I've taken, thank you so much, bye.
12:43
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up