I did a lot of web programming before I had enough knowledge to dig in and figure this stuff out.
I knew that other developers had a better grasp on the full stack than I did, but diving deep under the hood is one of the things that really made me a better developer all around.
I recently read a great thread that asked "What did the really successful programmers do differently?". This response really caught my eye:
Be ready, willing, & able to deep dive multiple levels at any time. You must know what's going on under the hood. There is a strong correlation between "number of levels of deepness understood" and "programming prowess".
In this book I'll teach you these fundamentals using Ruby. I'll start with the fundamentals that are portable to any environment. Then I'll show you the beautiful abstractions that Ruby has layered on top of them.
Learning this stuff doesn't just apply to Ruby, or any other language. Every modern programming language has support for networking. Every language has their own way of doing things. But all modern languages support the Berkeley Sockets API. Ruby is no exception. There's certainly plenty of syntactic sugar, but below the sugar you can use the same Sockets API that you would in C, Java, Python, whatever. This is portable knowledge that will serve you for many years to come.
Finished @jstorimer's Working with TCP Sockets.I've been doing Ruby networking for years and I still learned a bunch.
— Mike Perham (@mperham) September 15, 2012
Ruby devs, you should really keep an eye on Working with TCP sockets by @jstorimer . Learned so much. workingwithtcpsockets.com
— chatgris (@chatgri) September 11, 2012
Great book for anyone working with or interested in TCP Sockets. workingwithtcpsockets.com by @jstorimer
— Brad Adams (@cajuncanuck) November 8, 2012
Really enjoying @jstorimer's Working With TCP Sockets. Having those little smiley moments like I did when first learning programming.
— Trevor Bramble (@TrevorBramble) September 9, 2012
@jstorimer 30 pages in. Loving it! I'm learning so many awesome things already.
— Ryan LeCompte (@ryanlecompte) September 6, 2012
@jstorimer Had to put down #WorkingWithTCPSockets for a second to congratulate you on the launch, but can't wait to keep reading :)
— Tom Kurth (@othertom) October 24, 2012
The first section of the book is all about learning the fundamentals of programming with sockets. This includes creating sockets, the client and server lifecycle, and reading/writing data.
The second section of the book covers the harder stuff. This includes various methods for optimizing socket operations, the proper way to do socket timeouts in Ruby, SSL sockets, multiplexing connections, and more.
The last section applies this knowledge to a real world problem by writing an FTP server. In this section of the book I take a simple, sequential FTP server and rewrite it 6 times using different architecture patterns to demonstrate networking concurrency in Ruby and ways to organize your socket code. You'll see these same patterns in libraries like Puma, Unicorn, Thin, and EventMachine.
Details:
Follow along with me as I write a pure-Ruby evented IO system, similar to EventMachine. We literally start with nothing and end up with something that we use to build echo servers, a redis client, and an HTTP server. In the course of the video you'll see lots of examples of stuff that's covered in the book: connection multiplexing, nonblocking IO, message framing, and more.
Details:.mov files
Keep what you learn close at hand with the cheat sheet. It's a great recap of what's covered in the book. It comes as a single-page PDF and is print-friendly.
Get it for the whole team! The team license is good for 50 licenses so your whole team can take advantage.
Ebook
Cheat Sheet
Video
Team License
Ebook
Cheat Sheet
Video
Ebook
If it's not working for you then it's not working for me.
If, for any reason, you're not happy with what you get just send me an email: I'll give you your money back and you keep everything. I want you to be happy.
I'm Jesse Storimer.
For the past 4 years I've been solving hard problems at Shopify, one of the largest, busiest Ruby on Rails sites on the web.
My journey into the world of Unix programming started while working on Shopify's infrastructure and continues today. I live near Kemptville, Canada with my wife and daughter.
And, yes, I'm working on my Unix beard.
Questions? Email me at jesse@jstorimer.com.