A Chilly Day

It was a chilly day to be on a walk. The sky was greying, dark clouds were on the horizon, and the wind was blowing through the brown grass in fits and starts. Still though, there was something about the lonely trail made by tires crushing the grass that just made it worth it. Maybe it was the evidence of other humans? Or that the tracks had a destination? In any case, it was still a chilly day to be on a walk.

Paychecks versus Purrs

David was trapped. Definitely trapped. There was no way he could get to work today. For, low and behold, a cat was on his lap. Tipper was the name. A medium sized brown, gray, and black tabby, she had started life on the streets. Somehow she had wormed her way into a family, but then that family was forced to give her away by evil landlords who forbade pets on their propriety. But, then she met David. And the rest, as they say, was history. As was David's paycheck...

Tipper on lap

Also posted on Minds.com/davidreagan.

Amazon Drive Unlimited plan is going away

Today I found out that Amazon's unlimited cloud drive storage plan for Prime members is going away. I found out via Hacker News, judging from the comments there, a lot of people were abusing the heck out of the plan. Unfortunately, Amazon has chosen to implement pricyer plans than they really should. I have a relatively small amount of data to back up, but it will still cost me about 3 times as much as it did before. Say goodbye to a budget...

Anyway, I sent an email to their support on the subject. I doubt it will help much, but who knows? I'd encourage anyone else who has been effected by this to send something similar. Remember to be respectful.

Today I read that you are discontinuing the Unlimited Storage plan for Prime members. Needless to say, I am not happy about this. I can understand discontinuing it due to people abusing it, but it still feels like I'm a victim of bait and switch. I spent weeks getting my backups uploaded to ACD, heck, I'm still in the middle of doing so, and now I have to pay another $120/year on top of the $100/year prime subscription and previous $60/year Unlimited plan. My other option is to try and find another service to give my money to, and spend another few weeks trying to get my data uploaded. (Comcast's slow upload speeds and data limit make backups very hard.)

May I suggest you switch to increments of 5TB instead of 1TB for your plans? $120/year for 10TB is something I could justify. As is $60/year for 5TB.

Giving an AWS IAM User access to a single bucket

This is just my notes on the subject of granting access to a S3 bucket to an AWS IAM User. Figuring it out was much harder than it should have been...

  • Create an IAM user.
  • Create a S3 bucket.
  • Configure aws-cli on your system with a profile for the new user.
  • Edit the bucket policy and paste the following into it. Replacing placeholders as needed.

 

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::NNNNNNNNNNNN:user/NEWUSER"
},
"Action": ["s3:*"],
"Resource": "arn:aws:s3:::NEWBUCKET"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::NNNNNNNNNNNN:user/NEWUSER"
},
"Action": ["s3:*"],
"Resource": "arn:aws:s3:::NEWBUCKET/*"
}
]
}

That should grant your user all S3 permissions only on the bucket you are adding the policy to. Remember that if you apply other policies to that buck via AWS's security manager, this could mess up. Also, remember you can limit things to specific actions by listing them in the Actions field.

The key thing for me was the second statement. My upload would not work until I added the statement with the "/*" on the end of the bucket resource.

Oh, and please double check the new bucket's security before you are done. Don't just copy paste from here and think you're perfectly fine.

Comcast's Internet Data Limit is terrible

Today, for the first time, I received notice from Comcast that I was nearing my 1024GB data limit. 10 days after the month began. When they first notified me that they would be enforcing that limit, I wasn't too annoyed. 1024GB is a pretty decent amount of data. Certainly it's much better than the unenforced 250GB they had shown on my account before. Unfortunately, they did not make clear, one key piece of information. Upload data counts against the data limit[1].

I had assumed that they wouldn't count upload limits since their upload speed limit is so pathetically tiny. Turns out I was wrong.

The reason I finally hit my limit so fast this month is that I finally set up a solid, secure, cloud backup system. I've been slowly uploading several terabytes of backups over the past couple weeks.

Needless to say, this makes me unhappy.

Oh, and to top off my bad feelings, they injected a modal popup notification about my limit on a website I was browsing. That is an extremely offensive invasion of my privacy.

Last time I checked, there were no other ISPs in Eugene, OR, that provide real broadband internet. Charter Cable is not available, and CenturyLink only offers 1.5 Mbps, not broadband. Anyone know of any alternatives?

If anyone with any actual decision making power at Comcast reads this, please stop treating me like this. If you are going to limit my data, either give me decent upload speeds, or don't count uploads against my data limit. (Note, the courtesy months help, but the fact you stop giving them after a 3rd "offense" is just wrong. The unlimited[2] plan is not really a good solution either unless a person regularly uses more than 1024GB. Even then, $50/month is excessive.)

So, since I'm stuck with Comcast, I'm going to put some more effort into figuring out what can be done to build effective competition. The current lack of competition is bad for everyone. Even Comcast, since they have no reason to innovate or build better products.

For reference:
[1] https://www.xfinity.com/support/internet/data-usage-what-counts-towards-my-data-plan/
[2]https://www.xfinity.com/support/internet/exp-unlimited-data/
https://www.xfinity.com/support/internet/data-usage-plan/

Politics in 2016

Here are a few thoughts (sorta rants) on politics this year. Largely just preaching to myself. Feel free to chime in in the comments.

First

The ratio between the attention we spend on Federal politics and the attention we spend on local politics is far to heavily weighted towards the Federal side. Yes, it is important. But you are much more likely to be able to influence local politics than Federal. So, spend more time paying attention to State, County, and City politics.

Second

We put far to much hope and expectation on the President. Article 2 Sections 2 and 3 lay out what the President is supposed to do. If the order those duties are listed in matters, then it goes something like this:

  1. Lead the Military as Commander in Chief.
  2. Pay attention to what is going on in the various government departments.
  3. Grant leniency to for Offences against the USA.
  4. Deal with foreign diplomacy, with the caveat that treaties require 2/3rds of the Senate agree with him.
  5. Appoint ambassadors and other public ministers.
  6. Nominate judges and other positions that require legislative approval.
  7. Make recess appointments.
  8. Lobby Congress to pass bills.
  9. Force Congress to get together when it is really needed.
  10. Force Congress to adjourn if Congress is locked in disagreement.
  11. Receive foreign diplomats.
  12. Make sure Laws are properly executed.
  13. Commission officers of the USA.


From that, the President can only execute the law, and act as a super lobbyist. He cannot make law. His power only allows him to do what Congress tells him to do when they pass laws.

So, why do we expect the President to fulfill all the many campaign promises he makes when campaigning? He can only do so if Congress agrees with him. President Obama promised to close the Guantanamo Bay military prison, he has yet to do so. Donald Trump promises to build a wall on the Mexican border. Considering how Congress has failed to do anything resembling real immigration reform, do you really think they'll let him? And so on.

Ultimately, the President just does not have the power we act like he does. Nor, if you really stop to think about it, should he. If he did, he'd be a tyrant.

Third

Presidential Elections have turned into celebrity reality TV shows. Seriously, why in the world do we pick the candidates who have the most media attention and money? I find the "debates" especially annoying. How does a moderated, time limited, debate demonstrate anything related to the duties the Constitution assigns the President? Why does messing up in a debate result in so many solid candidates loosing?

Fourth

I believe that the reason politicians never make any real difference, is that we keep electing them out of fear. It boils down to this: "If I don't vote for Side A's candidate, Side Apple will win. If Side Apple wins, it's end of the world." Thus, all Side A has to do is convince us that Side Apple is more evil than we may think Side A is. Even if we feel like pinching our noses in disgust as we cast our ballot.

The incentive, then, is for politicians to never risk rocking the boat enough that they might not be able to convince us of the other sides evilness.

We can see this in how the Republican party gained a majority in Congress in 2014 (or 2012). They had promised to do something about the Executive orders President Obama made regarding immigration. As far as my, rather limited, Google, research shows, all they've done is sued the Obama Administration. That's just odd. Why not just pass a law repealing Obama's executive orders? Sure, it'd get vetoed, but why not at lest try to get enough votes to override a veto? Why not try passing actual reform bills? Why just a lawsuit?

The answer is political theater. All they are doing is making enough waves that their constituents will keep voting for them.

Another example is the 2013 Government Shutdown. The Republican's had every right to insist that the Democrats actually work with them on a budget. But, instead of making the Shutdown about how the Democrats refused to negotiate, they made it about the PPACA. And, when the Democrats acted like bullies, the Republicans eventually just surrendered and gave the Democrats everything they wanted. Ultimately, all the Republicans were doing was trying to look pretty so they could win elections. They didn't actually want to win.

Fifth

I believe the solution to ending political theater, is for us to start only voting FOR people, instead of AGAINST "Side Apple". Yes, chances are that this will cripple our side. But, well, so what? It's not like our side is really all that effective now. If we demonstrate that we're willing to back politicians who risk capsizing the vote because they follow their convictions instead of just playing political theater, and willing to hold politicians accountable, eventually we'll either replace all the actors, or the actors will retire.

Finally

A note to my fellow Christians. God is in complete control of all of this. See Romans 13:1. Even when the side we think is against God wins. That means that no matter who you vote for, God will choose the person He wants to win. All we need to do is make sure we vote the way God leads us to vote. Even if everyone tells us a vote for a "third-party" candidate is a vote for the "evil" side. Or even if we have to pinch our noses when voting for the person God tells us to vote for. It's ultimately up to God, so vote out of FAITH, not FEAR.

Modifying Drupal 7 User Pictures in code

It took me a while to figure out how to modify or add a user picture from inside a custom module. Google was not much help. So here's the answer I found, hope it helps someone.

First, you need an actual Drupal file object. Something you could reference a file id from. Like $newbieFile->fid.

I referenced modules/user/user.module and includes/file.inc to figure this out.

$photo ="the actual image data."; //in my case it was the value of jpegPhoto from an ldap directory.
//Save the pic to a temporary file.
$writePic = file_save_data($photo);
// Now $writePic contains the file stdObj.

After that, just use user_save() in your module. Set $edit['picture_upload'] = $writePic; user_save() will pick that up and make everything work for you.

$edit = array(
'picture_upload' => $writePic
);
user_save($account,$edit);

How to fix Observium when graphs show "Draw Error"

I've been using Observium at work to collect and graph SNMP logs for a couple years now. A while back the graphs started showing "Draw Error" instead of the actual graph. I poked at it a bit, but never got it fixed. I wasn't too worried since I want to use the ELK Stack for most of what Observium does in the future. Today, though, a coworker came and asked about Observium. So I decided to poke at it some more.

The issue turned out to be my php.ini configuration. I usually configure disable_functions like this:

disable_functions = apache_child_terminate,apache_setenv,define_syslog_variables,escapeshellarg,escapeshellcmd,eval,exec,fp,fput,ftp_connect,ftp_exec,ftp_get,ftp_login,ftp_nb_fput,ftp_put,ftp_raw,ftp_rawlist,highlight_file,ini_alter,ini_get_all,ini_restore,inject_code,mysql_pconnect,passthru,php_uname,phpAds_remoteInfo,phpAds_XmlRpc,phpAds_xmlrpcDecode,phpAds_xmlrpcEncode,popen,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,system,xmlrpc_entity_decode,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority

The thing is, Observium needs to use functions like php_uname, shell_exec, escapeshellarg, etc. So I set it to this:

disable_functions = apache_child_terminate,apache_setenv,define_syslog_variables,fp,fput,ftp_connect,ftp_exec,ftp_get,ftp_login,ftp_nb_fput,ftp_put,ftp_raw,ftp_rawlist,highlight_file,ini_alter,ini_get_all,ini_restore,inject_code,mysql_pconnect,passthru,phpAds_remoteInfo,phpAds_XmlRpc,phpAds_xmlrpcDecode,phpAds_xmlrpcEncode,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,posix_setuid,posix_uname,system,xmlrpc_entity_decode,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority

 

That seems to have fixed it. Though I might have missed a couple functions, so test things a bit if you just copy/paste my code.

 

The long and the short of it is: if the normal fixes you find via google don't work when your graphs are not displaying, then check your php config and make sure you have not blocked any functions Observium needs.

Rise of the Tomb Raider review

# Rise of the Tomb Raider

ESRB Rating: M (Blood and Gore, Intense Violence, Strong Language)

Release Date: November 10, 2015

Platform: Xbox One

Genre: Action/Adventure

Should you get it? Yes.

## Intro

Second in the 2013 reboot, this game follows Lara's journey as she looks for the artifact her father was looking for when he died.

## The good

The story told very well. Personally, I play most games for their stories. So a good story is essential for me. (For example, I have yet to finish Prototype even though I love the game play. The story is horrid.) This story is very much about Lara learning how to deal with what she learned in Tomb Raider. She was suddenly confronted with the fact that the supernatural is real, and had to survive against some really nasty enemies. It's not as intense as 2013's, but it's still well paced. Both story and character development.

The platforming elements (jumping, climbing, etc.) are well done. I seldom felt like my character wasn't doing what I wanted.

For my story focused playing, the easy difficulty level was just right.

The optional tomb puzzles are fun, and there is good reason to try and complete them when you can. You get new skills for it. Plus it's just fun.

The art is amazing. There are several times where you just have to stop and just look around. The scenery is about as good as you can get without visiting the locations yourself. Seriously, there were many places I'd have loved to print out and hang on my wall.

## The bad

I was disappointed that the main villain is yet another religious cult. It would have been nice to have something different. Maybe a bunch of arms dealers? Or an "evil" corporation? Heck, just go with a supervillain. :)

I also wish there were more monsters and animals as enemies. I mean, Lara basically goes through trained military men like she's a super commando. It's kinda ridiculous when you aren't suspending your disbelief enough.

The way she finds relics all packed up in boxes is kinda lame. I'd rather she find clues or use tools to carefully dig something up. Even better would be if it was plot relevant.

Same for all the notes just lying around...

Ultimately, the collectibles aren't horribly done, but they do feel tacked on. I like that they get you to explore and see the amazing scenery, but I wish it was more plot or game play relevant.

## Conclusion

The game is well worth the full price of admission. I actually ended up preordering it the day before release. I had started replaying the 2013 Tomb Raider on my Xbox One, and that reminded me how fun it was. So I knew I would get my moneys worth out of it. And I have. Of course, if you didn't like 2013's, then you won't like this one.

So, I definitely recommend this game for anyone mature enough to play M rated games.

Checking out the Drupal 8 RC

For the past couple weekends I've spent a few hours seeing if I could build a new personal site using Drupal 8. D8 recently released it's first couple release candidates, and set an official launch date. (November 19, 2015)

So far I've only created the very basics of a site. Nothing worth making public. Of course, I've also spent very little time on the project. That said, here are my initial thoughts.

Installation is just as easy as D7. No changes that I noticed.

The toolbar in D8 is better than in D7. For one thing, you can dock it to the top or left side of your screen. That said, I still prefer the admin_menu style.

The modules page now has a module filter form built in. So the only reason to install the module_filter module would be for the better styling. Seriously, a single column for all the modules available to the instance?

Seven is still a very good administrative theme. Again, though, I prefer the Adminimal theme. Hopefully it will get a D8 release quickly.

Views is in core! Anyone following D8 already knew this, but it deserves repeating. I remember waiting months for Views to release a stable D7 version. D7 was very very limited without it.

The Bartik theme is ugly. Well, at least it isn't appealing. The only time I've used it on a production site, it was the Dartik contrib version. And I really should have done something else...

IMO, Drupal would have been smarter to just use a Bootstrap 3, or some other front end framework, theme. Just use the default styles, and most people would be able to quickly customize it.

WYSIWYG in core. I'd prefer everyone not use WYSIWYG editors, but most users really do want them. So it's good that D8 has that in core. It will save a lot of pain for new site builders.

A Link field type in core is really nice.

There's also a datetime field type in core, and more detailed date settings. So the Date module isn't something you have to install by default anymore.

Web Services are now a part of core. I haven't done a lot with them, but there are a LOT of ways you can leverage REST api's. Having that be part of core is really really smart.

Configuration can now be exported to code via the config module. This is important for those of use who use dev->test->prod workflows. Being able to keep configuration in code, instead of the database, will save a LOT of time.

That said, I'm confused as to why we can't export taxonomy terms and menu items into code. See my question on Drupal Answers.

I'm also disappointed that PathAuto did not get added to core. Adding url aliases is something to expect from any CMS. /node/1234 is hardly a useful url. /blog/date/first-blog-post is much more useful.


I have yet to check out how Drupal is taking advantage of Symfony's code. I hope it makes it easier to extend Drupal.

The new twig template system should make life easier when theming. I know the few times I've played with twig in other systems, I've liked it.

 

Anyway, I'm glad Drupal 8 is finally being released. It's been a long wait.