Morgan Wilde

A student of Computer Science

Page 2


Why Vim

We survivalists, turned to consumers

Just to get by, just to get by

- Talib Kweli

Cosumer

Consider how much we take for granted when using technology. All the processes that translate our intentions into pulses of electricity and then into results are mostly hidden from plain sight, mostly by design. This trend is mostly due to consumerization of tech, and one can only marvel at the progress made there. But with all those consumers in mind, how many of them can actually contribute and/or tinker with what they’re using?

When building stuff I constantly ask myself - how much of a consumer I want to be doing X? And in this case - writing code.

Abstraction

By now I’ve used quite a few text editors to write code with, most of them in the IDE (Integrated Development Environment) class, and I can’t say I had a real gripe with any of them. Most of them look very nice, have lots of menus...

Continue reading →


Drawing lines

When you think about it, we transfer information in only one of two ways: drawing and/or speaking. Given that fact, it is very important for anyone interested in communicating to attain a good grasp on the fundamentals. For the purpose of this post, I’ll focus on drawing.

Pick up a pen or pencil and a clean sheet of paper and, without much effort, your hands will form shapes and symbols out of ink. The artistic quality of said shapes - I will not question, I’m more interested in the mechanics of translating ideas onto arbitrary surfaces, specifically any digital display. To do that, we first need to understand how they work.

Dots

Under the hood of any modern display, exists an array of individual dots, each one capable of being switched on or off. While on, they display a combination of red, green and blue lights (with more than 16 million possible combinations).

For the purpose of...

Continue reading →


Legacy as a barrier

Microsoft is completely stuck supporting all the legacy features it’s many millions of user require to be maintained, I get it. There is no expectation on my part that MS will ever be able to change that, that’s why we have new entrants.

As a result I came to rely on Google docs, what can I say, online documents is the future. But I cannot understand why has Google clinged to the interface language of the past that disrespects the main utility of the tool they’re providing - content creation/editing.

legacy.png

There is no doubt - minimalist content creation tools are picking up (I wrote this post entirely in the svbtle editor) I just hope Google figures this out and does something out this. Not all legacy is worth keeping around.

Psst, if you’re looking for inspiration, look at Vim and how it respects its users. Let us focus on our work not on your tools.

vim.png

Continue reading →


Thank you, Hollywood

From time to time, I browse movie trailers on apple.com to get a general feel for cinematic culture, and, even though the sight isn’t always pretty, recently I feel there’s reason to be thankful.

Why is that

Movies are vehicles that have a fairly large and immediate impact on pop culture, thus their message (or lack thereof) is a way to nudge societies in one direction or another.

I’d venture a guess that the most conducive genre in that regard is science fiction. And I’m not talking about the glaring new Star Trek here, which is just an action movie, no, I’m referring to 2001: A Space Odyssey and such.

I guess it’d be easiest to classify those as gracefully exploring profound questions relevant to the progress of humanity. And I think I caught a glimpse of that from these upcoming or recent releases:

Here be Dragons

interstellar


thesignal

The resilience of life

gravity
Here’s my amazon link to Gravity...

Continue reading →


Where to begin? Entry points

We began with a blank canvas. Even though an empty file is technically a valid C program (thanks hacker news!), still, we can’t get an executable without the linker failing. This is for good reason, the operating system requires a starting point where to begin execution, such a position is called the Entry point. In every C program, the entry point is a function called main.

Entry point definition

I will be conducting the following exercises in OS X 10.8.5 with Xcode command line tools installed. The programs I’ll be using are as follows: vim and cc. All the action will take place on the default Mac terminal program. As a result, I can only vouch for the following results on setups similar to mine.

So here we go! Our first non-empty C program - first.c. This time with the entry point in place.

main

After each block of code, I’ll compile first.c using the Clang compiler, like so. I...

Continue reading →


Where to begin?

I’m currently working on introductory material on programming in C. And this is the main question I’m facing: when introducing something new, how far back do you have to zoom out for everyone to understand the context?

Blank canvas

My first approach is to start with nothing, just an empty program.c, and try to compile that into an executable file.

Errors

Of course an empty file is not a valid C program, and the compiler will not hesitate to tell that to you with a big, fat error message.

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Since we haven’t written anything, there really is no penalty in seeing this error, and we can then dig deeper and understand what it is that it’s trying...

Continue reading →