Ant Farm

On Sunday I was unbelievably lucky enough to find a queen ant just wandering around my house.  I say lucky because queens are not possible to buy (or, at least, they can’t cross state lines).  So, if you don’t buy one then you have to catch them in one of two ways.  First, you could carefully dig up an established ant hill until you find the queen. Second, you can wait until it is spring time, when the queens are relocating. They relocate by flying in a swarm of drone ants to a new location… very difficult to catch.

Seizing the opportunity I now had, I immediately knew I must build an ant farm worthy of a queen.  So, that’s exactly what I did!  It’s 24 inches wide by 18 inches tall.  Made with plexiglass so it will be strong.  I’ve included pictures of the farm under construction and of the queen herself (next to her lightning hug dinner, which she didn’t care for).  I got wide lumber and my room mate Jay and I (but mostly Jay) used a table saw to cut grooves for the plexiglass to sit in.  Then, with the help of my other room mate, Justin, we hammered the whole thing together, taking extra care to be sure the grooves in the wall and the floor lined up.  Then we sealed the plexiglass in with gorilla glue.

Next, came pouring in the sand and getting the queen in her new home! She has a capfull of water to drink from, which Justin delicately placed in the farm with a coat hanger.  She is in the farm now, though she seems pretty dormant. We put another lightning bug and a moth in there for her to eat, but she seems very disinterested.  Lane put some sugar in the farm, which she is evidently taking to.  I really need to find some drones now.  Evidently she isn’t pregnant,because she still has her wings.  Unfortunately I’m not sure where to find drones, and especially not sure where to find ones she will mate successfuly with.

Check out the pictures! I will post updates!

Software Developers & Game Playing While at Work

Recently I took a course called Software Engineering as a Human Activity. I’d say the main focus of the course was to understand how people create software, and how to make software development better for people.

One of the assignments for the course was to do a study, which I chose to do on game playing at work. I gave participants a form to fill out which probed their at-work game playing habits and how it affects them. Overall, it was seen to be beneficial in many ways to those who did play at work, but surprisingly, only a little more than half did play at work.

You can see my full paper here. Thanks to Dr. Emerson Murphy-Hill for the great course!

What I’ve Learned From Graduate School, Part 1: Perfectionism

My decision to go to graduate school stemmed from a desire to do research and change the world. Upon entering graduate school, however, I realized the difference between undergraduate and graduate school is just as much a leap as from high school to college. This being the case, “research and changing the world” seemed a goal farther out of reach than I expected. The biggest blockade to this goal is a trait about myself that has always been there, but I never knew: I am a bit of a perfectionist.

Sadly, to me, perfectionism is a trait that does not fly in graduate school. Perfectionism takes time, and as a grad student you have none. What must be done instead is output. Output as much as possible, as quick as possible. Do a lot of “pretty good” work rather than just a little “excellent” work.

Working until midnight every night was pretty common this semester. Though a friend of mine, Lane, often had time to go to the gym and take time for himself on Saturdays. His GPA was a little better than mine as an undergrad, and yet he had time off…what was he doing? Then I remembered: when we worked on group projects together it would drive me nuts that he would turn in work that was not done right, or only halfway done. He had no problems turning stuff in that was “sort of on target.”

What was going on here? He was doing things improperly, yet still receiving credit for them… If they are wrong shouldn’t it be negative credit? No. I didn’t realize up until the middle of the semester that that is not how things work. As a graduate student I was able to get a job grading papers for a Discrete Math class. Grading these papers it was clear some people didn’t know what they were talking about when answering a question, but would still put down something, anything at all. As a grader, I felt obligated to give a point or two (on 20 point questions) where an attempt was made. Sometimes they would even get something right and I’d end up giving them even more points.

However, whoever saw my Discrete Math test and found a question I didn’t know how to answer would’ve just seen a blank page. As a (yet unknown to myself) perfectionist, I would have put nothing instead of a “semi right” answer, or guess. The same would go for homework and projects as well. I would spend so much time getting something perfect, that I’d end up not doing a lot of the assignment.

After seeing these kids who would guess at questions gain a few points that would ultimately lead to a letter grade difference, I realized I had the wrong strategy. Taking notes on what Lane was doing, I began “de-perfectionizing” my work. My grades improved and the stress of getting all my assignments done relaxed a little.

Unfortunately, the relaxing of this stress led to another: worry about how my work would be received. When my work was, in my eyes, perfect I knew I would do well. However, I have no feeling for what grades I will get when I don’t view things as perfect. Therefore, there was a constant worry I was going to get horrendous grades. Luckily, this never happened though!

I’ve finally recognized that one of my favorite things is to see an idea from conception through to perfect completion. Whether its a sand castle, legos, a mathematical proof, clothes, furniture, or a program, I love doing things “just right.” In scenarios where output is key though, I’ve finally begun to develop an ability to flood with decent products. Thankfully Lane was there to learn from! While I’m not totally satisfied with my grades (I didn’t get a 4.0, which the perfectionist in me requires), they were better than they would’ve been had I not realized to relax, and just output as much as possible.

I do think perfectionism is a valuable trait to have though, at times. I will still continue to practice it in my free time, and in fact I am right now. I’m building a website which I hope to have an alpha version of ready for spring semester, which will also be the topic of an upcoming blog post.

WordPress Upgrade

I just updated to WordPress 3.0.3. Quite an easy upgrade, simply drag and drop some files. I also got Akismet set up, which is now looking for spam in the 3,500 hundred comments I’ve gotten since the blog started. I wonder if any of them wont be spam?

Nice Photos

The NC State Library lends really nice digital cameras, namely, the Olympus E620. Though there was a three month waiting list, I finally got one. I took a lot of photos and chose some of the best ones to post here. I also submitted them to Windhover, “NC State’s Literary and Visual Magazine.” We’ll see if they make it!

Semester Long Hiatus

In case you didn’t notice, it has been quite a while since my last blog post. I’ve been busy all semester with school, and assumed my teachers wouldn’t like it if I posted the code to assignments I was doing in their class (and therefore putting answers online). Now that winter break is here, I’ve got some time to look at thing that piqued my interest during the semester.

The first one I’ve gotten to is Processing. The thing about it that seemed so interesting to me is that every example they had on their site looked awesome. I got it, and did my own “Hello World” that I do every time I use a new language for graphics. Whats happening is that there are X number of dots each going around in a circle, with the speed of the inner dots successively getting slower using the formula: (dot number) * (maxSpeed/X). Sorry for those of you who have low resolutions, you can edit my code if you want to get it all on your screen.

If you watch, there are “star” formations as it runs. Interestingly, the number of spokes these stars have decrease over time until there is only one spoke left and it appears to start completely over. Even more interesting, to me anyway, is that there seem to be different countdowns happening at the same time. So, you may see a star with 3 spokes, and then see one with 7 spokes and think that something has gone wrong with the count down. Actually it hasn’t, if you watch again you’ll see that shortly you’ll see a star with two spokes (a line) and then a star with 6 spokes… there are multiple countdowns happening at once.

What I’m not sure of is if when you see a star with just one spoke and it looks like it is starting over, whether or not it has completely started over. I assume it must, because otherwise it would be sort of like the structure would be storing information and I don’t see a way for that to happen. I can’t tell though, so I don’t know. I also am completely clueless as to what determines the number of spokes the most-spoked star has. I am pretty sure that there are more stars than I can see, because I can sometimes catch a glimpse of a pattern as it is passing and I assume there are stars that form below my pattern recognition threshold.

Next I’m going to be looking into Number Spirals. If you scroll down, look at those primes all along that same line! Looks pretty cool to me.

While writing this I checked on my applet and realized that somehow a lot of dots have gotten just a little out of order… I don’t know why this happened (rounding maybe?) but I’ll check my code to see if I can see anything. This is a perfect time to say: no warranties are given with that code (especially since it took me about fifteen minutes to put together!).

New Tablet

For being a Microsoft Student Partner, they send you a laptop every year. This year and last year they sent us tablets, and I just got my new one. The tablet input part of this year’s machine is nicer than last year, though in most other respects the computer is sort of a downgrade. However, because the tablet input is better, I get to do all the cool things you see people with tablets doing (albeit slower because of the other hardware). I’ve attached a picture I made with Ink Art, a free download from Microsoft. It was very easy to use, and it makes me wonder about the kind of stuff one could create with professional level software.

Cops ‘n robbers on the LOoSe

If you couldn’t tell from my extremely clever title, this post is about CLOS. CLOS is the Common Lisp Object System, and it adds object orientation to the language. It was added to the language long after Lisp was started, but because Lisp is “the programmable programming language” its easy to add on important features of new languages to Lisp.

I’ve included code that demonstrates a silly example using CLOS. Thanks to Jon Rowe for thinking up this rather ridiculous problem. There are four criminals, each one is part of the criminal class but each has its own name and distinct greeting, as well as distinct weapon. When asked for a greeting, each one (if its hungry) will tack on a stomach rumbling ‘sound’ to the end of its greeting.

Here is the code.

Prime Factors

Going back to my prime-factors function, I was thinking of what else I could do with it. I decided to make a number-of-prime-factors function. The function accepts a ceiling and then returns a list of the number of prime factors for each number from 2 until your ceiling. I was dreaming, though not expecting, that there would be some sort of traceable curve leading from one prime to the next. Not surprisingly, this did not turn out to be true. I’ve included a graph which shows that it appears to be noise.

In order to make this function, I created a Lisp macro. If the books I’ve been reading are to be believed, I have technically just created my own branch of the Lisp language… pretty exciting stuff. The macro is do-range and its like dotimes, except it goes from A to B instead of 0 to B. Thanks again to Jon Rowe for assistance in creating this macro. I’ve included my code.

Prime, Time!

Working some more with Lisp, I’ve made a prime factorization function. It returns the prime factorization of a number. I tested it with our favorite Fibonacci prime + 1, and since I’ve discovered an (incredibly simple to use) timing function these were my results:


CL-USER> (time (prime-factors 99194853094755498))
; cpu time (non-gc) 9,006,099 msec (02:30:06.099) user, 812 msec system
; cpu time (gc) 1,013,917 msec (00:16:53.917) user, 220 msec system
; cpu time (total) 10,020,016 msec (02:47:00.016) user, 1,032 msec system
; real time 10,042,188 msec (02:47:22.188)
; space allocation:
; -648,487,858 cons cells, -2,618,004,168 other bytes, 10,120 static bytes
(2 3 3 83 281 1427 2789 59369)

So in about 2 hours and 45 minutes it finished. The code is not the most efficient way to do this, thats not the point. It does get the job done though and it uses stuff I had previously built, which makes it pretty fun. It handles numbers closer to everyday life quickly:


CL-USER> (time (prime-factors 2345987234))
; cpu time (non-gc) 795 msec user, 0 msec system
; cpu time (gc) 95 msec user, 0 msec system
; cpu time (total) 890 msec user, 0 msec system
; real time 890 msec
; space allocation:
; 2,798,429 cons cells, 10,965,776 other bytes, 0 static bytes
(2 47 139 179549)

Thats a ten digit number in under a second, so not too awful.

Attached you’ll find the code (you’ll need to load the previous code files I’ve posted as well to get this to work). It currently breaks if you initially give it a prime number. I’ll hopefully fix it later, but right now I need to move on to some other stuff. Have you figured out my file naming scheme yet? It has to do with something I was doing while I was writing the code.