No, I don't mean me (and I resent that assumption). Linux tools, as in all the little bobs and doo-dads that come with a fresh installation of Linux. There's ls, grep, sed, chown and a bucket load of other little pieces of software that we use on a daily basis. Well, maybe the majority of them are silent sleepers that I have never used and have probably never heard of.
Making Use of Linux
I've been a Linux user for something like a decade now, and Arch has been my chosen poison for the majority of that. Even though I've been around the Unix environment for quite a while (relatively) and I'm a programmer, and a Computer Science nerd, and I like the command line... I still don't know as many Linux tools as I should.
Grep is probably first on my list to learn, but there will be many more to come. Maybe I should just go through my bin folder and make a huge todo list of software that I need to get used to. Start with grep, and move on until I know them all. Then I'll find out which ones are the most useful for me.
Making More Linux Tools
Another dream of mine is to write small programs that people find useful. I want to keep them small so that I can knock them out in a week and keep them maintained without going insane.
On Linux, it's simple to block a domain by adding it to your /etc/hosts file. Every so often, I'll catch myself wasting time online or I'll come across a website that has scummy popup and marketing tactics that I never want to visit again. For that, I'm making 'bulwark' which will let me block and unblock any sites that I need to get out of my way.
For now, the features are super simple, but I have some additions that I'll think about putting in later. A timer for how long to block or unblock sites, extra checking to make sure www.somedomain.com is blocked as well as somedomain.com, etc. would all improve on the basic functionality.
Anyway, check out my Github periodically to see if I have any more "brilliant" ideas for Linux tools, and let me know if you have any ideas yourself. You stay classy interwebs, o7
There is something about video games that no other medium can capture. I think that it's because we get to experience a new world for ourselves, rather than through the eyes (or ears) of someone else. You develop your own experience in these worlds as you explore what they have to offer.
Explore the rules of a puzzle game, the landscape of an open world game, the story of an RPG, the character builds in a game with a deep progression system, and on and on. Video games let us do something truly unique and amazing.
There is a problem, though. Many games seem to ignore the possibilities of allowing players to explore. In fact, some games seem to be antagonistic towards the players who want to wander around beyond the artificial boundaries set by the game. On the other hand, maybe it's just too much work to make games that try something different and encourage exploration...
If you ask me, no matter what genre you're in, there are always methods of encouraging players to make interesting decisions that lead to discovery.
What I Love
Originally, I was going to talk about games that do exploration well and point out how some games do it poorly. Instead, I just want to muse about what I think makes games, and by extension: exploration, great.
Poking around and discovering something new is the quintessential example of what you can do while exploring. It doesn't matter if it's in a "physical" world where you walk around and see something new or if it's a deep and complex system where you have that "aha!" moment and realize that some combination of skills opens up new possibilities. If there is some form of learning new and interesting things in a game, I'd call that discovery.
Because this is such an obvious option, many games have a shallow form of exploration like this, but it's not enough.
Closely related to discovery is experimentation. In order to discover new things, you frequently have to experiment with different possibilities. On the other hand, you can have discovery in a linear game that simply shows you new things as you progress. In fact, I'd argue that there isn't enough encouraged experimentation in games, even though it's one of the most fun parts about playing around in new worlds.
Imagine your favorite game with a deep system of customizing your character build. A game like this thrives on player experimentation. You have probably built many characters with different strengths and paths through the skill tree. You tried out some combinations of abilities that seem to have a bit of synergy, and once in a while, you're probably surprised at how well they work. This is one of my favorite ways to explore.
I touched on this a bit in the previous sections, but awe is the holy grail of exploration if you ask me. I dream of a game that gives me a rich, complex world with a deep progression system and awesome (in the true sense of the word) rewards for putting in the time and effort to thoroughly explore the game. Imagine the sense of awe you could get if a game forced you to really work to get to a far off location with a sprawling and fascinating set of caverns. Or maybe you spent hours building your character and finally finish your build: you rush off to fight a boss that seems impossible to beat and you crush him in the end, barely escaping alive.
Which games are your favorite for exploration?
My track record for consistently writing blog posts isn't the best, but this time... things will be different. Also, I sort of feel obligated to start this brand new blog off with a "this is how it's gonna be" post, so here it is.
Yes, this is yet-another-programming-blog that will be filled with ambitions of telling the world how to write better code and hopefully keeping young minds from adopting silly paradigms like OOP. Mostly however, this is an exercise in keeping tabs on my progress and teaching myself a thing or two.
Most of the code I write is related to video games in one way or another, but I'm moving more towards making useful software that people will hopefully use. For the foreseeable future, I have 2.5 projects planned and I'll go over them later once they are worthy of showing off.
I consider myself a member of the "handmade" community a la Casey Muratori (and many other outstanding programmers). They have all been a huge influence on how I approach writing my own code. And let's not forget about Mike Acton's data-oriented design.
Maybe I'll even be able to add something valuable to the community...
The last five or so years have been heavily sunk into academia and I had a blast. The next year is going to be pretty well academia free, but it's close to my heart which means that it is bound to creep up here and there. I'd like to keep an eye on interesting research coming down the pipe.
Oh yes, I'm a neckbeard extraordinaire: programming, Linux, and video games. Doesn't get much nerdier than that, and I'm proud of it.
Of those 2.5 projects that I mentioned before, 1.5 of them are Linux-related. The goal is to become intimately familiar with the tool that I love and use every day. Plus, OS programming is insanely interesting. Complexity is fun.
You Stay Classy, Interwebs
In the interest of wasting as little of your time as possible, I intend to keep most of my ramblings short and sweet (unless the subject deserves more attention). And with that,