Linux for Brand New Beginners

At Grace Hopper last week, I was approached by an enthusiastic woman who was a high achiever in her STEM discipline, but was taking a two year interlude to major in computer science. She knew Windows and Mac but felt that, in order to truly understand programming and operating systems, she should understand Linux. She asked me for some resources to get started understanding and using it. Having been an Linux user for some time, I take my knowledge for granted, and I have no idea where most of it came from. I promised her that once the excitement from the conference was over, I’d create a list of some resources and post it here.

Overview: http://www.linux.com/learn/tutorials/784060-the-complete-beginners-guide-to-linux

File system layout: https://www.digitalocean.com/community/tutorials/how-to-understand-the-filesystem-layout-in-a-linux-vps

File permissions and attributes: https://wiki.archlinux.org/index.php/File_permissions_and_attributes

Processes: https://www.digitalocean.com/community/tutorials/how-to-use-ps-kill-and-nice-to-manage-processes-in-linux

Shell and environment variables: https://www.digitalocean.com/community/tutorials/how-to-read-and-set-environmental-and-shell-variables-on-a-linux-vps

The Unix Path: http://superuser.com/questions/517894/what-is-the-unix-path-variable-and-how-do-i-add-to-it

Signals: http://www.tutorialspoint.com/unix/unix-signals-traps.htm

File compression: https://www.digitalocean.com/community/tutorials/an-introduction-to-file-compression-tools-on-linux-servers

System log files: https://help.ubuntu.com/community/LinuxLogFiles

The boot process: http://www.linuxnix.com/2013/04/linux-booting-process-explained.html

GRUB 2 bootloader: http://www.dedoimedo.com/computers/grub-2.html

GCC and Make: https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

Desktop environments: http://www.makeuseof.com/tag/10-top-linux-desktop-environments-available/

Man pages: http://man7.org/linux/man-pages/dir_all_by_section.html
…and an explanation: http://www.linuxcommand.org/reading_man_pages.php

Linux in a Nutshell (book): http://shop.oreilly.com/product/9780596154493.do
The Linux Command Line (book): http://shop.oreilly.com/product/9781593273897.do

This list is by no means complete, even though it’s already too big for a blog post, but it should get a beginner far enough along to find the rest on her own.

Update: Good grief, how could I have missed this? The Linux Foundations’s Certification Preparation Guide is free for all to download, and is full of pointers to resources that are relevant whether one wants to pursue certification or not. The most obvious one is edX’s free Introduction to Linux course. Enjoy!

Silicon Valley Code Camp 2014

This year, I got to go to both GHC and Silicon Valley Code Camp. I fell in love with Code Camp my first time four years ago, and I was sad to have to miss it last year.

I love to volunteer, because not only do I feel proud to help make it happen, I get to spend time with the speakers and other volunteers while I eat Andy’s Bar-B-Que at the Speakers & Volunteers Dinner. The best time to volunteer, if I have the time available, is Friday afternoon because then I don’t have to miss any sessions. On Friday we fold the shirts for the speakers’ bags, and put together the attendee bags with sponsors’ literature and swag.

My Saturday sessions were:

  • Selling Basics for Startups. Since everyone is a salesperson, even if we’re just selling our skills to an interviewer or our company to a potential friend, I figured I needed this.
  • Kicking the Bukkit: Anatomy of an open source meltdown. I didn’t realize this was going to be about open source licensing, but I’m glad to have gone and cut through some of that intimidating fog. The takeaway: use choosealicense.com.
  • Cracking the Coding Interview, by Gayle Laakmann McDowell. I’ve heard this presentation before, and I own the book, but until I find my job it all bears repeating.
  • Java EE 7 development using Eclipse. I have no current plans to do any Java web programming, but I wanted to see what Eclipse looked like with something besides Android (it looks just the same).
  • Accidentally Manager – A Survival Guide for First-Time Engineering Managers by Theo Jungeblut. A wealth of common sense (but non-obvious) human sensitivity and people skills.

I could have gotten a lot more out of the day if I’d been in a better mood. On Friday evening, I wasted some time focusing on Internet ugliness even though I knew better, and I carried my resultant gloom with me until the dinner. To everyone who crossed my path and felt the burn, I apologize.

My Sunday sessions were:

  • Learn JavaScript by modeling and solving Rubik’s Cube. Some fun and solid vicarious coding, and reinforcement of my rudimentary Javascript skills.
  • Manage your life: Web-based goal, time, project, health management. I’ve been gearing up for life planning and logging for some time, although I’ve failed to fully carry it out. This is one of the best discussions of the practice that I’ve heard.
  • How to Win a Hackathon. It was at least as much about the value hackathons offer, even if you’re not in contention for the prize, and about how to get started. I’m excited about attending one now. The obvious: search Meetup.

Unfortunately, the speaker for my last Sunday session was a no-show. Still, it was a valuable weekend. I presume (good gosh, I hope!) I have a job this time next year, so I’ll have to beg for Friday off, but I know it will be worth it.