A Foolish Manifesto

fREWdiculous!

Two Months and 10 000 Miles Later…

As some of you may know, I just went on a long Road Trip for my last free summer. It was a really great trip. It is more or less over now, except for my travel back to Dallas. If you want to see pictures and various anecdotes related to the pictures, check out my flickr.

The basic outline of the trip was as follows: Fly to PA for a Flaming Lips concert and some fast visiting. Go back to MS and pack for the trip. Leave on Monday and get to OR in time for GOAT’s wedding on Friday (I was in the wedding so I had to get there before Thursday; I got there at like, 2:00am Thursday.) After that spend a little over a week with KT in Portland area. Then go to the Grand Canyon (via plane) with the rest of the family for a quick family vacation. Return to Oregon only to leave immediately for Spokane WA to visit Sarah for a few days. Return to OR yet again for KT’s wedding. Go to Seattle to visit Cassaundra and her grandma. Leave to go to MT/WY for Yellowstone and all that’s in between. BONUS: do some interesting things in South Dakota. BONUS: meet GOAT and Becci in Minneapolis for a free night’s stay and delicious dinner. Go to WI for a week of fun, and end on Darry’s wedding. Return home after the wedding (ca. 8 pm) and arrive the next day (ca. noon.) That is me driving all but 1.5 hours on the way back.

All in all it was an excellent trip. I learned a number of things. I’ll start with the mundane ones.

Camping is not as romantic as it sounds. I mean, sure, sleeping under the stars is great. You can see shooting stars and stuff like that. But I like to take showers in the morning. I like to sleep on flat surfaces. I don’t like having to scour the earth for land where you won’t get shot or eaten for camping where you did.

Real (up-to-date) maps beat electronic ones by a large margin. The main reason for this is that paper is so much higher resolution that you can easily see what’s going on without losing the detail that you want. If I use my phone as a map I get 320×320 pixels. On a printed page that’s less than a square inch of information.

Money helps trips like this a lot. If I had had the money that I planned on having (I did not have it entirely because of a mistake on my part) we would have gone to restaurants a lot more and eaten sandwiches a lot less.

Using Synthetic oil, high quality gas (Chevron, BP, Mobil, and ConocoPhilips,) and driving a constant 55 (which makes the biggest difference) are the best way to “go green” (aka save money) without forking over a bundle of cash on a new car (which is a little backwards.) I got about %18 more out of my gas by using those tricks. If you are a person who wants the world to go green, but you don’t do all of those things, you are a hypocrite.

A good power inverter is a lifesaver. I never had to worry about my cell phone dying in the middle of the desert or anything like that because I could charge up in the car. Also there were a couple times I burned CD’s in the car. That was nice too. So having all your music at your fingertips with a huge hard drive is nice too.

Bookstores are great places to loiter. They are almost everywhere and they often contain or are near to a good cafe. Sometimes they have nice chairs you can sink into and just read in the AC for hours. That’s really great when you didn’t plan enough things to do and you don’t have a hotel. On the other hand, if you are like me you may end up buying more books than you originally planned on.

Don’t expect cell phone reception everywhere. I was generally surprised on how good it actually was though. I don’t think we ever stayed somewhere where I had no reception at all. But when I was actually on the go I lost a lot of calls. Wyoming, am I right?

It’s great to visit friends on a vacation. They know where the cool spots are and sometimes they will even feed you. Isolation gets boring (or worse) pretty quick so seeing friends can be really nice. On the other hand, it helps not to stay more than a week. After that things might start to degrade.

Another thing that I learned on my trip, and this happened because I saw same friends from ancient times, is that the past has nothing left to offer. You may need to deal with issues from your past, but that doesn’t mean that you will profit from this deal. You will probably break even or worse.

Anyway, take what you want from this “wisdom.” I cannot ensure truth or beauty.

  • 0 Comments
  • Filed under: Uncategorized
  • On Beam Travel

    This is a treatise on why beam travel should be illegal. As it stands our current government does nothing against beam travel. In fact, it is not even mentioned in the law books. I do not think that beam travel should require a license or anything like that. I think that beam travel should just be entirely illegal for all time.

    Beam travel works like this: your body is analyzed by a LASER to the atomic level. How does this work out without breaking Heisenburg’s tyrannical law? Assumptions. We know certain things about humans and that allows us to generalize so we don’t need to go all the way to the electrons. Nonetheless damage is done in this process. The fact that damage is done does not matter though because immediately after the scanning is complete the body is obliterated and stored as raw materials for when another person beams into the station. The data that describes the person’s body is sent via light waves (more LASER’s) and then the person is reconstructed with other raw materials.

    I trust you see what is wrong here. In destroying the person in the first place we kill them. We do not even know if when the person is reconstructed they are the same person. They seem the same, but how do we know they aren’t fakes? Their spirits could be mere shadows built of psychic dust and residue left over from when the person was originally destroyed. I demand a moratorium on beam travel. I hope that you all agree with me.

  • 0 Comments
  • Filed under: Life
  • Ruby 1.9 is out!

    Exciting! It was apparently put up yesterday, on Christmas. What a cool gift right? I looked through the changed maintained my Mauricio and here are /my/ favorites.

    New literal hash syntax [Ruby2]

    {a: "foo"}    # => {:a=>"foo"}

    .() and calling Procs without #call/#[] [EXPERIMENTAL]

    You can now do:

    a = lambda{|*b| b} a.(1,2) # => [1, 2]

    Multiple splats allowed

    1.9 allows multiple splat operators when calling a method:

    def foo(*a)
         a
       end

       foo(1, *[2,3], 4, *[5,6])                        # => [1, 2, 3, 4, 5, 6]

    Mandatory arguments after optional arguments allowed

    def m(a, b=nil, *c, d)
         [a,b,c,d]
       end
       m(1,2)                                         # => [1, nil, [], 2]

    Object#tap

    Passes the object to the block and returns it (meant to be used for call chaining).

    "F".tap{|x| x.upcase!}[0] # => "F" # Note that "F".upcase![0] would fail since upcase! would return nil in this # case.

    Module#attr is an alias of attr_reader

    Use

    attr :foo=

    to create a read/write accessor. (RCR#331)

    Enumerable#cycle

    Calls the given block for each element of the enumerable in a never-ending cycle:

    a = ["a", "b", "c"]
    a.cycle {|x| puts x }  # print, a, b, c, a, b, c,.. forever.

    Enumerable#group_by

    Groups the values in the enumerable according to the value returned by the block:

    (1..10).group_by{|x| x % 3} # => {0=>[3, 6, 9], 1=>[1, 4, 7, 10], 2=>[2, 5, 8]}

    Enumerable#drop

    Without a block, returns an array with all but the first n elements from the enumeration. Otherwise drops elements while the block returns true (and returns all the elements after it returns a false value):

    a = [1, 2, 3, 4, 5] a.drop(3) # => [4, 5]
    a.drop {|i| i < 3 } # => [3, 4, 5]

    Enumerable#inject (#reduce) without a block

    If no block is given, the first argument to #inject is the name of a two-argument method that will be called; the optional second argument is the initial value:

    [RUBY_VERSION, RUBY_RELEASE_DATE] # => ["1.9.0", "2007-08-03"] (1..10).reduce(:+) # => 55

    Enumerable#count

    It could be defined in Ruby as

    def count(*a) inject(0) do |c, e| if a.size == 1 # suspect, but this is how it works (a[0] == e) ? c + 1 : c else yield(e) ? c + 1 : c end end end

    Therefore

    ["bar", 1, "foo", 2].count(1) # => 1 ["bar", 1, "foo", 2].count{|x| x.to_i != 0} # => 2

    Array#nitems

    It is equivalent to selecting the elements that satisfy a condition and obtaining the size of the resulting array:

    %w[1 2 3 4 5 6].nitems{|x| x.to_i > 3}    # => 3

    Block argument to Array#index, Array#rindex [Ruby2]

    They can now take a block to make them work like #select.

    ['a','b','c'].index{|e| e == 'b'} # => 1 ['a','b','c'].index{|e| e == 'c'} # => 2 ['a','a','a'].rindex{|e| e == 'a'} # => 2 ['a','a','a'].index{|e| e == 'b'} # => nil

    Array#combination

    ary.combination(n){|c| ...}

    yields all the combinations of length n of the elements in the array to the given block. If no block is passed, it returns an enumerator instead. The order of the combinations is unspecified.

    a = [1, 2, 3, 4] a.combination(1).to_a #=> [[1],[2],[3],[4]] a.combination(2).to_a #=> [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]] a.combination(3).to_a #=> [[1,2,3],[1,2,4],[1,3,4],[2,3,4]] a.combination(4).to_a #=> [[1,2,3,4]] a.combination(0).to_a #=> [[]]: one combination of length 0 a.combination(5).to_a #=> [] : no combinations of length 5

    Array#permutation

    Operates like #combination, but with permutations of length n.
    <code lang="ruby">a = [1, 2, 3] a.permutation(1).to_a #=> [[1],[2],[3]] a.permutation(2).to_a #=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]] a.permutation(3).to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] a.permutation(0).to_a #=> [[]]: one permutation of length 0 a.permutation(4).to_a #=> [] : no permutations of length 4

    Array#pop, Array#shift

    They can take an argument to specify how many objects to return:

    %w[a b c d].pop(2) # => ["c", "d"]

    Hash preserves order!

    RUBY_VERSION                    # => "1.9.0"
    h={:a=>1, :b=>2, :c=>3, :d=>4}  # => {:a=>1, :b=>2, :c=>3, :d=>4}
    h[:e]=5
    h                                           # => {:a=>1, :b=>2, :c=>3, :d=>4, :e=>5}

    h.keys                                      # => [:a, :b, :c, :d, :e]
    h.values                                    # => [1, 2, 3, 4, 5]
    h.to_a                                      # => [[:a, 1], [:b, 2], [:c, 3], [:d, 4], [:e, 5]]

    vs.

    RUBY_VERSION                    # => "1.8.6"
    h={:a=>1, :b=>2, :c=>3, :d=>4}  # => {:a=>1, :b=>2, :c=>3, :d=>4}
    h[:e]=5
    h                                           # => {:e=>5, :a=>1, :b=>2, :c=>3, :d=>4}
    h.keys                                      # => [:e, :a, :b, :c, :d]
    h.values                                    # => [5, 1, 2, 3, 4]
    h.to_a                                      # => [[:e, 5], [:a, 1], [:b, 2], [:c, 3], [:d, 4]]

    Numeric#upto, #downto, #times, #step

    These methods return an enumerator if no block is given:

    a = 10.times a.inject{|s,x| s+x } # => 45 a = [] b = 10.downto(5) b.each{|x| a << x} a # => [10, 9, 8, 7, 6, 5]

    Range#cover?

    range.cover?(value)

    compares value to the begin and end values of the range, returning true if it is comprised between them, honoring #exclude_end?.

    ("a".."z").cover?("c")                            # => true
    ("a".."z").cover?("5")                            # => false

    Limit input in IO#gets, IO#readline, IO#readlines, IO#each_line, IO#lines, IO.foreach, IO.readlines, StringIO#gets, StringIO#readline, StringIO#each, StringIO#readlines

    These methods accept an optional integer argument to specify the maximum amount of data to be read. The limit is specified either as the (optional) second argument, or by passing a single integer argument (i.e. the first argument is interpreted as the limit if it’s an integer, as a line separator otherwise).

    IO#ungetc, StringIO#ungetc

    Allows to push back an arbitrarily large character.

    Seven predicate methods where added for the weekdays:

    Time.now        # => Thu Nov 03 18:58:25 CET 2005
    Time.now.sunday?        # => false
  • 2 Comments
  • Filed under: Ruby
  • Creation of Small, Simple Objects

    Creation of Small, Simple Objects

    Today I tried to make a diamond. I tried to make it both out of nothing and with a piece of wadded up paper. I couldn’t do it, sadly. So these things go right? The tests are going to get harder soon; I’ll need to try to control massive amounts of people somehow and whatnot. Wish me luck on such endeavours.

    In other news, the dentist said to brush my teeth and avoid drill happy dentists. Awesome?

  • 0 Comments
  • Filed under: Super Powers
  • Transforming into a Cat

    Transform to Cat

    Today I tried to morph into a cat. No luck! I think I need one of those cubes that they had in the Animorphs… If that were the case I would also need a cat. And a friend named Ax maybe? Who knows?! Not me!

    Now I have to leave to go to the dentist. What a bummer right? I think it’s because of all the acid that I had when I was in Honduras. See you space cowboy…

  • 0 Comments
  • Filed under: Uncategorized
  • Controlling dor Creating Wind

    Controlling/Creating Wind

    Today I tried to create or control wind. No luck at all actually. I attempted say wind, making windy noises, and making various appropriate gestures. Nice try I guess?

    In other news, yesterday I learned that you really should cut away from yourself. I chopped my finger pretty badly with my recently sharpened kershaw. Also: I did a presentation on Go today and I think it went well. Two people spoke to me after the presentation and one of them asked if we could play together some time. Exciting!

  • 0 Comments
  • Filed under: Super Powers
  • Walking Through Walls

    Walking Through Walls

    I tried walking through walls and had no luck. I tried both cinder-block and wood. I also tried willing myself through, imagining walking through, “just doing it,” and probably others that I don’t remember. J-Dot was there which is why this gets his seal of approval.

    In other news, my laptop’s power plug slot thing got broken, so my whole laptop was broken. GOAT and I looked up the part online, bought it (thanks laptopjacks,) and soldered it in. This is of course after taking the entire thing apart (it was deeply hidden inside.) Interestingly, I had saved every little bit of plastic and whatnot while taking it apart and one of those pieces of plastic turned out to be a transistor that broke off when the plug thing broke. We soldered that in as well. After we put it back together it worked! Wow! Pretty cool. Anyway, I am probably going to look into getting a new one soonish anyway, so if anyone has any ideas, let me know.

  • 1 Comment
  • Filed under: Super Powers
  • Seeing through Walls

    Seeing Through Walls Today I tried to see through walls. J-Box stood on the other side of an eight-inch cinder block wall and made hand signals and I tried to see what the signals were. I tried looking through the wall, touching the wall with my hand and forehead, and guessing. I was wrong every single time. Guess not this time!

    In other news, I am having this tea my mom sent me called Crepe Faire and it is THE BEST HERBAL TEA I have ever had. Also, if you want to laugh joyously enjoy Flight of the Conchords on YouTube. Fun will abound!

  • 0 Comments
  • Filed under: Super Powers
  • Controlling the Weather

    Controlling the Weather Today I tried to control the weather. I tried to create lightning, clouds, and a tornado. I tried the regular tricks of imagination, will, and word. Maybe there is a power word that I need to learn that will let me do these kind of things. Or maybe it’s more like a muscle and I just need to learn how to use the muscle. If only I had directions!

    Today was long. Sleep will be good. Tomorrow we upgrade the loft as well as awesomate. I’m stoked. I might be able to get a couch too, but more realistically that will be Saturday. The land-locked machine is about a half done with it’s six hundred updates. WONDERFUL.

  • 0 Comments
  • Filed under: Super Powers
  • Reading Minds

    Reading Minds Today I tried to read minds, numerous times. I had no success at all. I tried just casually trying to read both Edgar and J-Curly’s minds. I also tried physical touch, touching foreheads, imagining reading a book with their thought’s on it, and numerous other things. No luck at all my friends!

    Tomorrow the kiddies move in. Hopefully they are a quantifiable amount of awesome, right? What is the unit for quantifiable awesome you ask? It’s a gnarl. How does one define a gnarl? Maybe I’ll do that rigorously tomorrow.

  • 0 Comments
  • Filed under: Super Powers