June 11, 2013 in Humor
June 6, 2013 in Pyberry
I’ve just pushed version 0.4 of Pyberry to GitHub. It’s a biggie! I’ve backported it from Python 3 to Python 2.7 in order to use Google API modules. Because of that, I was able to make searching by title work. I’ve additionally cleaned up the code quite a bit, fixed bugs I found going through it, etc. Check out the new release here, at GitHub. Now that I’ve pushed past the mega issue, I’m looking forward to ramping up development.
I set a (probably unrealistic) due date for version 0.5 (basically, where most features should be there so that it’s purposeful) to be June 18, next Friday. I will work on it, but no guarantees about that milestone.
By the way, I still (and always) need testers! If something doesn’t work, just open an issue on GitHub and I’ll do my best to fix it. This is very much a learning experience for me.
May 30, 2013 in Day-to-day
So, I’ve been working at my new job for a week now. I work in CaTS, the IT department at Epic in Verona. I love it, but it is exhausting. I’ve started keeping track of how much I walk…an average of 9 miles each day. Yep, nine. That’s because I often have to go in between the campus’s 13 buildings (the 14th opens in June). Unfortunately, I’m also often lugging a cart of 30+ 20 pound monitor boxes, and trying to deliver those throughout campus. It’s really more exhausting than anything else I’ve done in the past.
That being said, it’s an amazing place to work. The little things are what make it, like the decorations/themes in each of the buildings, the tunnels, walkways, and skybridges between buildings, and the free milk, juice & tea in the break room fridges. Speaking of food, the food there is wonderful. The cafeteria, Cassiopeia, is not far from where I work. It’s so…gourmet. Things I’ve had to eat so far: cinnamon raisin toast with fig spread, apple slices, and brie cheese; Tabasco pulled pork with provolone and pickled apples; flank steak with leeks, roasted pine nuts, and feta; chili cheeseburger; and today was boring: triple pepperoni pizza. It’s all amazing, though.
One of my favorite things thus far to happen was riding through the hallways on a scooter-bike. It’s like a bike, but it has a place for you to stand, not unlike a scooter. I had to go someplace on the other side of campus and didn’t want to walk, so I grabbed the department’s bike, and went whizzing through the halls. Most people who saw me went, “Oooh I want/need one of those!”. But some people were more like, “who does he think he is??!”. Either way, it was really fun and a quick way to get around campus. Unfortunately today when I again needed to make a far treck, the bike was in use.
Tomorrow’s busy, but I’m looking forward to the rest of summer!
May 29, 2013 in Pyberry
Unfortunately, sometimes to move forward, you have to go backwards. In Pyberry, I’m in the process of moving all the code to Python 2, for library reasons. I’ve more than met my match in dealing with the data coming from the Google Books API, but Google provides a library to deal with it that’s Python 2.x only. So, I’ve decided to backport my code.
More details to come – right now, I’m having issues finding decent documentation on the gdata-python libraries, but it’s still looking to be a lot easier.
May 11, 2013 in Code
Recently I decided to move my projects from Sourceforge to GitHub. My biggest problem with Sourceforge was its lack of intuitive, well-designed interface. It was such a challenge to do much of anything. Things were in radically different places, and it just wasn’t a nice way to do things. So, I moved. GitHub is wonderful…it’s fast, streamlined, intuitive, and works like a charm.
My account on GitHub is here and my GitHub webpage is here. I currently have 2 repos on there (I haven’t yet moved File-Em over…although that development is pretty much stagnant). Pyberry and cisco-device-count (a project for work that never works…ha!). So if you’re looking to get involved in development, check out an open ticket for Pyberry here. Man, GitHub is wonderful. It’s designed around the repo, whereas at SF it seems almost like the repo viewing was an afterthought.
By the way, on my MacBook (my primary devel machine), I use the app SourceTree for dealing with a lot of the stuff on git. It’s pretty and feature-rich, and makes sense. I personally prefer it to the official GitHub Mac app. It’s also available for Windows, but unfortunately not for Linux, so I suppose any development on here will require me to learn command line options. <sarcasm>Oh darn!</sarcasm>
May 10, 2013 in Guides
It’s been awhile since I’ve posted, but there’s a lot new behind the scenes. Most importantly, bjschafer.com is now self-hosted. I feel a lot better about it thanks to CloudFlare and btrfs.
After my hosting contract ran out, I decided to move from Dreamhost (who were absolutely wonderful) to hosting myself, due to cost concerns (I am a college kid, after all!). The setup was mostly straightforward – set up Apache, forward the port, set up a name-based virtual host (only because I host an intranet site on the same box), and point the domain name to my Dynamic DNS provided by freedns.afraid.org (hence the lakelair.armed.us). I had it that way until recently. It really made me nervous like that, but I wasn’t sure about setting up CloudFlare with a dynamic IP.
CloudFlare has a modified version of ddclient, a linux script to update dynamic IP address services. After mucking around with that and finding a patched version, I got it working to push my IP changes to CloudFlare. Then, it was as simple as pointing my domain’s nameservers to them. Not bad, and now the site should be a whole lot faster, safer, and more robust.
One issue with that, though, was my consulting website: consulting.bjschafer.com either wouldn’t load or would redirect to my root website. That one was a pain in the ass! To solve it, create an A record (at CloudFlare, perhaps) pointing to the same IP address as your normal site. Then, you have to create a name-based virtual host in Apache2. Assuming you already have a virtual host set up for the root site, disable it with an ‘a2dissite [yoursite]‘, reload Apache to ensure it’s disabled, then edit the virtual host config, either in httpd.conf or (in my case) in sites-available/. Add (or append, use your head) to it the following:
NameVirtualHost 192.168.0.11:80 <VirtualHost 192.168.0.11:80> DocumentRoot /var/www/bjschafer ServerName bjschafer.com ServerAlias www.bjschafer.com </VirtualHost> <VirtualHost 192.168.0.11:80> DocumentRoot /var/www/consulting.bjschafer ServerName consulting.bjschafer.com ServerAlias www.consulting.bjschafer.com </VirtualHost>
The DocumentRoot is of course where the site’s files are stored, the ServerName is the domain name you want to point to it, and the ServerAlias just catches people who automatically prepend www. The address inside the virtual host is the IP and port you want it to listen to. Then, :wq your changes (assuming you prefer vi, the Right Way), and do an ‘a2enssite [yoursite]‘ and reload Apache. Once the DNS propagates, you’re set to go!
Finally, I’m pleased to say that I’m using btrfs. I’ve been using it for quite some time but have only recently started using its advanced features (namely, snapshots and subvolumes). For those that don’t know, btrfs subvolumes are exactly what they sound like – volumes inside of existing volumes. Sub-subvolumes show up simply as folders. To create a new subvolume, you issue a ‘btrfs subvolume create /path/to/creation/point’. It’s perfectly valid to create one inside of /var/www, because your root filesystem is already a subvolume (probably). Then, to snapshot, all it takes is ‘btrfs subvolume snapshot /path/to/snapshot /path/to/store/snapshot’. I created a subvolume in the root hierarchy (i.e. /snapshots) for snapshots. A pleasant consequence of this is I can easily browse snapshots and list, delete, move, copy, etc. files. With this, should I accidentally bork something, I can either restore the snapshot or grab any file. Handy, eh? For the record, I’ve been using btrfs for at least 6 months and have not (knock on wood!) had any data loss or corruption issues. But ymmv, etc., and I am not responsible for anything that happens to you as a result of stupidity, happenstance, cosmic radiation, o lo que pasa.
April 14, 2013 in Translations
Here’s another Neruda translation, this time of his Poem #6, “Te recuerdo como eras”
I remember how you were last autumn.
You were the gray beret and the calm heart.
In your eyes the flames of twilight quarrel
And the leaves fall in the water of your soul,
Attached to my arms like a vine.
The leaves pick your slow, calm voice,
Stuporous bonfire in which my thirst burned.
Sweet blue hyacinth twisting above my soul.
I feel your eyes traveling and autumn is distant:
gray beret, bird’s voice, and heart of home
to where my profound longings emigrate
and my joyful kisses fall like embers.
Sky from a boat. Field from the hills.
Your memory is one of light, of smoke, of a calm pond!
Farther away from your eyes burned the twilights.
Dry autumn leaves revolved in your soul.
April 3, 2013 in Translations
I decided to do a literal translation of Pablo Neruda’s Poem 20, from his 20 Poems of Love. (Original Spanish here).
I can write the saddest verses tonight.
To write, for example, “The night is starry,
and the stars shiver, blue, in the distance.”
The night wind spins in the sky and sings.
I loved her, and sometimes she too loved me.
In nights like these, I had her in my arms.
I kissed her often under the infinite sky.
She loved me, and sometimes I too love her.
To not have loved her great fixed eyes.
I can write the saddest verses tonight.
To think that I don’t have her. To feel that I have lost her.
To hear the immense night, more immense without her.
And the verse falls to the soul like dew to the grass.
What importance is it that my love wasn’t able to save her.
The night is starry and she isn’t with me.
That is all. In the distance someone is singing. In the distance.
My soul isn’t content with having lost her.
As if to approach her with my searching gaze.
My heart searches for her, and she is not with me.
The same night that whitens the same trees.
Us, those of that time, we’re no longer the same.
I no longer love her, for sure, but how much I loved her.
My voice searches the wind to touch her ear.
Another’s. It will be another’s. Like before my kisses.
Her voice, her bright body. Her infinite eyes.
I no longer love her, for sure, but perhaps I love her.
Love is so short, and forgetting is so long.
Because in nights like these I had her in my arms,
my soul isn’t content with having lost her.
Even if this were the last pain that she causes me,
and these were the last verses that I wrote her.