Tag Archive: swift

Things Accomplished versus Distance Covered

I’m in week four of Hacker School.

It’s awesome. But I’m struggling with a dilemma: balancing the tough problem and the maximum ground.

I view Hacker School in terms of two metrics: Things Accomplished and Distance Covered.

Of course I want to accomplish some things. I have a whole list of things I want to accomplish, some while at Hacker School and some afterward.

But the whole point of doing Hacker School, for me, is to learn the maximum possible amount in the time given, so that I become a much better programmer for whatever comes next.

This means I also need to keep an eye on the Distance Covered.

It doesn’t mean I will abandon tough problems forever; but it does mean I don’t want to spend the entire 11 weeks on one problem without any guarantee that I’ll solve it in that timeframe.

Asking the Right Question

So I’m forced to balance things. The right question is not, “How long will I spend on a particular project?”

The right question for me is, “Given the rate of progress I am making, the amount of code I am writing, and the amount of learning going on, how long will I spend on a particular project at Hacker School?”

That’s why I’ve decided to set the voice recognition project aside for now and continue forward with my Hacker School plan by turning my attention to Swift for the next two weeks.

But I Love Tough Problems

I wasn’t too happy about this decision, because my experience has been that the projects and problems I delve into tenaciously and refuse to let go until I’ve figured them out always produce my greatest successes and joy. It was true with high-speed trading risk controls at my prior job. It was true with health issues that I defeated.

But those projects take years, not weeks.

I don’t have years at Hacker School. I have time to learn a lot about a lot, meet and enjoy working with great people, and build a base for tackling the really tough problems afterward.

The Nights-and-Weekends Compromise

I discovered that the voice recognition project is 100% doable — it just requires a lot of work. More work than I have time to dedicate to it at Hacker School.

So, my compromise is to make it a nights-and-weekends project, while spending my time in the Hacker School space completing my Hacker School plan.

That means Swift for the next two weeks and then a shift to JavaScript and node.js.

Meanwhile, I’ll be mulling the voice recognition project in my spare time, which is probably the best way to tackle tough problems that are at an impasse. I will figure it out. But I will also accomplish other things and cover the distance.

FacebookTwitterGoogle+Share

Day 46: I Wrote This on My iPhone and It Was OK

I started writing this post on a smartphone at lunch and finished it in my hotel room. I’m not used to typing on a smartphone, but I got tired of losing the thoughts that slip through my head while walking, eating, and people-watching.

I wonder why each person is here, in Quebec City, as they walk past — who he is, if she is on vacation or on sabbatical, if they work here or study at a university or travel, with one foot in this city and one in the next place.

I love this city. I haven’t been super-productive, choosing instead to enjoy the Summer Music Festival and my family’s company for the few days they also were here. Today was different — I read for five hours and then stepped out for lunch. Later, I’ll read and write for five more.

Low-Level Hardware-Software Interaction

I’m learning about low-level hardware-software interaction — the stuff that happens when mouse clicks and typing are translated into machine instructions that whiz between the central processing unit (CPU) and the memory and back. My vehicle for learning these things is a great Coursera course, The Hardware-Software Interface by University of Washington professors Gaetano Borriello and Luis Ceze, complemented by Zed Shaw’s Learn C the Hard Way and Bill Dudney’s All the C You Need to Know. Even though Objective-C is going away, I think it will still be a good idea to understand it and the C underlying it, so I can make maximum use of Swift alongside those tools (since I think they will coexist for a couple of years at least).

I learned Objective-C as my first programming language (and I love it, despite its to-be-deprecated status), so I’m in a bit of a weird spot. I think it’s a sweet spot: I understand enough about low-level programming to learn the guts and internals of machine language — so I’m taking that opportunity because I think it will make me a better programmer. I also understand enough about high-level programming that I’m able to comprehend Swift fairly well and expect to grasp JavaScript/node.js when I dive into it later this summer.

For now, I’m having lunch on a street in Quebec City, watching people pass by.

Goals and Productivity

On last week’s goals:

  1. I fixed the search functionality in my flashcard app. I also identified ways to improve it.
  2. I implemented swipe-up functionality. The card doesn’t disappear yet after the swipe, but I’m working on fixing that.
  3. I read part of the Swift book, but then got distracted by the Coursera Hardware-Software Interface course.

This week’s goals are:

  1. Fix the swipe-up functionality in my flashcard app so the card disappears after the swipe.
  2. Delve into low-level programming topics and struggle through what I don’t understand, including the C underlying Objective-C.
  3. Finish creating questions for my flashcard app database.

Day 22: Concentration and Its Discontents

I take work less seriously when staying with family.

This is an inconvenient truth, because I love spending time with my family and intend to do so again.

But this week, given all the time I needed, I accomplished fewer goals. I appeared to be working intensely for 12 hours a day, since I toted my computer around the house, hoping to be productive.

In reality? I worked for about 4 or 5 hours each day.

Here are the major goals I accomplished:

  • I read 275 (not 200) pages of the NASM textbook.
  • I worked on my flashcard app, making useful additions and cleaning up the user interface.

Here are the major goals I did not accomplish:

  • I did not do any work to build out my flashcard app’s back-end question database.
  • I did not read any of the Swift programming guide.

I made myself feel better about this by procrastinating productively:

I realized, somewhere between surfing Hacker News and watching House of Cards, that when I pay rent like I did last week, stakes are higher and my productivity is correspondingly higher. When I’m with relatives, not paying rent, stakes are lower and my productivity drops.

Like I said, I’ll keep spending time with family because I love them. But I need a plan to establish momentum for future visits. So here it is:

1.) Wake up. Open Xcode. Every day. (Virtual guarantee of a productive day.)
2.) Work in the office room, not on the couch.

It’s not a complicated plan. I start tomorrow.

Major goals for this coming week are:

1.) Build out my flashcard app’s back-end question database and finish the user interface.
2.) Finish last 75 pages of the NASM textbook.
3.) Read 200 pages of the Swift programming guide.

* I activated my Facebook account in March. I came late to social media and am trying to figure it out as I go.

Day 17: Back to the Grind

Back in New Jersey. It took a little while for me to adjust. Back to family, and home, and distractions. Even when distractions are good, they’re still distractions. So I need to schedule blocks of time when distractions are okay, and blocks of time when they aren’t.

Today, I carved out the after-dinner period for coding. I made  progress on my flashcard app, building on what I learned last week at AltConf and from my Thinkful mentor. I worked for a solid four hours.

A funny thing is that’s not good enough. I just typed, “I worked for a solid 12 hours,” and felt really great about it until I realized:

IT WASN’T TRUE.

I typed what I wanted the truth to be.

Tomorrow, I blocked out the entire day for working.

My major goals for this week are to: Make significant progress on my flashcard app, including entering back-end data; read at least 200 pages of the NASM book; and work through at least 200 pages of the Swift book, highlighting important points and follow-up questions.

I do have peripheral goals, but if I went into each week with all of them competing for space in my head, I’d set myself up for failure. With three major goals, I aim to accomplish all of them. And when inevitable procrastination strikes, I take it as an opportunity to tackle some peripheral goals.

I also have overarching goals, which can’t be accomplished within a week. Those are the big life things, like health and wellness, long-term career development, and purpose.

I don’t count them, because counting them is not important.

I sleep on them. I dream with them. I move toward them, step by step, goal by goal.

Day 10: AltConf Adventures as Swift Launches

I woke up in Pacific Heights around 5am, jet-lagged in my favor for once. Into a cab at 5:50, quiet streets all around, and arrived near the Moscone Center just after 6am.

Crowds queued outside Moscone West, waiting for the WWDC keynote. I was attending AltConf, a free event for developers without WWDC tickets to network, learn and have fun.

The mood at AltConf was exuberant throughout most of the two-hour keynote, turning to anticipatory dread when the crowd  realized the end of Objective-C was nigh, then overcome by relief and curiosity when Swift appeared to be a useful replacement.

I say “appeared to be” because I’m still reading the Swift iBook released by Apple today. Still absorbing, learning, and seeing a lot of work in my future to master this new language. But looking forward to understanding and then mastering it.

Food-wise, today was half disaster, half dream. I started the day with a nutrition bar and a tasty burrito, followed it with burrata mozzarella on toast, then had an organic egg crepe, organic vegetable juice, a muffin, fried polenta sticks, kale salad, almonds, a pack of organic raspberries, and half of an organic chocolate tart.

Come to think of it, I ate a lot.

Tomorrow: Less food, more code.