The End of an Era

This weekend, April 10-13, 2014, will be Notacon 11.  The last Notacon, apparently.

The first Notacon I attended was Notacon 2. I was less than impressed, as it seemed like the most poorly organized event that I had ever gone to. I didn’t realize it at the time, but this was because the event was not put together by professional event planners, but by a bunch of geeks who were no older than me, who didn’t see any reason why they couldn’t do something they thought would be cool. But in those first years, the execution wasn’t quite at the level of the vision yet.

There were printed schedules for when talks and presentations were to be given, but due to last minute changes no one was where they were supposed to be, when they were supposed to be. I missed talks that I had wanted to see, and saw things that I had no interest in.  Speakers’ presentation slides were projected onto bed sheets that were strung up in an improvised manner. If they had a microphone, maybe it worked but as likely as not it was low on batteries or cut in and out throughout the talk.  I didn’t know anyone there, and no one seemed to be friendly or inviting. I tried to chat with geeks playing with legos and soldering irons, but no one seemed very interested in getting to know me, or talking about what they were working on.

So that was my first and last Notacon, until Notacon 6. A friend I knew from the interent, named aestetix, who I’d never met IRL declared in a blog post that he needed a ride from the airport so he could deliver his talk, and he offered to get whoever helped him in for free. I’d long admired his thinking and writing, and took him up on the offer. By then, Notacon had matured into a well run conference, with interesting talk topics and personalities. Drew Curtis from Fark.com presented that year, as did Jason Scott of Textfiles.com and the BBS Documentary, Archive Team, and the Internet Archive. And Mitch Altman, of Cornfield Electronics and TV-B-Gone, and a young comic book artist named Ed Piskor, who was working on a 4-part graphic novel on hackers called Wizzywig, and would later go on to create a definitive history of hip hop and rap music, Hip Hop Family Tree. Among the attendees was Emmanuel Goldstein, whom I had read about years ago in connection with the legendary 2600.  I was afraid to walk up to him and say hello, but I was impressed that he was there, and amazed that I knew people who knew him.

I went every year after that, and made friends with a lot of people there. Aestetix introduced me to Paul and Jodie Schneider, Notacon’s primary organizers, and I met many others there for the first time who would become friends, acquaintances, and professional contacts. Most significantly, for me, I met a neurohacker I met at Notacon 6 named ne0nra1n, who was very friendly and made me feel welcome as a newcomer to this space, and corresponded with me after that weekend, giving me encouragement to present a talk myself. At the time I didn’t think I had anything that I was good enough at or knowledgeable enough about to make an interesting talk, and the amount of work that I felt I’d need to prepare something even barely adequate frightened me. My first presentation proposal, a talk on intellectual property and copyright reform, wasn’t accepted for Notacon 7.  I felt secretly relieved.

But ne0nra1n’s encouragement changed my life. As a result of Notacon, I started this web site, not yet knowing what it would be. I participated in the founding of the Makers’ Alliance hackerspace in Cleveland, and through my involvement there, first encountered the Cleveland Game Devs, and became heavily involved with them in 2010. This helped me to rediscover my enthusiasm for programming and game development, which I’d put aside for many years.

I delivered my first presentation at Notacon 8, “How I (FINALLY) Made My First Videogame”. I put a lot of work into it, which was only possible because I’d just lost my job two weeks before, and that allowed me to pour 14-18 hours/day into working on finishing that first game, and to preparations more directly related to the talk itself.

I worked on the game and the talk I would give about how I had made it, right up until the last minute, and while I knew my topic and what I wanted to say, I hadn’t had time to rehearse, and no real idea if I’d fill the hour slot I had, or go over. But my prepared material fit the hour almost perfectly, and I received many compliments from attendees — this completely exceeded my expectations.

Presenting was a great experience. I was transformed that day. When I went to bed that night, it all hit me at once: I had done it. I had grown up to be the person who I had dreamed of being since I was little: a videogame designer. It was something I’d given up on when I became an adult, and I had tried to forget about for years, but I never had found anything to replace the passion I’d had for that dream, and life felt unfulfilling as a result.  But, because of that chance interaction with ne0nra1n at Notacon 6, in two years I had become the person who I had always wanted to be.

Talking about that journey in front of a room full of people, had made it real in a way that it hadn’t been before. I felt, at last, like I had arrived, and I had a place where I belonged.

Product Review: Scirra Construct2

Construct2 is available for download at www.scirra.com.

I’ve known about Construct2 for a few years now, and had downloaded it quite some time ago, intending to compare it with GameMaker in order to see which I liked better. I kept getting deeper and deeper into GameMaker, though, and since I was enjoying that, I wanted to stick with one thing until I knew it very well, rather than dabble in a lot of things that I knew only passingly.

One of my Cleveland Game Developers friends, Jarryd, likes Construct2 and I’ve seen him give a few talks about it, and so I’ve had a general impression of what it’s about for a while now. This weekend, I finally sat down with it and started to give it a serious look.

Initial impressions

So far, it feels very different from what I’m used to with GameMaker: Studio and other development environments that I’ve used… but I think there’s a lot of potential for getting stuff up and working faster than with GameMaker.

Two of Construct2′s areas of strength are the built-in project templates and object behaviors. They take a lot of the tedium out of developing your own engine and having to program everything from scratch, which means you’re freed up to focus in design and gameplay more. Creating a new project from a template sets up a lot of “boilerplate” that is common to every game of that type, saving you a ton of work and problem solving.  And adding a behavior to an object does in one or two clicks what many programming numerous events and scripts consisting of innumerable lines of code would accomplish in a GameMaker project.  And it all works and doesn’t need debugging, although there’ll still be a lot of customization yet to do, and that customization will require plenty of problem solving and debugging.  But it still gets you into the juicier parts of game development quicker, and allows you to build on a more featureful foundation than GameMaker does.

On the other hand, what I like about GameMaker is that by leaving these low hanging fruits un-plucked, it gives a newbie programmer some relatively easy things to develop, which affords many learning opportunities. Learning how to attack a problem and break it up into simple, manageable steps that you can solve is an important skill to have in programming, and GM provides such opportunities.

The C2 documentation is very well written, and there are a ton of example projects that come with the IDE, so you can learn by playing around with a project.

It feels different from traditional programming in that there’s no traditional text editor, and not much syntax to learn, for about 90% of it, from what I see so far. If *feeling* like a “real” programmer is important to you, Construct2 may not satisfy, but if you don’t care about coding as much as the ability to quickly make working games, it might be just the trick.  I feel like “real” programming is more like designing shapes of pieces to make a jigsaw puzzle, and then assembling the puzzle, and using Construct2 is more like taking a bunch of ready-made jigsaw puzzle pieces out of a bin and putting them together *just so* in order to make a picture that you have in your head.  But I don’t consider criticisms that amount to bias toward text editing and syntax as the only true programming to have much legitimacy to them.  Surely, if you never understand the circuits of the machine, you’ll never be able to call yourself a Real Programmer, and most modern programming languages abstract the machine entirely.  So too, with programming environments that replace linguistic syntax with visual paradigms.  Still, learning Construct2 may not be as good a good first step if you’re interested in getting into other types of programming, the vast majority of which do involve coding in a programming language.

Discovering Construct2 through example

One of the first things I did with C2  was to play the Asteroids example project. Labeled as an “Intermediate” project, I quickly noted that while the Player wrapped around at the edges of the screen, the Bullets did not. This bothered me, so without really knowing what I was doing, I looked at the Player’s behaviors, and saw how to modify the Bullets. It took almost no time at all.

But now, the bullets just traveled around the room forever, so in short order I figured out how to add a timer to them so that they would be destroyed after a short time. This took a bit longer, but in maybe 10 minutes I had it figured out.  Next, I created a new Sprite (which seems semi-analogous to what GameMaker calls an Object) and added it to the game, defined some behaviors and before too long I had asteroids floating about, that destroyed the ship when they collide with it, are destroyed by bullets, and wrap around the room.  I even figured out how to create two smaller asteroids when destroying the large ones.

That’s when I discovered that, if you don’t add an object to the Layout, even if it won’t exist in the initial state of the game, the game won’t run properly. I noticed a previously overlooked bullet sitting in the Layout window, outside the game view, and, thinking I’d somehow accidentally placed it there by mistake, deleted it, only to find that the game no longer worked properly.  And then I got an error message about the smaller asteroids not being defined.  So then I figured out that in order to have these types of objects available to the game at runtime, they needed to be placed in the Layout, but outside of the visible area, what in GameMaker would be considered “inside the Room”.  This confused me, because coming from GameMaker, I expected that objects placed outside of the rooms boundaries are instantiated and run in the game. But in C2, apparently they are just available to the game, to be created when called upon by the program.  It’s a bit strange, and I wonder how C2 handles objects that walk “offstage” or need to begin life offstage.

Cost

Construct2 is one of the cheapest options out there right now for fledgling developers. Comparing Construct2 to GameMaker, at $119 C2 is cheaper for a license than GameMaker: Studio is, if you want anything more out of GM:S than the base “Professional” package.  The free edition of C2 also has fewer limitations than the free edition of GM:S. There’s also a $400 “business” license, which is for professionals and businesses that have made $5000 or more from game development, but doesn’t seem to give the user any additional new features. I suppose the idea there is that businesses that make that much money from game development can afford to subsidize development for the rest of the customer base.

Performance

I haven’t benchmarked the two side by side, but I understand that C2 builds everything as an HTML5 app and (if you’re not targeting a web browser) wraps it in a native application for whatever platform it builds to. By contrast, GM:S has the option to build native code, depending on how you build it and what platform you’re targeting, so may potentially have performance advantages over Construct2. I don’t want to speculate, and for now it’s merely a hypothesis that I have not myself tested, but it seems plausible that GM:S would the equivalent game as well or better than C2 on most platforms.

On the other hand, C2 is probably more consistent across platform, since on every platform it is essentially running the same code, unlike GameMaker:Studio, which currently has numerous problems with supporting features and getting to work exactly the same, regardless of build target.

Final thoughts (for now…)

I still haven’t gotten very deep into Construct2, and have just barely begun to grasp what it is capable of, but so far I like it quite a bit. Whether I like it as well as GameMaker: Studio, or less, or better, I can’t say yet, but I like the fact that it exists,and and it provides another option for an easy to use tool for game development.  I still am much more versed and comfortable with what I know in GameMaker, but I’m impressed with how quickly I was able to pick up Construct2 and do something useful with it.

Verdict: Worth checking out.

Archeology vs. Engineering: contrasting approaches to long-term maintenance of IT Systems

Thinking about programming and maintaining a system in a team environment, where the system has a long life and the team supporting it experiences turnover.

When I program I know exactly wtf I mean by . I understand its purpose and design, and this makes me fairly confident that I know what is and what it does or is supposed to do. My ability to solve problems when I code from scratch is limited by my ability to understand the problem and to conceive of a solution. Often what I can come up with is inferior to what the greatest minds can come up with, but for many problems I can come up with something acceptable, and code it in such a way that it is very easy to understand the code, because I like to write code that is written in a way that lends itself to understanding.

When I look at someone else’s , I don’t know wtf they meant when they coded . I have all kinds of questions about what was in the programmer’s mind, how they understood the problem, what they handled in and what they elected not to handle in it, and so on. It helps immensely if I know the language and any frameworks or libraries well, but often when you’re inexperienced that’s not the case. And, especially with larger, older things that have been built up over time, that becomes a very steep learning curve.  Until I’ve had enough exposure and experience to , I feel very uncomfortable, uncertain, and unconfident that I understand any part of . And, if is sufficiently large, I never get over this, and it ends up limiting and paralyzing me in my efforts to become a better programmer.

If I built it, then I know why, and I can be in a position to know better later when I’ve learned more and maybe decide to change my mind based on some revelation. 

But if someone else coded it, unless they coded it in such a way that the code clearly expresses its intent, and/or they’ve commented it extensively, or documented it somewhere, explaining their rationale in detail, I can only speculate, and depending on whether I feel like I am smarter and more knowledgeable than they are, I might or might not feel comfortable making a change. I would at the very least feel uncomfortable making a change that I could not roll back quickly/easily if something broke, ideally in a test environment where there would not be serious consequences. But I might not feel confident that a change would be instantly and obviously noticeable; often things break in very subtle ways.  Having a suite of unit tests is very useful here, but it’s often the case that there are no tests written.

Even when a system has extensive documentation, there’s no guarantee that it is up to date, or accurate, or correct. Other people often have very different ideas about what and how to document, and how much detail to include, and where to put what information.  All systems of documentation seem to involve significant tradeoffs, and there is no silver bullet solution to documenting adequately.

I call such situations IT Archeology, rather than IT Engineering. It’s very much like discovering a lost culture’s artifacts and trying to figure out how their civilization must have been structured and how daily life must have been lived, and then trying to adopt those ways and live by them yourself in order to understand them better.  By contrast, IT Engineering is what you do when you have a solid foundation of understanding of the problem domain that provides the context that it works within, and knowledge of the system and the technology stack that it is built upon.

At the moment, I am wrestling with how one moves from an Archeology paradigm to an Engineering paradigm. But it’s an observation I’ve noted many times in my experience, and it seems quite common. I am interested in advice from developers who have to deal with this sort of thing about what approaches actually work.

Game Review: Busy Busy Beaver by Daniel Linssen

A close shave resulted from a precision fall in Busy Busy Beaver

TL;DR: A fun, quick puzzle platformer, Busy Busy Beaver isn’t as difficult as Linssen’s previous game, the amazing Javel-ein, and is perhaps just a bit less engaging, but it’s charming sense of humor makes up for it. If you’re up for an hour’s worth of platform puzzles, try it out. Built in just 40 hours of marathon game jamming over a weekend, it’s remarkably polished for a game produced so quickly.

Download Busy Busy Beaver here.

You’re a beaver. You need wood to build up your house.  Collect the wood, until you have enough, but make sure you don’t touch spikes or eat so much wood that you have no platforms left to get back home.

Simple, yes? The challenge is mild to moderate until the last few levels, but it’s a relaxing kind of intellectual challenge, where you don’t have to think too much, but just enough to make the game interesting without being frustrating.

I got stuck on the very first level, until I learned this tip: Press Down+Z to eat wood that you’re standing on.  (I actually tried this early on, and couldn’t get it to work, which left me confused as to how to beat the first level, until I learned the secret: To eat down, you have to be in the center of a grid block.  The level is laid out over an invisible grid, and if you’re standing on a grid line, you won’t be able to eat down, even if you’re standing on a grid line between two blocks of wood. As a player, I would have expected to eat both blocks when straddling a boundary, rather than neither.)

Getting into version control with GameMaker Studio

Version control makes sense whether you are working alone or with a team. It should be a mandatory practice. But you won’t be able to enjoy the benefits of version control unless you know how to do it right. If you’re working with a team, it’s essential that you all know how to do it right. This article will help you get started. Continue reading

What I learned while on Facebook vacation

Hi. My name is Chris, and I’m addicted to Facebook.

Kinda not seriously, I really am. I use it all the time. I have it on my phone, it’s with me everywhere. I can see what’s gong on with my friends, what’s going on in the world, in various communities that I have interest in, many of them related to my game development career. It’s really great for that.

Last Friday, I decided to act on what I’d recognized for a while to be a problem with the amount of time I spend using Facebook.  On a whim, I decided to stop using Facebook, entirely, for two weeks. I didn’t want to disable my account, or delete it, but I wanted to see if I could build a space ship or cure cancer in two weeks if I just quit squeezing Facebooking into every spare moment of the day, and fb-multitasking even in many of the non-spare moments.

Since I didn’t disable my account, I can still receive messages from people.  I can still post to FB via Twitter and when I update here the automated promotional post goes out there as well. So even though I’m taking a “Facebook vacation” I’m still not completely out of touch. It’s like “FB Lite” if there is such a thing.

The Experiment

I posted a see-you-later announcement, and removed the app from my phone. Well, I didn’t uninstall it, but I removed it from the quicklaunch screen, to make it harder to access, and made an agreement with myself that I would not launch it unless there was a legitimate need during an emergency to do so.

My see-you-later post announcing my Facebook vacation

Preliminary findings

So I’ve only been on “vacation” since Friday, and today’s Monday.  Yet, I’ve already learned a lot. Hence, this post.

Sunday, I cleaned the house. I cleaned all the living spaces. Not the basement, or garage, or the spare bedrooms, but the living room, dining room, kitchen, front porch, bathroom, and main bedroom.  All in one day.  My place hasn’t been this tidy in probably over a year. I did it by waking up at 9:30, and cleaning all day, until around 5pm, mostly at a relaxed pace, not trying to rush through it, but just not stopping to get distracted by anything going with Facebook. Go me.

OK, so I haven’t read a book yet, but that’s still pretty awesome, isn’t it? I could have guests over. REAL SOCIAL! Without embarrassment!

Everything’s a tradeoff

Like any good addict, I couldn’t actually stay completely away from Facebook. I found that there really are times when I’m not doing anything with my time, and it doesn’t hurt to catch up with what’s happening. If I’m waiting in line, at the car wash, in the bathroom, or similarly tied up but idle, fb is pretty harmless.

The problem is if I get sucked in to fb-land and can’t stop checking my notifications. There’s always one more notification. Responding to notifications generates notifications, and if the person on the receiving end of your notifications responds, you get into a volley, which ends up turning into a [negative] feedback loop.

It’s particularly bad when you’re arguing some important issue with your friends and have to be right. Projecting your opinion feels like a form of power. Like, maybe by winning the thread you can persuade others and change the world a little bit, bringing about the utopia you always knew you could build if only you had godlike control over the universe and its inhabitants. Not necessarily. Maybe you are influencing people, but can you measure it? Is it perceptible?

I’m a sarcastic smart-ass, so I like to chime in with a funny comment on just about anything and everything, often at the risk of coming off like an asshole, even if there’s no real point to it other than to be witty. I’m not really an asshole, but I play one in real life. All the time. I’m hilarious, so I’m told, but I don’t know that it’s worth trading being funny on Facebook for whatever else I could have been doing with the time. Now, unless someone’s paying me to write jokes, I think there’s probably better things I could be doing with the time. Joking around and laughing with friends and being the quick witted guy everyone likes feels good and boosts your ego. But it’s a cheap form of validation. Nothing like a real accomplishment, like summiting Everest, or helping another person who needs it, or building something cool. As a proxy for achievement, it’s a false nutrition.

“Outrage porn”, inspirational memes, the politics of self-righteousness

A substantial proportion of content on my fb wall feed is not directly generated by my Friends, but is Shared content. A lot of it is interesting, some of it is even useful. I’m not sure how much of it is valuable. A lot of it is political stuff in a negative vein: Look how bad $other_party is. Look how bad $not_us is. $Bad_news is fucking up the world.

Politics isn’t unimportant, so political stuff has its place in the discourse of the business we conduct with each other on FB, but I think we’re getting the how wrong. Speech is a weak form of action. It’s powerful only if it inspires strong action: changing your behavior. Information is valuable, but its value remains only potential if you do not act on it. There’s a great deal of information which we can act on only in an abstract manner. I can’t do anything about Fukushima, or Deepwater Horizon, unless I want to completely disrupt my life and physically go there and volunteer to participate in the cleanup. I suppose perhaps that there are some number of people who read the news and then walk away from their status quo life and dedicate the remaining part of it to acting in response to that news story. But such people must be vanishingly rare. I mean, I might be able to write to my government and advise them to be careful with nuclear energy, or maybe suggest that they help Japan in some way. Maybe I’ll think twice about eating seafood. Beyond that, apart from any “human interest” satisfaction I might get from feeling informed about the world I live in, what value does it have? I just end up feeling despair, helplessness, bitterness, cynical, outraged. And I feel like this is how I should feel, as an informed person in a world going to hell at a seemingly exponentially increasing rate. But still — does feeling this way do anything to slow down the hell-goto rate? Does it make me a better person in anything but an abstract manner? At most I think I can say that it changes my spending patterns — slightly. I wish that I could say more than that.  Well maybe not even.  I wish that I wish that I could say that. But really, changing how I live my life too far out of the comfort zone that the culture I live in has prescribed for me isn’t really happening. I’ll wait like all the others for the crisis to reach the point of no return, and then and only then will we do things — but not because we were inspired by something we read on Facebook — it will be forced out of necessity.

The biggest problem with “outrage porn” is that all of it seems very important, and knowing about it makes you feel very informed. And it is, and you are, but you’re still not actually empowered to do things. Unless you’re the rare type of person who is out there already doing things. But the inertia of the vast majority of us who are living status quo lives will dampen the force you can exert on the world, to almost nothing — at least until most of us die off due to whatever the calamity is that we’re reading about this week. But almost nothing is still something.  So, world-changers: as the anchorman said to the weatherman, “keep fucking that chicken.”

Facebook does provide value; whether it’s a net gain depends on you

Facebook does a [pretty*] great job of putting me in touch with people who I met casually one time and turning them into recurring bit players, and sometimes even friends, in my life. It helps me to not feel isolated in my interests, in my values. It helps me stay abreast of the news of the day, at least insofar as it is filtered by the echo chamber of the like-minded people I’ve Friended. It does a pretty good job of giving me a calendar with reminders for my social events.

*I say “pretty great” job because I don’t like the way that Facebook seems to meddle with who’s posts I actually get to see. I have something over 300+ friends, and yet it’s the same 20-ish individuals who I see posts from, or interact with. And for some strange reason they’re not all the people who I considered my closest friends. Over time, they’ve come to know me, and me, them, moreso than a lot of people who I considered my close friends. It makes me feel like this was less a matter that we had any choice in, and more what Facebook picked for me. Which is pretty disturbing, to say the least. Still, in spite of all that, it still provides what feels like a vibrant medium for social interaction with people I’ve chosen to interact with. But why this subset and not another clique of equally worthy and desirable friends? I have no idea.

More than anything, though, Facebook gives me an inflated sense of mattering. Every like, share, and comment is a tiny validation, and I crave that more than almost anything. That’s why I’ve been posting to Facebook since 2008 like they were paying me a dollar per word.

What do you look at? Who do you interact with? What do you share? What do you say? Most importantly, what do you do?

How to maximize your FB-value while minimizing time consumption

It’s Facebook nature to reward the trivial, and to trivialize the important. And it’s our job to go against that grain. Probably the worst thing about FB taking up every waking instant that I wasn’t actively engaged with something else was that it eliminated quiet time. The times when I used to think my deep thoughts, now were almost completely taken up by FB interactions, checking to see what someone commented to, seeing what the new notifications were. So many of the notifications are of things that I don’t care about, or updates to a thread that I read and participated in once and am now done with. But they keep sucking me back in.  That red 1 just demands my attention, whether it’s something important and cool or something unimportant. Somehow, they just don’t get the filtering for that feature right.

When I first started using FB in 2008, wall posts had a maximum length. It was something larger than Twitter, but in order to exceed that length you had to use an FB-app called Notes, which allowed longer content. Almost no one used Notes, or saw them, and eventually FB did away with the length restriction and merged notes and wall into a unified stream. But brevity was the order of the day.  It’s how the new social media would defeat the old standbys of MySpace and Livejournal. And by tying your recognizable, public, real life identity to your account, FB ensured that the content we shared would be filtered to be “appropriate” for all our real-world friends, acquaintances, stalkers, and future employers, or that there’d be consequences. You don’t get deep or overly personal on Facebook, the way you once felt safe enough to on MySpace or LJ. But because it’s easier to find people, and the interface for sharing stuff (whether yours or just stuff you found on the web) is way better, FB won.

Since everyone’s there now, and FB has gravity enough to keep them there, at least for now, here are a few things I’ve observed that can help reclaim the time taken up by unrestricted facebooking:

  1. Don’t comment unless it really needs to be said. Refraining from commenting saves almost as much time as not reading at all. If you’re a fast reader, you can read quickly and not waste a whole lot of time as long as you don’t get bogged down in composing and posting responses. This is the secret value of the Like button; it’s a one-click response. It’s terribly shallow, and often it’s not contextually appropriate to “Like” things that aren’t good news, but are well-written or express something you agree with. But unless you have something truly great to say in response to something, maybe it’s the most economical response.
  2. Don’t click links. Not clicking every link that looked interesting or curious also saves me a lot of time. A lot of what people share is what we have come to call “link bait”. It’s like spam, only it’s stuff you might reasonably be curious or interested in and think is cool or important, because some friend of yours thought it was. Don’t bite. Clicking only on things that have a direct, immediate relevance to me helps. It’s very easy to get sucked into every little thing that flows down your Wall, but only if you let it. If you want to make clicking links a choice rather than a habit, it takes discipline, but doing so is necessary in order to reclaim your time.
  3. Use the “stop notifications” feature. If you do want to just comment once and move on with your life, use “stop notifications”. You won’t get the validation and satisfaction that comes from knowing that 6 people liked your quip, and you won’t get to sink hours into lengthy exchanges with Friends who have some minor semantic disagreement of fundamental importance with the way you said that thing you said. But generally, it’s worth it.
  4. Don’t refresh for the sake of refreshing. This is a sure sign of addictive behavior. If you scroll down to the last thing that you remembered seeing, don’t scroll back to the top and start again. If your wall is particularly active, it’s virtually guaranteed that by the time you catch up with your reading, there’s bound to be a new post at the top of your wall, or a new notification of someone liking or commenting on something.  You don’t have to be on top of that at all times. In fact, unless you’re being paid to be, probably it’s not worth it. The Wall feed scrolls like a treadmill, and you need to be the one to decide when to get off. Do it, and get away and do something. Special challenge: Don’t come back until you’ve accomplished something worthy of actually posting about on your own wall. Not a photo of what you had for breakfast, but a true milestone in some project you’re working on.
  5. Skip all videos. You can’t skim a video. They take time. You can’t keep scrolling and read other stuff until they’re done. You said you gave up watching TV because you had better things to do with your time; this is probably even less well produced. Is it really worth your time?
  6. Don’t share it. Was it cute? Was it hilarious? Can’t resist posting it because it’s just too good?  Don’t do it. You can use facebook without even being on facebook.com.  The Share button is uniquitous. You can share just about anything you find. Think twice before doing so. Ask yourself: If someone else posted this on their wall, and I saw it, would it be a waste of my time? If answering that question takes too much time/thought to answer, then make a rule to only share one thing a day, and ask yourself “If I could only share one thing today, would this be it?”  If it’s not, then pass it by and move on with your life.  (If you hit 11:59 pm and still haven’t found something better to share, don’t go back and “rescue” your one share for the day.)
  7. Facebook needs a “digest mode”. I’d be very happy with FB if I could read a digest of the stuff my friends are up to in about 5-10 minutes of skimming, once a day, and then go on with my life, choosing to engage more deeply only where it really matters, whether by commenting or clicking a link to read more. I’d almost pay for that feature alone.
  8. Almost nothing is a complete waste of time. Don’t think about it in terms of wasted time. If you enjoy what you’re doing, can it be said to be a total waste of time? Rather, ask yourself, what would I most enjoy? Something other than using Facebook is almost always the answer. And, likely as often, doing something else while also facebooking from your smartphone is less than focusing your presence on the experience you’re having immediately. Checking facebook in the midst of the experience is like channel surfing to see if something better is on. Even if there is something better going on elsewhere, you’re right here, right now, so unless teleportation is possible, or Lassie is private messaging you a warning about Timmie being stuck in a well, and you have to go rescue him right now, you might as well be focused on the immediate experience you are having, and make the most of that. And don’t spend so much time updating your Wall with what’s happening right now.  Experience it first, document it after. Unless you’re trying to be a reporter, live-microblogging everything you do, preserving the stream of your consciousness for posterity is mainly an exercise in narcissism. Even if you truly are leading a remarkable life, you’re just slowing down or missing things if you’re trying to capture it all and send it through your social media filters.

Perhaps I’ll learn even more over the next two weeks, and update this post. But more likely, I’ll have built that spaceship and cured cancer. I have my time back, and can expect to spend a lot more of that time living.

Code snippets and syntax highlighting

I’ve been looking for a decent WordPress plugin to handle syntax highlighting for my code so that it will format neatly. I’ve tried a bunch of them so far, and am still not completely satisfied.

Requirements

  1. Has to correctly highlight GML syntax.
  2. Should support automatic line numbering
  3. Should work in both <pre> (for correctly-indented code blocks) and <code> (for inline textual elements in the middle of a paragraph that should be formatted as code.
  4. Nice if it treats <code> as an inline tag (this is definable via CSS, but it seems that WordPress’s TinyMCE visual editor will convert the entire paragraph into a <code> element, rather than just the content that is actually selected, making it annoying when you want to include some inline text in the middle of a paragraph and have it formatted as <code>.
  5. The font used for inline <code> tags should be typographically not-ugly when nested inside normal text.

After trying out a number of plugins, I’m currently using WP-Syntax, which seems to be the best out of the plugins I’ve tried so far. Overall this is a very good code formatting/syntax highlighting plugin, but for some reason the every-other-line background coloring doesn’t line up cleanly with each line of code, and it works using <pre> tags only, not <code> tags. WP-Syntax works with a couple other plugins as well, which integrates with the TinyMCE visual editor, and enables me to make a formatted code object downloadable.

I’m still looking for ways to improve the presentation of code, so if you’re reading this and have suggestions, please drop me a comment.