I've learned over the course of my life to not hold my plans too tightly. I make them, of course, but I rarely expect them to actually survive very long. I've found that it's better to adapt to new opportunities and roll with them, rather than stick to the plan just for the sake of sticking to the plan.
So, I'm shutting down the Weekly Website Project. Yeah, it's 12 weeks earlier than I planned. It's been great. I've learned a ton. But I've outgrown it, and better opportunities are sitting out there, just waiting to be seized. Here's what I mean.
I'm tired of starting a brand new project from scratch every week, get invested in it and build some momentum, only to have to quickly wrap it up before I'm really done with it because I have a hard deadline on Saturday.
I'd rather spend more time on a project, really developing it and making something genuinely valuable.
I've been having a great time building a new site for 2Chez, a local restaurant, and that project is drawing to an end. I've learned a lot about design, UI/UX, and how to work with someone else and use Github collaboratively. I actually have a backlog of real, live client work (websites for an insurance agency, a hair salon, and possibly a doctor's office), and I realized that it's kind of dumb to put that kind of work off just so I can build mostly meaningless websites that I can finish in a week's time.
I'll still be coding just as much, if not more, than before. I'm just getting rid of my weekly deadline. Hope you keep following along with me!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
What remains is mostly styling, adding photos (from a photo shoot that will take place next Thursday), and building in some navigation and a few more admin features.
When I started working on a new website for 2Chez (the fine establishment at which I work), my ideas were very small. They've grown, and the product that I'll deploy in (hopefully) another week is going to be so much better than I could have imagined three weeks ago. I'm pumped.
You can visit the site in it's current (unfinished) state here. I threw a signup and login button up at the top of the site, so feel free to sign in and mess around with the menu. Better yet, do all that on your phone, because it works really well on a mobile screen.
I'm not even halfway through my Weekly Website project, and I'm really proud of how my code is becoming clearer, cleaner, and more powerful with each new project. I'm to the point with my skills that I feel confident enough in what I can do that I could start building websites for people and businesses and charge them for it.
(I'm not going to start charging yet, though...I've decided that I'll work for free until after Dev Bootcamp--so if you want a shiny new website, talk to me sooner rather than later!)
For the past three weeks now, I've been working with a friend on a new website for a local restaurant. It's my first actual client work. It's been challenging, educational, fun...and time-consuming.
Not wanting to stray from my Weekly Website project, not wanting slow down on the restaurant site, and not wanting to quit my job for extra time and put my family on the street, I realized that something had to give. I needed a project that would be valuable to me but wouldn't take a ton of time.
That's why I decided to work through Michael Hartl's Rails Tutorial again.
I worked through this book once before, last fall. It was my first taste of development, and I didn't really understand much of what was going on. I think the only concept I fully understood after the first time through was using .erb templates with a layout.
Working through the tutorial a second time, I learned a lot more:
- After working with mostly Sinatra, Rails seems like cheating. So much stuff happens automagically. I'm wary of getting sucked into Rails before I really understand what it's doing, first.
- I finally became comfortable with using and setting up a postgrsql database.
- TDD is also making a lot more sense. I need to start doing that.
That's it for now. I'll have another post up for this week shortly.
When I started this project, I committed to blogging consistently posting all of my code on Github in the hope that eventually somebody out there might take notice of what I'm doing and give me some constructive feedback on my websites. Learning from tutorials and reading the internet is fine, but doesn't hold a candle to actually learning from a person who knows what they're doing.
I looked back at my first weekly websites (especially week 1 and week 3), and I laugh at how proud I was of them at the time, and how unproud of them I am now. Take a look, feel free to chuckle (if you really want to laugh, look at them on your phone!). It's like the pictures you used to color for Grandma when you were 3; you thought they were great, she put them on her fridge, but really they just looked like someone dropped a box of crayons on a piece of paper and then stepped on them.
Nine weeks ago, I was 3 years old in web-developer years. Now I am, what, maybe 10, so I decided that it's time for my home page to get a facelift. Here it is. So much better.
A few things I've learned this week:
- I don't know why it took me this long to start using Bootstrap. It's amazing.
- From here on out, I'm going to design mobile-first. Doesn't make sense not to.
- I didn't know about Google fonts. Dave showed me those. They are also amazing, especially to someone who's used to working with about 3 decent font options so far.
- Speaking of Google fonts, I learned that there are a whole slew of Christian fonts on there. I can't decide which is tackier, the names (Covered By His Grace, Waiting For Sunrise, etc.) or the fonts themselves (they all seem to be somewhat inspired by Comic Sans). I bet God doesn't even like them.
I don't know what I'm going to build this week. Maybe today will help me decide, though. This evening I'm hopping a train to Chicago to hear JB Pritzker talk about the tech startup scene in Chicago at 1871, which sounds like a pretty awesome place. Should be interesting.
Wednesday
My head is imploding. I got absolutely nothing done today on my website, but that's ok because Monday and Tuesday I also got nothing done.
So I'm being consistent.
Monday night was cool. It's exciting to hear about the growing tech community in Chicago, because that where I really, really hope to end up after Dev Bootcamp. 1871 seemed awesome, made even more so by its proximity to DBC. It seems like I'm getting into this field not a moment too soon, what with the rapid growth of the tech industry in the city. It blows my mind to think that 8 months ago, I would have heard a talk about startups and thought, "That's super-cool, but I could never actually be a part of that because I'm not a computer person."
Anyway, that little corner of Chicago (around Hubbard and Orleans) is quickly becoming my favorite, with Hashrocket, DBC, 1871, Trunk Club, and J.P. Graziano Grocery all within close walking distance.
Thursday
FINALLY decided what to build this week. Travel and the feeling of Thor's hammer beating my skull from the inside all day yesterday prevented me from really getting a start on this week's site until today.
I've wanted to do this for a while now. I'm taking on my first actual client work--building a website for a local restaurant (can't say which one, yet)! It's fun to make something that will actually be used, and will have an impact on a real business.
I'll be returning to Sinatra for this project, and using Bootstrap for the first time. I've toyed with Bootstrap before, but never really used it properly, and it seems really fantastic, so I decided I should learn my way around it.
Goals for this site are:
- Make an effective website that gives visitors all the information they need, in a way that attracts them to the restaurant.
- Use Bootstrap.
- Create an admin page that is easy to use and allows someone with no coding ability to update menu items and post announcements.
- Use mobile-first design.
Saturday
So, I've made a ton of progress, and I have a preliminary version of the site finished. Well, it only consists of a home page and a contact page, but it looks great and works on any size screen.
Unfortunately, I can't show you yet. You just have to take my word for it. Here's why:
I'm building this for a local restaurant that is sorely--no, desperately--in need of a new website. If you know me, you can probably guess what restaurant I'm talking about.
I work there.
But I have not sat down with the owner--my boss--and really talked about this yet. He's busy, and if I wait for him to tell me what he wants, it will never happen. So I'm building a site that I can take to him and say, "hey, for free, you can have this new, pretty, functional, modify-able, mobile-optimized site. It's ready to go, today. It's hip and it's coolio and all the young people will see it and want to come eat here."
Since, however, he hasn't seen it yet, I don't want to publicize the work-in-progress. So I'm sort of breaking my rule of releasing a new website every week, but I'm ok with it because I've built a lot, and it's a big project, and there are factors outside my control affecting its release date.
I'll put what I've done so far on github, so you can check it out there if A) you know what github is and B) you care.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
I have seen quite a few mentions of Node.js on the handful of Dev Bootcamp students' tumblr accounts that I follow, so I know I'll encounter it this summer. In the spirit of being as prepared as I possibly can be, I thought I should take a stab at Node this week.
I started off by reading a tutorial book (although book is a generous term...really more of a large pamphlet) to get a rough overview of Node. Then I worked through the Code School Node.js course.
Then I still did not understand Node.
I found another tutorial. Read two more articles. Still confused.
Ruby makes sense to me. I'm comfortable with it. I like Rails and Sinatra. But when it comes to Javascript, I'm a lot less comfortable. When it comes to asynchronous Node, I just could not get a handle on what exactly the code was doing.
All I wanted to do was create a simple app with Node that uses sockets.io to update my site in real time, but by Friday morning I was still getting nowhere, and starting to despair of having anything ready to publish by Saturday.
Then I got called in to work unexpectedly, and had to forfeit the rest of my day of coding. I picked up where I left off when I got home at 10:30, but by midnight on Friday I still couldn't figure out how to modify my page in real time.
At 1am, Saturday morning, I moved a block of code up a few lines, and boom went the dynamite. I tweeted my exhilaration and went to bed.
Later on Saturday morning, I finished off this very simple chat app. It is terrible, as far as chatrooms go. There are no usernames, no persisting messages, and a bland color scheme. There's obviously no user authentication, because there are no usernames. Oh, and there's no way to tell if anyone else is online when you visit the room.
But it works. It is an actual chatroom, albeit the very worst one you could hope to find. I'll come back to it and flesh it out a little more later.
So, all in all, it was a frustrating week followed by a great Saturday. I'm just glad I fought through that learning curve now, instead of having to deal with it for the first time at Dev Bootcamp.
Last week I made a rudimentary Sinatra app. I followed a tutorial and then played around with the tutorial app, changed some things, added some features, and pushed it to heroku.
It was a start, but it left me wanting to tackle Sinatra again, this time building from scratch and incorporating a few new features, like data model relationships and user authentication.
So here it is: MovieList! It's an app for keeping track of movies that you want to watch. I suppose you could accomplish the same thing with a pencil and piece of paper, but let's be honest, it's way more fun to make lists online than on paper, right?
So this week I learned:
Getting Warden to play nice with Sinatra is apparently too hard for me. I spent all of Thursday fighting with it, to no avail.
Fortunately, I was able to build a simple user authentication system from scratch. I'm sure it's not super secure by any means, but it's functional, and security is not very important on this app (since it requires no personal information from users).
Sinatra is really nice to work with. I'm a big fan.
Datamapper is pretty great too.
The advice I received to find other websites that I like, then copy their design, was great advice. It's so much quicker than coming up with my own design for each and every site. As a tip of my hat to the platform I used all week, I styled MovieList after Sinatra.rb, which is a pretty fantastic-looking site in its own right.
This was a big week for me, because this week I built my first web app, not just some lousy website that doesn't have a database!
By the way, I like databases. I love mapping data, sorting it, displaying it in interesting ways, tracking information, statistics, and on and on.
Also, I really like college basketball, especially when my Illini are involved. So, this week, I decided to marry these two interests of mine. They had a baby, and it is named the Predictomatic 3000.
The Predictomatic 3000 is a very simple app that allows people to visit the site, make a prediction about where top basketball recruits will play in college, and then view all the votes. Predictions can then be easily sorted by user or by recruit.
That's all.
I used Sinatra, which is a DSL that I've been curious about ever since I read about it in other Dev Bootcamp students' blogs. Honestly, I was a little scared of it--which is why I decided I needed to tackle a Sinatra app of my own sooner rather than later.
So, this week I learned a lot--including, but not limited to:
I spent 7 hours figuring out how to make my Sinatra app deploy correctly. 7 frustrating hours. This is why I'm so looking forward to learning at Dev Bootcamp where I'll have people right there who can help me solve problems a lot faster, and I can spend more time building and less time wandering around the internet, blindly trying to figure out the answer to my problem.
I think I need to learn more about databases. Maybe take a class or something. I know that I have only scratched the surface of learning how to use them effectively.
I left a lot of ideas un-built, because of time constraints. I want to take another crack at building a Sinatra app, with cleaner code and more features (such as unique users and authentications). Maybe I'll do that next week. Or a different week. We'll see.
I really don't understand the params hash, but I'm starting to. A little bit.
I learned that you can't use Javascript to insert embedded Ruby, because the Ruby gets interpreted first. Inserting it with .innerHTML just prints the embedded Ruby code into your site, which looks dumb.
Using PostgreSQL is tricky. For me, at least at this point, it's like handling dynamite. It's very useful, but bump it wrong and it will blow off your head.
All in all, it was a long week, but I'm happy with the progress I made and excited to start a new project tomorrow.