As described by Patrick Wendell of Data Bricks in his Scala Days 2015 presentation.
I cannot thank you enough for your book, Atomic Scala. It is EXACTLY what I needed: a beginner’s programming book without comparisons to Java code on every other page. I was previously working on “Functional Programming in Scala” and it was too advanced for me! Though I am an experienced R user, Scala will actually be my first programming language. — Jonnie Lappen
This was my third time around the block in the process of creating an eBook; the first two times were not successes but I learned a lot in the process. Mostly that this isn’t a mature technology where you can just use some kind of lovely WYSIWYG editor, press a button and then expect to see nice results across all platforms. There are programs and services out there that do promise this, but if the book has any complexity to it — in our case, code formatting + embedded fonts — they don’t handle it very well, or at all. For our book, I had to (eventually) take an early-adopter stance and just become fairly expert at all the details of eBook production. My best friends were BeautifulSoup (a Python library for manipulating HTML), Calibre, Sigil and Amazon’s Kindlegen. (I’ve sent donations to the first three, which are open-source).
I also had to test on as many devices as possible because every device seems to have its own idiosyncrasies and unless you try each format on at least a few devices you can’t really hope that it’s going to look OK. So I’ve accumulated a Kindle 3 (Keyboard), a Nook, an Android tablet, and an iPad (the ePub version looks fantastic on the iPad!). I also tested with friends’ devices. It’s always risky in the software world to say “it’s done,” but I will say that it’s been reasonably well tested.
We decided against any kind of digital rights management (DRM) — that makes it painful to install and also to put it on multiple devices.
I created the eBook in 4 formats, to try to make sure that everyone has as many choices as possible. The zip file you get when you buy includes all of them:
- PDF with index for easy navigation
- ePub which works on non-Kindle devices and in Apple iBooks
- mobi for all Kindle devices including and after the Kindle 3 (Keyboard); also works on Android and other devices which support the Kindle reader software.
The package includes a README.txt which includes installation instructions.
I’m using Gumroad.com for sales and delivery, and they have an automatic system to push updates to customers, so if we do find errors or need to make changes, you’ll get the updates seamlessly.
I’ve also come up with what I think is a good solution for showing corrections and updates to the book (page numbering is not a fixed quantity with ebooks).
Bruce and I are both at OSCON, in Portland, this week. This offers us a rare opportunity to work together in person, and that’s always fun (and productive).
We presented a half-day tutorial, Introduction to Scala, from Atomic Scala yesterday. We were surprised that we had a repeat tutorial attendee (hi John!) who had previously joined us at the CodeMash tutorial last January. We got up to the Class Exercises in the book, and we hope that attendees will continue independently. If you attended, we would love your feedback.
I’ll be speaking tomorrow, “Sneaking Scala through the Back Door” and Bruce has 2 talks on Thursday, “Rethinking Errors: Lessons from Scala and Go” and “Reinventing Business”. Both of us will be participating in OSCON Office Hours, which give attendees an opportunity to come talk to us. If you’re at OSCON, we would love to talk to you! We even have a few copies of the book with us!
If you aren’t at OSCON, consider attending the Scala Summit in Crested Butte August 19-21.
This is the first iteration of an event we hope to evolve into something like The Java Posse Roundup, but with hiking and mountain biking instead of snow activities. We already have an impressive list of name-brand attendees.
We’re starting simply, with a 3-day open-spaces conference (visit the conference page to find out details about open spaces) but if you come early and/or stay late there will probably be others doing the same.
Outdoor activities will happen in the morning because of the summer weather patterns (we often have clear morning and thunderstorms in the afternoon). Although many will choose to hike or mountain bike, our friend Joe goes with a group of 4-wheelers on Mondays and we can set you up with that if you’re interested. There’s also fly fishing, rafting, or just wandering about looking at scenery.
Don’t be fooled into thinking that technical things only happen in the afternoon — some of the most insightful conversations happen during the outdoor activities. Also, at the Roundup people often create their own workshops during the outdoor activity times.
This looks like it’s going to be a great event. Go here to sign up and see some of the folks that are attending.
Although international shipping costs have gone up recently, we’ve gotten requests and so we’ve set up the form on the order page (it’s the bottom link on the page).
We wrote Atomic Scala to appeal to beginning programmers as well as experienced programmers who have been frustrated with the sharp learning curve often described when learning Scala. In the atom “How to Use This Book”, we encourage experienced programmers to move through the material more quickly by skipping to the summaries (Summary 1 and Summary 2). Those summaries also help beginners by reinforcing the information that we previously presented in detailed atoms and with additional exercises.
If you previously downloaded the free sample, go ahead and grab another copy. The first 100 pages of the book (free download) has now been updated, and includes the Programmer Fast Track for the first several atoms (Summary 1) that I described above. Summary 2 is not in the first 100 pages, but I think you will have enough information to see if this approach works for you. The print book is now available to order, if you’re interested, but try the download first so that you’ll see if this is a book that appeals to you before you buy it. Also, if you would prefer the Kindle version, we’re working on it, and we are planning for that to become available in 1-2 months.
Let us know what you think!
We’ve just gotten the first 250 copies of the print book, and finalized the order form. You can now order books here.
It takes a couple of weeks to get a new order so if you’re in a hurry, put your order in now. We’ll post if we’re getting close to running out, and if you place an order in the interim before receiving books, your request will be processed in the order received when they arrive.
A few weeks ago, an interesting blog post appeared, written by Graham Lea. He posited that there was a new library available for Java programmers and that the thought that folks should check it out. He went on to describe some compelling features, such as:
- Improved Collections
- Less boilerplate
- Extensive pattern matching
- Automatic property mechanisms
- Integrates with your existing code
- And more (read the article)
And then he exposes that he’s talking about Scala. Brilliant! I love it because he addresses concerns that we often hear in the Java community like, “My programmers don’t know it” and “The code will look different” and “Finding enough programmers that know it”, but compares these challenges to those encountered when adopting a new framework (which folks seem to accept).
It’s worth a read and worth your consideration. We may be preaching to the converted here (you *are* reading the Atomic Scala blog, after all), but maybe you’re trying to figure out how to get Scala accepted as one of your “approved languages” or how to talk about using Scala with other team members. Let us know what you think! And definitely let Graham know too!
Atomic Scala is now “in production,” which means we’re building the index and finalizing the cover and making editing passes and creating other support elements so we can actually go to press in a month or so. We’ll stay with print-on-demand for the time being because we’re still learning things and want the freedom to make improvements. This book is also an attempt to adjust to the way that people actually learn and to make that learning experience better — this makes it more of a continuous experiment. For example, a few weeks ago my coauthor and I gave a one-day tutorial at a conference, and we came away realizing that experienced programmers needed a couple of summary chapters that they could jump to; this way the book can serve both beginning programmers and experienced programmers. So we came back and wrote those, and now the book is better. We expect this experience will be repeated as we gain more information about how people learn from the book.