It took me about a third of a year to really saddle up to acquire the tools I need to lay pipe for a project I’ve set out to do since September 2011.
Trying to find technical co-founders for a startup being the “ideas guy” absolutely sucks. Nobody takes you seriously because everybody is an “ideas guy.” It would be difficult convincing somebody how thoroughly I’ve thought through the things that I’ve thought about and understanding a lot of startup methodology. The proper idiom to use given the circumstance that I faced was, “If you want something done, you gotta do it yourself.” I convinced myself after reading up on several stories about how people became dangerous and how fulfilling it was to learn to program and build things on their own. I mean, shoot, how hard could it be? What I’m trying to build is web-based and I already know HTML, CSS, and some JavaScript…
I was really hit with a sledge hammer. There’s no real how-to guide on how to become a self-taught programmer. People’s stories tend to leave out a lot of things. But I want to keep this post brief so I’ll list, in brief, what my background was and how I have been saddling up to begin building this web project I’ve wanted to build and test for a long time.
Before I began programming I was pretty well-versed in:
Windows (I’m a keyboard shortcut animal), and I had never used any distribution of Linux. Adobe Photoshop, Adobe Illustrator, HTML CSS, JavaScript, and a delved into PHP for what would amount to, maybe, a day-2 education from a book. ASP.net, T-SQL, and a little bit of MySQL.
This is what I forced myself to learn all at the same time in the last 5 months:
1. Setting up a Linux-box (a computer with a distribution of Linux) for a much more development-suited environment. I chose Ubuntu 11.10.
2. Learning to use the Terminal on an operating system such as Linux took a lot of Googling and finding neat commands on StackOverflow (a Q&A site for hackers/programmers/etc). This was important because almost everything starts here when it comes to development — starting servers, copying files, issuing commands and flags for commands that do various things. I hardly ever use the dash (Ubuntu’s equivalent of a Windows taskbar)
3. VIM (vi Improved): The most powerful text editor I have ever encountered (I’m speaking for myself here). It is available on virtually every single Unix system. I’ve heard older guys that have programmed for over a decade always talk about it. I’ve seen it in action from a handful of people and could never understand why somebody would EVER EVER use something so complex… until now. I started with a neat tutorial I found on Hacker News that taught me a few basic commands that I forced myself to master and gradually added to my arsenal by way of Google. Why is VIM and vi so powerful? Those who come from using Notepad++ or some basic text editor without ever using an IDE to edit text and/or code will not yet understand. The simple explanation? It’s difficult to hack when you don’t have a mouse on a laptop. If you love keyboard shortcuts like I do, that’s really all VIM is. I can grab text or strings in between brackets, quotes, etc (on a mouse you’d have to click the beginning of the string and drag it to the end and then hit ctrl + c). Those days are not long gone for me, but I don’t do that on my laptop at all. There are such powerful sequence of commands for programmers. One of my favorites? I can comment/uncomment an entire block of code with several key strokes. It’s amazing!
4. Python. I started with Learn Python the Hard Way, a free book found online by Zed A. Shaw. This got my feet wet. It’s a beautiful language and it’s strict enforcement of indentation automatically makes code readability and maintainability a priority. I hated trying to understand somebody’s HTML, so getting into something a bit more difficult, like programming, made Python an easy choice. After LPTHW, I decided to sign up for a course on Python at the City College of San Francisco, where a different version of Python was being taught, but helped me learn about what was to come. This course challenged me with real world problems and a funny professor who wasn’t always the most helpful, but really introduced me to what was possible with just a solid knowledge of Python. I purchased a book titled “Core Python Applications,” I found on Amazon that had great reviews for its previous edition. This book has been a great reference book so far and explained things in a way that I could understand, being that I did not come from a computer science background.
5. Django. Read up on a lot of material saying how great the documentation was and how easy it was to pick up. I was sold. I was ready to go and build a website over a weekend. Hah! I don’t know, but maybe I’m stupid. It didn’t work that way. I felt confident with my knowledge of Python that would make learning it quite easy. The official Django documentation only had a short tutorial on building a Poll application. I got confused really fast. I did the app twice! Other resources I came across came from Quora and StackOverflow. Many of these were fare too terse for me to pick up. I e-mailed others who I thought could provide assistance. I faced dead-end after dead-end. People weren’t really open to helping somebody they didn’t know. I knew there had to be another way. I felt like the only way I could learn Django was from somebody who would walk me through every step and tell me about why things were done a certain way. I wanted tutorials that showed me step by step on how to build popular projects that people did on the web with web frameworks such as Django. They were either dated or terse. I tried a couple of Youtube videos, too. I finally ended up purchasing an older version of a popular Django book found on Amazon. The currently release of Django is 1.4. I’m working with a GREAT 1.0 book right now. And this is where day one begins.
6. Other things I had to pick up worth mentioning: VirtualEnv (isolated Python development environments). Venv is crucial for me, because I don’t want to mix this older version of Django and all its dependencies with my system files and installs.
I’ll clean up this post another time. This post was longer than I thought, but WOW, I’ve come a long way…
Excuse me for the terrible title and reference to Nicki Minaj’s Moment for Life track. Recently, I’ve been asked by the company I work for to come up with a short seminar on how to utilize social media to help with recruitment and business referrals. To be honest? I’ve touched LinkedIn sparingly in the last two or three years. I’ve really found no use for it and have essentially brushed it aside by calling it a “sorry excuse and substitution for real world connections.” After doing some research and applying some of the things I’ve come across, I now have a very different view of it. I’m going to talk about an interesting article I came across and then discuss an interesting dynamic in the way we connect to our business acquaintance who have now become friends in the real world.
Problem: Why the heck isn’t there a notification system?
Yelp’s practically replaced the Yellow Pages for me. If I need to find a place, subsequently make a call, and get directions, it’s probably the go-to app for me, when time’s a pinch. I don’t need to beat around several apps copying and pasting addresses or numbers. The next closest thing’s gotta be Google Maps, but it doesn’t have the sheer number of reviews Yelp’s aggregated. It’s probably one of the more well-designed apps for Android.
Quick hitter today –
I wake up this morning to an inbox with an email from Facebook Deals. I used to wake up to find Groupon and LivingSocial offers in there as well, until I unsubscribed from them all.