A while back, I lamented all the difficulties involved in establishing a paperless seminary workflow. Lots of people chime in, but in the end we didn't locate an ideal way to do the main task: mark up PDFs (with highlighting, marginalia, etc.). During that process (though not on the comments--perhaps via Twitter?), someone told me about Marqed.com, and online service that provides tools for doing most of the things we had discussed. To my great frustration, however, it was really buggy (perhaps just on my system--Firefox 3.0.17 on Ubuntu 9.04).
However, highlighting at least seems finally to be working well enough to make this a legit go-to tool for now. You get ten PDF uploads per month with the free version, or you can upgrade to unlimited. (The paid account allows you to upload MS Office documents as well, though don't ask me why you'd want to involve a Web tool to edit a document that can already be marked up natively. Maybe for read-only files?) Of course, I'm not wild about being dependent an Internet connection in order to view my files, but all our classrooms here at VTS have Wi-Fi, so I guess I can deal with this for now. Anyway, I feel like I can finally recommend it. Check it out at www.marqed.com.
In other news, we got some beautiful snow last night here in Northern Virginia. I posted a few quick pictures to Facebook here.
03 February 2010
On the Marq, Finally
Posted by
Kyle Matthew Oliver
at
8:08 AM
1 comments
Labels: Alexandria, Reading, Seminary, The Hacker Within
29 September 2009
The Ongoing Pursuit of a Paperless Seminary Reading Workflow
In seminary, we read a lot. Like, probably more than we do anything else--including playing intramural sports (a surprising but deeply rewarding time sink), praying (though we've received tremendous support in this respect), sleeping (at least it feels that way), and complaining (a necessary thing sometimes, let me tell you).
And--as any humanities major knows but us engineering students are always too busy with problem sets to notice--retaining even a small fraction of that reading is a matter of no small challenge or importance. The old middle school "reading notes" model is an almost laughable prospect due to the shear number of pages we're talking about here. The highlighter, I've been told, is my friend. I have come to agree whole-heartedly.
However, because this school thankfully realizes that part of being good stewards of God's creation is to learn to use less paper (and because--let's be honest--who reads paper copies of anything these days, except maybe for actual books?), I find myself with a quandry: how do you highlight PDFs?
You may know that this is a maddeningly difficult question to answer. Trying to do so may be the one thing I'm spending more time on than the actual reading. The problem, as I see it, is that it's impossible to justify spending the money on programs like Adobe Acrobat or Foxit Editor when all you want to do is highlight some text in any damn document you please. I'm not an expert in digital copyright or fair use, but I really don't think this is too much to ask.
In a move we're apparently supposed to interpret as magnanimous, Adobe now allows Reader users (people like me who aren't willing to pay for Acrobat) to do some basic markup on files with "document rights...enabled." The problem--and surely the people at Adobe know this--is that I have never, ever, been given a PDF course reading with document rights enabled. Again, some of this may be a matter of legitimate intellectual property concern. But if these files are being used for educational use (and clearly that's why my professors are allowed to distribute them as PDFs via course management software in the first place), it seems like merely applying a "highlight filter" to a local copy of the document ought to be fair game. Am I off base here?
Anyway, enough complaining...let me tell you what I've converged to and then put out a plea for anyone who finds this post and has a better solution to please help me out. After playing quite a bit with PDFedit and finding it summarily difficult to use (or maybe the Ubuntu distribution is just buggy?), I've settled on the more user friendly but still unsatistfactory flpsed. Basically, this program lets you do text annotation. As you can see in the screenshot below, the text manages to remain persistent even if you view the re-converted PDF in a program like Evince, which is handy. But this workflow still requires a lot of typing, when all I really want to be able to do is highlight. I'm encouraged by early experiments with Scribus, but I'm still fighting the learning curve.
Am I overlooking a simpler free (or cheap) solution? It wouldn't be the first time. If so, please enlighten me. Is anyone else as perplexed as I am about this stunning lack of obviously useful functionality?
Posted by
Kyle Matthew Oliver
at
7:53 AM
7
comments
Labels: Adobe, Reading, Seminary, Software, The Hacker Within
06 May 2009
More Funny Found Science
Man, colloquia abstracts are a seemingly endless source of buried jokes. Check out the grad student dig in the following summary of a talk on using machine learning to study human and animal learning:
Machine learning studies the principles governing all learning systems. Human beings and animals are learning systems too, and can be explored using the same mathematical tools. This approach has been fruitful in the last few decades with standard tools such as reinforcement learning, artificial neural networks, and non-parametric Bayesian statistics. We bring the approach one step further with some latest tools in machine learning, and uncover new quantitative findings. In this talk, I will present three examples: (1) Human semi-supervised learning. Consider a child learning animal names. Dad occasionally points to an animal and says "Dog!" (labeled data). But mostly the child observes the world by herself without explicit feedback (unlabeled data). We show that humans learn from both labeled and unlabeled data, and that a simple Gaussian Mixture Model trained using the EM algorithm provides a nice fit to human behaviors. (2) Human active learning. The child may ask "What's that?", i.e. actively selecting items to query the target labels. We show that humans are able to perform good active learning, achieving fast exponential error convergence as predicted by machine learning theory. In contrast, when passively given i.i.d. training data humans learn much slower (polynomial convergence), also predicted by learning theory. (3) Monkey online learning. Rhesus monkeys can learn a "target concept", in the form of a certain shape or color. What if the target concept keeps changing? Adversarial online learning model provides a polynomial mistake bound. Although monkeys perform worse than theory, anecdotal evidence suggests that they follow the concepts better than some graduate students. Finally, I will speculate on a few lessons learned in order to create better machine learning algorithms. (Source, but ultimately via Eric Howell on the Hacker Within mailing list.)
No exactly stand-up material, but I love that the guy was playful enough to put it in the abstract. I guess I shouldn't be surprised, though, given what I found on this project's spring 2009 schedule page. We actually had that same xkcd hanging in our office for a while.
Posted by
Kyle Matthew Oliver
at
10:19 AM
0
comments
Labels: Jokes, Machine Learning, The Hacker Within
05 May 2009
THW on the Radio
A couple weeks back, The Hacker Within's fearless leader Milad Fatenejad and I did an interview with Matthew McCormick of Hacker Public Radio. I got notification today that it recently went live. Aside from having to suppress the occasional wince at my usual longwindedness, I had fun re-listening and think it turned out pretty well. If you're interested in programming/computing or would just like to hear about what we're up to and why, you can check out the interview here (I had to download it). Thanks very much to Matt for his help as we continue to try to get the word out about the organization and its work.
Posted by
Kyle Matthew Oliver
at
10:55 AM
0
comments
Labels: The Hacker Within
11 April 2009
Another Sweet Google Tool
Three events recently converged to respark my interest in a little mini-project I tried to do some time ago:
(1) At yesterday's Python subgroup meeting of The Hacker Within, our resident Pythonista got me all excited about developing easy web applications in that language. I write a lot of Python for pre- and post-processing of nuclear fuel cycle systems data, but I've never done any web-related Python work except for fixing a bug or two in some Trac instances. Nico got me pumped about the prospect.
(2) I started helping the Diocese of Milwaukee with their new Website, for which we're using Google Sites in an attempt to improve the ease of collaboration and maintenance. I think Google Sites is pretty terrific, but it does have some limitations, and I'm interested in identifying some Google-compatible solutions. The Python-based Google App Engine seems like a promising direction.
(3) My friend Ryan re-activated pangramaday, which I've mentioned here before and is now available via Twitter (@pangramaday).
As it did during my short-lived interest in learning to develop Java Applets, the pangramist's quandary motivated a little mini-project a few steps more complex than Hello, World! and perfect for learning a new set of interfaces. And this time I can actually publish the result (such as it is), because the Google App Engine framework is just so frickin' easy to use.
So if for pangram-, crossword- or Wheel-of-Fortune-related purposes you ever need a list of words that all contain some given collection of letters, look no further than pangramhelper. It's currently both ugly and slow, but if my interest in learning these APIs doesn't wane too much, that may change.
It's actually kind of fun to enter random (or not so random--can you tell I'm getting ready for the Easter Vigil?) letters and see what you get:
You wrote:
Christos anesti
We found:
anchorites
characterizations
chlorinates
cinematographers
interscholastic
orchestrating
orchestration
orchestrations
overenthusiastic
rhetoricians
stenographic
theoreticians
thermodynamics
It only took a few hours and about a hundred lines of Python (and most of those are just longhand HTML inside of function calls). Seriously, check out the App Engine.
Posted by
Kyle Matthew Oliver
at
2:54 PM
0
comments
Labels: Pangrams, Python, The Hacker Within, Web Frameworks, Websites
18 February 2009
Another Bootcamp
For those interested in computing, The Hacker Within will be doing our second bootcamp of the semester in a few weeks. See below for details (flyer by Katy Huff, our talented Director of Creative Affairs):
Posted by
Kyle Matthew Oliver
at
9:28 AM
0
comments
Labels: The Hacker Within
09 February 2009
The Difference Is Maintainability
So I write a lot of Python, and one of the claims promoters of the language usually make is that it helps you write more maintainable code. I think they're right in that claim, and I think they're right to stress the centrality of the issue.
We've discovered over the years at St. Francis House (and in my research group, for that matter, and at Wisconsin Engineer, if I remember correctly) that maintainability is also essential--and difficult--on the Web (of course, this is really just another kind of source-code-maintenance problem). In a high turnover organization, it's especially hard to cultivate a continuous Web presence.
Say what you will about the low-powered solution offered by Google Sites, I think they're on to something, and I'm super-excited that we've ported the St. Francis House website over to this system. Sure, I wish it were a little more flexible and powerful. But I think you'll agree that it lets you construct reasonably attractive and well organized sites (nearby St. Andrew's uses the system as well), and I can attest to the relative ease of use over other options (and I like screwing around with webpages and have learned a lot about XHTML/CSS in preparation for taking over for the semester as editor of this site about engineering education). Most importantly, no FTP or SCP is required (we computer geeks take these tools for granted, but I think they can be just as much a barrier as HTML).
I think Google's got another winner here, at least for a presumably significant market niche (groups who want a good site but can't afford to pay professionals, especially for maintenance and updating). I'll keep you posted as to whether the feature-set improves in the coming months.
Posted by
Kyle Matthew Oliver
at
12:34 AM
1 comments
Labels: Code, Maintainability, Publishing, The Hacker Within, Websites
18 December 2008
Another Hacker Within Ad
I know this doesn't make for a very exciting post number 100 here at CSC, but please help spread the word about this software carpentry training we're doing the week before UW-Madison classes start. Join us if you can!
Posted by
Kyle Matthew Oliver
at
7:05 AM
1 comments
Labels: Engineering Education, Software, The Hacker Within
09 December 2008
Hacker Within Meeting Friday
I doubt I have too many UW-Madison computer geek readers who don't already know about this (if indeed I have any at all, which is also doubtful given my dire posting record of late), but on Friday at 2:15 in 414 Engineering Research Building, the Hacker Within computational science interest group that a few of us started this summer is going to be hearing from Tim Tautges:
Component interfaces or APIs should a) have the right level of abstraction, so they can handle new kinds of data without needing to be modified, and b) should be callable from multiple languages, and c) should not get in the way of good performance. I'll describe the ITAPS mesh interface, which has been designed to meet these constraints.Sound cool? More importantly, does this look cool?:

If so, you should come by. What better way to celebrate the end of the semester? ;)
Posted by
Kyle Matthew Oliver
at
11:12 AM
0
comments
Labels: The Hacker Within
19 October 2008
Miscellaneous Updates
Let me surface from my digital dormancy (which one of these days I'll get around to writing a post to explain) for a couple of quick updates.
First, I went with some other UW-Madison folks to UW-Platteville Friday for a conference of the North Midwest region of the American Society for Engineering Education. We didn't stay for the evening banquet and keynote (nor obviously for the second day of the conference), but a lot of what we saw was interesting and encouraging. I was especially intrigued by Haiyan Zhang's paper "A Model-Based Multidisciplinary Correspondent Methodology for Design-by-Analogy" and frankly touched by the important work reported in Dale Buechler's fascinating "An Electrical Engineering Program for Place-Bound Students: The First Two Years." If you're interested in our paper, which was about ASEE student sections, you can read it here.
Second, you may notice that the above URL points to a non-UW-Madison domain. I'm trying to get untied from doing all my hosting on UW computers, and as a consequence you can now find this blog at blog.kyleoliver.net. I gotta admit, it's going to take a little getting used to being a domain owner. One early bummer: Blue Host servers don't have svn installed. Still, I'm excited to have a reasonably sustainable option for implementing that Holy Grail of personal file organization: putting your entire electronic life under version control (which, as my friend Matt points out, gives you superpowers).
Posted by
Kyle Matthew Oliver
at
1:04 PM
0
comments
Labels: ASEE, Engineering Education, The Hacker Within
31 March 2008
The Hacker Within VIII
Today's subject: Mozilla Thunderbird Templates
Greg V. Wilson of the University of Toronto has a great talk on nanoHUB called "Software Carpentry: Essential Software Skills for Research Scientists." In it, he makes the claim that any task that you need to perform more than once is worth automating.
My computing life has improved in direct proportion to my willingness to heed his advice.
A recent example: I'm the chair of the UW-Madison College of Engineering's New Educators' Orientation, a series of required workshops for first-time COE TAs. Being the chair is not at all glamorous; it mostly means sending out lots of emails to recruit volunteers to help out. And if they're not customized, no one replies.
Using Mozilla Thunderbird or a similar email program obviously makes this task quite a bit easier--my de facto algorithm last semester required one New Message and three Copy-Pastes, into three different boxes. This semester, I've automated out a few steps to get it down to one New Message (well, an equivalent) and one Copy-Paste with Thunderbird Templates. I know it doesn't sound like much of an improvement, but this process offers a significant time-savings, is much less error prone, and can keep you more organized.
How do you use Templates? Easy. First, create a new message, with subject line and easy-to-find placeholders in the message. Then click File > Save As > Template. A folder called "Templates" will appear in your folder window. Click the folder, and then right-click on the Template you want to use and select Edit As New... (or, better yet, use Ctrl+E with the Template selected).
A copy of that Template will then pop up, all ready for you to replace the placeholders and enter a recipient email. Not for nothing, you'll also never have to dig through your Old Sent Mail to find the message you need to resend.
I wish I'd looked into this sooner. Thanks to Heinz Tschabitscher and his About.com entry for being there when I did (though note that, at least with Thunderbird/Ice Dove version 1.5.0.14pre, I couldn't double-click on the Template to Edit As New as he suggested).
Posted by
Kyle Matthew Oliver
at
5:51 PM
0
comments
Labels: Email, The Hacker Within, Thunderbird
16 March 2008
Special Combined Sunday Judgment/Hacker Within: March Madness
Today's subject: the NCAA men's basketball tournament.
First, a couple of confessions.
(1) It's a bit of a stretch to throw the Hacker Within label on this post, but I couldn't pass up an opportunity to integrate my two regular features in one post.
(2) Since I have picks to make, and also fair number of goals for genuine productivity during this week (which is spring break at UW-Madison), I'm totally half-assing this post with respect to both the commitment-to-quality-science-writing and commitment-to-meaningful-integration-of-technical-
and-non-technical-material ambitions of this blog. Thus, the whole integration thing in (1) is also a stretch.
So here we go. First, Sunday Judgment. If you've been watching Sports Center or listening to any sports talk radio this week, you know that the trendiest game in NCAA basketball journalism is coming up with clever synonyms for bubble team. (See especially this week's Mike Tirico Show.) Not surprisingly, this trend makes for good radio and plenty of fun armchair etymology (or maybe reverse-etymology?).
However, this seemingly harmless game reminded me of a serious problem that mars a lot of college writing. Call it synonymic hyper-proliferation. Or restless diction. Or mythesaurus rex.
Actually, please call it only one of those things.
I can't tell you how many student writers feel pressured to substitute synonyms when repeatedly referring to an important theoretical construct or technical term. Of course, variety is an important attribute of all good writing, and it's often a bad idea to use the same word twice in one sentence, in the same position in subsequent sentences, etc. But, more often than not, if you're writing a paper about, say, disciplinary matrices, it's a mistake to give in to the urge to come up with a million different ways of saying disciplinary matrix. These precise terms come about for a reason; don't feel pressured to over-substitute.
OK, onto some quasi-Hacker Within material. For reasons of, well, basically realizing it was a huge waste of time, I've abandoned draft.gms, my probably futile attempt to turn my fantasy baseball draft into a huge assignment-problem-like GAMS model. Naturally, I've re-channeled my silly interest in applying mathematical programming to, say, sporting events and dice games in bars, and so I wanted to point you in the direction of resources for using the power of science to make better March Madness picks.
You may have heard last year about some professors at Georgia Tech who published a paper in Naval Research Logistics called "A logistic regression/Markov chain model for NCAA basketball." If memory serves, the UW-Madison libraries don't carry this one, but it looks like Kvam and Sokol have posted a manuscript of the paper here. There's also a kinda funny "powerpoint style equivalent" to the non-mathematical summary they wrote, presumably for all the media (I heard about it via some ESPN article last year that also included an "insider look" at how the oddsmakers go about their business). I haven't read the whole thing, but even checking out the first few pages gives you an appreciation for their methodology. If you need some help with Markov chains (I certainly did), this AMS primer is pretty comprehensible.
Not interested in Markov chains? No problem. Profs. Kvam and Sokol make the output of their model, applied to this year's game results, available here. You can choose between three versions of the model that take one of the types of input data, margin of victory (MOV), into account in various ways. Not surprisingly, the "pure" strategy (which doesn't cap the contribution of MOV) is best. Nevertheless, the selection committee, which at least last year had access to the LRMC, won't use tools that consider MOV (for sportsmanship reasons, presumably). Anyway, if you're interested in trying this, just choose a model and use the rankings to pick each match-up. And remember: the pure LRMC is the most successful systematic ranking system available.
Couple of thoughts:
(1) Check out the top eight teams for each of the three rating schemes--
Pure: Kansas, Memphis, UCLA, Duke, North Carolina, Tennessee, Wisconsin, Clemson
Capped MOV: Kansas, Memphis, Duke, UCLA, Tennessee, North Carolina, Wisconsin, Stanford
No MOV: North Carolina, UCLA, Memphis, Duke, Tennessee, Kansas, Texas, Wisconsin
This is kinda neat. You can see the effects of all those close games North Carolina won reflected in their placement under each model. Are they actually overrated? I dunno, but I like the sound of it.
(2) See, Wisconsin, shoulda been a two seed, no matter how you look at it (or, rather, no matter how these two industrial engineers looked at it).
(3) Pull a Joe Morgan if you like, either by criticizing the very idea of using stats to predict this stuff or by gloating when the inevitabilities of statistical randomness play out and the models break down from time to time. But please don't say that this kind of analysis sucks the life out of playing or watching these games. That mentality totally missed the point. Of course we shouldn't reduce sports to mechanical calculations. Of course what's really exciting is watching people overcome their mathematical destiny and do something special. Of course these methods overlook all kinds of intangibles.
But the point of doing brackets is to get the most picks right, right? There are all kinds of arguments against using the LRMC method to make your picks, but wanting to give yourself the best chance to win isn't one of them.
Kvam and Sokol humorously observe, "With so much money on the line, a model that predicts outcomes more effectively than standard ranking and rating systems can be useful." I myself am risking a total of two beers, so I'm going to let pride cloud my scientific judgment and tweak the pure LRMC rankings a bit. To my detriment, no doubt.
Posted by
Kyle Matthew Oliver
at
7:25 PM
0
comments
Labels: Basketball, March Madness, Mathematical Programming, Probability, Sunday Judgment, The Hacker Within
04 March 2008
The Hacker Within VI
Today's subject: another cool Emacs mode
Just stumbled across an Emacs mode for editing input files for Los Alamos's MCNP Monte Carlo radiation transport code. Since I'm now addicted to syntax highlighting, I definitely snatched this one up. Turns out it was written by Tim Bohm, who works right down the hall from me.
Anyway, check it out. Tim gives instructions for getting it working.
http://homepages.cae.wisc.edu/~bohm/genericmode.html
Posted by
Kyle Matthew Oliver
at
1:30 PM
0
comments
Labels: Emacs, MCNP, The Hacker Within
01 March 2008
The Hacker Within: Baseball Edition
With a little help from geek and proud, I'm now able to listen to MLB.TV radio broadcast streams on Kermit, the Linux machine I work at. Using the MediaPlayerConnectivity plug-in Alan suggests and choosing Totem as the default player in the configuration wizard seems to do the trick on my system ("i686-redhat-linux-gnu" according to configure).
I couldn't get the video to work, though. I don't view much MLB.TV video at work anyway, so you'd think I'd have been able to leave it at that. I couldn't. I spent much of the afternoon reading up on Silverlight and Moonlight, GStreamer and Pitdll. I battled with autotools and Mono distributions. I was defeated. Hopefully the Moonlight people get a Firefox plug-in finished soon. They're working pretty hard, from the sound of it.
Speaking of computing in the name of baseball, stay tuned for a report on draft.gms, my network flow model that will hopefully let GAMS choose my fantasy baseball draft picks. I think I can do it as a modified assignment problem with the help of little tuning trick I learned about in a breast cancer diagnosis project I learned about in linear programming last semester. I'm sure you're on the edge of your seat.
Posted by
Kyle Matthew Oliver
at
6:30 PM
2
comments
Labels: Baseball, Fantasy Baseball, Linux, MLB.TV, The Hacker Within, Web Video
21 February 2008
The Hacker Within IV
Today's subject: Emacs matlab-mode, THW III update
Just a quick one right now. I needed to take a look at a MATLAB function today but didn't want to have to look at it in MATLAB to get the syntax-highlighting right. Check out this link if you've had the same problem and want a matlab-mode customization in Emacs.
Also, someone on the Internet was wrong: me. Special thanks to Rob Kennedy for catching a bug in my SQLite sample application. Turns out I'd made a similar error in my "real" application using SQLite as well. Score one for the idea of blogs as a productivity tool, at least if you're lucky enough to have smart friends and readers.
Posted by
Kyle Matthew Oliver
at
1:55 PM
0
comments
Labels: Emacs, MATLAB, The Hacker Within
18 February 2008
The Hacker Within III
Today's subject: SQLite
I'm a novice programmer. As such, I often find that a lot of the sample code and documentation I find online goes over my head. I can't be the only one for whom this is true.
Thus, I thought I'd post a little sample application I wrote that demonstrates some of the basic functionality of SQLite, the "self-contained, serverless, zero-configuration, transactional SQL database engine."
We're using SQLite to track materials data in our GENIUS application, but this sample program, which I wrote for practice, creates two music-related tables: an iTunes-like table of song information and a table of phone numbers of Madison-area clubs (stored as arrays of integers to demonstrate how to handle blobs).
It doesn't do much and certainly shouldn't be used for any real applications, but I nevertheless hope that you find this program helpful if you're trying to learn SQLite. I try to explain things as completely as possible, but I didn't want to annotate the arguments for every function call, so you'll need to consult the SQLite documentation as well. Finally, special thanks to the author of this example, which I unfortunately found much too late.
Posted by
Kyle Matthew Oliver
at
1:17 PM
2
comments
Labels: Databases, SQLite, The Hacker Within
07 February 2008
The Hacker Within II
Another useful thing about tracking THW projects is that it's so easy to forget about Linux commands, utilities, etc. that I've used in the past. THW posts can serve as a record of such commands. Today I needed to capture a screen shot of some web images of the nuclear fuel cycle for a memo (each facility had a different image, so it was too much work to save each image separately). And of course I forgot to bookmark the site I used last time I needed help with this problem and couldn't quite find it.
Here's how I did it when I finally figured it out:
> xwd -out cycles.xwd
[clicked on open Firefox Window]
> convert cycles.xwd cycles.jpg
Easy as pie, right?
Posted by
Kyle Matthew Oliver
at
2:03 PM
0
comments
Labels: Graphics, Screenshots, The Hacker Within
06 February 2008
The Hacker Within I
I only blog from the office when I have something work-related to share. Now is one of those times.
Because code development is part and parcel of our work as computational researchers, my advisor encourages our group to unleash and cultivate "The Hacker Within" (THW). THW is always trying to improve his or her computing experience--customizing, automating, and navigating parts of the digital landscape in new (and hopefully more productive) ways. Plus, messing with THW-related projects is usually more fun than doing whatever work you're supposed to be doing.
My THW project the last day or so has been switching over to using Emacs, which I have to say has already yielded some nice results. The learning curve on the key bindings is a little steep, but I'm getting better.
One of my long-time complaints with Emacs (or rather short-time, since I've only been using Linux for a year or so, which while I'm at it I should say that this and probably most future THW content will probably seem extremely lame to people who actually know what they're doing) was that there is no single-keystroke way to switch between open files, at least none that I could find. That functionality is extremely important when you're working with source code that's spread out over a bunch of classes (and hence files).
Well, today my HW fixed that, or rather he found the code someone else's HW had already written to fix that. I highly recommend Adrian Quark's Emacs customization buffer-stack, which brings Windows-Alt-Tab-like switching to Emacs buffers. I chose Ctrl-Tab for my key binding to his main function, as you can see from my .emacs file, which I include in the hope that it might be helpful to other new Emacs customizers-in-training.
Note: Other THW posts will be much shorter and to the point. I don't take blogging at work lightly, but I do think that since I get so much help with code development from online sources, I have the responsibility to "give back" once in a while, to the pathetic extent that I'm able to. In this longish post, I just wanted to sort of establish the context of THW.
Posted by
Kyle Matthew Oliver
at
4:12 PM
0
comments
Labels: Emacs, Productivity, The Hacker Within
