Showing posts with label computers. Show all posts
Showing posts with label computers. Show all posts

Friday, August 19, 2022

Experiments in AI-assisted art: DALL•E

You might have heard about DALL•E (a combination of Dali and WALL•E) sometime in the past year or so, a machine-learning AI system by a research team called OpenAI which can take a natural language prompt like “A corgi made of jello dancing on top of a ball” and produce an image based on it. It can mimic a huge range of styles from realistic photographs, to digital art, to hand-drawn sketches or paintings, and has produced some remarkable output. It got some coverage back around June when the team behind it started opening up access to a few people, who started sharing the images they were using it to create. I happened across the form to request access, and, intrigued, signed up, not expecting for a moment that I'd get it without entering a Twitter, Instagram, or LinkedIn profile. Near the end of July I saw an article that OpenAI had opened DALL•E up to a million people, and imagine my surprise when I got an email notifying me I'd been selected.

A corgi made of jello dancing on top of a ball, realistic photo, by DALL•E
“A corgi made of jello dancing on top of a ball, realistic photo”, by DALL•E.

Above you can see one of the images I created with DALL•E. I was trying to explain it to someone as, “That new AI system where you put in a crazy phrase [at which point I tried to come with the craziest phrase I could think of] like, ‘A corgi made of jello dancing on top of a ball,’ and it spits out an image of it.” And then, well, I had to actually try it and see what I got. (DALL•E actually produces four variations every time you give it a prompt, which will look generally similar but have some differences in style, allowing you to choose the one you like best.)

An Impressionistic painting of the Gemini Observatory on the summit of Mauna Kea in the style of Vincent Van Gogh, by DALL•E
“An Impressionistic painting of the Gemini Observatory on the summit of Mauna Kea in the style of Vincent Van Gogh”, by DALL•E.

It certainly has some quirks. While the site encourages you to be descriptive and specific in the prompt you give, it's hardly perfect at interpreting what you mean. In the image above I asked for two very specific things (the Gemini Observatory and Maunakea), and while it's done a decent job of an image (I rather like the composition of this one) it's inexplicably given the observatory two domes instead of the single one it has in reality. (DALL•E was weirdly fixated on the notion that Gemini = two domes, as I tried several variations on this prompt and pretty much all of them had that feature.)

A delicious-looking hamburger in the shape of a Rubik's cube, professional food photography, by DALL•E.
“A delicious-looking hamburger in the shape of a Rubik's cube, professional food photography”, by DALL•E.

One funny article I read recently had the author playing with phrases like “X in the shape of Y” in regards to food, which led me to try the prompt above. (Which, side note, looks scruptious and I would totally eat.) I find, in general, that DALL•E works best if you give it a fairly specific prompt about generic objects, though you can certainly include phrases like “in the style of X artist.”

There's been some hand-wringing online about whether DALL•E might lead to the death of various creative professions in the visual arts, like concept artists. Having played with it, I'm not too worried. Oh, sure, as it rolls out to wider use there'll probably be some changes, in the same way powerful new tools have always produced changes. There will probably be a lot of small jobs that might've been done by hand before that DALL•E will replace (stock photography, in particular, is something that DALL•E could fill in for quite well I think). But as my experiments with it showed, there are things I can see in my mind's eye which I can't figure out a prompt to produce with DALL•E, and if I want to show them to the world I still need to pick up a paintbrush or break out Blender or something to that effect. Sometimes something DALL•E puts out sparks something in my imagination, which is neat; I'm actually half-tempted to take my paints to the summit of Maunakea and attempt an Impressionist painting of the Gemini Observatory myself now. Ultimately we're just on the cusp of AI-generated images from natural language prompts (there are several other models around pursuing similar things), and we'll just have to wait and see where it takes us. I read about someone using DALL•E to produce a logo for a program they wrote, which I thought was a neat use of it.

For now, I'll keep throwing in the occasional crazy prompt I think of. While writing this post I had the thought that perhaps it would be useful for generating images for text-heavy posts where I don't have a photo or something else to break it up. I often find it surprising how well DALL•E can handle fairly abstract or abstruse concepts. We'll see how it goes, but you might start seeing more DALL•E images around here in the future. A hui hou!

Saturday, September 5, 2020

Some useful Unix utility replacements written in Rust

As I continue hurtling towards my Draft Thesis Review on the 23rd, frantically working on papers and my thesis to have ready for review, I thought I'd take a little time to show off some nifty command line utilities I came across recently. I learned about them from this useful blog post, and I'm only going to cover a few of the things listed there so be sure to check it out for yourself. I mentioned nearly a year ago that I was trying out the Xonsh shell ("konsh", like the snail), and it turns out I'm still using it (it's got some really helpful features like suggesting commands based on what you're typing and have used in the past), but these work just as well in Bash, and presumably other shells as well.

All of these utilities are written in Rust, a programming language which has been out for a decade at this point but which I only heard about for the first time in the early part of this year. It's a compiled, statically-typed language which bills itself as being like the venerable C language, but with a bunch of features which involve memory-safety built directly into it. It's not exactly widespread in use at this point, but the people who use it apparently love it, and I've been somewhat interested in learning it for a while (maybe when I have time again). Anyway, let's get to the cool new utilities, which tend to be advertised as smarter, updated replacement for traditional Unix utilities you might be familiar with already. Today I'll briefly review two of them: fd, an updated find, and sd, an updated sed.

fd is first because it's the one I've found most useful personally so far. If I were to sum it up in one sentence, it'd be: "A utility that works like I always expect find to." find is an incredibly powerful utility, there's no doubt about that, but that comes at a cost of complexity. Let's say I'm in a directory, and I know that somewhere in the directories contained within this one is a file named “add_actions.lua”. I don't remember where, though, so I try to use find to locate it:

$ find add_actions.lua
find: ‘add_actions.lua’: No such file or directory

Well, that's not very helpful. The correct way to do what I want it to do it to add a -name flag before the name of the file I want; this finds the file correctly:

$ find -name add_actions.lua
./files/scripts/add_actions.lua

I never remember this, however; just figuring this out for this example took me a few minutes of trying and reading the manual for find. I thought maybe you need to specify that you want to start searching in the directory you're currently in, by adding a period after find; this, it turns out, is unnecessary as that's the default action (so now I've wasted time remembering something superfluous). I also thought maybe I needed to specify that I was searching for things of type ‘file’ (and not, say, ‘directory’), which ultimately also turned out to be unnecessary but took me extra time to verify that that was the case. Now, the fact that the correct version doesn't require those additions does make the comparison slightly less impressive, but let's see how you would do this using fd:

$ fd add_actions.lua
files/scripts/add_actions.lua

Boom. No needing to add additional flags, it just intelligently assumes I'm giving the file name (or technically a regular expression to search against) if there are no flags or other arguments, and finds what I'm looking for by searching recursively starting from the current working directory. No looking up manuals or reading help files needed. Now, you might argue that this is a very simple example, and that's the point. I just want my computer to do what I want to do quickly so I can get back to doing whatever it was that caused me to need to find this file in the first place: fast, simple, easy, done. Much like find, fd comes with a host of options and flags which you can use to modify and specify your finding operation. I haven't looked into them deeply, and it's possible there are some use cases which find can handle which fd can't. And that's perfectly fine, computer have enough storage these days to hold both of them at once.

You might also say—in fact, I'll say it—if I used find more frequently I'd memorize its idiosyncrasies and not have this problem. And that's true, if I used it a few times per day I'd probably memorize in in a few days at most. But the fact is, I don't—I use find sporadically, perhaps every few weeks or even months, at just long enough intervals that I forget how to use it in between. (Especially if I were actually trying to perform a more complicated operation, such as only searching for files between two and four levels down created more than three weeks ago larger than 5 MB in size, for example. find can do all of that. I definitely don't remember how.)

Now that I've written it, I'm not quite sure whom this slightly long-winded apologia is directed against; die-hard find users who oppose making computer usage “too easy” for other people? (I mean, I know such people exist, but I doubt many of them read this blog.) Anyway, the basic point is that fd uses intelligent defaults to simplify your ability to find files using the command line and keep you from having to memorize specific details which serve to slow you down if you haven't. Let's look at a slightly more complicated example, using sd. Suppose I have a text file, ‘test.txt’, with the phrase “The rine in Spine falls minely on the pline,” and I'd like to correct it to a more Received English pronunciation. With sed, you could do:

sed -i s/ine/ain/g test.txt

This will change the text in the file to “The rain in Spain falls mainly on the plain.” (Which seems hydrologically unlikely if there are mountains nearby due to the rain-shadow effect, but I digress.) There are a few things of note in this command: the -i flag causes the substitutions to happen in the file, rather than merely printing the changed output to the terminal. The ‘s’ at the beginning tells sed this is a substitution. The ‘g’ at the end makes the substitution happen everywhere the pattern ‘ine’ is found, instead of just at the first location per line in the file. And the slashes work because there aren't any slashes in the text, but if there were I'd have to get creative with the symbols used to separate the before and after patterns. Contrast this with the equivalent command using sd:

sd ine ain test.txt

No flag to remember to add to make it have an actual effect on disk. No need to tell it yes, you want to change this in all locations rather than just the first one per line. And no arcane symbols separating patterns, making the whole thing much more readable, especially when you start using more complicated regular expressions with symbols in them. Now, sd is even less of a replacement for sed than fd was for find, because sed can actually do a lot more than just simple substitution; but sd acknowledges this on its GitHub page and says that it's just intended to focus on doing one thing, and doing it well (which is the Unix way, at heart!).

Anyway, that's enough to give you a taste of what these utilities can do and how they do it. I definitely suggest you check out the post I found these from and see which ones you might want to use for yourself, as there are quite a few covering a lot of different use cases. I've only actually used a few of them so far, but I've really enjoyed the ones I have, so hopefully you find something here to spice up your command line usage. (If nothing else, fd makes me actually eager to search for files using the command line, instead of reluctant like find does.) Happy computing! A hui hou!

Sunday, October 27, 2019

A Slug and a Shell

In news which will be of no surprise to those following my painting progress, I've gone back and reworked a painting of mine due to dissatisfaction with how it turned out. The painting in question is my blue glaucus painting, which I already reworked to add a shadow. Turns out I was never satisfied with the way the shadow looked, as it came out very gray and solid, so I decided to try redoing it with a thin black glaze today. I used some ivory black, which is the only black I have listed as anything less than “opaque” (it's “semi-opaque”). I think it worked out fairly well, you can judge for yourself below:

The old version…

…and the newly-blackened shadow.
This way the shadow looks a lot more distinct from the slug casting it, which is also quite silvery-gray. It'd probably have been good to make the shadow more out-of-focus from the start, but at this point I think I'm happy with it.

And what's the shell mentioned in the title, you may be asking? In computer terms, a shell is (to massively simplify, since I'm not even sure I understand it completely) essentially a program that you can use to send commands to the computer by typing them into a terminal window. These commands are pretty low-level, and are immensely powerful, to the point where you can easily save yourself hundreds or thousands of actions if you know what you're doing.

Shells are comparatively ancient in computer history terms, so there are a few common ones and several less commons variants floating around out there. The generally most common one is called Bash, which came out the year I was born in 1989 and stands for Bourne Again SHell (as it was written to be a free software replacement for the then-popular Bourne shell, which came out a decade earlier). This is by far the most common one encountered, as it comes as the default shell in most Linux distributions and macOS, and it's the one I've got the most experience with.

A few days ago I came across another shell called “xonsh” (pronounced “konsh” in a play on “conch shell;” perhaps the ‘x’ is meant to represent a Greek χ?). It had the intriguing premise of being written in Python, the language I've been using at work for quite a few years now, and being able to execute Python code directly in the shell while still retaining access to familiar Bash routines. In Bash you need to open the Python interpreter directly before being able to type and evaluate Python code, and you lose access to Bash's lower-level functions like being able to change directories or list their contents while doing so (technically Bash simply calls little executable programs for that, but you can't do so directly in the Python interpreter). Xonsh offers an alluring alternative where Python code and lower-level functions can be called and mixed freely, so I installed it on my desktop at home this weekend and intend to give it a try. I actually do run into situations in my PhD where I'd love to be able to execute some Python code at the terminal while using Bash, so it'll be interesting to see if this goes anywhere.

The caveat of any non-Bash shell, of course, is adoption; any other shell is not as popular, and therefore won't have as many resources about it online or people familiar with it to ask. I doubt I'll be ditching Bash anytime soon, but maybe I'll be surprised and find I can really replace it entirely. We'll see! A hui hou!

Monday, December 17, 2018

A December Update

It's been pretty quiet on the ol’ blog front this month—for a few reasons—but I'm hopeful that'll change in the next week or so. First off, I got sick last weekend, which laid me out for almost a week. Then, I've been struggling with a lot of instability in my computer the past few months, which I finally tracked down to one of my RAM modules starting to fail. I found and removed it last weekend, and my computer's been nice and stable again since. And finally, I've just been busy with numerous things as the end of the year rolls around.

This is the last week before the Christmas break begins, and I'll be taking a few weeks off after that, so I'm hoping that starting this weekend I can finally start working on some of the many creative projects rattling around in my head that have been accruing the last few months. And that'll likely lead to some new blog posts, so the second half of December should be a little livelier than the first half has been so far. Blender just came out with a huge new update that radically overhauls the interface to make it simpler and more intuitive, and I'm interested in checking it out to see how it's changed. Plus I've got plenty of other ideas for projects to do. A hui hou!

Monday, April 16, 2018

April Astrobite, a Supercomputer Tour, and Other News!

So this is a few days late, but I wrote another post for Astrobites this month back on the 12th. It covers a really cool paper about the largest flare yet observed from Proxima Centauri, the closest star to the Sun. Proxima Centauri is a red dwarf, the most common type of star in the universe, but also the faintest; it emits a mere 0.17% of the light the Sun does, and despite being the closest star at just over 4 light-years away normally sits at about magnitude 11.13, or over a hundred times fainter than can be seen with the naked eye. However, during the flare reported in the paper, the authors calculate that it would have briefly reached up to magnitude 6.8, making it just barely visible to the naked eye from a very dark site for a few minutes! Pretty nifty! I even got an email from the lead author on the paper saying he'd enjoyed my summary of it, so that was nice.


In other news, I was fortunate enough to tag along on a tour of Swinburne's new supercomputer. (We are the “College of Astrophysics and Supercomputing,” after all!) It's called OzStar and replaces an older supercomputer called G2, though that one will still be in operation for most of the rest of the year to give people time to switch over.

OzStar, CAS's new supercomputer. I don't actually have reason to use it myself, sadly.


Going through all my photos in my panorama series, I've been struck by just how many photos of random birds I take. So have another one of some really colorful parrots I found in a eucalyptus tree near where I live one day while walking!

Parrots! Really colorful ones, too. These pictures are all from my new S9+, by the way.


And finally, one thing I haven't been able to find here in Australia is my favorite salad dressing, Hidden Valley Ranch. You can get Ranch dressing here, but there's usually only a single kind on sale. One of my friends from church was in the US for a few weeks as part of a school trip and very kindly brought me back the ambrosia below:

Just can't beat the original.


I also gave my first public Astrotour at Swinburne last week! We have a 3D theater that is used primarily for public outreach with grad students and faculty who volunteer giving talks to both school groups and the general public. I signed up last year, and gave my first talk to a small public audience last Tuesday. I felt rather rusty and disjointed as it's been so long since I gave a public talk about astronomy, but all that practice at the VIS paid off and it seems to have gone well. I've got another scheduled for the 30th of April, though I think this one is a school group, so that'll probably be a very different experience.

And I think that's all so far for this surprisingly busy month. Oh yes, last week I finally managed to write some code that collated some information on atomic transition lines that we've been trying to get together for a few months now, and this week we sent them off to some collaborators to do some calculations for us. So that's a huge weight off my chest. A hui hou!

Tuesday, August 30, 2016

Happy birthday Linux!

Well I've missed the date by a few days, but the Linux kernel (the most basic part of an operating system, that interfaces with the physical hardware) is now twenty-five years old, making it only a little over two years younger than me.

Amusingly, in the post announcing his new project, Linus Torvalds called his new operating system kernel merely a hobby, not intended to be a professional endeavor. Fast-forward to today, and the open-source nature of the Linux kernel has led to it being used in a host of operating systems from basic consumer-oriented distributions to highly-customized distributions running on the most powerful supercomputers on the planet. Linux-based operating systems dominate installations in pretty much every category except desktop computers.

Writing about Linux here reminded me of how I've been using Windows 8 at work lately, and while I generally prefer to say nothing if I can't say something nice, I feel like venting some of the frustration I've been feeling. I'd never actually used Windows 8 before, merely heard about its shortcomings from other, but I've now experienced it first hand. In no particular order, here are some of the irritants I've experienced in the past few weeks:

  • Random freezes for no discernible reason while doing mundane things. Nothing quite like opening up a new instance of your browser after just starting the computer, opening a new tab, and having it freeze on you. Similar freezes have happened a few times in the past few weeks. I think it's probably happened about that many times in the last year on my computer. I got Chrome to repeatably lockup on a simple Source Forge page that (ironically) Internet Explorer opened with no problems.
  • Things not scrolling when you hover over them with the mouse. It's a little thing, but once you're used to it it really breaks your flow to have to click on different windows in order to scroll them. Especially when it's something like opening up a file-browser window and the focus is on the search field rather than on the file window proper.
  • Not having the secondary cut'n'paste clipboard from highlighting text that Linux has. I didn't realize just how much I relied on it for casual cut'n'pasting until I had to go back to Ctrl-c, Ctrl-v for everything.
  • The Start Screen that replaces the Start Menu in Windows 8, and its atrocious design of flat, bright, primary-color rectangles. I'm not even sure how to open specific programs now, and I never know when something is going to switch to opening full-screen in Metro mode. And why are Computer Settings and Control Panel two separate programs??
  • A “Save as…” menu that always defaults to a fixed set of best-guess folders, none of which are ones that I ever want to use, and which necessitates an extra click just to get to a general-purpose file-browser. Was simply opening to “My Documents” by default too difficult or something?

Anyway, you get the idea. I'm really glad I decided to jump ship when I did, from Windows 7. Despite growing up using Windows exclusively, I'm not happy with how Windows 8 turned out, and having grown to love Linux in the meantime I can't really ever see myself going back to Windows. Linux is by no means perfect, but it's less hassle and frustration for me in general. It's like the old joke that says the best operating system is the one that aggravates you least and stays out of your way the most.

Anyway, these were just a few disparate thoughts about operating systems I had recently—a hui hou!

Tuesday, April 26, 2016

Distrohopping to Debian

Well, after about two months of waffling, I finally went ahead yesterday and installed Debian (short ‘e’ as in ‘bed’ if you're curious) on my desktop like I've been meaning to. And it wasn't even all that difficult, actually!

When I first decided to switch to using Linux as my main operating system over two years ago, I took a look at the dizzying number of distros out there, and…

…actually, let's back up and establish some terminology first. “Linux” isn't an operating system like Windows or Mac OS, per se. It's the name of a kernel—the central core of an operating system, that loads first and handles all the interactions between all of the programs and the hardware. Linux is often used however as a metonym (technically, a synecdoche) for the many different operating systems built on top of the Linux kernel. These usually go by the name distributions, or distros for short. Some popular ones are Linux Mint, Debian, Ubuntu, openSUSE, Fedora, and Manjaro (taken from http://distrowatch.com/). What distinguishes one distro from another could be anything—large things like what kind of packaging system they use (so that software packages created for one distro won't work on another) to cosmetic things like what desktop manager they use (many distros allow you a choice of several) to a million and one little variables that can be tweaked such as the default programs included. There are literally hundreds of distros out there, though the vast majority of them are based on just a handful of main distributions (since it's a lot easier [relatively speaking] to create a new distro by modifying an existing one than it is to create one from scratch). Anyway, back to what I was saying…

When I first decided to switch to using Linux as my main operating system over two years ago, I took a look at the dizzying number of distros out there, and decided to go with Linux Mint Debian Edition, or LMDE. Let's unpack that a bit:

  • Linux Mint (by itself) is a very popular distribution made to be easy-to-use out of the box and good for Linux newcomers. It's based on…
    • Ubuntu, long and widely considered the most popular distribution partly due to a similar reputation, which is itself based on…
      • Debian, one of the oldest distributions, dating all the way back to 1993 and the distribution with the largest number of distros based upon it.
Anyway, as you can see, Linux Mint is basically two steps removed from its original base. A few years ago a new distro called Linux Mint Debian Edition was introduced, based directly on Debian and cutting out the middleman of Ubuntu so to speak. I liked the idea of keeping things simple, and since I was still a relative newcomer to Linux I decided to stick with a distribution with a reputation for user-friendliness.

Fast forward to today, and with a few more years' experience with Linux under my belt I decided to once again ‘cut out the middle man’ and switch directly to Debian itself. I'm no power user, but I know my way around a command line interface well enough, and I feel there's a benefit to using a more widely-used distribution (LMDE was, unfortunately, always kind of a side project to the main Linux Mint version).

Debian apparently used to have a reputation for being difficult to install, but I found the whole installation process for Debian 8.4 “Jessie” pretty simple, even with my setup having root and home installed on different partitions. (Which allowed me to keep all my user data when switching; very convenient!) I had a few wrinkles along the way, to be sure; I've got a separate hard drive for storing all my big files that don't need to take up space on my SSD like photos and music, and had forgotten how my more Linux-experienced friend Graham had mounted and linked it when we first set up my computer (the drive was actually auto-mounted and I could access it, just not the way my shortcuts were set up to expect). Thankfully, Graham was able to swing by after work and get it sorted, and with my current level of experience I think I could duplicate it in the future if necessary. There've been a few more small issues but so far I've been able to solve them all, and it looks like everything is working.

Oh, and to explain the title, it's a tongue-in-cheek reference to “distrohopping,” the practice of trying out lots of different Linux distros, sometimes without any sort of “main” distribution. Obviously, trying a second distro in as many years doesn't exactly qualify. A hui hou!

Thursday, September 25, 2014

PSA: “Shellshock”

PSA: If you use any form of *nix as your operating system – some form of Unix, Linux, or Mac OS X – and you have the Bash shell installed, you may want to see about updating it. This is because of a newly-disclosed critical vulnerability in it (dubbed by some “Shellshock”) that could potentially allow an attacker to execute arbitrary code with a specially formed attack. (If you're on Windows you're probably ok, unless [possibly] you're using something like cygwin, in which case you're probably tech-savvy enough to look up how to fix it.)

It's quite easy to check if your version of Bash is vulnerable: open up a terminal window and run:

> env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Should Bash be vulnerable, it'll return:

> env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
> vulnerable
> this is a test

If it's not vulnerable, you should just get back “this is a test” and possibly a warning about Bash ignoring an attempted function definition. If it does return vulnerable, you'll want to see about updating your version of it as soon as possible (most [all?] of the major Linux vendors have released patches, and Apple is expected to do so soon). Basically, instead of a harmless “echo vulnerable” (which just prints the word “vulnerable” to the terminal), an attacker could potentially put a much more harmful command in there, which in the right circumstances could do a lot of damage.

One noteworthy feature of this bug is that it's apparently been around for something like twenty years (Bash is fairly old as software goes), so it's expected to be found in as incredible number of devices, including a large number of the servers that host the World Wide Web.

It's still early yet to see what will come out of this, but it's likely to be a serious security issue for quite some time due to the difficulty of getting everything patched.


(I was feeling creative tonight, though I may have been a bit too literal.)

Edit (9/27/14): I wasn't entirely happy with that version so I went back and played around with it some more and made a few more versions (and learned some useful lessons about Inkscape in the process). Here's the version I currently like the most:

Sunday, July 20, 2014

Computer Construction Compendium

This past Friday, as I mentioned in my last post, I put my new computer together. I've been collecting parts for it for over two months, and was quite excited to finally build it (I would have put it together a week earlier except a move and a vacation intervened).

It was a fun experience (if a little nerve-wracking at times), and luckily I had the presence of mind to take pictures throughout the build process. For instance, here's everything involved in the build at the beginning of the process:


Here you can see the gaggle of assorted parts I collected. I'm not going to point them out individually as you'll see most of them further on, so I'll just say that on this table you can see the case, the power unit, the CPU, the RAM, the HDD, the SSD, the video card, the water cooler, the optical drive, the card reader, and the additional fan I got. That's a lot to get through, so to start off with here's a shot of the most fundamental part: the case.


Here you can see the interior of the excellent case I found, the Rosewill Thor V2. There are three fans on the front (to the right), the back (to the left), and the top of the case. There's also a fourth fan in the panel that forms the left side which is off in the picture to allow access to the interior. That nest of wires there connects to things on the front panel like the power button, the forward USB connectors, and the headphone/microphone jacks.

After the case, the next most important part of a computer is the motherboard, which serves as the physical and logical connector for all the other parts of the computer.


This particular motherboard is the ASUS Z97-A. There are a lot of slots and connections on it, but it'll be easier to point them out as I add things to them, so let's move on the CPU, which sits in the square socket in the top-middle of the board. The CPU (which stands for Central Processing Unit, hence why it is also sometimes called the processor) is the calculation center of the computer, and the most important factor in how fast your computer is.


The socket actually comes with a little cover on it to protect the pins inside, which you can't see because I forgot to take a picture before putting the CPU in the socket. Instead of putting the pins on the CPU, Intel switched sometime in the last few years to having them on the motherboard, and having the CPU sit gently atop them (held in place by a little spring-arm). Here's what it looks like with the arm down:

I don't think the white lines do anything, I think they're just decoration.

The gleaming square metal surface there is the interface where the prodigious heat modern processors put out is conducted away by some form of cooler to keep them from overheating. The processor I got (the Intel Core i5-4690K, 3.5GHz) comes with a small fan+heat sink that is meant to sit atop the CPU, but  in the warm climate of Hawaiʻi I wanted to ensure that it wouldn't get too hot running some of the games I like, so I got something a little higher-caliber which you'll see later on.

After installing the processor, I installed the motherboard into the case:


With the motherboard screwed into place in the case, I could stand the whole assembly up and access the back of the motherboard to install the necessary infrastructure to attach the cooler for the CPU:


This backplate (which surrounds the CPU on the back of the motherboard) confused me no end for some time, as it didn't seem to fit the holes in the motherboard. I was worried because the manual for the cooler didn't actually say it was compatible with the CPU socket I had, and I was going off somewhere else I'd read it on the Internet. For the record, yes, the Corsair H90 self-contained liquid cooler does work with Intel LGA 1150 sockets; use the sockets marked 1156, and rotate it until the holes line up. That was what had me confused, as I thought it went on straight and spent some time fiddling around trying to get the holes to line up. Anyway, it did finally go in, as you can see. The rest of the cooler sits on the other side, and we'll see it later on.

Anyway, after that, comes the RAM (or Random Access Memory, the short-term memory of the computer):


The RAM is those two white modules there, next to the CPU. I went with two 4GB modules of Kingston HyperX FURY DDR3 RAM for a total of 8 gigabytes of RAM. I don't do a lot of stuff where more RAM would be useful, and I really liked the look of those particular card - they go very nicely with the white case.

After the RAM, I installed the video card - an NVIDIA GTX 750 Ti, by EVGA -


- and the Power Supply Unit (PSU), a KingWin Lazer Platinum Series 550 Watt unit. The "Platinum" in the name says that it has greater than 90% efficiency in certain circumstance (such as when you're using around 50-75% of its maximum rated power). The PSU is a very very important part of your computer - it's the part that provides power at the right voltage and amperage to everything else, and (in theory) takes the fall if you get a power surge. So don't skimp on it. The high efficiency is also nice as that means less power wasted as heat before it even reaches the rest of your parts.



And here are both of them installed in the case and motherboard:


(The video card is a little hard to see, but it's horizontal directly above the PSU.)

After this I installed the optical drive (a simple DVD/CD reader/writer) and the multi-card reader I got into the front of the case. They weren't anything special, so I just took a shot of them installed in the front:



(Optical drive at the top, card reader in the middle.)

I then installed the hard disk drive (HDD) and solid-state disk (SSD) into two of the bays for them:


For the HDD I got a Western Digital 1 terabyte “Blue” drive (a reliable brand, with tons of space), while for the SSD I got a Crucial MX100 512GB drive, which is pretty much the best price-per-gigabyte SSD out there at the time of writing, while still being large enough for what I wanted. My intention from the start was to install my operating system and programs on the SSD for its much faster loading times, while storing large files that don't need to load super-fast like pictures, music, and movies on the HDD. Having set it up like that, I can say that so far it's working well.

Finally, it was time to install the water cooler. This was tricky, because, well...it's probably easier to show you:


This is the Corsair H90 self-contained liquid cooler. The part that I'm holding sits clamped to the top of your CPU and conducts heat from it into water which a small pump circulates through those rubber tubes into the radiator you see lying on the table. It's a bit tricky to install because that "self-contained" term in the name means that it's all one piece.

This is actually a very useful thing, because liquid cooling used to require that you put it together yourself, buying the pump, radiator, and tubes separately and assembling them (and filling them) yourself. You can still do that if you want to get fancy, but when it comes to water and computers there are far too many things that can go wrong, so I opted for the pre-built system where the water is already inside it and never gets a chance to fry sensitive electronic components.

Anyway, despite wishing I had a third hand at times, I managed to finagle the cooler onto the CPU (using that backplate structure we saw near the beginning), and attach the radiator to the fan on the back of the case. Here's what that looks like:


Pretty slick if I say so myself. At the moment I'm not quite done with this, as at the moment the fan in the case is only pulling air through the radiator. I'd like to mount the fan from the first picture on the side you see here to push through the radiator as well, to get the maximum amount of air through to keep things as cool as possible. I didn't have enough screws to be able to do that, but it's just a matter of popping down to Home Depot and picking up the right ones. Luckily, the liquid cooling is effective enough that heat hasn't nearly been a problem, but I've got the fan so I might as well use it.

Anyway, sans that fan, here's a view of the completed build:



(The other side is a bit of a tangled mess of cables, as I wove them back and forth through the holes in the case to keep as few obstructions for moving air in the case as possible.)

Anyway, with that done, it was time to set the peripherals up and try it out (and boy, what a sweet, sweet thing it was to hear the fans begin to spin up and self-test lights begin lighting up the first time I pressed the power button):


And there you have it. I left the side panel off for this shot, but it's now back on so the attached fan can help keep things cool.

And let me tell you, I set out to build a powerful computer that would have no heat problems, and from what I've seen so far, I succeeded. I can measure the temperatures of all four cores in the CPU, and while idling they run about 30 degrees Celsius, which is just a bit warmer than room temperature (86 degrees Fahrenheit). Even after a few hours of playing something like Civilization V that would have my old laptop running too hot to touch within minutes I haven't seen temperatures go above the low 40's Celsius (~100 Fahrenheit), and the air coming out the back from the radiator is only just noticeably warmer than the surrounding air. I wanted to make sure my computer wouldn't overheat in the warm tropical Hawaiian air, and from the looks of things I've done so very well indeed.

I could write at length about the trials and tribulations I had getting my chosen operating system, Linux Mint Debian Edition, running on such new hardware, but suffice it to say that with the help of a friend from work much more knowledgeable than I we got it working after a few hours. I'm now on Linux, and - unlike when I tried it with Ubuntu several years ago - I'm already thinking of it as my main operating system. Again, I could talk a lot about it, but it's getting late so perhaps I'll save it for another post. Anyway, hope that was interesting for any would-be computer builders out there. A hui hou!

Edit (9/14/14): Just realized that I said I got the Western Digital “Black” HDD when I actually got the “Blue” one, which is one step down in performance and good bit cheaper (it's the consumer-oriented version, while the Black is more server- or enthusiast-oriented). I did originally pick out a Black drive before rethinking it and still had it in my notes.

Also, a few weeks after this post went up I finally managed to find the right screws and installed my Noctua 140mm fan in the case to push through the radiator. Check it out:



Noctua's fans' unique brown aesthetic doesn't really go with...well, anything, but but it certainly lives up to its billing as a quiet, high-quality fan. With that, I now have a total of six fans pushing air through this case and keeping it just a smidgen above room temperature.

I also finally caved and bought myself a second monitor (I'm spoiled from having two at work, with the attendant productivity boost it brings). It just makes it so much easier do certain things, especially thing involving photos (have GIMP open on one screen, file manager or browser open in the other, etc.).

I also had some strange experiences which I was able to diagnose as running out of RAM, which caused the computer to freeze. I found this exceedingly odd, as I have 8 GB in this system, the same as my old laptop, and it never had any problems like this. I then learned that Linux doesn't automatically set up a swap space on disk (something Windows does by default), so I was most likely swapping things all the time on the laptop without knowing it. I was able to set up a swap partition on my own (I was so proud!), but I've decided that since I have an extra two slots for RAM I might as well go ahead and bump the system up to 16 GB to allow me to work on large photo panoramas without having to worry so much about running out of RAM

Saturday, July 12, 2014

Back Again

I think this is the longest time I've been between posts on this blog so far, for a number of reasons: since my last post, I have a) moved houses, and b) gone on vacation for a week with nearly zero Internet access. I also finally got the Internet hooked up in my new place just yesterday.

I also, just yesterday, finally had enough free time (and all the parts) to construct the new computer for which I've been collecting parts for two months (I got the final part - the processor - in on Thursday). It was a lengthy process - the build alone took almost three hours, and I then spent three and a half more trying and failing to get Linux installed on it. I was finally able to accomplish that with assistance from a more knowledgeable friend and another five hours of work this afternoon, so yes, I'm writing this post on my new computer. Yay!

I had the presence of mind to take some pictures during the build, so when I have some time I'd like to write a post going over the process in detail. But for now it's getting late, so a hui hou!

Sunday, June 8, 2014

Building a Computer

I've finally done my research, picked out parts for my new computer, and started ordering them, and this past week I had a few parts come in, namely the case, keyboard, and speakers.

The case I settled on is the Rosewill "Thor" V2-W, seen below. It's a large case, as they come; it's just under 23 inches tall, a little over 9 inches wide, and a hair under 22 inches front to back. This spaciousness helps ensure there's lots of room for air to flow through and keep things cool – a necessity for me here in Hawai‘i with no air conditioning. The white fins along the top of it can be opened (as in the picture) to increase air-flow, and those black patches along the side are mesh-covered openings to let the cooling zephyrs in.

The Rosewill Thor V2-W.

On the front you can see the usual connectors you might expect to find – USP 2.0, USB 3.0 (a nice feature), headphone and microphone jacks, an eSATA jack for plugging in external hard drives, and to the sides, two fan-speed control knobs.

Below, in this side shot, you can see one of the huge 230 mm fans that moves air through this thing. Believe it or not, there are actually three of those gargantuan fans in this behemoth of a case; the one seen there, one in the front panel at the bottom, and a third in the top panel at the top (not to mention a comparatively dinky but still large 140 mm fan in the back panel near the top). I was pleased to discover that the mesh on the sides allows a decent view of the interior; I'm thinking of putting in a few LEDs which could be turned on to illuminate the inside while the computer is running.


I didn't get a picture of my new speakers as I went for the cheapest pair I could find that still got great reviews, and while they certainly sound good they aren't anything special to look at. My new keyboard, on the other hand, is well worth looking at:


This is the Corsair Vengeance K70 mechanical keyboard with Cherry MX Brown switches. The picture doesn't do it justice, but this thing is gorgeous. It's got a nice adjustable red backlight which you can just see in the picture, an elegant black anodized aluminum body (no cheap plastic here!), and some really enjoyable mechanical switches.

Mechanical keyboards, if you don't know, utilize mechanical switches for the keys, instead of the membrane, dome-switch, or scissors-switch found in most laptops and cheaper keyboards today. Mechanical switches use little springs in each individual key, which makes them more expensive to produce, but after using one for a few days I can see why people rave about them so much.

Mechanical switches today predominately come from one company, Cherry MX, which makes color-coded switches with different feels and sound-levels. After some research into the various types available, I settled on the Browns, which are an excellent choice for typing. Each key activates after a mere 2 millimeters of travel after which it can depress another 4 millimeters before bottoming out, while the activation is accompanied by a distinct tactile ‘bump.’ After some practice this has allowed me to type extremely fast because I don't need to bottom out each key like on my laptop's scissors-switch keyboard; I can stop pressing as soon as I feel the ‘bump,’ which helps me type faster. I'm using the keyboard (plugged into my laptop) to write this post, in fact.

It's a little hard to see in the face-on picture I took, but one striking feature of this keyboard is that the keys aren't embedded in the faceplate, instead appearing to float a few millimeters above it. It's a neat design choice that may also be rather practical: I read a few reviews that mentioned that this feature made it easier to clean under the keys (always a good thing for a keyboard).

Anyway, I should stop gushing over my new toys and get to bed. I probably won't go in detail over the rest of my components, as I doubt people would be as interested in the RAM or hard drive I chose compared to the more visually interesting things. I'll almost certainly do a post on the completed project, though don't expect it for a few weeks – I've been ordering parts in batches, watching for any good sales or discounts I can get, so I don't know exactly when I'll have everything. A hui hou!

Wednesday, April 9, 2014

Farewell, Windows XP

Yesterday, if you weren't aware, marks the day Microsoft announced two years ago when it stops providing support for Windows XP. It's no exaggeration to say that Windows XP is the most popular operating system in history, as shown by the fact that almost 30% of computers accessing the Internet last month were running it twelve years after it came out in late 2001. (Not to mention the countless other unconnected computers that are running it. Most ATMs, for example, are still running XP.)

In some ways Microsoft has been the victim of their own success with XP, as shown by the fact that such a significant number of people haven't moved on yet and bought more up-to-date versions of Windows yet. There's another more charitable reason to want people to upgrade; Windows XP was designed long before many of the advanced and dangerous malware threats of today were even conceived of, and while Microsoft has dutifully patched it all these years there comes a point when it's in everyone's best interests to move on. It's a simpler operating system for a simpler time.

Now that Microsoft has pushed its last patch for XP (at least for those who aren't paying exorbitant amounts for an extended service plan such as the British government), any vulnerabilities found in the future will remain un-patched and, well, vulnerable. If any of you out there are reading this on XP, I'd definitely suggest thinking about getting off it quickly. There are a number of good alternative operating systems out there that are much more secure and up-to-date. From personal experience I can say that Windows 7 is much like XP, and if you happen to feel like shaking things up there are any number of free Linux versions to choose from that will work just as well (such as some that I wrote about a few weeks ago).

I'll definitely hold fond memories of Windows XP because that was the operating system of my first computer, but unlike the 30% of the population still running it I moved on years ago (a little over four years ago, to be precise, when I bought my current laptop with Windows 7). Rather than attempting to grasp something that is by nature ephemeral, I look at changing operating systems as an opportunity to change, grow, and try and try something new. At some point in the future I'll need to move on from Windows 7, and you know what? I'm rather looking forward to it.

Tuesday, February 25, 2014

Computer Musings

Last week I realized that I've had my laptop for a little over four years. Apart from a few mechanical hiccups in its first year (thankfully covered under warranty) it's been going strong the entire time. I had some certain things in mind when I bought it, namely, “you get what you pay for” and “don't skimp on quality” which led me to get a powerful (if slightly more expensive) computer that would be relatively future-proof and wouldn't be obsolete in two years.

Four years later, I can say that my strategy appears to have paid off. My computer is still running strong, still quite able to run some of the more demanding games and other programs I've thrown at it, and barring accident I expect it will be running well for several years yet.

Of course, that hasn't stopped me from looking ahead to when I will eventually need a new computer. And with that comes the choice of what operating system to use. A few years ago I wouldn't have hesitated to choose Windows, because that's what I grew up with. I remember using Windows 98 for a little while as a kid, then Windows XP for a couple of years. After some experience with Windows Vista I knew I didn't want that, and bought my laptop with Windows 7, which I've been quite happy with since.

However...many of the reports I've heard of Windows 8 fill me with trepidation. I have yet to actually use it, but I've heard enough to at least give me pause before blindly upgrading. Of course, Windows 9 may be out by the time I'm actually ready to buy a new computer, and there's a bit of common wisdom that says that Windows version run on a good-bad-good-bad schedule, so perhaps Windows 9 will be fine like Windows 7 was.

Even if that's the case (and that's an unknown “if” at this point), I've found myself leaning more and more towards using Linux on my next computer. I now spend more time at my computer at work (which runs a flavor of Linux) than I do my personal computer, and I'm becoming more and more accustomed to it. I wrote about my experience running Ubuntu (a flavor of Linux) as a dual-boot on my computer almost four years ago now. At the time it was a novelty to me, and while I don't come out and say it in the post, I couldn't really see myself ever using it principally over Windows.

A few years and a lot of experience later, and I know a lot more about Linux than I did then. For instance, Ubuntu is simply one flavor (or kind) of Linux; there are many different flavors out there catering to many different kinds of people. Many of the underlying (and most important) features are the same across them, though. I've run across some flavors of Linux that look quite nice, and which I could definitely see myself choosing as my next main operating system (I sometimes find myself wishing for certain conveniences of Linux while using Windows.). In some ways Linux is actually easier to use than Windows (while simultaneously offering more power to power users), but it's just different enough to feel uncomfortable while making the switch.

One thing that has given me pause in my consideration of Linux has to do with games. It has long been true that nearly all computer games are targeted at Windows because it has the largest market share. Sometimes an occasional game will get ported to Mac as well, but that's not exactly common. And Linux? Forget about it. It's only been within the last few years that a small but hopefully significant number of game developers are starting to release games for all three platforms. There are doubtless many reasons for this (including one of the currently-more-popular game-engines making it very easy to make releases for multiple platforms), but whatever the reason it's an encouraging trend, and it will be interesting to see what the game landscape looks like another twenty-four months down the line. I've taken to actively trying to support games that run on Linux, and preferring to buy ones that do in order to future-proof my game library (pretty much any game of any note that runs on Linux also runs on Windows and Mac at the moment, so it's an all-around good way to hedge my bets).

It's an interesting time to be living in, to be sure. People have been predicting the rise of Linux as a serious contender with Windows and Mac for market share for years now, but with the way things are going with Windows recently, who know? It just might finally happen. Or not, and people will continue to predict it. We'll see! Exciting times, to be sure. A hui hou!

Sunday, April 7, 2013

Expanding My Blog Horizons

About two weeks ago now, I got a task at work to do something I already do a fair amount of: writing a blog post. You see, the Joint Astronomy Centre has a blog that we use to keep interested users of our data reduction software up to date. I recently finished up my project that provides users more information (in the form of plots) about the observations taken on a particular night, and was asked to write a post on the blog (“Pipelines and Archives”) to explain it.

It probably won't be very informative if you aren't one of the cadre of scientists who actually uses the software, but it has some pretty pictures. (At least I think they're pretty; they're some of the automatically-generated graphs I spent two weeks working on.) If you're interested, you can check the post out here.

Also, although I haven't had time to finish it yet, I'm working on a post about the trip to Emesine Cave I took back on Good Friday. I've got a good number of pictures to sort through so it might take me a while, but I hope to have it up sometime this week.

Tuesday, March 19, 2013

Python Programming Programme

The first three days of this week we're having a Python training course at my work, which I've been attending. Having no formal training in Python (or any computer language for that matter), I've been looking forward to this. While the first day was mainly an introduction to Python itself (and thus covered a lot of what I've learned myself), I still learned several new things, including some that have been mysteries to me for years.

Today we dove into efficient numerical processing with the NumPy package, something I don't really have much experience in (although much of the morning was spent working with the matplotlib graphing package, which I have been working [and struggling] with extensively for the last three weeks). I was quite excited at the end of the day when I managed to read a FITS image and display it, with a crude image stretch, entirely with Python code. It was quite exhilarating. It was cool to discover that our instructor was also an amateur astronomer, and used code he'd written to help process his images.

Tomorrow we're supposed to jump into the SciPy suite of scientific tools. I've at least used NumPy a little bit from time to time, but I haven't ever really found a need to use SciPy before so this should be very informative.

Sunday, February 24, 2013

Anonymous Functions

There's a certain joy that comes of figuring out something yourself that you don't really get when someone else teaches you (although the best teachers teach in such a way that you're constantly figuring things out yourself).

I've never taken a computer science class in programming, so most of what I've learned I've figured out for myself. There are many little milestones along the way, but there are some big ones that stand out as large leaps forward in understanding. The day I suddenly understood classes in Python, for instance. I'd read the documentation on them several times before, but had never been able to make heads or tails of it, until the day when I really needed to use one...at which point it all suddenly clicked, and I reread the documentation and understood everything. It was an exhilarating, empowering feeling. My abilities as a programmer grew a bit that day, and I've used classes often since to write better code than I otherwise could have.

Last Friday I had a similar experience, suddenly understanding lambda functions in Python (known more generally as anonymous functions). (I also understood two specific functions last week, but that's not quite as interesting or exciting as understanding a whole new class of object.)

Lambda (or anonymous) functions are functions that you create when you don't need or want to go to the bother of defining a full-fledged function. Sometimes all you need is a simple function for one particular part of your code that you don't intend to use anywhere else, for instance if you need to square each item in a list of numbers. It's such a trivial thing that it isn't worth the trouble of writing a separate function for, especially if that's the only place you're going to need it.

Instead, you can write a simple lambda function to do the work for you. For example, given a list of numbers:

someList = [1, 2, 3, 4]
for number in map(lambda x: x * x, someList):
    print(number)
This code would then print out 1, 4, 9, 16. (Incidentally, the map function is one of the other functions I understood last week, as it works closely in conjunction with lambda functions.)

Basically, the map function takes all the items in an list (such as someList) and applies another function to them. The "lambda" there signifies that I'm defining a function, and the "x" means that it's only got one variable; the part after the colon, "x * x" means to take the input of the function and multiply it by itself (squaring it). So, "take each item in someList, and multiply it by itself". The print(number) part simply tells the computer to display the results of the operation on screen; it has nothing to do with printing on paper.

Anyway, it's really wonderful to be exercising the creative aspects of my brain in my job, and learning new things as I go along. A hui hou!

Monday, December 26, 2011

Adventures in Malware Removal

Yesterday -- Christmas day -- my sister's computer contracted a rather serious case of malware that took me over an hour to neutralize. It's a nasty little program that goes by various names depending on your operating system, usually some combination of "XP/Vista/Win 7 Antispyware/Antivirus/Security 2012". This program is very well designed to look like the official Microsoft Security panel (at least on XP, which my sister has), so much so that when it first appeared even I, naturally suspicious as I am, was almost fooled. Ironically, it was the program's own strenuous self-preservation efforts that alerted me, as it will block any browser you open from accessing the Internet. (At least, it will block Internet Explorer and Firefox, which were the only ones I was able to test, though I suspect it would block others as well.)

Like many malware programs out there, XP Security 2012 (the name that appeared for my sister, and which I'll use for simplicity) poses as a virus scanner, then pretends to scan your computer and locate a bunch of bad stuff, which it promises to remove upon upgrading to the paid version. At best, such programs simply take your money; at worst, they can actually infect you with the very viruses they claim to remove. These programs work by looking very official, and XP Security 2012 takes it up a notch by blocking your Internet access, making it hard for you to check online for a solution.

Luckily, one solution is simply to restore your computer to an earlier backup point. By going to System Restore (found under Start Menu --> Programs --> Accessories), you can restore you computer to an earlier point (after which I would recommend clearing your browser cache of temporary downloads; the file seems to get onto your computer by posing as some sort of legitimate download. In this case I think it may have been a phony Adobe update.). This method may not work if your restore point doesn't go back far enough, although since the program seems to activate immediately on installation (or at least very soon), you would likely need a restore point just a few days ago to work.

I actually found and used a program from the anti-virus group Malwarebytes Anti-malware, although given the rigamarole I had to go through to get it working I wish I'd found the restore point solution earlier (XP Security 2012 can block programs with the .exe extension that it feels are a threat, so you need to change the extension on the Malwarebytes installer to .com, run it to install the anti-virus program, then change its extension to .com in order to run it and remove the malware. Luckily, it works very well)

Here's hoping that your own Christmas was less eventful! Merry Christmas everyone! Mele Kalikimaka kākou!

Monday, September 12, 2011

FluxClassify.py

This weekend I wrote my very first program with a graphical user interface (GUI, often pronounced "goo-ey"). It's a program to help me classify the thousands of spectra we have for our research project. After several months of effort, Dr. Takamiya finally decided that we couldn't rely on the computer to make determinations about the presence or absence of a particular spectral line because it produced too many false positives. It's  one of those jobs that are just better handled by a human eye and brain.

Anyway, since we have around 30,000 spectra to classify, I decided that I really needed a program that would allow me to work in more than one dimension at once, so I got to work learning wxPython and produced FluxClassify over the weekend. The version you see below is version 0.2, the first version with all the features needed to produce workable results.
FluxClassify version 0.2.
As you can see it's a fairly simple program, despite being over 1,200 lines long. Most of those lines are extremely repetitive ones dealing with the hundreds of checkboxes on this thing, so I actually wrote some other code to write that part for me. I think I only actually wrote maybe 100-150 lines of the code by hand. Each of the numbered checkboxes represents one of the 225 spectra in a cube file. The ones along the top check or uncheck an entire column, while the one labeled "Check All" does exactly what it says.

WxPython is basically a program that works with an existing Python installation (only versions 2.4-2.8 as of this writing, sadly) to provide wrappers for the wxWidgets library that provides a native look and feel for programs written in it no matter what platform they're implemented on. It's pretty cool, since it automatically includes such Windows 7 features as automatically expanding to fill half the screen when I drag the program to one side of my desktop.

...And looking at my screenshot here I just realized that I have both columns and rows labeled as columns. Time for version 0.2.01! A hui hou!

Tuesday, August 23, 2011

What is a computer?

Today I decided to indulge in a little philosophical musing, on the question of what Aristotle would think of the personal computer (note that I'm talking about any computer owned by a person, regardless of operating system). In the Aristotelian tradition, a thing is defined teleologically by what its final aim or purpose is. So to Aristotle, the answer to the question “what is a frying pan?” would be something like “a device for cooking food, usually involving liquids.” From this, according to Aristotle, you could then derive many of the characteristics of a frying pan without ever needing to see one: it must be fireproof, non-porous, of such a shape that liquid does not spill out, etc. The details, such as whether it was made of metal or stone, would be of less concern to him. This sort of question works pretty well with many of the everyday devices we take for granted nowadays: a toaster toasts bread, a refrigerator keeps food cold, a washing machine cleans clothes with water, a dryer drys them with warm air, etc. etc.

But I suspect Aristotle would have a slightly harder time with a computer. Because just what is the final aim or purpose of a computer? Is is communication? Entertainment? A medium for creating art, or conducting business? A computer can be all of those things, but it is not limited to just one. Hence the difficulty.

(Actually, Aristotle would probably come up with some quirky, amusing definition of what a computer is. The guy had a pretty sophisticated sense of humor. In answer to the question “what is a human being?” he gave the tongue-in-cheek answer “a featherless biped,” and his definition of “nothing” was “what rocks dream about.”)

I think what a computer really represents, at its core, is potential. Given the right software (and in some cases, various peripherals such as a printer) a computer can be used to do an extremely large number of things. For instance, in between writing the previous sentence and this one I had a sudden urge to see a list of all the words I've used in this post ranked in decreasing order by length, so I took 20 minutes and wrote a short function in Python that would do that for me. I didn't have that in mind when I began this post, but it illustrates my point about the versatility of the computer rather well.

Now, while musing on what Aristotle would think of the computer is amusing, I'd like this chain of thought to go somewhere useful, so over the next few days I'm going to offer up various pieces of software for increasing your computer's potential. I have a lot of varied interests and a powerful computer to experiment with, so I've collected quite a few good programs over the years that I use in a myriad different ways.  So, until next time, a hui hou!

Monday, July 18, 2011

Computer Troubles (Again)

This evening I discovered that the power adapter for my laptop was making a strange clicking noise. More importantly, it doesn't work. Since I'm going to have to get another one and won't be able to use my computer until I do, I probably won't be updating my blog very frequently for a while.