<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8108828884827777995</id><updated>2012-02-16T15:39:31.189-08:00</updated><category term='Unix'/><category term='52in09'/><category term='sneak peek'/><category term='blogging'/><category term='writing'/><category term='work'/><category term='presentation'/><title type='text'>Casey Brant's Blog</title><subtitle type='html'>Neglected blog is neglected.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-4878055499292623252</id><published>2010-03-03T11:30:00.000-08:00</published><updated>2010-03-03T11:32:38.327-08:00</updated><title type='text'>Posting again. New location.</title><content type='html'>Hey, there are some major changes coming up in my life, and I'm gonna try to start blogging again now that I have some things to talk about. If you're subscribed to this one and want to keep following me, head over to my new one at &lt;a href="http://blog.caseybrant.com/"&gt;this location.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-4878055499292623252?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/4878055499292623252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=4878055499292623252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/4878055499292623252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/4878055499292623252'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2010/03/posting-again-new-location.html' title='Posting again. New location.'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-6176991242252709014</id><published>2009-08-28T10:47:00.000-07:00</published><updated>2009-08-28T10:53:39.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>The Math</title><content type='html'>Recently, several Systems employees at my company have received stern emails berating them for their abuse of the H: drive (our personal network storage space). Thinly veiled and unverified accusations of CoC breach aside, the message is simple: you're using too much space.&lt;br /&gt;&lt;br /&gt;OK, fair enough -- you set a quota, I went over it. It's as easy to fix as me deleting all the things I was backing up in case of hard drive failure. Problem solved. So what is the quota? According to the emails, 300MB. That doesn't sound like a lot to me, but the email did say that SAN space is "at a premium."&lt;br /&gt;&lt;br /&gt;"At a premium?" I thought I read somewhere that the cost of storage had been falling for a while now. Hey, I know! We're geeks; let's do some math.&lt;br /&gt;&lt;br /&gt;You can't buy a 300MB hard drive in 2009, but a quick search of NewEgg.com got me a 320GB SeaGate external drive for about $80.&lt;br /&gt;&lt;br /&gt;It costs $9 for a 6-pack of Scott toilet paper. The average American office worker uses a roll every two weeks. If we assume a 50-week year, that's 25 rolls per employee per year. Adjusting for the fact that we're buying in bulk (and it ain't the nice stuff), that works out to something like $18 per employee per year for toilet paper.&lt;br /&gt;&lt;br /&gt;Back to the hard drive. 320GB is a heck of a lot; we could split that up amongst, oh, let's say 32 people. And just so we're comparing apples to apples, let's say a SeaGate drive will wear down and need replacing after one year of use. So, 10GB each at a cost of $2.50 per employee per year.&lt;br /&gt;&lt;br /&gt;So for about 1/7 the cost of toilet paper, we could afford to increase every single employee's H: drive by a factor of 30.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or can we at least start buying nicer TP?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-6176991242252709014?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/6176991242252709014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=6176991242252709014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6176991242252709014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6176991242252709014'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/08/math.html' title='The Math'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-3173966900805935918</id><published>2009-06-26T08:51:00.000-07:00</published><updated>2009-06-26T08:56:00.683-07:00</updated><title type='text'>UPCRC Parallel Computing Seminar</title><content type='html'>I'm just finishing up the last day of a week-long parallel computing class at UIUC. It's gonna take me a few days to review everything for a full writeup, but it was an awesome class! Many thanks to the excellent professors, lecturers, and organizers that made this such a great week (and extra special thanks to my good friend JoAnne, who told me about its existence in the first place and helped get me signed up).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-3173966900805935918?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/3173966900805935918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=3173966900805935918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/3173966900805935918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/3173966900805935918'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/06/upcrc-parallel-computing-seminar.html' title='UPCRC Parallel Computing Seminar'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-6518120147783494107</id><published>2009-04-03T13:13:00.000-07:00</published><updated>2009-04-03T13:14:08.186-07:00</updated><title type='text'>Hack Day</title><content type='html'>I think I'll write more often if I let myself post things that are shorter and less edited than I've been doing. Let's test that theory.&lt;br /&gt;&lt;br /&gt;My company has decided to sponsor a Hack Day next week. There's been a lot of internal talk the last few years about how to start modernizing our Systems department and attracting/retaining younger talent. I think this is one good way to do it.&lt;br /&gt;&lt;br /&gt;The idea is modeled after Yahoo!'s hack days. You form into small groups, grab some laptops, load them up with whatever stuff you want, and code a quick proof of concept for something you think would be cool for the company to have. At the end of the event, everybody gives an informal demo to a crowd of other participants and managers. There will be pizza and drinks. I think maybe some voting -- everybody likes voting.&lt;br /&gt;&lt;br /&gt;My team's working on getting our stuff set up at the moment. The bulk of the actual coding will be done this coming Wednesday during the real event, but we're getting everything in place and doing a little design ahead of time so there's less friction to overcome once we get down to business.&lt;br /&gt;&lt;br /&gt;I realize that Hack Days have been around for a while, but my company is pretty conservative, and this is a big step for it. It's out of character for them to be so loose with an event like this. We were given factory stock laptops to work on (no corporate restrictions), we get non-firewalled Internet access, and we can install just about anything we want on them (Legal has to approve, but they've been extremely accommodating so far), even Ubuntu!.&lt;br /&gt;&lt;br /&gt;Like I said, nothing remarkable for the tech industry at large, but I'm really happy that we are finally willing to start moving in this direction. It makes me actually kind of believe in some of the rhetoric about modernizing our department I hear from upper management.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-6518120147783494107?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/6518120147783494107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=6518120147783494107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6518120147783494107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6518120147783494107'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/04/hack-day.html' title='Hack Day'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-5741078313158785682</id><published>2009-03-29T18:07:00.000-07:00</published><updated>2009-03-29T18:09:33.709-07:00</updated><title type='text'>still alive</title><content type='html'>I'm not sure how many people are following this, but I just wanted to drop a quick note to say I'm still alive, and I still plan on coming back to both 52in09 and general blogging. I've been pretty unproductive lately for a number of reasons, but I'll be back on top of things pretty soon here.&lt;br /&gt;&lt;br /&gt;Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-5741078313158785682?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/5741078313158785682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=5741078313158785682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/5741078313158785682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/5741078313158785682'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/03/still-alive.html' title='still alive'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-6410706863987466991</id><published>2009-02-13T16:38:00.000-08:00</published><updated>2009-02-13T16:43:54.967-08:00</updated><title type='text'>Emergency vi</title><content type='html'>&lt;h3&gt;Text Editors&lt;/h3&gt;&lt;br /&gt;One of the most important tools of a serious Unix user is their text editor. Almost all system configuration on Unix is done with plain text files, so having a sharp tool for dealing with text is a must.&lt;br /&gt;&lt;br /&gt;Beyond system administration, most of the computing we do on a daily basis involves plain text. Programmers edit text in the form of source code, writers spend lots of time editing and tweaking manuscripts, and anyone who works in an office knows how much time email takes up.&lt;br /&gt;&lt;br /&gt;Because text plays such an important role in computing, it only makes sense to have powerful tools for working with it. Someone coming from a Windows environment might have never thought about their editor before -- it's a bit of a shock the first time they step away from Notepad! But incredible programs exist that can improve the way you interact with text, and it's worth your time to get familiar with one of them, regardless of your job or responsibilites.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;vi&lt;/h3&gt;&lt;br /&gt;&lt;h4&gt;what is it&lt;/h4&gt;&lt;br /&gt;'vi' is one of the most venerable Unix programs. It has a strange interface, and its behavior will seem downright wonky to someone coming from Notepad, but this strangeness is the result of an ingenious approach to editing that many users swear is the only right way to do it. Once you get over the shock, vi is a powerful tool that can change the way you use your computer.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;why you should know it&lt;/h4&gt;&lt;br /&gt;-It's Everywhere-&lt;br /&gt;With so many text editors available, why did I pick vi for this article? The reason is that it's everywhere. If you're on a Unix system, you have access to vi. This matters because if you're efficient in vi, you can quickly and effectively edit text on any system, even one you aren't used to. &lt;br /&gt;&lt;br /&gt;It's perfectly fine to focus on a different editor for daily use, but without some vi fundamentals under your belt, you're liable to end up lost and confused on an unfamiliar system.&lt;br /&gt;&lt;br /&gt;-Common Keybindings-&lt;br /&gt;Because vi has been around for so long and is so popular, lots of other programs copy some of its shortcut keys for similar functions. The next 52in09 post is actually going to be talking about one of the most common of these: less.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Modes&lt;/h3&gt;&lt;br /&gt;vi's modality is what throws off most new users. In Notepad and most other text editors, you're always able to input text. If there are shortcut keys to do anything special, they're usually activated by "chording" -- pressing a letter and CTRL or ALT (or another modifier key) at the same time. &lt;br /&gt;&lt;br /&gt;In vi, the special functions are often just single key presses, but the current mode of the program determines the result. In INSERT mode, for example, typing on the keyboard just inserts text like you'd expect. In NORMAL mode, on the other hand, all of the keys are mapped to other functions like navigation, cut/paste, deleting, etc.&lt;br /&gt;&lt;br /&gt;vi has several modes, but we'll only be mentioning three in this intro: NORMAL, INSERT, and VISUAL.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;vi Survival Kit&lt;/h3&gt;&lt;br /&gt;vi is an advanced and powerful text editor, which means it has thousands upon thousands of features and abilities. People who have been working with vi for decades still haven't mastered the whole editor.&lt;br /&gt;&lt;br /&gt;This shouldn't be cause for alarm, however. To be pretty handy at vi, you only need a small subset of features based on what you use the most. And to get off the ground initially, you only need a handful of commands (the ones I'm about to teach you, conveniently enough!).&lt;br /&gt;&lt;br /&gt;When you start the editor, you'll be in NORMAL mode. You can't enter new text from here, but this is where all the most used editing commands are. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;movement&lt;/h4&gt;&lt;br /&gt;To move around, use the 'h', 'j', 'k', and 'l' keys for left, down, up, and right, respectively. This is pretty awkward at first, but once you're used to it, it will feel natural. &lt;br /&gt;&lt;br /&gt;To help remember the mappings, think of it this way: 'h' and 'l' are on the far left and right sides of the group, so that's easy. 'j' dangles _down_ below the line, and 'k' stretches _up_ to the next line.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;INSERT mode&lt;/h4&gt;&lt;br /&gt;Press 'i' to enter INSERT mode. This is how you type new text. Press ESC to return to NORMAL mode for editing.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;deleting&lt;/h4&gt;&lt;br /&gt;In NORMAL mode, 'x' will delete a single character under the cursor. 'de' (that is, press and release 'd', then press and release 'e') will delete from the cursor to the end of the word, and 'dd' will delete the entire line your cursor is currently on.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;quitting and saving&lt;/h4&gt;&lt;br /&gt;At this point, you've got pretty much the same capabilities as Notepad. To quit vi, while in NORMAL mode type ':q' and hit 'ENTER'. If you've changed the file, vi will complain. ':wq' will save and then quit, or ':q!' will discard changes and quit.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;undo / redo&lt;/h4&gt;&lt;br /&gt;'u' in NORMAL mode will undo changes. CTRL-r will redo.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;copy (yank) / paste (put)&lt;/h4&gt;&lt;br /&gt;When you delete a line with 'dd', it is saved in a buffer. To insert that text somewhere else, type 'p' (vi's word for "paste" is "put"). If you want to copy some text without deleting it, you can "yank" it. 'v' will enter VISUAL mode, use the movement keys to highlight some text, then press 'y' to yank the text and return to NORMAL mode.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;searching&lt;/h4&gt;&lt;br /&gt;To search for text, type '/' while in NORMAL mode. The cursor will jump to the bottom of the screen, where you enter your search term and press "ENTER". To search for the next occurance of your term, press 'n'. To search backwards press 'N'.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;find/replace&lt;/h4&gt;&lt;br /&gt;If you need to make a lot of similar changes to a file all at once, use find and replace. In NORMAL mode, type ":s/old/new/g" to replace all instances of 'old' on a line with 'new'. If you'd like to do this for the whole file, type ":%s/old/new/g". &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;learning more about vi&lt;/h3&gt;&lt;br /&gt;At this point, you know enough vi to get by. Since I use a different editor for my day-to-day work, that's actually about all I know. If you've tried out some other editors and still feel most at home with vi, you'll want to start learning a lot more about how to use it effectively. Here are some resources:&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;vimtutor&lt;/h4&gt;&lt;br /&gt;If you're using Vim instead of vanilla vi (and if you aren't, you should be), running 'vimtutor' from the command line will give you a more thorough tutorial than this post, with opportunities to practice the commands as you learn them.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;vim website&lt;/h4&gt;&lt;br /&gt;http://www.vim.org/docs.php&lt;br /&gt;This page has links to a couple of books about Vim, as well as the official complete documentation.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Learning the vi and Vim Editors&lt;/h4&gt;&lt;br /&gt;http://oreilly.com/catalog/9780596529833/&lt;br /&gt;A great dead trees book, and it includes info on classic vi as well as Vim (why are you using old vi? What did I tell you about that?)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Picking an Editor&lt;/h3&gt;&lt;br /&gt;&lt;h4&gt;Find one you like and master it&lt;/h4&gt;&lt;br /&gt;vi is featured here because of its importance to Unix systems. Please don't take that as an endorsement of vi as the "best" text editor. The truth of the matter is that there is no such thing as a "best" editor. Everyone thinks a little differently, and editors are like any other tool: certain brands will fit a given user, and others won't.&lt;br /&gt;&lt;br /&gt;After you've learned enough vi to survive, I'd recommend checking out some other editors for a couple of weeks at a time, and find one that really thinks like you do. If you have a sysadmin who cares about your well-being, you should be able to convince them to install your favorite on the system you're using.&lt;br /&gt;&lt;br /&gt;The important thing to remember about editors isn't which one is best, it's that you need to pick a good one and get really comfortable with it. Since so much of the workday involves text, it is essential to your happiness that you are able to manipulate text with ease and power.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;other choices&lt;/h4&gt;&lt;br /&gt;-Vim-&lt;br /&gt;vi is very old, and there are lots of clones/improvements of it. Vim is the most popular of these. It offers much more power than basic vi, but it still retains the flavor and most of the keybindings of the original. If you enjoy working with vi, I strongly recommend upgrading to Vim and learning some of its more modern and powerful features.&lt;br /&gt;-Emacs-&lt;br /&gt;Emacs is considered by many to be the only other editor worth mentioning alongside vi, and there is a classic holy war about which one is superior. I personally am a big Emacs fan, and I use it for several hours daily. It really fits the way I think. After you check out vi for a while, I'd recommend spending a few weeks with Emacs to see if it's more your style.&lt;br /&gt;-Others-&lt;br /&gt;While Vim and Emacs are the big players today, there are still lots of other popular choices. TextMate is huge in the Mac community, but unfortunately it's only available for that platform.&lt;br /&gt;&lt;br /&gt;Pico (and its clone, nano) is a Notepad-esque basic editor that's good if you get hit in the head and can't remember how to use vi.&lt;br /&gt;&lt;br /&gt;gedit and Kate are good graphical editors for the GNOME and KDE Linux desktop environments.&lt;br /&gt;&lt;br /&gt;JOE is a solid choice if you tried Emacs and liked the idea, but it hurt your hands too much.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-6410706863987466991?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/6410706863987466991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=6410706863987466991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6410706863987466991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6410706863987466991'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/02/emergency-vi.html' title='Emergency vi'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-4654180747668439127</id><published>2009-02-03T19:07:00.000-08:00</published><updated>2009-02-04T07:31:26.441-08:00</updated><title type='text'>52in09 Week 3: bash builtins grab bag</title><content type='html'>&lt;h3&gt;Intro&lt;/h3&gt;&lt;br /&gt;The "shell" is what you use to interact with your computer. It's a layer the operating system provides so that humans can get things done without having to worry about low-level things like memory management and hardware control. In Unix, you have a choice of shells. This choice might be made for you by an administrator, or you may get to choose your own.&lt;br /&gt;&lt;br /&gt;One of the most popular Unix shells is 'bash'. It's the default for mainstream Linux distributions like Ubuntu, and it's what most people I know use. There are other shells that are just as good, but since bash is so common, it's probably the easiest to get help for. There are piles of literature about bash, so today I'll just be covering some of the basics.&lt;br /&gt;&lt;br /&gt;I mentioned in a previous post that the Unix philosophy encourages having a system composed of special-purpose utilities that do one thing well. It's hard to maintain this conceptual purity in the real world, and as it turns out, there are a few tasks that are difficult, slow, or impossible to do in a separate program. The shell handles these things for you.&lt;br /&gt;&lt;br /&gt;These operations are called 'builtins' because, well, they're built in. One of the things that differentiates shells is what builtins they provide. Some of the operations don't actually need to be a builtin; they could have been a separate utility, but for performance (or other) reasons they are included.&lt;br /&gt;&lt;br /&gt;My version of bash has 56 builtins, and they're all useful in their own way. Until you get into writing complicated shell scripts, though, there are only a few that you really need. We'll be talking about a handful of indispensible builtins today.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Moving around&lt;/h3&gt;&lt;br /&gt;&lt;code&gt;pwd&lt;/code&gt; stands for Print Working Directory. Type this to find out what directory your shell is currently looking at. Many default bash installations will default to displaying your working directory in the prompt, so I don't use this command all that often.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd &amp;lt;DIRNAME&amp;gt;&lt;/code&gt; (Change Directory) will change your working directory to &lt;code&gt;&amp;lt;DIRNAME&amp;gt;&lt;/code&gt;. Type it without any arguments to return to your home directory.&lt;br /&gt;&lt;br /&gt;Now here's a handy one. Once you get comfortable with &lt;code&gt;cd&lt;/code&gt; (which should hopefully take about 2 minutes), you'll probably start to wish for a faster way of getting around. &lt;code&gt;pushd&lt;/code&gt; and &lt;code&gt;popd&lt;/code&gt; give you the ability to save "shortcuts" to various locations.&lt;br /&gt;&lt;br /&gt;The most common use case goes like this: You're in a location &lt;code&gt;&amp;lt;OLD_LOC&amp;gt;&lt;/code&gt; and you want to &lt;code&gt;cd&lt;/code&gt; to &lt;code&gt;&amp;lt;NEW_LOC&amp;gt;&lt;/code&gt;, but you know you'll need to come back to &lt;code&gt;&amp;lt;OLD_LOC&amp;gt;&lt;/code&gt; soon. Like all good Unix users, you're incredibly lazy, and the thought of typing that whole path out makes you feel tired and cranky. Instead of typing &lt;code&gt;cd &amp;lt;NEW_LOC&amp;gt;&lt;/code&gt;, type &lt;code&gt;pushd &amp;lt;NEW_LOC&amp;gt;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Now you're in the new directory, but you've given yourself a secret escape route back to the original spot. Once you're done in &lt;code&gt;&amp;lt;NEW_LOC&amp;gt;&lt;/code&gt;, type &lt;code&gt;popd&lt;/code&gt; and you'll be magically warped back to &lt;code&gt;&amp;lt;OLD_LOC&amp;gt;&lt;/code&gt;. Simple!&lt;br /&gt;&lt;br /&gt;You can actually use &lt;code&gt;pushd&lt;/code&gt; several times in a row. Each time you use it, you add another directory to the stack of shortcuts. &lt;code&gt;popd&lt;/code&gt; will return you to directories in the order of most recently visited. If you forget where you've been, type &lt;code&gt;dirs&lt;/code&gt;. You'll get a list of directories on the stack, with the leftmost being your current position.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;echo&lt;/h3&gt;&lt;br /&gt;&lt;code&gt;echo &amp;lt;SOME_TEXT&amp;gt;&lt;/code&gt; just prints &lt;code&gt;&amp;lt;SOME_TEXT&amp;gt;&lt;/code&gt; to the screen. Whee. It's useful in shell scripting, though. Also, there's a neat trick you can do to edit a file without opening it up. &lt;code&gt;echo &amp;lt;SOME_TEXT&amp;gt; &amp;gt;&amp;gt; &amp;lt;FILENAME&amp;gt;&lt;/code&gt; will append &lt;code&gt;&amp;lt;SOME_TEXT&amp;gt;&lt;/code&gt; to the file named &lt;code&gt;&amp;lt;FILENAME&amp;gt;&lt;/code&gt;, or create it if it doesn't exist.&lt;br /&gt;&lt;br /&gt;Bash control characters and output redirection are beyond the scope of this post, but they're integral to quite a bit of Unix magic. Watch an experienced user for more than 5 minutes, and you'll probably see them do something sneaky with pipes or input/output control.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;job control&lt;/h3&gt;&lt;br /&gt;Unix was one of the first multitasking operating systems, and it remains very strong in that area today. My favorite way to run multiple programs at once is with &lt;a href="http://caseybrant.blogspot.com/2009/01/52in09-week-1-screen.html"&gt;screen&lt;/a&gt;, but a simpler method is to simply send a process to the background. If you're about to run something that you know will take a while, append the '&amp;' symbol to the command line and it will start in the background. It will run there until it is finished. The jargon for this technique is called "amping out" a process (from a shortening of "ampsersand").&lt;br /&gt;&lt;br /&gt;Type &lt;code&gt;fg&lt;/code&gt; at the command line to bring a background process back to the front. If you've got more than one thing running in the background, use &lt;code&gt;fg &amp;lt;NUM&amp;gt;&lt;/code&gt; where &lt;code&gt;&amp;lt;NUM&amp;gt;&lt;/code&gt; is the background process number.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;kill &amp;lt;NUM&amp;gt;&lt;/code&gt; will stop the operation of background process with number &lt;code&gt;&amp;lt;NUM&amp;gt;&lt;/code&gt;. Use this to stop runaway jobs that you can't find nicer ways to stop.&lt;br /&gt;&lt;br /&gt;There are lots of nifty keyboard shortcuts and other arcane job control commands. Some of them are builtins and others are separate utilities. About the only thing you can count on is that these operations will vary from place to place. Always make sure you have a local wizard nearby when messing around with job control.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Beyond builtins&lt;/h3&gt;&lt;br /&gt;Unix shells are highly "scriptable". This means that in addition to being your interface into the system, they're programming language interpreters. Bash has a full-featured and easy to learn (at least for the basics) language built into it. This doesn't really fit into the category of "builtins" and it's certainly way beyond the scope of 52in09, but this seemed like a good place to mention it. There are plenty of books and articles that are required reading for any serious intermediate to advanced Unix user.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;shopt&lt;/code&gt; stands for "shell option", and it's a builtin that lets you toggle various environment settings. You can dramatically alter the behavior of your shell with &lt;code&gt;shopt&lt;/code&gt;. There's a lot to it, and I only know the basics myself -- I might do a "customizing bash" post sometime in the future. If that wizard is still around from when you were playing with job control, ask them about what kind of &lt;code&gt;shopt&lt;/code&gt; settings they like.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;br /&gt;We've just scratched the surface here. There are several more builtins available, and they're all useful for something, even if it's not apparent what at first glance. This basic set should get you up and running though, and give you more of a taste for the power of the command line. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Additional Reading&lt;/h3&gt;&lt;br /&gt;Bash is an incredibly complex piece of software, but it's easy to be productive with just the basics. Once you're comfortable, though, you'll want to start seeing what other kinds of damage you can cause. The hallmark of a good Unix user is that they are always coming up with new ways to break things.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.gnu.org/software/bash/manual/bashref.html"&gt;Official Bash Reference Manual&lt;/a&gt; &lt;br /&gt;- &lt;a href="http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html"&gt;Bash Guide for Beginners &lt;/a&gt;&lt;br /&gt;- &lt;a href="http://oreilly.com/catalog/9780596009656/index.html"&gt;Learning the bash Shell &lt;/a&gt;&lt;br /&gt;- And of course, the man pages!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-4654180747668439127?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/4654180747668439127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=4654180747668439127' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/4654180747668439127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/4654180747668439127'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/02/52in09-week-3-bash-builtins-grab-bag.html' title='52in09 Week 3: bash builtins grab bag'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-2571527596591308476</id><published>2009-01-26T17:54:00.000-08:00</published><updated>2009-01-26T17:58:25.022-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='52in09'/><title type='text'>Totally Lame</title><content type='html'>I fail. I got sick over the weekend, and was still kinda groggy today, so the 52in09 post is delayed a couple of days. It'll be up tomorrow sometime, but it might not be the highest quality. I think I'm going to reserve the right to go back and edit these later to improve on the sucky parts.&lt;br /&gt;&lt;br /&gt;Also, I think I'll whip up a quick bonus post around Thursday-ish, partially as penance for missing the last deadline and partially because there's a topic I want to hit that's too big to squeeze into another topic but too small to warrant its own week.&lt;br /&gt;&lt;br /&gt;Anyway, that's the update. See ya tomorrow if I don't catch the plague again :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-2571527596591308476?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/2571527596591308476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=2571527596591308476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/2571527596591308476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/2571527596591308476'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/01/totally-lame.html' title='Totally Lame'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-6219830065071257623</id><published>2009-01-19T11:13:00.000-08:00</published><updated>2009-01-19T11:17:16.468-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='52in09'/><title type='text'>The Real Purpose of 52in09</title><content type='html'>Well, only two weeks into the challenge and I'm already changing the rules. I originally posted that the purpose of &lt;strong&gt;52in09&lt;/strong&gt; was to dig deeply into a set of 52 Unix commands and report on my findings. This would seem to imply that I'd be coming up with lots of crazy, obscure arcana about various utilities, maybe doing some source diving, and engaging in various and sundry wizardly hijinks.&lt;br /&gt;&lt;br /&gt;As it turns out, of the two writeups I've done so far, approximately exactly 21.8% follow this guideline. Yesterday's post wound up being more like a tutorial for new users than a deep dive into the inner workings of 'man', and the 'screen' writeup was sort of a mutant hybrid tutorial/tricks guide.&lt;br /&gt;&lt;br /&gt;Another revelation is that I really enjoyed writing both posts in different ways. So I guess what this means is that the true purpose of 52in09 is still kind of a mystery to me. Is it a Unix tutorial? A collection of nifty tricks? I don't really know yet.&lt;br /&gt;&lt;br /&gt;I do know that I'd like to eventually edit the whole set of posts so that they fit together in a more coherent way than just a pile of unrelated articles (in the olden days, they called this a "book"). But I don't think I'll really know what kind of book that's going to be until a few more months have passed.&lt;br /&gt;&lt;br /&gt;In the meantime, I hope you're enjoying the writeups, and I hope you'll bear with me as I flail about without a good grip on whatever it is I'm doing.&lt;br /&gt;&lt;br /&gt;Tune in next time as we ...do...something...or whatever! And things!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-6219830065071257623?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/6219830065071257623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=6219830065071257623' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6219830065071257623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/6219830065071257623'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/01/real-purpose-of-52in09.html' title='The Real Purpose of 52in09'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-2570561733681145080</id><published>2009-01-18T15:37:00.000-08:00</published><updated>2009-01-18T16:21:13.275-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='52in09'/><title type='text'>52in09 Week 2: man</title><content type='html'>&lt;h3&gt;Intro&lt;/h3&gt;&lt;br /&gt;Last week was a fun way to kick off the &lt;span style="font-weight:bold;"&gt;52in09&lt;/span&gt; series, but if the point is to introduce a basic set of Unix commands, &lt;span style="font-weight:bold;"&gt;'screen'&lt;/span&gt; is hardly the best place to start. Today we're going to get back to the basics and take a look at the first command any new Unix user should learn: &lt;span style="font-weight:bold;"&gt;man&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Unix systems come with an excellent set of manuals, and 'man' is the program that helps you read them. They are designed to be complete and authoritative; rare is the occasion that you have a problem with a command and can't find the answer in the man page.&lt;br /&gt;&lt;br /&gt;If man pages are so helpful, then why do Unix tutorials like this one even exist? It's because most of the time, man pages were written to be as terse as possible. Ultimately, this is a good thing: it means experienced users will be able to get the information they need right away. However, the terseness can leave new users a bit bewildered. So, things like 52in09 exist to point you in the right direction. Once you have some idea what to look for, the man pages will be a lot more useful.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;That's It?!&lt;/h3&gt;&lt;br /&gt;'man', like many Unix programs, is capable of more functionality than you'll usually need. The majority of the time, all you have to know is &lt;code&gt;man &amp;lt;TERM&amp;gt;&lt;/code&gt;, where &lt;code&gt;&amp;lt;TERM&amp;gt;&lt;/code&gt; is the name of what you'd like to look up. This pulls up the first page man can find on that topic.&lt;br /&gt;&lt;br /&gt;The man page will open up inside a program called a "pager", usually 'less' or 'more', for easier reading. I'll talk more about pagers in a future post. For now, all you need to know is that the arrow keys will move around the page, and &lt;code&gt;'q'&lt;/code&gt; will get you back to the command line.&lt;br /&gt;&lt;br /&gt;Most of the information presented to you by man is self-explanatory. Note that the manuals encompass more than just commands (there are also man pages for configuration files, for example), so the layout of all pages will not be exactly the same -- sections will be absent or present as appropriate. In general, though, the look of the manuals is consistent, so you'll be comfortable once you've seen two or three.&lt;br /&gt;&lt;br /&gt;The SYNOPSIS is usually near the top. This section shows the various ways you can string together the options for that command. This part can get pretty indimidating (at least it was for me) if there are a lot of options, but after you've muddled through the arcane syntax a few times, it will make perfect sense.&lt;br /&gt;&lt;br /&gt;The DESCRIPTION section is the meat of most man pages. Here, you'll find out everything there is to know about different ways you can use a given command.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;apropos and whatis&lt;/h3&gt;&lt;br /&gt;There are lots of command line options and configuration settings that you can use with 'man', but most of them can be safely ignored unless you run into a bizarre problem. Of the ones you should know, &lt;code&gt;man -k &amp;lt;TERM&amp;gt;&lt;/code&gt; is the most useful. If you don't know the exact name of the utility you need, use &lt;code&gt;man -k &amp;lt;TERM&amp;gt;&lt;/code&gt; to search through the manuals for &lt;code&gt;&amp;lt;TERM&amp;gt;&lt;/code&gt;. You'll get a nice list of all the matches, along with a brief description of each one. If a result looks promising, just open up its man page to read more.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;man -f &amp;lt;TERM&amp;gt;&lt;/code&gt; is the other option I frequently use. This will give you a brief description of &lt;code&gt;&amp;lt;TERM&amp;gt;&lt;/code&gt;, if there is a manual for it. This is faster than opening up the whole man page, and it's also a good way to see if &lt;code&gt;&amp;lt;TERM&amp;gt;&lt;/code&gt; has more than one man page associated with it. If so, &lt;code&gt;man -s &amp;lt;SECTION_NUM&amp;gt; &amp;lt;TERM&amp;gt;&lt;/code&gt; will open up the page for &lt;code&gt;&amp;lt;TERM&amp;gt;&lt;/code&gt; in section &lt;code&gt;&amp;lt;SECTION_NUM&amp;gt;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;code&gt;-k&lt;/code&gt; and &lt;code&gt;-f&lt;/code&gt; flags are useful, but it's easy to forget which is which. &lt;code&gt;apropos&lt;/code&gt; and &lt;code&gt;whatis&lt;/code&gt;, respectively, will perform essentially the same function as those flags, and are easier to remember.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;'man man' and the Road to Enlightenment&lt;/h3&gt;&lt;br /&gt;It's funny, but it took me a few weeks as a Unix beginner before I thought to try running &lt;code&gt;man man&lt;/code&gt; at the command line. I'm assuming that most people aren't as slow as I am, but just in case, I'm giving you the spoiler right here. This zen-like command is your ticket to the beginnings of Unix mastery. Understand 'man', and you have the ability to learn almost anything about your system.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;'man -a intro'&lt;/h3&gt;&lt;br /&gt;If you've got some free time and want a great overview of basically your whole system, run &lt;code&gt;man -a intro&lt;/code&gt;. This will take you on a whirlwind tour of several introductory pages. At the end of each page, hit &lt;code&gt;'q'&lt;/code&gt; and you'll be shown a menu. Go through the whole set of 'intro' man pages, and you'll be one step closer to guru-ship. (NOTE: I run Ubuntu Linux, and I'm not sure if the 'intro' man pages are available on all flavors of Unix or not.)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Problem With 'man'&lt;/h3&gt;&lt;br /&gt;One of the best things about Unix is that, typically, each program is small and specialized. This means that it's not too hard to master any given tool. What's difficult about mastering Unix isn't learning individual commands; it's learning how to use them together.&lt;br /&gt;&lt;br /&gt;There are two parts to the Unix way of doing things. The first is to have a kit full of special-purpose tools. The second is to be creative about the way you use those tools, and to find powerful ways to combine them in order to accomplish difficult tasks.&lt;br /&gt;&lt;br /&gt;The weakness of 'man' is that it can only tell you about a single tool at a time. Mastery of the tool kit is only half (the easier half, unfortunately) of effective Unix usership. Only experience will provide the second half.&lt;br /&gt;&lt;br /&gt;Actually, this is what's really beautiful about Unix. While the&lt;br /&gt;learning curve is much easier on graphical systems like Windows, once you learn it, you're done; that's all there is. With the powerful command line of Unix, there is no "done". There are wizards who have been using Unix since it was invented, and they're still creating new ways of doing things all the time.&lt;br /&gt;&lt;br /&gt;Anyway, enough philosophy. Thanks for tuning in this week! As always, please leave some comments with your own tips, suggestions for future posts, errata, or what have you. See ya next week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-2570561733681145080?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/2570561733681145080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=2570561733681145080' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/2570561733681145080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/2570561733681145080'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/01/52in09-week-2-man.html' title='52in09 Week 2: man'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-754049609226621921</id><published>2009-01-11T16:35:00.000-08:00</published><updated>2009-01-12T07:32:12.742-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='52in09'/><title type='text'>52in09 Week 1: screen</title><content type='html'>&lt;h3&gt;Intro&lt;/h3&gt;&lt;br /&gt;Screen is one of the most useful Unix programs out there, so it seemed like a good way to kick off the &lt;span style="font-weight:bold;"&gt;52in09&lt;/span&gt; challenge. If you're just starting to learn Unix, you should try to get some of the basics down first, but &lt;span style="font-weight:bold;"&gt;screen&lt;/span&gt; can be one of the first commands you learn once you're comfortable at the command line. I guarantee that once you become familiar with screen, you'll forget how you lived without it.&lt;br /&gt;&lt;br /&gt;Screen is described by its designers as a "terminal multiplexer." This is a geeky way of saying it makes it easier to do lots of things at once. Since its creation, however, screen has gained some abilities that go beyond just multitasking. The three reasons I like screen so much are that it can &lt;span style="font-weight:bold;"&gt;(1)&lt;/span&gt;separate processes from the originating shell, &lt;span style="font-weight:bold;"&gt;(2)&lt;/span&gt;provide a really effective way to multitask, and &lt;span style="font-weight:bold;"&gt;(3)&lt;/span&gt;provide an easy way to share sessions with other users.&lt;br /&gt;&lt;br /&gt;Points 2 and 3 are kind of self-explanatory, but if you aren't familiar with screen, the implications of point 1 might be unclear. What I mean by separating a process from its origin is that with screen, you can start an interactive program like a text editor, completely log off the system, remote log in from a different client, and be able to pick up right where you left off. This is much more powerful than remote login by itself, because you can keep one "session" going basically forever, no matter where you are.&lt;br /&gt;&lt;br /&gt;As an example, I use AOL Instant Messenger for all of my IM conversations. I like to leave it running all the time in case someone wants to leave me a message while I'm out. I also like to go to a nearby coffee shop to work on things. Until I found out about &lt;span style="font-weight:bold;"&gt;screen&lt;/span&gt;, I either had to sign off my home computer before I left or risk missing a message in transit. Now, I run a text-based AIM client in a screen session, and I can log in from anywhere and see what's happened while I was gone! That's kind of a silly example, but I'm sure you can come up with some cases where that kind of functionality would be a real boon to your own computing.&lt;br /&gt;&lt;br /&gt;Well, enough exposition. What follows is intended as a tutorial of screen for the new user. It doesn't function very well as a reference, but that's what the man pages are for! So without further ado...&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Basics - An Overly Verbose Screen Tutorial&lt;/h3&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Start screen&lt;/span&gt;&lt;br /&gt;Type &lt;code&gt;screen&lt;/code&gt; to start a new session. You'll see a splash screen telling you what's going on; hit &lt;code&gt;&amp;lt;return&amp;gt;&lt;/code&gt; to clear it, and you're back to a shell prompt. Treat this just like a regular shell and do your work. If you get to the point where it would be nice to have more than one program running at once, you'll want to...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Make a new window&lt;/span&gt;&lt;br /&gt;All screen commands are prefixed by the control character, &lt;code&gt;Ctrl+a&lt;/code&gt; by default. Type &lt;code&gt;C-a c&lt;/code&gt; (that means to press &lt;code&gt;Ctrl+a&lt;/code&gt;, let go, then press &lt;code&gt;'c'&lt;/code&gt;. That's the notation I'll use from now on) to create a new window. Now you have two shells running inside the single screen session, and they can be doing different things. To get back to the other one, you'll want to be able to...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Navigate&lt;/span&gt;&lt;br /&gt;&lt;code&gt;C-a n&lt;/code&gt; and &lt;code&gt;C-a p&lt;/code&gt; go to the "next" and "previous" windows in your session. &lt;code&gt;C-a "&lt;/code&gt; will give you a menu of current windows (use the arrow keys and &lt;code&gt;&amp;lt;enter&amp;gt;&lt;/code&gt; to pick the one you want). &lt;code&gt;C-a &amp;lt;NUM&amp;gt;&lt;/code&gt;, where &lt;code&gt;&amp;lt;NUM&amp;gt;&lt;/code&gt; is a numeral 0-9, will take you to the window with that number. If you have more than 10 things going at once, you're kidding yourself about your ability to multitask. But if you insist, &lt;code&gt;C-a '&lt;/code&gt; will give you a prompt where you can type any number or window name and switch to it. Speaking of that, make sure you are utilizing...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Window Names&lt;/span&gt;&lt;br /&gt;On my screen install, every new window I make gets called "bash" by default. Not helpful. Press &lt;code&gt;C-a A&lt;/code&gt; (that has to be a capital &lt;code&gt;'A'&lt;/code&gt;) to get a prompt for naming. I usually type in whatever I intend to run in that window. This also makes &lt;code&gt;C-a "&lt;/code&gt; a whole lot more useful. By this point, you might be getting a little confused. The most important thing to remember is...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Online Help&lt;/span&gt;&lt;br /&gt;&lt;code&gt;C-a ?&lt;/code&gt; will get you a handy list of commands. It doesn't have definitions or anything like that, but it will usually jog your memory enough that you know what you need to search for in the man page. If you're done with a task and don't have any further use for the window it was in, you should probably...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Kill Window&lt;/span&gt;&lt;br /&gt;&lt;code&gt;C-a k&lt;/code&gt; will remove a window from your session. I like to keep a very small number of windows running at once, so I use this a lot. You certainly don't have to, of course. Screen can handle a huge number of windows in any session, so the limitation is just what your mind can keep track of. After you've done some work and are ready to log off, you'll want to...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Detach from session&lt;/span&gt;&lt;br /&gt;&lt;code&gt;C-a d&lt;/code&gt; detaches from the current screen session. This is the real power of screen: If you're running a window manager, you can go ahead and close the terminal window; your session is still alive. You can even log totally off the system, and it still survives. As long as you don't power off the box that's running your screen session, you'll be able to pick up right where you left off any time in the future from any location with...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Reattach to session&lt;/span&gt;&lt;br /&gt;When you're not inside screen, you can type &lt;code&gt;screen -ls&lt;/code&gt; to see what sessions are running. Type &lt;code&gt;screen -r &amp;lt;SES_NAME&amp;gt;&lt;/code&gt; (where &lt;code&gt;&amp;lt;SES_NAME&amp;gt;&lt;/code&gt; is the name of the session you want) to jump back into that screen session. If you're still attached to that session somewhere else (say you forgot to log off back at work and now you're home), &lt;code&gt;screen -x&lt;/code&gt; will do the trick. That will get you two simultaneous connections. That's only with the same user account, however. There are a couple of extra steps to take care of before we can have...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Multiuser sessions&lt;/span&gt;&lt;br /&gt;Screen is a great way to engage in remote collaboration on a project or give a demo of something. For security reasons, you can't do this by default, so you'll need to enable it. Try to convince your admin to run &lt;code&gt;chmod +s /usr/bin/screen&lt;/code&gt; at some point (this only needs to happen once) before you start your session. Once the session is up, type &lt;code&gt;C-a :multiuser on&lt;/code&gt; to get started. Figure out who will be joining your session and type &lt;code&gt;C-a :acladd &amp;lt;USER1,USER2,ETC.&amp;gt;&lt;/code&gt; where &lt;code&gt;&amp;lt;USER1,USER2,ETC.&amp;gt;&lt;/code&gt; is a comma-separated list of the usernames who will be connecting. Note that these need to be users on the system; you don't get to assign nicknames or anything like that. There are lots of permissions to be set here as well. Check out the &lt;code&gt;aclchg&lt;/code&gt; portion of the man page for more info. It's a little tricky at first.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Join the multiuser session&lt;/span&gt;&lt;br /&gt;If you're trying to join a session, first log on to the same system as the screen host. &lt;code&gt;screen -ls&lt;/code&gt; is probably not going to give you a lot of information, since it only displays your own sessions, so you'll need to have your host tell you the name of the session you'll be joining. If they ran &lt;code&gt;screen -S &amp;lt;SESSION_NAME&amp;gt;&lt;/code&gt; instead of vanilla &lt;code&gt;screen&lt;/code&gt;, it might be easier. Type &lt;code&gt;screen -x USER_NAME/&amp;lt;SESSION_NAME&amp;gt;&lt;/code&gt; and you're in! If you want to catch up on what's already happened, you may be interested in the...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Copy/Scrollback Mode&lt;/span&gt;&lt;br /&gt;&lt;code&gt;C-a [&lt;/code&gt; will start up the scrollback buffer. Using the "vi keys" (&lt;code&gt;h&lt;/code&gt;=left, &lt;code&gt;j&lt;/code&gt;=down, &lt;code&gt;k&lt;/code&gt;=up, &lt;code&gt;l&lt;/code&gt;=right) you can scroll around in any screen window. This mode also lets you copy regions of text to a clipboard. &lt;code&gt;Spacebar&lt;/code&gt; will open up a copy region; move to the end of the region you want and hit &lt;code&gt;&amp;lt;spc&amp;gt;&lt;/code&gt; again, and screen will put that text into a buffer. &lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt; will get you out of the copy buffer, and &lt;code&gt;C-a ]&lt;/code&gt; will paste the text into the regular screen window. Check out the copy mode part of the man page, as it can do a lot more than what I just mentioned here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Screen split&lt;/span&gt;&lt;br /&gt;If you're the kind of person who likes to have a lot of stuff going on, you may start to feel limited by having to look at only one screen window at once. &lt;code&gt;C-a S&lt;/code&gt; splits the window in two (or three, four, etc.) and &lt;code&gt;C-a &amp;lt;TAB&amp;gt;&lt;/code&gt; moves around between open splits. &lt;code&gt;C-a X&lt;/code&gt; closes the split your cursor's in, and &lt;code&gt;C-a Q&lt;/code&gt; closes every split except the one your cursor's in.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Screen config file&lt;/span&gt;&lt;br /&gt;At this point, we've covered all of the basics you need to get started with screen, as well as a couple of slightly more advanced features. By now you're ready to tackle the man page and learn the rest of the powerful features screen is capable of. &lt;br /&gt;&lt;br /&gt;There's one last thing I'll leave you with. Like many Unix programs, screen makes use of a .rc file in your home folder (&lt;code&gt;.screenrc&lt;/code&gt;, surprisingly enough) to customize settings. If you run &lt;code&gt;cp /etc/screenrc ~/.screenrc&lt;/code&gt; you'll get a nice starter file. Here are the extra customizations I've added in my own .screenrc (just enter each of these into the file on its own line):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;nethack on&lt;/code&gt;  -&amp;gt; Makes all of the screen info messages silly.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;defscrollback 5000&lt;/code&gt; -&amp;gt; Increases the amount of information screen will store for the scrollback buffer.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;hardstatus alwayslastline&lt;/code&gt; -&amp;gt; Gives you a highly customizable permanent status bar on the last line of your terminal.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;hardstatus string "%{= kG}[ %n %t ] %u"&lt;/code&gt;   -&amp;gt;  The status line formatting language is pretty arcane, but this one just displays the name and number of whatever window I'm currently looking at, followed by a list of other users connected to my session.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;br /&gt;If you want to learn more about screen, your best bet is the man page. Screen's manual is very well written and thorough, but if you can't find what you want there, just Google for it; since screen is so awesome, there are loads of articles out there.&lt;br /&gt;&lt;br /&gt;That's it for the first week of &lt;span style="font-weight:bold;"&gt;52in09&lt;/span&gt;! Thanks for reading, and make sure to come back next week for more Unix command goodness. Please leave comments on this post to tell me what you'd like to see me do differently or what's working well. And of course any screen questions are welcome too!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-754049609226621921?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/754049609226621921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=754049609226621921' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/754049609226621921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/754049609226621921'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/01/52in09-week-1-screen.html' title='52in09 Week 1: screen'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-3097698296467339574</id><published>2009-01-06T18:29:00.000-08:00</published><updated>2009-01-06T18:31:23.378-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='52in09'/><title type='text'>52 in '09</title><content type='html'>In an effort to get myself blogging more often, I've devised the following challenge: Learn as much as possible about one Unix command every week in 2009, and report on what I find.&lt;br /&gt;&lt;br /&gt;I'm not limiting it to less common ones, either. Even absolute basics are up for consideration, since most of them have extra options that do cool stuff I don't know about yet.&lt;br /&gt;&lt;br /&gt;My goal is to post a report each Sunday on what I learned that week, then pick next week's command. First week is 'screen'.&lt;br /&gt;&lt;br /&gt;Feel free to drop suggestions for what to learn in the comments, and also share any nifty tidbits that I missed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-3097698296467339574?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/3097698296467339574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=3097698296467339574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/3097698296467339574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/3097698296467339574'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2009/01/52-in-09.html' title='52 in &apos;09'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-9007247489004325977</id><published>2008-12-19T19:24:00.000-08:00</published><updated>2008-12-19T19:39:47.537-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>Evangelism</title><content type='html'>I recently gave a talk at work extolling the virtues of the text editor Emacs. If you've talked to me for more than like 40 minutes, you probably know what a huge Emacs fan I am. I'm not going to get into any of the details of the talk here (like how awesome Emacs is, how much happier you'll be using it, how much fuller and more beautiful your beard will become, how others will envy your newfound charm and charisma, etc. etc.); that's not the point of this post. My presentation met with a pretty lukewarm reception, and I want to get into why, and how to fix it. I want to talk about successful evangelism.&lt;br /&gt;&lt;br /&gt;A training class I'm in right now for work just finished up its first week, and the instructors are fantastic. They know the material cold, and they're enthusiastic about it. They're so enthusiastic, in fact, that I'm getting caught up in it. I now want to do things the way they do them -- we're starting lab exercises, and I'm pumped about trying out the techniques we discussed earlier in the week.&lt;br /&gt;&lt;br /&gt;What was it that got me so excited in that class? I don't really know, to be honest. But I'm hoping that by exploring the topic a little, I can get closer to understanding. &lt;br /&gt;&lt;br /&gt;First of all, the instructors have infectious enthusiasm. They clearly love what they're talking about, and they fully believe in it. I'm not one of those sentimental types who thinks you can't fake stuff like that, but if these guys are faking, they're the some of the best actors I've ever seen. &lt;br /&gt;&lt;br /&gt;I feel like I nailed the enthusiasm in my Emacs presentation. I'm not the most animated or outspoken of guys, so maybe it just didn't come across, but I want to believe that there are other forces at play here. You can't just have the enthusiasm by itself -- otherwise, why is this class going so well and my talk didn't?&lt;br /&gt;&lt;br /&gt;Good information is another thing my instructors are getting just right. It's pretty hard to consistently win over intelligent people with just feelings. Advertising works, so obviously emotion-based tactics aren't useless, but advertising is also highly hit or miss. There's no telling in advance what will make a successful ad campaign. I get the feeling that my instructors are used to winning a lot of people over on a regular basis -- they're doing more than just advertising: they're also informing. I'm excited about the stuff we're discussing in class not only because somebody told me it's awesome, but because somebody gave me tons of data on the subject and made me understand it. I extrapolated the ways in which it's awesome mostly on my own.&lt;br /&gt;&lt;br /&gt;Again, I could very well be deluding myself, but I really thought I had good information in my Emacs talk. I took a lot of time to pick out bits that I thought would be relevant to my audience, and I did my best to present that information in a clear manner.&lt;br /&gt;&lt;br /&gt;Am I just easy to persuade and other people are just hard to persuade? Was it the problem domain? Certain problems are easier to sell solutions to than others. The proliferation of diet books versus, say, well, any other kind of book illustrates this. But while I think subject may have been a contributing factor, I'm sure it was at most a small one.&lt;br /&gt;&lt;br /&gt;Ultimately, I think it might just boil down to experience. My instructors are seasoned teachers, and they've taught this same course several times in the past. Every time they teach, they improve just a little bit by observing what works and what doesn't. Same thing for the class itself: they've cut/reworked the bad parts and refined the good. &lt;br /&gt;&lt;br /&gt;"Practice makes perfect" is an unsatisfying conclusion to draw from all of this, partially because it's such a cliched maxim, but mainly because it means the path to better presentations of my own is long and difficult -- rather than just consisting of a few cheap tricks and presto! people are clamoring for Emacs. I'd like to revisit this topic at some point. There is a lot of information out there on how to practice skills like speaking and teaching, and it could do with some sorting and distilling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-9007247489004325977?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/9007247489004325977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=9007247489004325977' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/9007247489004325977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/9007247489004325977'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2008/12/evangelism.html' title='Evangelism'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8108828884827777995.post-8169189055427773730</id><published>2008-11-08T18:37:00.000-08:00</published><updated>2008-11-08T18:43:53.717-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sneak peek'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='writing'/><title type='text'>Hey Look - Another Blog.</title><content type='html'>I'm jumping on the train and making a blog. Yeah, I realize that I'm about 4 years late for it to count as being in step with a trend. And with sites like Wired posting articles about &lt;a href="http://www.wired.com/entertainment/theweb/magazine/16-11/st_essay"&gt;the end of the blog&lt;/a&gt;, maybe it's downright silly to be starting one now.&lt;br /&gt;&lt;br /&gt;Obviously, I don't agree with Wired, or you wouldn't be reading this right now. So why AM I starting my own blog? It's not to Make My Voice Heard(TM), the reason many bloggers have. Honestly, most of the opinions I have about any given issue have already been expressed by someone else, usually with a lot more style and insight than I'm capable of. Actually, I think I might have a post coming up about that very topic (ooh, sneak peek!).&lt;br /&gt;&lt;br /&gt;I'm starting this blog as a sort of training area. I asked an English major friend of mine a while back what the best way to get into writing is; he responded that, like most skills, the only sure way to improve is to practice regularly. He described a few options for how to go about practicing, and recommended blogging as one of the best choices. &lt;br /&gt;&lt;br /&gt;It's pretty obvious that you have to practice to get good, but for some reason I never thought of it like that before. I always thought of writing the same way I used to think of drawing: that it's some magical skill that you either have or you don't, and if you don't -- well, too bad. Of course, that's not true for either of those skills (sneak peek #2: possible Drawing post coming up!); although there are rare cases of individuals born with great natural talent, most of the time, someone is good at writing because he or she spends a lot of time doing it. Like I said: totally obvious; I don't know why I didn't realize that on my own.&lt;br /&gt;&lt;br /&gt;Why do I want to get into writing? Besides the fact that I think it's kinda fun, I'm interested in the potential for mental development. Now that I'm not in school any more, I'm starting to feel my brain go squishy. My day job doesn't really provide the type of cerebral challenge I became used to in college, nor do most of my hobbies. The ways in which writing can sharpen mental acuity have been described by many others more qualified to lead that discussion, so I'll save my own thoughts on the matter until I actually have some results to talk about. For now, I'll trust that writing on a regular basis will in fact provide said benefits, and instead of worrying about the psychology, I'll just go ahead and try it.&lt;br /&gt;&lt;br /&gt;So, essentially, I'm starting this blog to practice my writing skills, which I am doing in turn to develop my brain. That's it, really. But with any luck I'll wind up having something at least marginally interesting to say along the way. Hey, it's a blog; there are comments. You can tell me if it's any good or not.&lt;br /&gt;&lt;br /&gt;Real content coming up this week sometime. That's the plan, at least.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8108828884827777995-8169189055427773730?l=caseybrant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://caseybrant.blogspot.com/feeds/8169189055427773730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8108828884827777995&amp;postID=8169189055427773730' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/8169189055427773730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8108828884827777995/posts/default/8169189055427773730'/><link rel='alternate' type='text/html' href='http://caseybrant.blogspot.com/2008/11/hey-look-another-blog.html' title='Hey Look - Another Blog.'/><author><name>cjb</name><uri>http://www.blogger.com/profile/04340174770807701205</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
