That’s a hard question. When we started the loop, we had grand plans for working about half time, or about 20 hours a week. That’s not the way it worked out. Our year, the weather was particularly extreme: we had floods and record lows 2/3 of the way down through Alabama; we had gales in Florida; we had gales off The Atlantic coast. While we did navigate in the near floods on the Tennessee and in the Alabama rivers, we didn’t navigate in extreme winds, but everyone of the 130 people who finished the loop had to go out in weather slightly out of their comfort zone. In those conditions, it took two to safely drive, and that cut our available time almost in half. So, I wound up teaching on the loop. Then, we each got Covid twice, cutting into our work time even more. And, I lost my brother and we lost our dog while we were in Canada, so we took more time off to grieve. So, I din’t write as much as I wanted, we didn’t get much marketing done, but we stepped up the training schedule and that worked out ok.
We taught from port, and planned to get hotels or b&bs along the way, but our port connectivity was very good so we were able to teach pretty well. So, we worked about half as much as we wanted, but the energy I was able to bring to training was simply great.
It was a wonderful experience… probably the best of our lives. But it was one of the hardest thing we’ve done as a couple.
Oh, and the connectivity through something like StarLink was too power hungry, but there are some low-power alternatives. We used a device called a PepWave that stitched together a signal from two mobile providers. Great question.
And thanks for the info on PepWave. I was just thinking of the prohibitive $2500 device cost and $250 a month service cost of the marine version of Starlink – I hadn’t considered power consumption, which is a huge concern on boats.
When Bruce Tate says “I’ve written many books,” he means it. His contributions are far from ordinary; they are among the best books about programming and development particularly Elixir. Bruce has authored and co-authored some of the best programming and development books.
I want to express my heartfelt gratitude to Bruce for being an incredible tech trainer and for sharing his knowledge through these books. Your contributions are invaluable. Thank you, Bruce!
Another great spotlight, and well done Erica for asking all the right questions!
I was also going to ask about your boat trip but Margaret beat me to it! I’m glad you made it home safely and I’m sorry to hear about your brother and dog
I think Erica has asked all the questions I would have myself, but I do have another - since you also come from Ruby, what do you think are the biggest differences and similarities between it and Elixir (doesn’t just have to be technical) and the same question about Rails and Phoenix. Or if you’d prefer a non-Elixir related question, as someone who has been involve in the tech industry for a while, what do you think is the next big thing?
Great question. The canned response is that Elixir and Ruby have only syntax in common, but I ultimately don’t think that’s true. The kindness of the leadership and the friendly, comprehensive tooling (mostly command line) is tremendous in both communities, but also the idea that there is a central way to build a web application, so those opinions are unusually consolidated, both for better and worse.
They do share common syntax, and that’s important. But they also share some common language features and terminology, like sigils for one.
Mostly, they share an intangible something that makes me want to get out of bed to come to work. That’s a mix of people, and ergonomics, and tools, and a mindset that I am not sure I can fully express.
Wonderful question, though I am not sure I did it justice.
I will answer your second question in a separate post.
The next big thing is really a confluence of events that is happening right now. The emergence of AI assistants like ChatGPT is both sinister and wonderful. Sinister because it represents a great theft of IP, and represents tremendous upheaval in the industry. Wonderful because it releases programmers of tedious details, and increases the range of things we can build.
To take it further. machine learning in general is a big deal, and is only going to get bigger. Datasets like the Common Crawl and open source projects like our own Sean Moriarity/José Valim collaboration on machine learning are bringing those tools to open source creators that don’t have to have the resources of a Microsoft to succeed.
If you haven’t built a ML project before, think of the way you’re coding now as a doll. To say “sit” you tell the doll how to sit, shaping the hip and knee joints all to a 90 degree bend.
A ML project is more like a puppy. You start with a blank slate and then after dozens of training sessions, the puppy learns to probably sit. ML folks call it programming 2.0 and they’re right.
Thanks @redrapids and @Erica for the great interview. Event sourcing is a new term that I discovered and looks like the next rabbit hole I am going to find myself in.
I have a question about how you manage to get proficient in more than one language. I am a long time python user and I am comfortable enough in the language that it is the first one I reach for whenever I have a problem to solve. My question is how do you go from “Let me quickly solve it in the language / framework X that I know” to “Wander towards a possible dead-end in a language / framework Y which looks interesting but I don’t know much”?
how do you go from “Let me quickly solve it in the language / framework X that I know” to “Wander towards a possible dead-end in a language / framework Y which looks interesting but I don’t know much”?
That’s an excellent question and one I don’t have a satisfying answer for. I learn languages in two ways. One is that I play for the sake of playing. I know my readers enough that I will typically invite them along for the journey, thus “Seven Languages in Seven Weeks”. In this mode, I am looking for difficult transitions, tough mental models for me. It’s those that inevitably expand my thinking.
The second way is need. Several times in my career. I learned languages because the alternative was worse. In this case, you’re looking for a solution to a.problem.
To be clear, this road has taken me down some dead ends, and some winding mazes I haven’t quite found my way through yet. But it also led me to both Ruby (for productivity, teachability, and simplicity) and to Elixir (concurrency, scalability, better abstractions for the problems I like to solve.)
For this second path, it pays to find people you trust, and sometimes if they are solving similar problems to you, go where they go. You also have some research tools available that I didn’t. For example, functional languages are much more mature and well written. They are easier to explore for example with OTP. And you can take them on in bite sized pieces.
For example, if you want to start with type theory, you can play with Haskell. Your programs will take longer to write, but your compiler will catch more of your mistakes. You can tell ChatGPT to build a maze solver, and to explain it to you. If, on the other hand, you would rather start with something more dynamic with great tooling for event sourcing, may I suggest Elixir? You can do a little self study, and even join a class or two. I have a couple: one on Phoenix LiveView (the event sourcing part) and one on OTP (the foundations of Elixir). Remote classes make in-person training stunningly effective and affordable. But don’t completely deprive yourself of the struggle. That’s part of the process.
You are quite welcome! Believe it or not, for one hour, that book was ranked 8th on Amazon overall for one hour, between Grishman and Hawking. But it was mostly because it got slash dotted based on the title before folks knew what it was about