Every so often I have friends ask me to talk to the someone who is interested in computers and programming. I’m always eager to run my mouth so I, naturally, always jump on the opportunity. But after telling the same story multiple times I figured it’d be more efficient to just write down my definitive TIPS FOR ASPIRING PROGRAMMERS here and just share this instead.
It’s never too late to start. You don’t need to decide to become a programmer early in life. A lot of people don’t even study computer science in college and just pick up programming on their own. Some people don’t even go to college, although I highly recommend college as it was a great academic and personal learning experience. I have worked with many talented people who have taken many different paths to becoming strong programmers.
Don’t get hung up on picking your first language. Lots of people are intimidated by how expansive the programming world is. You can program for micro-chips, phones, computers, servers, and even networks composed of many computers. The number of programming languages out there is also ridiculous. But don’t get bogged down by all the options you have. Just pick a language and go with it. The first language I learned was Java and I think it’s still a decent first language to learn.Read More
I recently read a post by Chris Beams on How to Write a Git Commit Message. Before I get into it, I want to emphasize that this post isn’t about hating on Chris or his advice; they’re both awesome. ♥
This post is about something I noticed in Chris' post and something I hear come up way too often in the programming world: how amazing the command-line interface (CLI) is and how everyone should be using it as exclusively as possible because it’s the best thing ever.
Towards the end of Chris' post, we are left with some helpful tips to be the best git-people that no one ever was. One tip focuses on the importance of using git on the CLI:
Learn to love the command line. Leave the IDE behind.
For as many reasons as there are git subcommands, it's wise to embrace the command line. Git is insanely powerful; IDEs are too, but each in different ways. I use an IDE every day (IntelliJ IDEA) and have used others extensively (Eclipse), but I have never seen IDE integration for git that could begin to match the ease and power of the command line (once you know it).
Certain git-related IDE functions are invaluable, like calling git rm when you delete a file, and doing the right stuff with git when you rename one. Where everything falls apart is when you start trying to commit, merge, rebase, or do sophisticated history analysis through the IDE.
When it comes to wielding the full power of git, it's command-line all the way.
You know what I think? FUCK COMMAND-LINE INTERFACE ELITISM.
Look, I use git on both the command-line and with my preferred git GUI of choice: Tower. I like to do certain things in Tower (review commits, stage individual files, write commit messages) and I like to do other things on the CLI (interactive rebases, fetches, resolving merge conflicts, pushes). It works well for me. I am comfortable and capable with my workflow, and I’m pretty fast at getting from point A to point B in the git world, even though I am not going “command-line all the way.”
For anyone getting started with git I always tell them about my own workflow. They’ll learn about how you can use both GUIs and CLI, which is more than enough to get them going. If they have any questions down the road, I’ll also already be familiar with their setup. :) I don’t feel like I’m setting them up for failure by encouraging using a GUI but rather just showing them that there are many ways to get git done. Becoming comfortable and good at anything is a process and it should be treated as such.
I think this whole “CLI or bust” attitude is really silly. Writing a blog post about it
is definitely may be even sillier…
P.S. I also can’t stand shitty commit messages so if you haven’t already, go read Chris' post now!
It’s been five years since I was last in Portugal. One thing I was excited about (besides seeing family) was eating a francesinha: the ultimate sandwich. This is a francesinha.
It looks like a sandwich on a plate covered in sauce. But it’s way more than that!
The sandwich contains all sorts of meats including steak, ham, smoked pork sausage (linguiça), fresh sausage (chipolata), and maybe some other meats depending on where you get it. It’s topped off with a ton of queijo (cheese), an ovo estrelado (fried egg), and a side of batata frita (fries). Your arteries deserve to be clogged.
The sandwich is imposing, but it’s really the molho (sauce) that makes the francesinha special. Recipes are well-kept secrets but the common ingredient in them all is cerveja (beer). It varies from place to place and the sauce is usually what people will argue about when discussing their favorite francesinha.
The sauce varies from place to place, but the entire dish is sometimes reimagined. The Portuguese no longer explore the seas. Instead, they search for culinary paradise. For example, at Mauritânia Grill in Leça de Palmeira, Porto (the hometown of the francesinha) you can get a francesinha that comes loaded with a ton of seafood like shrimp, prawns, mussels, barnacles, clams.
I’ll miss you so much francesinha. Até já (until we meet again)!
The day will be December 4th, 2015. The sadness of not knowing when Xenoblade Chronicles X is coming to North America is over. It has been replaced by both sadness and anticipation that it’s a little under half a year away.
There were a lot of exciting announcements at this year’s E3, but a release date out of the Nintendo and Monolith Soft camp is all I wanted. We even got another trailer that features those iconic Hiroyuki Sawano-esque vocals right when you have robots epically gliding over water!
My Bash profile is critical to keeping me elite on the command-line. Keeping myself elite across multiple computers is also very easy with Dropbox (or your file syncing service du jour). Then I create a very, very simple .bash_profile that looks like this:
~ cat .bash_profile source ~/Dropbox/Bash/main.sh
This grabs the contents of main.sh from a folder in my Dropbox and effectively puts it in the .bash_profile file. What does main.sh look like?
~ cat ~/Dropbox/Bash/main.sh # Git Power Up! source ~/Dropbox/Bash/git-completion.sh # Android source ~/Dropbox/Bash/android.sh # Evernote source ~/Dropbox/Bash/evernote.sh # The rest including everything and the kitchen sink...
I separate things out a little more to keep things modular and keep similar functionality together, which makes everything a little easier to both maintain and read.
I don’t update these files very often, but anytime I do, it’ll get synced automagically. The sad days of typing a new alias on a computer and seeing “command not found” are gone!
Came here looking for awesome Bash profile aliases? Check out Nate Landau’s extremely OP Bash profile for some excellent Bash profiling!
Happy Bash profiling!