-
I never quite accomplish what I wish to. There is a long list of stuff in my head that I can never seem to get out. I know this doesn't make me unique in any way, but so much of my identity is tied up in the belief that I have a lot to offer the world, and I just need to get it out, so it's frustrating to constantly hit the wall.
A core problem seems to hit when I regress. I start down what should be a productive train of thought, and find myself thinking about bigger and bigger ideas, or at least more and more abstract ones, until I get to a point that I'm trying to solve all the problems of the world at once.
People don't really care about big ideas if they can't see a solution. The same reaction I give students when they tell me they know the material, but they just can't solve the exercises, is what others rightfully give me. In the meantime, I recognize that doing is more important to me than thinking, at least from an emotional perspective, but I also find myself questioning the merit of the things I do when I simply act. When actions don't fit into a larger context, they don't seem to make me better or lead to anything. This is how I believe people waste their lives.
-
When students have to make a time/effort tradeoff when swamped with work, not all the work that the professor desires students to complete will be done. Students are still capable of achieving high marks in the absence of 100% commitment, which indicates that there's a disconnect between the work assigned and the demands of a given quantum of instruction.
Matching these would be a challenge, but consider this:
- Instructors identify the highest-level skills that students who are successful in the class should possess
- Instructors make a hierarchy of skills that students would have to progress through in order to develop and demonstrate skills, and connect them together
- Students are given high-level skills to practice, and if they can't manage them, are given easier and more fundamental skills until they are making progress at their experience level
-
To begin, it helps to understand that things get under my skin easily. I was running Word 2004 on a recent Intel Mac, and spent two hours toggling options and configuring my environment to try to get rid of a 50 ms lag in characters appearing on screen. (I never was able to, and ended up using Word 2010 on a PC to do that piece of work.) I argued with a guy for three hours about the use of a particular piece of iconography and the role of consistency in UI design, because a visual confusion was causing me thirty seconds of inconvenience per day.
So basically, I'm an asshole (to many of you) or particular ("OCD") about a couple things, which can be roughly boiled down to "responsiveness" and "flow". I'll upgrade my phone to reduce typing lag, I won't use a device that's too old if fast tasks aren't fast—app switching, typing, mouse input—and I hate chrome, animation, and interfaces that reduce application interaction speed. This leads into flow: if a button isn't clear after using it five times, or I mis-hit a menu because my understanding of an app is different from the designers' intent, I get increasingly frustrated. Adobe Reader using the Windows XP file dialog for saving/opening files (as opposed to the Windows 7 version) is one of my pet peeves. Thus, the main reason I prefer OS X is that there are so few exceptions: Apple's "update or get left behind" dictum to software developers is, in my mind, a virtue, because when everything is up-to-date everything behaves predictably and I can flow more easily.
-
"Never dine alone." There's a purpose to this: if you're dining, you should seek to share food with someone whose social bonds and career trajectory might benefit you down the road, or with someone you could mentor in some way. In all aspects, you should seek to dine (that is, eat out) with people who can enrich your life, and who can benefit from or provide benefit to you through the social bonds created by the ancient rites of breaking bread together.
Jesus said:
"You are the light of the world. A city set on a hill cannot be hidden; nor does anyone light a lamp and put it under a basket, but on the lampstand, and it gives light to all who are in the house. Let your light shine before men in such a way that they may see your good works, and glorify your Father who is in heaven."
Genius works the same way. Somewhere in the universe is a creature of an alien species that knows the answers to the problem you're working on, but just as his knowledge does you no good in your life, knowledge you don't share with others does them no good in their lives. People work better in messy offices, where ideas can cross-pollinate and you can (hopefully) find someone who speaks a dialect of the language of your problem, and skip out on a lot of the infrastructure that would accompany writing.
In general, a good intellectual peer allows you to do what I've heard referred to as "skip talk": you skip a lot of words and ideas because your companion indicates, using non-verbal and sub-verbal cues that they see where you're going because they've already been there. So you quickly get to the meat of the discussion, and gain a lot of ground there because that person can help you recognize which ideas are worth pursuing.
Once you create something, though, you should polish it to a point that someone who doesn't know you and doesn't necessarily like you can understand it. This is the work that happens alone, for the most part, and that which most resembles "work". The endless polishing, cleaning up of ambiguities, and presentation of data in an understandable format for all to see takes a lot of time, but this is where true genius lives.
-
Well, we officially don't have to blog, do progress reports, or (presumably) even show up at 9 am anymore.<
Just try to stop me.
Interesting thing of the day: the new class arrived. Did we look so adorable and naive on our first day? It really does feel like basic in a lot of ways, again notably in the way that a person (or group) can so markedly change in a few short weeks. It feels like forever ago that I was writing nonsense ruby code, like everything is a
for
loop! Huzzah!, and now I get mildly angry every time I have to write afor
loop in JS.Another interesting thing I noticed today: I just don't give a damn about reddit. It's been a while now that I haven't found it so interesting, but today there was absolutely. nothing. I cared about. I guess I've transitioned, and it's now time to start reading HN regularly?
There's so many things I could be doing now that it can be hard to know where to start. I've been doing meta-work: getting my hosting set up (it turns out Dreamhost has a lot of the same restrictions as Heroku, viz. spinning down server instances if they haven't been accessed in a while, so I guess I will have to get a pingdom account regardless), getting some documents together, etc. Planning is a big thing; I think I'm going to have to live by a routine over the next three weeks+, moreso than even before, which means identifying overarching tasks that deserve attention and then tending to them at regimented times.
One thing that was made abundantly clear last week is that I can't keep not working out. I have the damn bike setup right here! But… I have no motivation to deal with it in the morning, and that's no excuse at all, especially with a) how much my back hurts by the end of the evening and b) how bad for your health sitting, in any shape, is supposed to be.
A fun part of today: I pulled my resume from dropbox, then rendered it in HTML + CSS, and explored a lot of sub-topics that had tickled my fancy during this course that I hadn't yet had time to look into. I have a whole list of things that I've learned, and a whole list of things that I could spend time learning (
pandoc
anyone?), but what I learned today is that flexible styling knocks the pants off document-based styling, as in Word or InDesign. I'm sure they have their strengths, but when all you have is JavaScript, every problem looks like it calls for selectors.One funny though from today: there are so many different file formats for presenting structured text. I wonder if it would be possible to extract a universal grammar for them all.
Tonight calls for more meta-planning; I am going to try to slice my day up into hour-long chunks and see about tending to many things each day. We're supposed to have applied to jobs by next Monday, preferably earlier, and I know I have my work cut out for me.
-
Well, not much to say… Today was presentation day, and I spent most of the day bug chasing, trying to get core features to work the way they needed to work and not the broken ways they had been. I feel like Javascript has more instances of dodgy edge behavior than any other language that I've worked in…
Afterward, my peers and I spent a good amount of time talking about previous classes' projects. We thought, two weeks ago, that other people's projects weren't very good, but we came out today understanding just how hard it is to produce production-quality code in a short time period.
I pretty much faceplanted on the presentation portion of the day. I want to go back to this project, to finish it up, but I know it can take as much time as I'm willing to give it over the next three weeks, or I can find other projects to also work on… time management will become even more important over this last period. Thankfully, we don't have to go in until 10:30 Monday, and this weekend will be a much appreciated break from the slog that was the project week(s), but … what will my portfolio look like? The pace doesn't ever end. What next? I have a book on Objective C, and an Arduino kit here, and I know that my portfolio might be able to say a lot about me, but what do I want it to say.
Back to work Monday.
-
$('body').removeClass('more-drake')
-
Spent most of the day today trying to make up for lost time, which doesn't really work but most of the day I had that level of speed. I left the office at 11:00 last night and midnight tonight, and got in a half-hour late this morning because there just isn't enough time.
A benefit to overthinking everything and going down blind alleys is that my bug-hunting skills are only getting better. After three productive hours prior to lunch doing… I barely remember, but something… I tried doing something a bit too clever (having to do with separation of concerns again), and didn't come up for air until after 6. From 6 to midnight I was plenty productive, but messing up like that still stings.
In brief: I monkey-patched the Backbone Router prototype to offer callbacks before and after routing, and then tried using those hooks to grab a user who wasn't logged in and redirect them to the login page (while preserving state). Once again, on my way home, I think I understand what I was doing wrong, and can see how to fix it, but I ended up ripping most of that code out and leaving it basically exactly how we were taught in the auth demo.
I still don't like having a
currentUser
global, but for my app it's not a terrible idea, since you need to have some purpose coming to a blackboard-like site. It's not like your typical modern website, where there's generally some functionality that's meaningful even without an account, so… whatever.Oh, so I remember now—one of the fastest ways to make me hate your website or app is to have data entry be painful. So I spent three hours making syllabus creation absolutely beautiful, modulo a couple tweaks, and ran into a bug that I couldn't figure out even with Tommy's help. Basically, I had the event creation success callback call a JQuery
focus()
event on the first field in the form, and it kept losing focus after render. So I said to hell with it, and installed asetTimeout
call that waits 50ms then focuses back on the first field. Hacky, but resilient.No matter what I do, more of these sorts of hacks creep into my codebase. But then I see things like when iOS autocompletes a word, then you press punctuation, it backspaces and writes the punctuation and a space instead of just inserting it at the previous position.
I can't decide if this says more about the UX rot of iOS or the inevitability of hacky solutions.
Tomorrow we're presenting again and I think I'm going to bum rush the core features, no matter how they look, rather than polish anything. I have a
TODO.md
full of broken things, but that's just going to be the nature of the beast.Wanna know what kind of day it's been? I just remembered that I didn't eat my breakfast. I packed it in my bag 16 hours ago.
-
… about everyone having a slow day is that you can commiserate.
I spent a while this morning moving items out of my
TODO
list and into Trello—might as well use it for something now that I have an account. I found that trying to read to-dos off of a serial text file is next to impossible, and until I can afford a more full-featured project management app, it should do the trick. (Why is OmniFocus so expensive?)From there I went down a rabbit hole of other people's code, doing a lot of thinking about separation of concerns and where and how views should interact, and how routers play into all that. The good thing is many people have asked themselves similar questions before; the bad news is that so many people have thought about it that there's no one good answer for how to address it, and Backbone is agnostic about the whole mess.
That was most of my day. I did read a lot of code and learned more and more about how Backbone actually works under the hood (as well as playing with a number of neat Underscore functions) but at the end of the day what I have to show for it is clickable column headers that update the sort order of their associated table, and some utility code … not so much output.
I'm already thinking about what I want to and need to do tomorrow, and prioritizing various tasks based on the knowledge that we'll probably have a 1-hour lecture at some point and that we have to present again on Friday… It's going to be close. Hopefully I'll have some "wow" by then.
-
Today was the .css assessment, and after working late (and falling asleep while working a few times) and doing the practice twice, then studying the solutions last night and this morning, I kicked ass.
To summarize: good design often has a logic, and good instructors are consistent, almost without fail. If there are exceptions, they are for a good reason - your instructor is working at the forefront of the field and the rules aren't established, the design language you're working with has some foibles that you have to work around.
In our case, I've managed to pick up on and benefit from the design habits of our CSS specialist, Jonathan, and have slowly been trying to incorporate them into my own design language. For instance, set consistent (and generous) margins/padding, keep visual space symmetrical, tend to favor making item borders on the inside and container borders on the outside, … and so forth. I haven't built all of this into my site yet—it still looks like baby's first webpage, although thankfully not as 90s as all that—but there are a lot of things coming together very quickly.
Case in point: investing in figuring out backbone means that I've basically added three full collections, three full models, and half a dozen views to my app today alone. I also added two utility … packages? files? to my app that enable some neat stuff, one that makes my life easier, and another that enables a pretty cool "live search" feature to the website.
Yeah, it's all pretty silly overall—I'm reinventing the wheel—but I know why and how I'm reinventing the wheel here, which is okay by me.
There's very little of what I'm doing that is really challenging now, which is okay after the weekend. To use a workout metaphor, this is my plateau, where I'm consolidating gains before looking for more of a training effect. Again, I'm okay with that.
Meanwhile, I'm able to explain to a lot of people what their code is doing wrong, or able to sort through arbitrary code and understand it pretty idiomatically; I'm much more confident with
git
and amalias
ing my most common commands regularly, and can find my way around Atom like nothing.Wow, they have taught us something. :P