Getting Started with the Google API for Reading Public Calendars

I have a few public calendars at work that we use to show events taking place in various departments. I am creating a digital sign for one of our buildings and I'd like to be able to grab the events for the current day and display them on the digital sign. I'm most familiar with ruby right now, so I'm writing a ruby script to do this.

The first thing is I need to install the ruby google-api-client.

$ gem install google-api-client

Since all of the calendar data that I want to grab is on public calendars, I can use an API key to get all this data. Instructions for generating an API key are here: https://support.google.com/cloud/answer/6158862. You also need the calendarid for the calendars you want to grab data from.

In order to see if I have things set up correctly, the following script will grab all the entries from the calendar specified by the calendarid.

require 'google/apis/calendar_v3'

Google::Apis.logger.level = Logger::DEBUG

calendar = Google::Apis::CalendarV3::CalendarService.new
calendar.key='YOUR_API_KEY'
puts calendar.list_events('GOOGLE_CALENDAR_ID')

$ ruby simple_test.rb
...all calendar events show...

With the key working correctly, how can I limit the results to just a single day? And only see the fields that I'm interested in? For us, these are the summary, description, start date_time and location.

require 'google/apis/calendar_v3'

calendar = Google::Apis::CalendarV3::CalendarService.new
calendar.key='YOUR_API_KEY'

events = calendar.list_events('GOOGLE_CALENDAR_ID',
	always_include_email: false,
	time_min: '2018-04-23T00:00:00-05:00',
 	time_max: '2018-04-23T23:59:59-05:00'
)

events.items.each do |item|
	puts item.summary
	puts item.description
	puts item.start.date_time
	puts item.location
	puts "====="
end

I hope to have this script do a bit more. So I've put it on my github page. The repository is here: https://github.com/maryheintz/google-calendar-api-ruby

Root Logins with Key Required

I love the fact that I still have so much to learn. I was thinking that I should set things up so that root can ssh in to a computer but only if they have keys set up. One very quick google search and I had my answer.

[[email protected] ~]# grep PermitRoot /etc/ssh/sshd_config
PermitRootLogin without-password

I had just assumed the settings for PermitRootLogin were yes or no. It's great that the programmers also had thought of this other use. People are so much smarter than me.

Splitting a PDF File

I had a pdf file that was too large to email, but I needed to email.  So I quickly broke it up into two smaller files.  I used this command:

$ gs -dNOPAUSE -dBATCH -dFirstPage=1 -dLastPage=34 -sDEVICE=pdfwrite -sOutputFile=physics1.pdf -f Physics\ Faculty.pdf 
$ gs -dNOPAUSE -dBATCH -dFirstPage=35 -dLastPage=68 -sDEVICE=pdfwrite -sOutputFile=physics2.pdf -f Physics\ Faculty.pdf 

Cost Per Mile

I have some time to kill before podcast recording tonight.  I was balancing my checkbook and took a quick look at the report it generated for last year.  I noticed that all my auto expenses for last year were $2532.10.  It breaks down like this:

Fuel $839.25
Insurance $806.00
Service $545.16
Registration $222.69
Parking $99.00
Tax (tolls) $20

And since I drove for 10,400 miles last year.  I'm basically paying (253210/10400) 24.3 cents per mile.  This isn't taking into account depreciation or cost of the car because I don't know how to figure that.  Based on just this, each time I bike to work I'm saving 12 * 25 cents or roughly $3.  I didn't bike that much last year, just 1082 miles.  But that's a savings of $3246, which is kind of impressive, I think.  Makes me want to keep biking.  And I'm happy that I biked to tutoring and the library last night, even though it was 5 degrees.  It was a painful (approximate) mile to ride, but I saved myself a quarter.  🙂

Low-Carb it is

About a week ago, I went to the library to return some books.  Since I didn't have any other books on hold to pick up, I head over to my usual aisle (the last one with books about learning different skills) to see if I could find anything to read.  Luckily for me, pretty close to the books on making stuff are books on gardening and cooking.  I wasn't looking for anything in particular, but totally based on their covers, I grabbed the book "Unbowed" about an environmentalist in Africa (which I haven't started yet) and "Why We Get Fat".  After I read the second one, I thought because you eat more calories than you burn.  How could there be an entire book about that.  I was going to put it back, but I didn't see a more interesting gardening or woodworking book, so I kept it.

I started reading when I got home and basically read it straight-thru for the rest of the day.  The idea is that it's carbs that make us fat.  I probably don't have the details exactly right, but it's insulin that's the problem here.  When you eat carbs, you generate more insulin that stores the fat in your cells.  If you don't eat carbs (even if you eat a lot of food), your body will pull the fat out of your cells to use for energy.  Honestly, I wasn't quite sure that I believed this.  But, I had a very slow weekend and was a little bored.  So I thought I'd do an experiment.

The author said that if you eat a high-carb meal (say like a bowl of cereal with milk and a banana) you're insulin it will store the excess in your fat cells or something like that.  The net result is, your weight will go up.  Since I've been weighing myself daily since 2011, I pretty much know my daily weight.  And I was in a stage where it was pretty consistent.  So that night, I had a small bowl of cereal with a banana for dinner.  The next morning, sure enough, I had gained a pound and a half.

That was interesting.  But then, the next day, I ate low-carb and I ate what I thought was more than usual.  Scrambled eggs with cheese and blueberries for breakfast (minus the tortilla I usually put it on), a salad for lunch and half a rack of bbq ribs for dinner.   I had some nuts at work for a snack as well.   The next day, my weight was down 2.4 pounds.  Hmmm.  Could that have been a fluke?  So I did it another day, down another 1.8 pounds.  The next day, weight stayed the same.  The next day, down 1.1 pounds.  This brings me to today, down 1.3 pounds.  Apparently, this is working.

The bad news is ... this past week I've eaten more red meat than I have in months.  I honestly had been considering becoming a vegetarian lately because I thought it would be good for me and the world.  But right now, I'm not good enough of a cook to become a low-carb vegetarian.  So I'm going to keep eating the meat and then as I learn how to cook better vegetarian meals I'll hopefully be able to shift away from it.  I don't think cholesterol is going to be a problem, but I'll see how it looks at my next doctor appointment.

The good new is ... I feel great.  I have a good amount of energy, my right knee isn't feeling achy and (aside from last night) I've even slept through the entire night.  I know it hasn't even been a full week, but everything the book described seems to be happening.  We'll see how long I can keep it up, but I think that as I learn how to cook different things, it will get even easier.

Let’s Get It Started

The weather has gotten unseasonably warm and melted all the snow. It's supposed to get cold again, but I couldn't pass up the opportunity to bike to work a couple of days this week. The second day was in the rain, so my backpack, jacket and pants all had a huge muddy streak up the back. Fortunately, that came on the ride home, so it was good.

But the wonderful weather has pushed me even more into gardening mode, so I decided to get started. A few days ago, I brought all my garden stuff in from the back porch. Mainly so it could warm up a bit. Then yesterday (and today) I washed all of my seed starting trays. Apparently, lots of diseases can grow in old dirt and you're supposed to wash everything before you start seeds. I learned that because I've been reading tons of gardening blogs and websites. So I did that. Then I found out that some of the vegetables that take the longest to grow are leeks and celery. Just now, I decided to plant three tray holders of each of those. Another thing I learned from all my research is that you should stagger when you start your seeds. This way, you won't have them all being ready to be picked at the same time. Instead, they'll be spread out more over the summer. Since I could never eat as many tomatoes as came up last year, I like that idea. I also decided to start some flowers because I think I'm going to make the dirt next to the garage into a cutting garden. I want to have a ton of flowers there. And it's been so cold that I'm looking forward to some color.

Here's my pile of seed holders drying after I washed them.

And here are a small number of seeds that I started.

Here's hoping for a successful garden!

Starting Off Right

When it was below 0F last week, I saw some people out biking and admired them. I thought if it got above 15-20F, that I would ride too. So this morning, I had a nice, slow ride to work to start the year off right. It's around 27F, so a little chilly, but pretty nice compared to last week. I felt good, though, a second thin pair of socks would have been helpful. But that's ok. I want to start riding to work more and this is part of the process.

My ride in .

2018 Garden Planning

Now that it's 2018, it's time to start preparing for my 2018 garden. The last two years, I've had plenty of success with tomatoes and peppers. Last year, I also got a ton of beans and some great flowers that took no work. I also got some spinach and lettuce. And I got a single pumpkin, watermelon, cucumber and two zucchini. That has pretty much hooked me on gardening. Aside from the food, which is fun. I found it incredibly relaxing to come home after work and pick tomatoes or flowers in the garden. So I want to keep it up.

It's January 7th, so here is how my backyard garden looks right now.

First thing is that I made those sort-of raised beds with wood I found in my basement. The only money I spent there was buying 12 bags of dirt (for $1.50 each) and one bag of mushroom compost for a few dollars. I also spent around $20 on seeds. Since I feel that I'm now getting serious about gardening, I think I could spend a little more money. I want to build up some nicer raised beds. My idea is to build three rectangular raised beds. Perhaps 3' wide by 8-10' long. I want to build them out of cedar, so it will depend on how expensive that is. I'm reading a book called the Vegetable Gardener's Bible that says wide and deep beds are the way to go. So I think I want them to be at least 12" tall. Again, it will depend on how expensive the wood is.

Another plan is that I'd like to orient these beds so that I could possibly enclose them in plastic to make an actual greenhouse for next winter. The cold frames that I'm using now still freeze. Since I'm in zone 6a, I need to be prepared for temperatures down to -10F. A box with a window on top isn't going to do it. But if I put that box with a window on top inside of a plastic hoop house, that might keep the plants above freezing. Another option is to put a compost pile inside the greenhouse to get some natural heat. It seems like this might work and it's crazy enough that I'd like to give it a try.

Anyway, nothing is going to happen in the backyard while it's covered with snow. My January duties involve starting some seeds. Last year, I bought a set of shelves, a cheap led worklight and a timer. It worked fine for starting seeds.

I've read that celery and onions take a long time to get started. So my goal this month is go start some of those seeds so that they'll be ready to go in the garden later.

Installing Rails 2.5.0 on Mac OS High Sierra

Since I've just switched to my new laptop running High Sierra, I thought it would be good to update my rails software. The latest version is 2.5.0. I downloaded it and compiled it and got an error message when I tried to install rails.

yo:~ $ gem install rails
ERROR:  While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources

I'm using macports, so I installed openssl with:

sudo port install openssl

Then I had to play around a bit to get the ruby installation to find this openssl. The winning command turned out to be:

yo:ruby-2.5.0 $ ./configure --prefix=/Users/maryh/Software/rubies/2.5.0 --with-opt-dir=/opt/local
yo:ruby-2.5.0 $ make
yo:ruby-2.5.0 $ make install

Happy 2018!

Happy New Year! It's 2018! This is the year that I turn 50. I feel like I should mark the occasion somehow. I have a pretty good idea of what I want to do the week of my birthday, but I'm not sure about the rest of the year.

Unlike in years past, I can't think of one big, new habit that I'm trying to establish. That one thing that I can use my calendar for to track how well I'm doing. Since I started doing this a few years ago, I've had successes (more biking) and failures (no sugar). I've found that I'll tend to be more successful if I make it about doing something instead of avoiding doing something. That makes sense. Focus on the positive and not the negative. What I want to do here is set up some process that I can follow and be done.

I recently read this book called Ikigai. I liked it a lot. Ikigai is basically about finding your purpose in life and how that leads to a long and healthy life. There were many things in the book that I agree with and some that I already do. The one thing that jumped out at me was that 100% of the people they talked to that lived to 100 had vegetable gardens. I love this because gardening is one of my latest obsessions. Additionally, my diet has never been the greatest because I'm not much of a cook, but I'm trying to improve. So I think my goal this year is to eat at least one vegetable a day. This might not sound like much, but I think it's a good habit for me. I can try to grow some stuff to get a variety and also try to learn different ways to cook vegetables. It's a positive goal. For people who grew up eating a lot of different vegetables, this might sound simple, but I never really cared much for vegetables, so I tended to avoid them and still do.

Now that I have my daily chart out of the way, what else. My new focus on the house is to get the lead water line changed. So I'm saving for that and if I'm lucky can get that replaced this summer.

I still ride my bike a lot, but not as much as a few years ago. I need to get back into the habit of biking to work. And I'd like to take my bike on the train to ride around other cities again. I like exploring cities that way, so I should do it more often.

More DIY projects. The more projects I do, the more skills I'll learn, thus enabling me to do even more projects. Plus, I really like making stuff. It's so satisfying. I have to get a better handle on using my welder this year. And I'd like to learn how to make different types of woodworking joints and get comfortable enough with them that I don't have to review how to make them each time before I try.

Now that I've been gardening for a few years, I want to get better at it. I want to rebuild my raised beds in a more organized manner. And set them up so that I can make a sort of greenhouse around them for next winter. I have some ideas about how to do this and it will require me to spend a little money. I think this will be a good investment, so I'm ok with that.

As I said before, I turn 50 this year. I've read a lot of books that are (like Ikigai) about living a good life, happiness, etc. And just about all of them say that the things in life you do in service for others are what are the most satisfying. Giving away time and/or money for a cause you believe in makes you feel more connected to those around you. In the past few years, I've found this to be absolutely true. And I've tried to make my actions follow my beliefs. I know that most of my actions are completely inconsequential in the larger universe, but I often tell myself to behave as though they are of the utmost consequence. If this year marks the beginning of the second half of my life (because I tell myself that I want to live to 100), I want to kick it off in a special way. I want to feel even more connected to people. So each month I want to do something beneficial to others. I haven't quite figured out what this will be, but it's an on-going project. This was the idea behind signing up for tutoring at my local literacy center. So that's how I'm starting. We'll see how the year goes.

Happy New Year!