Yeah, Right.
December 15th, 2006I have decided that when someone starts a conversation with the words, "I don't mean to bug you, but..." THAT IS EXACTLY WHAT THEY MEAN TO DO. This revelation is not new to me, but still irritates the crap out of me. I would prefer a little honestly, if you want something from me, don't disguise it with fake apologies and a cute smile. That doesn't work on me, maybe it will work on everyone else, but the only thing you will succeed in doing is annoying me.
Also, "Whenever you're ready." Is just another way of saying do it right now or I will pout and give you a snooty attitude. Again, this is failure in the making in regards to dealing with people named Ryan Gwillim. I don't suggest pouting, the most you will acheive from this is a number one spot on my crap list.
oi#$*for4$(*FJdfjaf09j(
December 12th, 2006
I found this picture of Tam and I on her myspace page. I didn't know it existed until just now. Mom, this one's for you!
//
December 8th, 2006
Having a little fun with a shot I took while backpacking last month.
.
Casa Hogar Reino de los Niños
December 5th, 2006My real good friend and co-worker at Amor Ministries, Yadira and I went with some people from Calvary Chapel San Diego to Reino de los Niños (Kid's Kingdom) in Ensenada, Mexico.
Directors Tomas and Marisela Shockey have been serving the Lord at the orphanage since 1989.
We enjoyed a time of fellowship with the kids. That it was hard to leave! Our group took the kids for Pizza at the nearby Costco. They can EAT! One skinny little girl ate 5 slices of peperroni pizza!!!!
This is Tomas with two of his "hijas".
Tomas and Marisela is "mom & dad" to about 35 children ranging from 2 years-old and up. Tomas shared with us the need to just love these children. Some of the children's stories are heart breaking. Some have emotional scars that need healing. And what better place than a christian environment!
I've known Tomas and Marisela for many years and I am always amazed at their fun loving dedication to the children of Ensenada.
Even the puppets had a time with the kids and they were a hit. Especially when Tito came out. One little boy about 3 or 4 years old named Ivan loved Tito so much that when Tito was packed up in the suitcase Iven saw Tito's hand hanging out took one of his fingers and told Tito, "Good Night Tito."
Tomas and I.
<
p>Tomas shared the story of this ten year old that is living at the Casa Hogar because his mother could not take care of them due to her drug addiction. In his desperation one day he left school and traveled by foot for about 15 miles with a heavy backpack on his back in search of a father he never knew. The local authorities were informed of the incident and everyone was looking for him. They found him at his mother's house. Tomas spoke to him and asked him if he wanted to come back to the Casa Hogar. The young boy said yes and mentioned that he was sadden to see that his mother was strung up on drugs. I was so happy to see him laughing and smiling after living thru so much hurt.
Yadi with Juanito.
Dennis with one of the young men at the Casa Hogar.
The little girl in pink next to Tomas is Lizbeth. She came to the Casa Hogar with her brothers and sisters. Her story is of neglect and abuse. Tomas mentioned that this little one has a place in her imagination where she goes when she wants to shut out the world. Still she was the one who prayed for us... Even in the middle of her healing she still believes in a God that loves her.
Here is Kelly with Lizbeth.
Yes, I am moving.
December 5th, 2006So word is getting out that I'm moving to Oregon. I think most people know already, but I keep finding people that I thought knew, that don't know. I made the decision this past summer that my time in San Diego should come to a close, and for various reasons I've decided that Portland, Oregon is a good place to head to.
When people find out that I'm moving the first question is the "why". The answer to this is pretty complicated, like my mind (haha), but I'm comfortable saying that the number one reason I'm leaving is the weather. Go ahead and laugh, but I don't like the weather in San Diego. It's too hot here, it never rains, there are no rivers, there are no forests. I was raised in coastal Oregon between two mountain ranges with well over 100 inches of rain a year and rivers and lakes everywhere. Moving to the desert of Southern California has been a great experience, but it's just not for me. The second reason I'm moving is family. Although I consider all my close friends to be family, I am slowing losing touch with my biological family. My brother is married with two children living in Northern Washington. I only get to see my niece and nephew once a year at best, and I have no involvement in their lives. I don't like this and I would like to have them know me more than someone they meet once a year. I don't even know how old they are or when their birthdays are and that saddens me. The final major reason, and the most selfish is that Portland has a great developing Disc Golf scene with about 20 courses while San Diego's disc golf comnunity is not in great shape and there are only 3 courses with little hope of improvement.
After the "why" people are then interested in the "what", as in "What are you going to be doing?" This is the fun question because I get to make up a new story everytime I answer. The real answer to this question thus far is that I have no idea. I have no job lined up. I have no clue if I am going to continue in the IT field. My ideas have ranged from getting a job doing IT for a charitable non-profit all the way to getting a job at a coffee shop or tattoo parlor working for minimum wage. Another thought is to try to make it as a professional disc golfer. The truth is I don't really care at this point. I have an almost eerie peace about the whole thing, and at this point I would even be happy living out of my car for a few months. I figure that I am skilled enough and resourceful enough that I can make something happen when I need to.
And finally comes the "when". As of right now my plans are to leave in April to early May. The Pro Tour of disc golf hits it's west coast swing at the beginning of May in Los Angeles and heads up to Santa Cruz, then ends in Portland. My plans right now are to finish my work with Amor in April, then jump on Tour and follow the tour to Portland, and maybe continue on the tour if I do well and make good $$$ at those three tournaments.
Hope this clears up a few things for people who may have been wondering but didn't feel like approaching me yet. Updates will follow as I figure more things out. I love you all!
Picture Perfect...
November 22nd, 2006As a fundraiser to sustain my work at Amor Ministries I've created some greeting cards from some photographs that I have taken.
As I see the beauty of the rose I think of my relationship with God.
As the rose opens it's delicate petals to bring forth the beauty inside so does my relationship with God.
Take a look and let me know what you think. Thank you!
San Gorgonio Wilderness
November 21st, 2006



Let's start the bidding...
November 20th, 2006The auction for Inga's painting has begun! You can find the auction here:
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=260054748905
Check it out!
.
100,000 Visits, WOOHOO
November 17th, 2006Aesthetic-Mindset reached 100,000 hits sometime earlier today. The site has been up since February 6th of this year. Congratulations are in order for Justin and I!
Internal Redirect WSGI middleware
November 13th, 2006I played around with this as a potential hack for CherryPy 3. It's WSGI middleware for adding almost-transparent "internal redirect" capabilities to any WSGI application.
My operating theory was that anyone writing a WSGI app that does not already have an internal-redirect feature was probably using HTTP redirects (302, 303, or 307) to do nearly the same thing. This middleware simply waits for a 307 response status and performs the redirection itself within the same request, without informing the user-agent.
This should be OK because 307 isn't normally cacheable anyway, and some versions of IE don't bother to ask the user as the spec requires already, so it just duplicates an existing browser bug. I could have used a custom HTTP code like 399, but if that ever leaked out to the UA (because someone forgot to enable the middleware) then the UA should fall back to "300 Multiple Choices", which didn't seem like a good fit. At least by using 307, the fallback should be appropriate, if not graceful.
Here's the code, which could probably use some improvements:
"""WSGI middleware which performs "internal" redirection."""
import StringIO
class _Redirector(object):
def __init__(self, nextapp, recursive=False):
self.nextapp = nextapp
self.recursive = recursive
self.location = None
self.write_proxy = None
self.status = None
self.headers = None
self.exc_info = None
self.seen_paths = []
def start_response(self, status, headers, exc_info):
if status[:3] == "307":
for name, value in headers:
if name.lower() == "location":
self.location = value
break
self.status = status
self.headers = headers
self.exc_info = exc_info
return self.write
def write(self, data):
# This is only here for silly apps which call write.
if self.write_proxy is None:
self.write_proxy = self.sr(self.status, self.headers, self.exc_info)
self.write_proxy(data)
def __call__(self, environ, start_response):
self.sr = start_response
nextenv = environ.copy()
curpath = nextenv['PATH_INFO']
if nextenv.get('QUERY_STRING'):
curpath = curpath + "?" + nextenv['QUERY_STRING']
self.seen_paths.append(curpath)
while True:
# Consume the response (in case it's a generator).
response = [x for x in self.nextapp(nextenv, self.start_response)]
if self.location is None:
# No redirection required; complete the response normally.
self.sr(self.status, self.headers, self.exc_info)
return response
# Start with a fresh copy of the environ and start altering it.
nextenv = environ.copy()
nextenv['REQUEST_METHOD'] = 'GET'
nextenv['CONTENT_LENGTH'] = '0'
nextenv['wsgi.input'] = StringIO.StringIO()
nextenv['redirector.history'] = self.seen_paths[:]
# "The [Location response-header] field value
# consists of a single absolute URI."
(nextenv["wsgi.url_scheme"],
nextenv["SERVER_NAME"],
path, params,
nextenv["QUERY_STRING"], frag) = urlparse(self.location)
if frag:
raise ValueError("Illegal #fragment in Location response "
"header %r" % self.location)
if params:
path = path + ";" + params
# Assume 'path' is already unquoted according to
# <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2">http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.2</a>
if path.lower().startswith(environ['SCRIPT_NAME'].lower()):
nextenv["PATH_INFO"] = path[len(environ['SCRIPT_NAME']):]
else:
raise ValueError("Location response header %r does not "
"match current SCRIPT_NAME %r"
% (self.location, environ['SCRIPT_NAME']))
# Update self.seen_paths and check for recursive calls.
curpath = nextenv['PATH_INFO']
if nextenv.get('QUERY_STRING'):
curpath = curpath + "?" + nextenv['QUERY_STRING']
if curpath in self.seen_paths:
raise RuntimeError("redirector visited the same URL twice: %r"
% curpath)
else:
self.seen_paths.append(curpath)
# Reset self for the next iteration
self.location = None
self.write_proxy = None
self.status = None
self.headers = None
self.exc_info = None
def redirector(nextapp, recursive=False):
"""WSGI middleware which performs "internal" redirection.
Whenever the next application sets a response status of 307 and
provides a Location response header, this component will not pass
that response on to the user-agent; instead, it parses the URI
provided in the Location response header and calls the same
application again using that URI. The following entries in the
WSGI environ dict may be modified when redirecting: wsgi.url_scheme,
SERVER_NAME, PATH_INFO, QUERY_STRING. REQUEST_METHOD is always
set to 'GET', so any desired parameters must be supplied as
query string arguments in the Location response header.
The wsgi.input entry will always be reset to an empty StringIO,
and CONTENT_LENGTH will be set to 0.
If 'recursive' is False (the default), each new target URI will be
checked to see if it has already been visited in the same request;
if so, a RuntimeError is raised. If 'recursive' is True, no check
is made and therefore no such errors are raised.
"""
def redirect_wrapper(environ, start_response):
ir = _Redirector(nextapp, recursive)
return ir(environ, start_response)
return redirect_wrapper