There's a moment in learning a new language when you start coding in it and everything seems like magic. It won't last long, but it's cool.
— Augie De Blieck Jr. (@augiedb) September 30, 2013
I deleted the Apple podcast app from my iPhone this past week.
It turned out not to be the source of the problem.
Ever since updating iTunes on my desktop machine, strange things are happening. It broke my podcasts. Every time I bring up iTunes and every time I hit the refresh button to see if there are new shows available to download, iTunes downloads the same podcast or two. Over and over and over again. This is despite the fact that I don’t subscribe to one of the podcasts anymore, and that the file already exists on the computer.
iTunes just won’t stop.
I deleted the podcasts app thinking there was some conflict between it and iTunes.
Nope, still does it.
But how, you may wonder, am I still listening to podcasts on my iPhone? It’s because I created my own podcasts app, and it’s something I’ve been using for over a year now. It’s not nearly slick enough to put up on the app store. It’s crude. But it has the functionality I need and I love using it. When my Apple Developer ID expires next year and I don’t renew it, I’m afraid I’m going to miss my own little podcast app.
I’m going to share some screen shots this week.
Somewhat related: The music playing app in iOS 7 stinks on ice for users like myself, who prefer to listen to albums and not playlists or random shuffles. I tried to cue up an album I wanted to listen to for the drive home the other night and it was too difficult. In the end, the only way I could get what I wanted was to ask Siri for it.
People make fun of Siri a lot, but she does serve a great purpose as a runaround for the deficiencies of the main visual interface.
Three quick things that bug me:
“Integral” with the emphasis on the second syllable. Maybe you can get away with this if you’re British.
“Contribute” with the emphasis on the first syllable. Again, if you’re British, I think this is OK. Everyone else sounds tongue-tied.
Two things I notice myself doing that give me the most from book learning:
Read them twice. Once you’ve read through the advanced stuff in the second half of the book, the first half makes more sense and feels more natural.
Read two books on the same topic. They’ll come from different angles, stress different techniques, and generally teach you the same thing in two different ways. If you can pick up different things from the different books, you’ll be better rounded. This happened to me most recently with the two current Elixir books (from O’Reilly and PragProg.)
Yes, this is four times the work of just reading one book once, but there you have it.
I also sometimes start a programming project on my own away from the book early. I’ll struggle through things early on, but as I’m reading the book, I’ll see more things I can use immediately and that feedback loop will help.
And, yes, type everything in by hand. Don’t copy-and-paste small code samples from the book. The exception here are the data files used for testing purposes of Rails apps or some ridiculously long CSS file that’s not what you’re really trying to learn from. But for all the code, yes. Type.
Forget practicing; just be curious or mad or sometimes both at the right things and tear them apart until satisfied.
— Gary Bernhardt (@garybernhardt) September 25, 2013
So simple: Just learn Ruby, which is a relatively simple language to get started with if you have a background in object oriented programming, or even a scripting language.
Then, learn Rails.
Testing is part of the culture, so learn RSpec. Maybe Capybara. You might get away with ignoring Cucumber these days, but not if you someday program against something that’s a couple years old.
You need to create views, so some SASS might be good.
Git for version tracking.
Maybe a little Jenkins for Continuous Integration? Nah, save that for the advanced class…
Don’t forget a little FactoryGirl and Nokogiri and your plug-in of choice for creating users and their roles (Devise, perhaps?).
Actually, I don’t even know what Nokogiri is, but I hear it coming up a lot.
Twitter Bootstrap might come in handy to make things look prettier at first.
Then you can deal with publishing your web app, so there’s Heroku and Capistrano.
And there’s someone coming up fast to explain to you why there are better alternatives for everything I just mentioned.
By the time you get through all of that, the world will change and it’ll be time to move onto the next big popular thing that it’s too late for you to catch up with.
Lather. Rinse. Repeat.
If you don’t REALLY like computers, programming will never be your thing.
If you’re looking for a handy list of relevant links to your programming interests, it turns out that a good newsletter is a handy thing. One email bomb per week with loads of information is a great thing to have. There are three I subscribe to, in particular, that always cost me a lot of time as I create bunches of tabs to read the stories linked therein:
iOS Dev Weekly from Dave Verwer gives you the week in review from the iOS development world, as you’d expect, with a touch of editorializing and a humorous final link.
Ruby Weekly from Peter Cooper does the same for the Ruby world. It’s a bit more wide-ranging, but there’s always good stories I didn’t see over the week in there, too. If nothing else, it gives me more blogs to follow when I get back to my Feedly.com account…
The Changelog Weekly from Adam Stacoviak and friends recaps the week in open source releases and news. It’s even more hit and miss for me than the previous two, but I still get some golden nuggets out of here on a weekly basis.
All are free subscriptions.
Ruby is a small DSL written in Rails for creating programs known as non-webapps.
— Ben Orenstein (@r00k) September 21, 2013
Federighi is quick to admit that any engineer tasked with such a challenge would be sure to call attention to his brilliant work. “You know, you’re going to have some big message saying ‘Scanning!’ and buzz-buzz-zzz-zzz later it says ‘Authenticated,’ blink-blink-blink, with 10 seconds of animation,” he says, as Ive starts laughing.
“Ultimately we realized all that had to disappear,” says Federighi. “If it disappears, we know we’ve done it.”
Some highlights for me:
“The Polyglot in the Code – An Elixir/Ruby Mashup” I’m a sucker for Elixir.
“Build your own Ruby-powered Arcade Machine!” Nothing that I would immediately turn around and use, but sounds like a fun dream project. That said, I AM working on a card game in Ruby just for learning’s sake. Command-line based card games are likely not commercial winners, after all. On the other hand, once I have the guts of the game working, what’s to stop me from porting it to something more visual?
“Your Development Machine in the Cloud” I want to learn more about TMUX.
“Eliminating branching, nil and attributes – let’s get weird” Sounds like a fun way to learn more about object oriented programming, which is something I’m always on the lookout for. Feels like I’m making up for lost time there.
“That’s Not Very Ruby of You” Sounds like a solid Ruby-specific presentation. I bring my Perl background to Ruby, so learning how to do things more Ruby-centric is a good idea. Breaks me of my “bad” habits.
“Recommendation Engines with Redis and Ruby” Above my paygrade, but an interesting topic.
“Beneath The Surface: Harnessing the True Power of Regular Expressions in Ruby” Hey, I’m a recovering Perl programmer. OF COURSE I’d want to see a regular expressions talk.
“How To Roll Your Own Ops Framework In Ruby (If You Really Have To)” I’ve never been an infrastructure guy, but DevOps stuff fascinates me.