This took place on August 28th outside of my house. Took a few pictures of the lightning storm. Pretty cool night!


Purchased my first casa! Closing was the beginning of June. Awesome neighborhood with great neighbors! Plenty of room for the dog to run around too!
For this task, I am to learn how to proficiently solve a rubiks cube. Not even thinking about this task when I was browsing through Walgreens, I knew I had to have it. I guess that’s just the geek in me. Anyways shortly after the purchase, I remembered that it was one of my tasks on my 101 list. I purchased this about a month ago and have been slowly figuring it out in the small slivers of free time i have. Currently i can quickly do the top and middle layers with out any problems.
Still a work in progress!
Skip 5 stones across a lake
Was a beautiful (but windy a couple of days) weekend out on the Elephant Butte lake. Decided a week before hand to head down the weekend of the 1st to help my friend haul her boat with my truck. Stayed at the Elephant butte in just for one night at a surprisingly good rate of $30 bucks split between everyone. Arrived the afternoon on Friday April 29th and left Saturday night back to Albuquerque. This was a pretty simple task to accomplish and I remembered to take pictures the last day out on the beach. Check out the sweet action shot!
.
Thank goodness it wasn’t a busy weekend because we had a great spot picked out near hot springs landing.
View Larger Map
Overall, a pretty great weekend out on the lake
After looking around the amazon market for daily subscriptions to newspapers, I was disappointed by the cost that came with getting these sent to your kindle. Upon doing some research, i stumbled upon a pretty clever solution over at http://blog.garethj.com to accomplish such a task for free. The tool “calibre” is used to download web content, and converts it to the kindle friendly .mobi format. I also set up a cron job to push this content.
dailykindlenews.sh:
calibre-smtp --attachment endgadget.mobi --relay smtp.gmail.com --port 587 --username gmailusername --password "gmailpassword" --encryption-method TLS gmailusername@gmail.com kindleusername@free.kindle.com ""
rm endgadget.mobi
Terminal commands:
#install should finish successfully
chmod a+x dailykindlenews.sh
crontab -e
########## Insert the following into crontab ############
00 8 * * * /home/username/dailykindlenews.sh
The above should run the script every day at 8am and send it to your free kindle email address. Take note that your kindle needs to be on wifi (versus 3g) to receive this document free of charge. If you decide to use the @kindle.com email address, you will be charged $.15 per megaByte (rounded up to the nearest MB). Calibre has recipes for a bunch of sites already included in the “/usr/share/calibre/recipes” directory, and doesn’t look trivial to create a new one for a site that isn’t included. Thanks gareth for the suggestion!
First, we need to head on over to https://kindle.amazon.com/ to update a few things. On the top, (If you’re not already signed in) Click “Sign in” and log in with your amazon account information.
Once in, click the upper right again and click “Manage Your Kindle”. Now, over on the left hand side click on “Personal Document Settings”. Here, you will need to add the email address that these documents will be coming from (I used my gmail account) in the section labeled “Approved Personal Document E-mail List”. This is Amazon’s way to make sure only the email addresses you specify will be able to send documents. You are now all set up to have content delivered automatically to you kindle!
For an example of a recipe for a site that uses a username and password like the New York Times, create a recipe to use as follows.
from calibre import strftime
from calibre.web.feeds.recipes import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import BeautifulSoup
class NYTimes(BasicNewsRecipe):
title = 'The New York Times'
__author__ = 'Kovid Goyal'
description = 'Daily news from the New York Times'
timefmt = ' [%a, %d %b, %Y]'
needs_subscription = True
remove_tags_before = dict(id='article')
remove_tags_after = dict(id='article')
remove_tags = [dict(attrs={'class':['articleTools', 'post-tools', 'side_tool', 'nextArticleLink clearfix']}),
dict(id=['footer', 'toolsRight', 'articleInline', 'navigation', 'archive', 'side_search', 'blog_sidebar', 'side_tool', 'side_index']),
dict(name=['script', 'noscript', 'style'])]
encoding = 'cp1252'
no_stylesheets = True
extra_css = 'h1 {font: sans-serif large;}\n.byline {font:monospace;}'
def get_browser(self):
br = BasicNewsRecipe.get_browser()
if self.username is not None and self.password is not None:
br.open('http://www.nytimes.com/auth/login')
br.select_form(name='login')
br['USERID'] = self.username
br['PASSWORD'] = self.password
br.submit()
return br
def parse_index(self):
soup = self.index_to_soup('http://www.nytimes.com/pages/todayspaper/index.html')
def feed_title(div):
return ''.join(div.findAll(text=True, recursive=False)).strip()
articles = {}
key = None
ans = []
for div in soup.findAll(True,
attrs={'class':['section-headline', 'story', 'story headline']}):
if div['class'] == 'section-headline':
key = string.capwords(feed_title(div))
articles[key] = []
ans.append(key)
elif div['class'] in ['story', 'story headline']:
a = div.find('a', href=True)
if not a:
continue
url = re.sub(r'\?.*', '', a['href'])
url += '?pagewanted=all'
title = self.tag_to_string(a, use_alt=True).strip()
description = ''
pubdate = strftime('%a, %d %b')
summary = div.find(True, attrs={'class':'summary'})
if summary:
description = self.tag_to_string(summary, use_alt=False)
feed = key if key is not None else 'Uncategorized'
if not articles.has_key(feed):
articles[feed] = []
if not 'podcasts' in url:
articles[feed].append(
dict(title=title, url=url, date=pubdate,
description=description,
content=''))
ans = self.sort_index_by(ans, {'The Front Page':-1, 'Dining In, Dining Out':1, 'Obituaries':2})
ans = [(key, articles[key]) for key in ans if articles.has_key(key)]
return ans
def preprocess_html(self, soup):
refresh = soup.find('meta', {'http-equiv':'refresh'})
if refresh is None:
return soup
content = refresh.get('content').partition('=')[2]
raw = self.browser.open('http://www.nytimes.com'+content).read()
return BeautifulSoup(raw.decode('cp1252', 'replace'))
Also found a place that has a recipe for The Economist. Go check it out over at https://gist.github.com/971587. Lemme know how it works out.
Updated a bunch of stuff on my tutorial for getting a custom linux kernel on an fpga. Give it a look
.
Due to popular demand, I decided to update my Cadence 6.10 instructions for Ubuntu 10.04. It plays a lot nicer with this latest version of Ubuntu. Before there were problems with Compiz running and launching Cadence. These problems have since been resolved, and works much more smoothly than before. Any comments or suggestions are always welcome!
Been awhile since i have added any posts to this front page, so i thought i would do so. First, I no longer work at the Hospital, and am pretty excited to move on from there. Worked there for a good 6 years, and loved every minute of it.
I have now moved on to working at the USDA Forest Service, and am loving it! Currently they have me working on their crazy big Tivoli environment. If you don’t know what Tivoli is, head on over to IBM’s website and do a quick search. Best part about the program i am in is that they are completely accepting of me finishing my masters. I hope to start a whole slew of new projects this semester, and i want to be sure i stay dedicated and post things more often.
A new tutorial is goin up that describes how to embed a linux kernel on an FPGA. Check it out over on the pages section, or here
Added a quick tutorial to get the Xilinx Suite working on ubuntu 9.10. Check it out on the side link under “Pages” or Click Here





